diff --git a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml
index dcfcd0df7b7366efee538de12dabb91310c435e8..f986218222250ff00a9211a838a94ae6fbcb303f 100644
--- a/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml
+++ b/.idea/runConfigurations/OBSW_UdpClient_Service_17_Test.xml
@@ -12,8 +12,8 @@
     <option name="ADD_CONTENT_ROOTS" value="true" />
     <option name="ADD_SOURCE_ROOTS" value="true" />
     <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
-    <option name="SCRIPT_NAME" value="C:\Users\Robin\NoSyncDokumente\sourceobsw\tmtc\OBSW_TmTcClient.py" />
-    <option name="PARAMETERS" value="-m 3 -s 17 -p" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/OBSW_TmTcClient.py" />
+    <option name="PARAMETERS" value="-m 3 -s 17 -p -t 5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
     <option name="MODULE_MODE" value="false" />
diff --git a/OBSW_TmTcClient.py b/OBSW_TmTcClient.py
index f15a84c5c31cec382957817c2492dd6a5b3fb351..8ed30bd3dabbd5f69934bc4f351ca60a528e4959 100644
--- a/OBSW_TmTcClient.py
+++ b/OBSW_TmTcClient.py
@@ -91,7 +91,6 @@ def main():
         exit()
     else:
         communicationInterface = setCommunicationInterface(tmtcPrinter)
-        print(communicationInterface)
         atexit.register(keyboardInterruptHandler, comInterface=communicationInterface)
         tmListener = TmListener(
             comInterface=communicationInterface, tmTimeout=g.tmTimeout, tcTimeoutFactor=g.tcSendTimeoutFactor)
@@ -126,10 +125,10 @@ def main():
         """
         Set up test suite and run it with runner. Verbosity specifies detail level
         """
-        # noinspection PyTypeChecker
         g.tmListener = tmListener
         g.comInterface = communicationInterface
         g.tmtcPrinter = tmtcPrinter
+        # noinspection PyTypeChecker
         suite = unittest.TestLoader().loadTestsFromModule(OBSW_PusServiceTest)
         unittest.TextTestRunner(verbosity=2).run(suite)
 
diff --git a/comIF/OBSW_Ethernet_ComIF.py b/comIF/OBSW_Ethernet_ComIF.py
index 5e3aded6e24ad9a07577fbc0eed7733343d354ff..762de6830c387cca631a308855a6b390f698b203 100644
--- a/comIF/OBSW_Ethernet_ComIF.py
+++ b/comIF/OBSW_Ethernet_ComIF.py
@@ -44,18 +44,21 @@ class EthernetComIF(CommunicationInterface):
 
     def pollInterface(self, pollTimeout: float = 0) -> Tuple[bool, pusTmListT]:
         ready = self.dataAvailable(pollTimeout)
-        if ready is False:
-            return False, []
-        elif ready:
-            packetList = self.receiveTelemetry()
+        if ready:
+            data = self.sockReceive.recvfrom(1024)[0]
+            packet = PUSTelemetryFactory(data)
+            self.tmtcPrinter.printTelemetry(packet)
+            packetList = [packet]
             return True, packetList
+        else:
+            return False, []
 
     def receiveTelemetry(self, parameters: any = 0) -> list:
-        data = self.sockReceive.recvfrom(1024)[0]
-        packet = PUSTelemetryFactory(data)
-        self.tmtcPrinter.printTelemetry(packet)
-        packetList = [packet]
-        return packetList
+        (packetReceived, packetList) = self.pollInterface()
+        if packetReceived:
+            return packetList
+        else:
+            return []
 
     def receiveTelemetryAndStoreInfo(self, tmInfoQueue: pusTmInfoQueueT) -> Union[None, pusTmInfoQueueT]:
         packets = self.receiveTelemetry()
diff --git a/comIF/OBSW_Serial_ComIF.py b/comIF/OBSW_Serial_ComIF.py
index ce14c6c9ca5fb2989f27aacfd428cf5327a4ff27..d7a5ed7b1c53ee0157efec1c905e0400c8d3555a 100644
--- a/comIF/OBSW_Serial_ComIF.py
+++ b/comIF/OBSW_Serial_ComIF.py
@@ -42,7 +42,7 @@ class SerialComIF(CommunicationInterface):
         self.tmtcPrinter.printTelecommand(tcPacket, tcPacketInfo)
         self.serial.write(tcPacket)
 
-    def receiveTelemetry(self, parameters=0) -> list:
+    def receiveTelemetry(self, parameters: any = 0) -> list:
         (packetReceived, packetList) = self.pollInterface()
         if packetReceived:
             return packetList
diff --git a/config/OBSW_Config.py b/config/OBSW_Config.py
index 4bb665d56fd1ab8d9a0c1b16dd0471b844e7ecd4..6fcab66932f60dd7d9c442a7d4fcd6ddf5a27502 100644
--- a/config/OBSW_Config.py
+++ b/config/OBSW_Config.py
@@ -26,6 +26,11 @@ class ModeList(enum.Enum):
     UnitTest = 5
 
 
+class ComIF(enum.Enum):
+    Ethernet = 0
+    Serial = 1
+
+
 """
 Mission/Device specific information.
 """
@@ -97,7 +102,7 @@ def setGlobals(args):
     sendAddressToSet = (args.boardIP, portSend)
     if 0 <= args.mode <= 5:
         if args.mode == 0:
-           modeId = ModeList.GUIMode
+            modeId = ModeList.GUIMode
         elif args.mode == 1:
             modeId = ModeList.ListenerMode
         elif args.mode == 2:
@@ -111,6 +116,15 @@ def setGlobals(args):
     else:
         print("Invalid mode argument, setting default mode (1)")
         modeId = ModeList[1]
+
+    if args.comIF == ComIF.Ethernet:
+        comIF = ComIF.Ethernet
+    elif args.comIF == ComIF.Serial:
+        comIF = ComIF.Serial
+    else:
+        print("Invalid Communication Interface, setting serial (1)")
+        comIF = ComIF.Serial
+
     service = str(args.service)
     if service.isdigit():
         service = int(args.service)
@@ -119,8 +133,6 @@ def setGlobals(args):
     recAddress = recAddressToSet
     sendAddress = sendAddressToSet
     comIF = args.comIF
-    # sockReceive = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    # sockSend = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     modeId = modeId
     comPort = args.COM
     printHkData = args.hk
diff --git a/sendreceive/OBSW_CommandSenderReceiver.py b/sendreceive/OBSW_CommandSenderReceiver.py
index 8695b8bccc9e1db8a436b54dc3945191f0c1c889..c56d115b2f635eeae7c753f1efb83547028c3075 100644
--- a/sendreceive/OBSW_CommandSenderReceiver.py
+++ b/sendreceive/OBSW_CommandSenderReceiver.py
@@ -117,7 +117,7 @@ class CommandSenderReceiver:
             self._comInterface.sendTelecommand(self.lastTc, self.lastTcInfo)
             self.timeoutCounter = self.timeoutCounter + 1
             self.start_time = time.time()
-        time.sleep(1)
+        time.sleep(0.5)
 
 
 
diff --git a/sendreceive/OBSW_SequentialSenderReceiver.py b/sendreceive/OBSW_SequentialSenderReceiver.py
index 9d09c1eabd1456dfc08108e0e83651d2472c408e..a78428884ec9f73ec869b4bd056cb7a2a7ac658f 100644
--- a/sendreceive/OBSW_SequentialSenderReceiver.py
+++ b/sendreceive/OBSW_SequentialSenderReceiver.py
@@ -41,6 +41,7 @@ class SequentialCommandSenderReceiver(CommandSenderReceiver):
         self.start_time = 0
         self.elapsed_time = 0
         self.abortFlag = False
+        self.modeOpFinished = False
 
     def sendQueueTcAndReceiveTmSequentially(self):
         self._tmListener.modeId = g.ModeList.ServiceTestMode
@@ -61,12 +62,12 @@ class SequentialCommandSenderReceiver(CommandSenderReceiver):
                 if self.tcQueue.__len__() == 0:
                     self.start_time = time.time()
             self.checkForTimeout()
+            if not self.modeOpFinished:
+                self._tmListener.modeOpFinished.set()
         print("Sequential SenderReceiver: All replies received!")
-        self._tmListener.modeOpFinished.set()
         if self.doPrintToFile:
             print("Sequential SenderReceiver: Exporting output to log file.")
             self._tmtcPrinter.printToFile()
-        print("Listening for packages ...")
 
     def performNextTcSend(self):
         if self._tmListener.replyEvent.is_set():
diff --git a/sendreceive/OBSW_TmListener.py b/sendreceive/OBSW_TmListener.py
index 6d8321c5ea61951e1b4f0a445850c23d41126830..bd8c4f85a52cb002939414b9c4a9729afbf672de 100644
--- a/sendreceive/OBSW_TmListener.py
+++ b/sendreceive/OBSW_TmListener.py
@@ -68,6 +68,7 @@ class TmListener:
             while not self.modeOpFinished.is_set():
                 self.performModeOperation()
             self.modeOpFinished.clear()
+            print("Transitioning to listener mode")
             self.modeId = g.ModeList.ListenerMode
 
     def performModeOperation(self):