diff --git a/.gitignore b/.gitignore
index abbdf6cc23bc29d3aa6157ec1e46ef26e63a7ba9..868638762c6a4e7d96e2c91ff9be284b8002307d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 __pycache__
-deepracer-gym/deepracer_gym.egg-info/
\ No newline at end of file
+deepracer-gym/deepracer_gym.egg-info/
+playground/
\ No newline at end of file
diff --git a/deepracer-gym/deepracer_gym/zmq_client.py b/deepracer-gym/deepracer_gym/zmq_client.py
index 1c5506df1471f779fee7bc40172fd8dffe2ffe57..531c17ae3cbaa81e9710e9348f89e7e9704b4b59 100644
--- a/deepracer-gym/deepracer_gym/zmq_client.py
+++ b/deepracer-gym/deepracer_gym/zmq_client.py
@@ -1,4 +1,5 @@
 import zmq
+import time
 import msgpack
 
 import msgpack_numpy as m
@@ -10,12 +11,13 @@ class DeepracerZMQClient:
         self.host = host
         self.port = port
         self.socket = zmq.Context().socket(zmq.REQ)
-        self.socket.set(zmq.SNDTIMEO, 20000)
-        self.socket.set(zmq.RCVTIMEO, 20000)
+        # Large timout for first connection
+        self.socket.set(zmq.SNDTIMEO, 600000)  # 10m
+        self.socket.set(zmq.RCVTIMEO, 600000)
         self.socket.connect(f"tcp://{self.host}:{self.port}")
     
     def set_agent_ready(self):
-        packed_msg = msgpack.packb({"Agent Ready": 1})
+        packed_msg = msgpack.packb({"ready": 1})
         self.socket.send(packed_msg)
 
     def recieve_response(self):
@@ -35,26 +37,21 @@ class DeepracerEnvHelper:
         self.zmq_client = DeepracerZMQClient()
         self.zmq_client.set_agent_ready()
         self.obs = None
-        self.previous_done = False
 
     def send_act_rcv_obs(self, action):
         action_dict = {"action": action}
         self.obs = self.zmq_client.send_msg(action_dict)
-        self.previous_done = self.obs['_game_over']
         return self.obs
     
     def env_reset(self):
         if self.obs is None: # First communication to zmq server
             self.obs = self.zmq_client.recieve_response()
-        elif self.previous_done: # To prevent dummy episode on already done env
-            pass
-        else: # Can't reset env before episode completes - Passing '1' until episode completes
-            action = 1
-            done = False
-            while not done:
-                self.obs = self.send_act_rcv_obs(action)
-                done = self.obs['_game_over']
-            self.previous_done = True
+            # Smaller timeout after first connection
+            self.zmq_client.socket.set(zmq.SNDTIMEO, 20000)  # 20s
+            self.zmq_client.socket.set(zmq.RCVTIMEO, 20000)
+
+        else: # If prev_episode done and reset called, fast forward one step for new episode
+            self.obs = self.send_act_rcv_obs(4) # Action ignored due to reset()
 
         return self.obs
     
@@ -70,7 +67,7 @@ class DeepracerEnvHelper:
 
 if __name__ == "__main__":
     client = DeepracerZMQClient()
-    packed_msg = msgpack.packb({"Ready": 1})
+    packed_msg = msgpack.packb({"ready": 1})
     client.socket.send(packed_msg)
     episodes_completed = 0
     steps_completed = 0