diff --git a/abb_egm_client/egm_client.py b/abb_egm_client/egm_client.py
index d24c2930182275f153677d6d8f3a9eb6800c3f85..295fd0e9fd347ec26e7a951d2c83d14e0ce682cb 100644
--- a/abb_egm_client/egm_client.py
+++ b/abb_egm_client/egm_client.py
@@ -29,8 +29,6 @@ class EGMClient:
 
         self.socket.bind(("", port))
 
-        self.socket.setblocking(False)
-
     # def _ensure_socket_ready(self, timeout=1):
     #     # try:
     #     # except select.error as err:
@@ -48,27 +46,39 @@ class EGMClient:
     def _get_last_packet(self):
         last_recieved = (None, None)
 
+        self.socket.setblocking(False)
+
         while True:
             try:
-                data, addr = self.socket.recvfrom(1024)
+                data, addr = self.socket.recvfrom(2048)  # read from socket
                 if data:
-                    last_recieved = (data, addr)
+                    last_recieved = (data, addr)  # store last data and addr
             except socket.error as err:
                 # EWOULDBLOCK: recvfrom would block since socket buffer is empty
                 if err.args[0] == socket.EWOULDBLOCK:
-                    return last_recieved  # return last data recieved
+                    if last_recieved[0]:  # if last data got picked up
+                        break
+                    else:
+                        continue  # else wait for data
                 else:
+                    self.socket.setblocking(True)
                     raise err  # if there is another error, raise exception
 
-    def receive_from_robot(self, timeout=0):
+        self.socket.setblocking(True)
+        return last_recieved
 
-        data, addr = self.socket.recvfrom(1024)
+    def receive_from_robot(self):
 
-        if not self.robot_controller_address:
+        data, addr = self._get_last_packet()
+
+        # the address used for sending to the robot is picked up here
+        if not self.robot_controller_address or self.robot_controller_address != addr:
             self.robot_controller_address = addr
 
+        # use the message description from the proto file to create a python
+        # class from incoming data
         msg = EgmRobot()
-        msg.ParseFromString(data)
+        msg.ParseFromString(data) 
 
         return msg
 
diff --git a/examples/print_egm_feedback.py b/examples/print_egm_feedback.py
index 1ba02cdb3cf086c353c1deb26a34fab50b1f203b..b076a6157c7c5d5bbe2587ea8874639af3966185 100644
--- a/examples/print_egm_feedback.py
+++ b/examples/print_egm_feedback.py
@@ -6,10 +6,11 @@ try:
 except ImportError:
     raise ImportWarning("abb_egm not found, have you installed the package?")
 
-UDP_PORT = 6510
+UDP_PORT = 6511
 
 log = logging.getLogger("egm_client")
 
+
 def print_egm_feedback() -> None:
     """Print EGM feedback.
 
@@ -24,8 +25,9 @@ def print_egm_feedback() -> None:
     while True:
         try:
             msg = egm_client.receive_from_robot()
-            print(f"Header:\n{msg.header.seqno}")
-            # print(f"Feedback:\n{msg.feedBack}")
+            print(f"Sequence number: {msg.header.seqno}")
+            print(f"Body: {msg.feedBack}")
+
         except Exception as exc:
             log.error(f"Exception raised {exc}")
             log.info("Retrying")