diff --git a/.gitignore b/.gitignore
index 754bc9f09a550be8eda2fe17f67ad5ce9f128085..2817702b9ca2437d91f91148fe7c7980b6a9bfe4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-obsw_user_code.py
+config/obsw_user_code.py
 
 _build/*
 _dependencies/*
diff --git a/.idea/runConfigurations/tmtcclient_Binary_Upload_Serial.xml b/.idea/runConfigurations/tmtcclient_Binary_Upload_Serial.xml
index 0f71641f824fd4d2ef324b83f038e96cf4a6d467..30c74aebd4c2f0940eab989f05b2304d263d8f2f 100644
--- a/.idea/runConfigurations/tmtcclient_Binary_Upload_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Binary_Upload_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 5 -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_CLI.xml b/.idea/runConfigurations/tmtcclient_CLI.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3fff92f9f52936c715fe17aca61e15aac6db9efc
--- /dev/null
+++ b/.idea/runConfigurations/tmtcclient_CLI.xml
@@ -0,0 +1,24 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="tmtcclient CLI" type="PythonConfigurationType" factoryName="Python">
+    <module name="tmtc" />
+    <option name="INTERPRETER_OPTIONS" value="" />
+    <option name="PARENT_ENVS" value="true" />
+    <envs>
+      <env name="PYTHONUNBUFFERED" value="1" />
+    </envs>
+    <option name="SDK_HOME" value="" />
+    <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+    <option name="IS_MODULE_SDK" value="true" />
+    <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="$PROJECT_DIR$/tmtc_client_cli.py" />
+    <option name="PARAMETERS" value="" />
+    <option name="SHOW_COMMAND_LINE" value="false" />
+    <option name="EMULATE_TERMINAL" value="false" />
+    <option name="MODULE_MODE" value="false" />
+    <option name="REDIRECT_INPUT" value="false" />
+    <option name="INPUT_FILE" value="" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/tmtcclient_Clear_SD_Card_.xml b/.idea/runConfigurations/tmtcclient_Clear_SD_Card_.xml
index 0625478e1096c8e4741c5a679e7f1a5106657c74..e38f563764c08a58859d823dc6c76e8c19684269 100644
--- a/.idea/runConfigurations/tmtcclient_Clear_SD_Card_.xml
+++ b/.idea/runConfigurations/tmtcclient_Clear_SD_Card_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s SD -o A20 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Copy_Bootloader.xml b/.idea/runConfigurations/tmtcclient_Copy_Bootloader.xml
index d91be384b7b6603e6fbb013d2d72767e64c340c3..d5b5e3129deb996a2b23d2dd89aa6acd498bc189 100644
--- a/.idea/runConfigurations/tmtcclient_Copy_Bootloader.xml
+++ b/.idea/runConfigurations/tmtcclient_Copy_Bootloader.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s Img -o A11S -c 1 -t 4" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Copy_OBSW_Update.xml b/.idea/runConfigurations/tmtcclient_Copy_OBSW_Update.xml
index df307b80bceb31890f70e8a330843cce7d4412be..a34591129c93b9270fd417abc8dae3d67fbfe99f 100644
--- a/.idea/runConfigurations/tmtcclient_Copy_OBSW_Update.xml
+++ b/.idea/runConfigurations/tmtcclient_Copy_OBSW_Update.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s Img -o A4U -c 1 -t 4" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Create_File_Struct_AT91.xml b/.idea/runConfigurations/tmtcclient_Create_File_Struct_AT91.xml
index cc27520bd0fab79801e5e6cb318253da46476c3c..a62b7512f616eae21edb1aaed837c834785a6e57 100644
--- a/.idea/runConfigurations/tmtcclient_Create_File_Struct_AT91.xml
+++ b/.idea/runConfigurations/tmtcclient_Create_File_Struct_AT91.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s SD -o C0A -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Disable_Periodic_Print_.xml b/.idea/runConfigurations/tmtcclient_Disable_Periodic_Print_.xml
index b6645926453ca505e2732cd9a09225e1f7b733cc..bdca4a4bed321ca1b66fe43ef58391337b391c95 100644
--- a/.idea/runConfigurations/tmtcclient_Disable_Periodic_Print_.xml
+++ b/.idea/runConfigurations/tmtcclient_Disable_Periodic_Print_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 17 -o 130 -c 1 -t 2.2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Dummy_UDP.xml b/.idea/runConfigurations/tmtcclient_Dummy_UDP.xml
index f591aac987e2c7e3c3038ad565a68c9404b06266..8d3a1fc9ee91099739631f163b2f072d09c32ab8 100644
--- a/.idea/runConfigurations/tmtcclient_Dummy_UDP.xml
+++ b/.idea/runConfigurations/tmtcclient_Dummy_UDP.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 3 -s Dummy -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Enable_Periodic_Print.xml b/.idea/runConfigurations/tmtcclient_Enable_Periodic_Print.xml
index b7394cbce13ae7c4f410959e820edcf2c31248c5..52fe3f39f0c07137b11b4601b2a68456f4287594 100644
--- a/.idea/runConfigurations/tmtcclient_Enable_Periodic_Print.xml
+++ b/.idea/runConfigurations/tmtcclient_Enable_Periodic_Print.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 17 -o 129 -c 1 -t 2.2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Format_SD_Card_.xml b/.idea/runConfigurations/tmtcclient_Format_SD_Card_.xml
index 050cb977f81f9aebbc5e2509619b6e5bf3a54821..a891d9cf3b9ddf184969361a36403d63a3630af2 100644
--- a/.idea/runConfigurations/tmtcclient_Format_SD_Card_.xml
+++ b/.idea/runConfigurations/tmtcclient_Format_SD_Card_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s SD -o A21 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_GPS0_Serial.xml b/.idea/runConfigurations/tmtcclient_GPS0_Serial.xml
index 7aa42a29328053467a3364d0c8fd1e5623643b94..03a0694c7b19036d6ca324f28a4d5f8fec1cb928 100644
--- a/.idea/runConfigurations/tmtcclient_GPS0_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_GPS0_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS0 -c 1 --hk -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_GPS1_Serial.xml b/.idea/runConfigurations/tmtcclient_GPS1_Serial.xml
index 2e914ff6b1e6f74ba631fb5d3a019074c29bfe49..fa042ecfbb16dadf67771e70ece2f8f765266645 100644
--- a/.idea/runConfigurations/tmtcclient_GPS1_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_GPS1_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS1 -c 1 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_GUI.xml b/.idea/runConfigurations/tmtcclient_GUI.xml
index 6ae7919b09fd2b1514488e8ab73c7b964ebf0c64..7dd7c34ab2e002427304aad205be2c0b137a0e44 100644
--- a/.idea/runConfigurations/tmtcclient_GUI.xml
+++ b/.idea/runConfigurations/tmtcclient_GUI.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="$PROJECT_DIR$/obsw_tmtc_client.py" />
-    <option name="PARAMETERS" value="-m 0" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtc_client_gui.py" />
+    <option name="PARAMETERS" value="" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
     <option name="MODULE_MODE" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Hamming_from_FRAM.xml b/.idea/runConfigurations/tmtcclient_Hamming_from_FRAM.xml
index 86e6dbb681b37ef6a8873140acc9b2a2350e3f0e..a2ae03963e5b6a54fca87864edec8cfd859951b0 100644
--- a/.idea/runConfigurations/tmtcclient_Hamming_from_FRAM.xml
+++ b/.idea/runConfigurations/tmtcclient_Hamming_from_FRAM.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 1 -s Img -o P1 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Hamming_from_SD.xml b/.idea/runConfigurations/tmtcclient_Hamming_from_SD.xml
index 43c2bce795ed4979b42d4bca37d72c9163c3dfcc..dd2aec8cd81a364f37d92a8b1cf0291f8921bfed 100644
--- a/.idea/runConfigurations/tmtcclient_Hamming_from_SD.xml
+++ b/.idea/runConfigurations/tmtcclient_Hamming_from_SD.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 1 -s Img -o P0 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Help.xml b/.idea/runConfigurations/tmtcclient_Help.xml
index 6aece9026d223bfd963b60d15dc2fe90cc60130e..6bc32bb51d3f09eadd47478d47d76599896c3073 100644
--- a/.idea/runConfigurations/tmtcclient_Help.xml
+++ b/.idea/runConfigurations/tmtcclient_Help.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-h" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Listener_Serial.xml b/.idea/runConfigurations/tmtcclient_Listener_Serial.xml
index 8655adedcf593f6bc9146582d876f95a7b5a29f6..8e69b088bc713237b815454d76ff671098fe8617 100644
--- a/.idea/runConfigurations/tmtcclient_Listener_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Listener_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 1 --hk -c 1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Lock_file.xml b/.idea/runConfigurations/tmtcclient_Lock_file.xml
index dc7e019138759e7d48e4bbaa6bcf32dc3dd89849..b322ea85bd8058884400d8a4d47b254e0b5e0c4f 100644
--- a/.idea/runConfigurations/tmtcclient_Lock_file.xml
+++ b/.idea/runConfigurations/tmtcclient_Lock_file.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s SD -o 5 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Module_Test_Serial.xml b/.idea/runConfigurations/tmtcclient_Module_Test_Serial.xml
index 317ef3ef1694004f58e6eca515834aa7bc1f6525..60552f2a1b883a07f172b878bb71050687f55a35 100644
--- a/.idea/runConfigurations/tmtcclient_Module_Test_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Module_Test_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 6 -c 1 --hk" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_PowerCycle_OBC_.xml b/.idea/runConfigurations/tmtcclient_PowerCycle_OBC_.xml
index b443130565f1120cc74f261a940059def5685f68..3941b985c0087c4b919a60e48be7bf64b416ad3a 100644
--- a/.idea/runConfigurations/tmtcclient_PowerCycle_OBC_.xml
+++ b/.idea/runConfigurations/tmtcclient_PowerCycle_OBC_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s Core -o A11 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Print_SD_Card.xml b/.idea/runConfigurations/tmtcclient_Print_SD_Card.xml
index 5c359f03920f2de984dfbd0496d6ca80534ebfb2..6d95a0f5986196bfb6293c6aef8997909fece213 100644
--- a/.idea/runConfigurations/tmtcclient_Print_SD_Card.xml
+++ b/.idea/runConfigurations/tmtcclient_Print_SD_Card.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s SD -o A2 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Reset_OBC.xml b/.idea/runConfigurations/tmtcclient_Reset_OBC.xml
index 3e529385b41396062e99870991fcde125cffd9be..37cfd480377db6db1b440401e74bd7685fdf48e9 100644
--- a/.idea/runConfigurations/tmtcclient_Reset_OBC.xml
+++ b/.idea/runConfigurations/tmtcclient_Reset_OBC.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s Core -o A10 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Run_Time_Stats_OBC_.xml b/.idea/runConfigurations/tmtcclient_Run_Time_Stats_OBC_.xml
index 8e3e5851b3f02f90adb088bc83c11d659719c433..f5cac3565d5b9920b7d10e153dee733bc4bb3e8a 100644
--- a/.idea/runConfigurations/tmtcclient_Run_Time_Stats_OBC_.xml
+++ b/.idea/runConfigurations/tmtcclient_Run_Time_Stats_OBC_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s Core -o A0 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_17_QEMU.xml b/.idea/runConfigurations/tmtcclient_Service_17_QEMU.xml
index 394ad5de13110eb11529d1301784fb505a53da2f..95d5fd3d1b47669870bcc6c7c142b9a990458097 100644
--- a/.idea/runConfigurations/tmtcclient_Service_17_QEMU.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_17_QEMU.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 17 -c 2 -t 2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_17_Serial.xml b/.idea/runConfigurations/tmtcclient_Service_17_Serial.xml
index 9abd7b47887bd512e9ab8324697489c8d241f991..97bce7281b093cde77214d07e2e68441ca3e91b2 100644
--- a/.idea/runConfigurations/tmtcclient_Service_17_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_17_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 17 -c 1 -t 2.2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_17_UDP.xml b/.idea/runConfigurations/tmtcclient_Service_17_UDP.xml
index f8ab43f96a2a4f9497d0d2bd5d76fcd602e00c9b..20619467d64c2c7257e21a1fa282cde93912dcef 100644
--- a/.idea/runConfigurations/tmtcclient_Service_17_UDP.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_17_UDP.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 3 -s 17 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_200_UDP.xml b/.idea/runConfigurations/tmtcclient_Service_200_UDP.xml
index cf246a41cd1d20f0cbe32274fb3b4f554e659b60..069fe98fb5550a3d7dc2de6556aea4bdbd5fb63e 100644
--- a/.idea/runConfigurations/tmtcclient_Service_200_UDP.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_200_UDP.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 3 -s 200 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_20_QEMU___.xml b/.idea/runConfigurations/tmtcclient_Service_20_QEMU___.xml
index 506baaca1246070f05f4e7b72e07c2ad33ec0e9d..779ce5bf884a48d549e55de87b71580aab791da7 100644
--- a/.idea/runConfigurations/tmtcclient_Service_20_QEMU___.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_20_QEMU___.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 20 -c 2 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_2_QEMU.xml b/.idea/runConfigurations/tmtcclient_Service_2_QEMU.xml
index 59d368399ee161ca806e6177a62aebb1c761bd33..30390e9239d5c13399a90ef12b45d9ba05f073c1 100644
--- a/.idea/runConfigurations/tmtcclient_Service_2_QEMU.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_2_QEMU.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 2 -c 2 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_2_Serial.xml b/.idea/runConfigurations/tmtcclient_Service_2_Serial.xml
index 1ffb46d6a63706b548933833b4bd1e4575723b3e..47fae48bec05a43e9b95397e492b3b6ea7ac2f0e 100644
--- a/.idea/runConfigurations/tmtcclient_Service_2_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_2_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 2 -c 1 -t 3.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_2_UDP.xml b/.idea/runConfigurations/tmtcclient_Service_2_UDP.xml
index d592060fa408a267fbe76d06d59580403fc484d3..4375154dbd140756c61b29ed461c2d444b80b07c 100644
--- a/.idea/runConfigurations/tmtcclient_Service_2_UDP.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_2_UDP.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 3 -s 2 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_3_QEMU_.xml b/.idea/runConfigurations/tmtcclient_Service_3_QEMU_.xml
index 2ec6365acecc8cc4291b929e08f7bd85a6dca548..9d4be2a953a8d5822e3a86671c2be0fb2921c9a1 100644
--- a/.idea/runConfigurations/tmtcclient_Service_3_QEMU_.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_3_QEMU_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 3 -c 2 -t 2 --hk" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_3_Serial_.xml b/.idea/runConfigurations/tmtcclient_Service_3_Serial_.xml
index 92741a34eaf48f82d59302d0c44c0b4d8e918556..7ec8d32c6c6daf60deb5d38a98d27fe86358c38d 100644
--- a/.idea/runConfigurations/tmtcclient_Service_3_Serial_.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_3_Serial_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 3 -c 1 -t 3 --hk" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_5_QEMU_.xml b/.idea/runConfigurations/tmtcclient_Service_5_QEMU_.xml
index 7669c7a025df306fa0658ef487b7c2e997ba833f..2458e895dacff8cc304657fa6793915adcad8492 100644
--- a/.idea/runConfigurations/tmtcclient_Service_5_QEMU_.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_5_QEMU_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 5 -c 2 -t 2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_5_Serial.xml b/.idea/runConfigurations/tmtcclient_Service_5_Serial.xml
index 58a794a73e1b785409f4b477af84e3355a96967c..68c10c8142480abc3432809141b434bc48bb1345 100644
--- a/.idea/runConfigurations/tmtcclient_Service_5_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_5_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 5 -c 1 -t 2.0" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_8_QEMU__.xml b/.idea/runConfigurations/tmtcclient_Service_8_QEMU__.xml
index 90becd426bf2091b79d593abc446d5e6a3eaacb0..5ce38cc5aa79623764dbf567e73c2800f9f80623 100644
--- a/.idea/runConfigurations/tmtcclient_Service_8_QEMU__.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_8_QEMU__.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 8 -c 2 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_8_Serial.xml b/.idea/runConfigurations/tmtcclient_Service_8_Serial.xml
index 7d9695d2c9c2e0c3ea98b767c37b8cf11948c2df..fa99050edd7b32d844287a651dd3b0fb6d98c4e6 100644
--- a/.idea/runConfigurations/tmtcclient_Service_8_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_8_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 8 -c 1 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_8_UDP.xml b/.idea/runConfigurations/tmtcclient_Service_8_UDP.xml
index f7797b9f92b1467733968774111393c5b01dd13f..1da3af4e1ce31f7baa623f63dd69ae0308c97d0b 100644
--- a/.idea/runConfigurations/tmtcclient_Service_8_UDP.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_8_UDP.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -c 3 -s 8" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_9_Serial.xml b/.idea/runConfigurations/tmtcclient_Service_9_Serial.xml
index 781448c3ff0319a1b8f5c887741b7b837010a29d..2e21799d7b54674d5c80fd4caabcf7d724768575 100644
--- a/.idea/runConfigurations/tmtcclient_Service_9_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_9_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 9 -c 1 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_Dummy_QEMU.xml b/.idea/runConfigurations/tmtcclient_Service_Dummy_QEMU.xml
index 78e091163340f8bd1a7597a8dbd58f3c338d3c53..1ca4f2f8ca977c00e9d2a2052f20a9deae6e60ba 100644
--- a/.idea/runConfigurations/tmtcclient_Service_Dummy_QEMU.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_Dummy_QEMU.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s Dummy -c 2 -t 2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_GPS0_QEMU__.xml b/.idea/runConfigurations/tmtcclient_Service_GPS0_QEMU__.xml
index e859a0a53f4994efb589bf38808f27852b89581f..33ec970f5bfa6cc2fbd05f1bed2c20f30307d2e0 100644
--- a/.idea/runConfigurations/tmtcclient_Service_GPS0_QEMU__.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_GPS0_QEMU__.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS0 -c 2 -t 2.5 --hk" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Service_GPS1_QEMU___.xml b/.idea/runConfigurations/tmtcclient_Service_GPS1_QEMU___.xml
index 8a100cfd5b5483a1c943a682f32482cbe0d3822b..8e8b943bf2f82f583614b77cdc5747a1910280cb 100644
--- a/.idea/runConfigurations/tmtcclient_Service_GPS1_QEMU___.xml
+++ b/.idea/runConfigurations/tmtcclient_Service_GPS1_QEMU___.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s GPS1 -c 2 -t 2.5 --hk" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Single_Command.xml b/.idea/runConfigurations/tmtcclient_Single_Command.xml
index 46d240300da9f6c7eec267237729c2fd9c72737d..9a116c2a5c403abf9e9712ea5b205f437bd7c2a9 100644
--- a/.idea/runConfigurations/tmtcclient_Single_Command.xml
+++ b/.idea/runConfigurations/tmtcclient_Single_Command.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 2 -c 3 --boardIP=127.0.0.1" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Single_Command_Serial.xml b/.idea/runConfigurations/tmtcclient_Single_Command_Serial.xml
index aa1a2f4b2ae631f47148b51f094fe3d17986b6e4..c70cef9583f9b103fdf5239c89117f764e34f452 100644
--- a/.idea/runConfigurations/tmtcclient_Single_Command_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient_Single_Command_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 2 -c 1 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/.idea/runConfigurations/tmtcclient_Software_QEMU_.xml b/.idea/runConfigurations/tmtcclient_Software_QEMU_.xml
index 49a2418a343c21a57464df1f2c30035460fb530d..12abc3e6fc029245c7ccecde450954847d2ee574 100644
--- a/.idea/runConfigurations/tmtcclient_Software_QEMU_.xml
+++ b/.idea/runConfigurations/tmtcclient_Software_QEMU_.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 4 -c 2 -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Trigger_Exceptions.xml b/.idea/runConfigurations/tmtcclient_Trigger_Exceptions.xml
index d8483e91e0c5ee927bf310001149083e5b92467e..0853bdb6ab472e24039d99a523abd3a4984c0612 100644
--- a/.idea/runConfigurations/tmtcclient_Trigger_Exceptions.xml
+++ b/.idea/runConfigurations/tmtcclient_Trigger_Exceptions.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 17 -o 150 -c 1 -t 2.2" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Unittest_QEMU.xml b/.idea/runConfigurations/tmtcclient_Unittest_QEMU.xml
index 07cedcf92c05201048b69b1cadd88c498dff07ac..edae8f21dd310739cd449f1929d40989aed0997c 100644
--- a/.idea/runConfigurations/tmtcclient_Unittest_QEMU.xml
+++ b/.idea/runConfigurations/tmtcclient_Unittest_QEMU.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 5 -c 2 -t 5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient_Unlock_File.xml b/.idea/runConfigurations/tmtcclient_Unlock_File.xml
index d484de6c0b86bb59356bcc78423c8267138bebed..f01de12783bd292d64fcfebfae9ab429ab5ff1a5 100644
--- a/.idea/runConfigurations/tmtcclient_Unlock_File.xml
+++ b/.idea/runConfigurations/tmtcclient_Unlock_File.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s SD -o 6 -c 1 -t 2.5" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="true" />
diff --git a/.idea/runConfigurations/tmtcclient__Service_200_Serial.xml b/.idea/runConfigurations/tmtcclient__Service_200_Serial.xml
index 8613b8d723259f83a52b98fc2a01f8fe8253d24c..4fc80a187ff32bf62a7d270b774380cf81fef1d0 100644
--- a/.idea/runConfigurations/tmtcclient__Service_200_Serial.xml
+++ b/.idea/runConfigurations/tmtcclient__Service_200_Serial.xml
@@ -12,7 +12,7 @@
     <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="$PROJECT_DIR$/obsw_tmtc_client.py" />
+    <option name="SCRIPT_NAME" value="$PROJECT_DIR$/core/tmtc_client_core.py" />
     <option name="PARAMETERS" value="-m 3 -s 200 -c 1 --hk -t 3" />
     <option name="SHOW_COMMAND_LINE" value="false" />
     <option name="EMULATE_TERMINAL" value="false" />
diff --git a/gui/obsw_backend_test.py b/archive/obsw_backend_test.py
similarity index 92%
rename from gui/obsw_backend_test.py
rename to archive/obsw_backend_test.py
index d9e6c488a10a2a9c5050d4dd33f328f01d548abb..62a3c3e5904060ea253302aae872ec213707ea51 100644
--- a/gui/obsw_backend_test.py
+++ b/archive/obsw_backend_test.py
@@ -9,7 +9,7 @@ LOGGER = get_logger()
 
 class TmTcBackend(Process):
     def __init__(self):
-        from obsw_tmtc_client import TmTcHandler
+        from core.tmtc_client_core import TmTcHandler
         super(TmTcBackend, self).__init__()
         self.address = ('localhost', 6000)     # family is deduced to be 'AF_INET'
         self.tmtc_backend = TmTcHandler()
diff --git a/archive/obsw_pus_tm_base.py b/archive/obsw_pus_tm_base.py
deleted file mode 100644
index 287c9cdf06a80daf381a63a58d6e20007e14f18b..0000000000000000000000000000000000000000
--- a/archive/obsw_pus_tm_base.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Created on Wed Apr  4 11:44:48 2018
-Generic PUS packet class to deserialize raw PUS telemetry.
-@author: S. Gaisser
-"""
-
-import crcmod
-import datetime
-
-
-class ObswPusPacket:
-    def __init__(self, byte_array: bytearray):
-        self.__packet_raw = byte_array
-        self.PUSHeader = PUSPacketHeader(byte_array)
-        byte_array = byte_array[6:]
-        self.dataFieldHeader = OBSWPUSPacketDataFieldHeader(byte_array)
-        byte_array = byte_array[12:]
-        self.data = byte_array[:len(byte_array) - 2]
-        self.crc = byte_array[len(byte_array) - 2] << 8 | byte_array[len(byte_array) - 1]
-
-    def get_raw_packet(self) -> bytearray:
-        return self.__packet_raw
-
-    def append_pus_packet_header(self, array):
-        self.dataFieldHeader.printDataFieldHeader(array)
-        self.PUSHeader.printPusPacketHeader(array)
-
-    def append_pus_packet_header_column_headers(self, array):
-        self.dataFieldHeader.printDataFieldHeaderColumnHeader(array)
-        self.PUSHeader.printPusPacketHeaderColumnHeaders(array)
-
-    def getPacketSize(self):
-        # PusHeader Size + data size
-        size = PUSPacketHeader.headerSize + self.PUSHeader.length + 1
-        return size
-
-    def getService(self):
-        return self.dataFieldHeader.type
-
-    def getSubservice(self):
-        return self.dataFieldHeader.subtype
-
-    def getSSC(self):
-        return self.PUSHeader.sourceSequenceCount
-
-    def printData(self):
-        print(self.returnDataString())
-
-    def returnDataString(self):
-        strToPrint = "["
-        for byte in self.data:
-            strToPrint += str(hex(byte)) + " , "
-        strToPrint = strToPrint.rstrip(' , ')
-        strToPrint += ']'
-        return strToPrint
-
-
-
diff --git a/config/obsw_config.py b/config/obsw_config.py
index 3372243041765de31516dac3cd169fc29f538c31..fad629017754480dcb843bd4a92084700a4a7ec4 100644
--- a/config/obsw_config.py
+++ b/config/obsw_config.py
@@ -10,7 +10,6 @@
 import struct
 import pprint
 import logging
-from socket import INADDR_ANY
 from config.obsw_definitions import ModeList, ComIF
 
 """
@@ -172,6 +171,6 @@ def set_globals(args):
     G_TM_TIMEOUT = args.tm_timeout
     G_RESEND_TC = args.resend_tc
 
-    from obsw_user_code import global_setup_hook
+    from config.obsw_user_code import global_setup_hook
     global_setup_hook()
 
diff --git a/core/__init__.py b/core/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/obsw_tmtc_client.py b/core/tmtc_backend.py
old mode 100755
new mode 100644
similarity index 75%
rename from obsw_tmtc_client.py
rename to core/tmtc_backend.py
index f0421b2705fa12f296e192b4b2523f08fe09b9ef..1b16d201144dc1fc9fe002fcc3e2711230ce41a1
--- a/obsw_tmtc_client.py
+++ b/core/tmtc_backend.py
@@ -1,101 +1,28 @@
-#!/usr/bin/python3
-# -*- coding: utf-8 -*-
-"""
-@brief  This client was developed by KSat for the SOURCE project to test the on-board software.
-@details
-This client features multiple sender/receiver modes and has been designed
-to be extensible and easy to use. This clien is based on the PUS standard for the format
-of telecommands and telemetry. It can also send TMTC via different interfaces like the
-serial interface (USB port) or ethernet interface.
-
-@license
-Copyright 2020 KSat e.V. Stuttgart
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-@manual
-Run this file with the -h flag to display options.
-"""
 import atexit
 import time
 import logging
 import sys
 from collections import deque
-from typing import Tuple, Union
-
 from config import obsw_config as g
-from config.obsw_config import set_globals
-from config.obsw_com_config import set_communication_interface
+from typing import Tuple, Union
 
+from tc.obsw_pus_tc_packer import ServiceQueuePacker, create_total_tc_queue
+from test.obsw_pus_service_test import run_selected_pus_tests
+from tmtc_core.utility.obsw_logger import get_logger
 from tmtc_core.tc.obsw_pus_tc_base import PusTcInfo
 from tmtc_core.sendreceive.obsw_single_command_sender_receiver import SingleCommandSenderReceiver
 from tmtc_core.sendreceive.obsw_sequential_sender_receiver import SequentialCommandSenderReceiver
 from tmtc_core.sendreceive.obsw_tm_listener import TmListener
 from tmtc_core.utility.obsw_tmtc_printer import TmTcPrinter
 from tmtc_core.utility.obsw_exit_handler import keyboard_interrupt_handler
-from tmtc_core.utility.obsw_logger import set_tmtc_logger, get_logger
+from config.obsw_com_config import set_communication_interface
 
-from test.obsw_pus_service_test import run_selected_pus_tests
-from tc.obsw_pus_tc_packer import create_total_tc_queue, ServiceQueuePacker
-from utility.obsw_args_parser import parse_input_arguments
 from utility.obsw_binary_uploader import BinaryFileUploader
 
-from obsw_user_code import command_preparation_hook
-import gui.obsw_tmtc_gui
+from config.obsw_user_code import command_preparation_hook
 
 LOGGER = get_logger()
 
-def main():
-    """
-    Main method, reads input arguments, sets global variables and start TMTC handler.
-    """
-    set_tmtc_logger()
-    LOGGER.info("Starting TMTC Client")
-
-    LOGGER.info("Parsing input arguments")
-    args = parse_input_arguments()
-
-    LOGGER.info("Setting global variables")
-    set_globals(args)
-
-    LOGGER.info("Starting TMTC Handler")
-
-    if g.G_MODE_ID == g.ModeList.GUIMode:
-        open_gui()
-    else:
-        tmtc_handler = TmTcHandler()
-        tmtc_handler.perform_operation()
-
-    # At some later point, the program will run permanently and be able to take commands.
-    # For now we put a permanent loop here so the program
-    # doesn't exit automatically (TM Listener is daemonic)
-    while True:
-        pass
-
-
-def open_gui():
-    tmtcGui = gui.obsw_tmtc_gui.TmTcGUI()
-    tmtcGui.run()
-    # sys.exit()
-
-
-def command_preparation() -> Tuple[bytearray, Union[None, PusTcInfo]]:
-    """
-    Prepare command for single command testing
-    :return:
-    """
-    return command_preparation_hook()
-
 
 class TmTcHandler:
     """
@@ -237,5 +164,9 @@ class TmTcHandler:
             self.mode = g.ModeList.ListenerMode
 
 
-if __name__ == "__main__":
-    main()
+def command_preparation() -> Tuple[bytearray, Union[None, PusTcInfo]]:
+    """
+    Prepare command for single command testing
+    :return:
+    """
+    return command_preparation_hook()
\ No newline at end of file
diff --git a/core/tmtc_client_core.py b/core/tmtc_client_core.py
new file mode 100755
index 0000000000000000000000000000000000000000..346e1ab09c52b3e94757ef0a25d8cd5d449e8fb5
--- /dev/null
+++ b/core/tmtc_client_core.py
@@ -0,0 +1,76 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+"""
+@brief  This client was developed by KSat for the SOURCE project to test the on-board software.
+@details
+This client features multiple sender/receiver modes and has been designed
+to be extensible and easy to use. This clien is based on the PUS standard for the format
+of telecommands and telemetry. It can also send TMTC via different interfaces like the
+serial interface (USB port) or ethernet interface.
+
+@license
+Copyright 2020 KSat e.V. Stuttgart
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+@manual
+Run this file with the -h flag to display options.
+"""
+import time
+
+from tmtc_core.utility.obsw_logger import set_tmtc_logger, get_logger
+
+from config.obsw_config import set_globals
+from core.tmtc_backend import TmTcHandler
+from utility.obsw_args_parser import parse_input_arguments
+
+LOGGER = get_logger()
+
+def run_tmtc_client(use_gui: bool):
+    """
+    Main method, reads input arguments, sets global variables and start TMTC handler.
+    """
+    set_tmtc_logger()
+    LOGGER.info("Starting TMTC Client")
+
+    if use_gui:
+        run_with_gui()
+
+    LOGGER.info("Parsing input arguments")
+    args = parse_input_arguments()
+
+    LOGGER.info("Setting global variables")
+    set_globals(args)
+
+    LOGGER.info("Starting TMTC Handler")
+
+    tmtc_handler = TmTcHandler()
+    tmtc_handler.perform_operation()
+
+    # At some later point, the program will run permanently and be able to take commands.
+    # For now we put a permanent loop here so the program
+    # doesn't exit automatically (TM Listener is daemonic)
+    while True:
+        pass
+
+
+def run_with_gui():
+    while True:
+        print("GUI net fertig")
+        time.sleep(2)
+    # tmtcGui = gui.obsw_tmtc_gui.TmTcGUI()
+    # tmtcGui.run()
+    # sys.exit()
+
+
+
diff --git a/gui/obsw_tmtc_gui.py b/gui/obsw_tmtc_gui.py
index ae29984ce4108a75a6bad1437319a08cf624390b..adc571c7735b82d9f2ff9c4d23018f7c90863817 100644
--- a/gui/obsw_tmtc_gui.py
+++ b/gui/obsw_tmtc_gui.py
@@ -14,7 +14,7 @@
     R. Mueller
 """
 from PyQt5.QtWidgets import *
-from obsw_tmtc_client import TmTcHandler
+
 from tmtc_core.tc.obsw_pus_tc_base import PusTelecommand
 from tmtc_core.utility.obsw_logger import get_logger
 from config import obsw_config
@@ -35,7 +35,8 @@ LOGGER = get_logger()
 
 class TmTcGUI:
     def __init__(self):
-        super(TmTcGUI, self).__init__()
+        pass
+        # super(TmTcGUI, self).__init__()
 
     def run(self):
         application = Application()
@@ -64,6 +65,7 @@ class SingleCommandTable(QTableWidget):
 
 
 class Application:
+    from core.tmtc_client_core import TmTcHandler
     tmtc_handler: TmTcHandler
 
     # TODO: this list should probably be inside an enum in the obsw_config.py
@@ -80,11 +82,13 @@ class Application:
 
     isBusy: bool
 
-    def __init__(self):
+    def __init__(self, tmtc_handler: TmTcHandler):
+        self.tmtc_handler = tmtc_handler
         obsw_config.G_SERVICE = 17
         obsw_config.G_COM_IF = obsw_config.ComIF.QEMU
 
     def init_tmtc_handler(self):
+        from core.tmtc_client_core import TmTcHandler
         self.tmtc_handler = TmTcHandler()
 
     def com_if_index_changed(self, index: int):
diff --git a/obsw_user_code.py b/obsw_user_code.py
deleted file mode 100644
index 4cfc48eba6b4266772ca1db8db9f2dbcb8781390..0000000000000000000000000000000000000000
--- a/obsw_user_code.py
+++ /dev/null
@@ -1,45 +0,0 @@
-"""
-User defined code can be added here.
-"""
-from typing import Union, Tuple
-from tmtc_core.tc.obsw_pus_tc_base import PusTcInfo
-from enum import Enum
-
-
-# Yeah, I did not have a better idea yet..
-class Developer(Enum):
-    Robin = 0
-
-
-Developer = Developer.Robin
-
-
-def command_preparation_hook() -> Tuple[bytearray, Union[None, PusTcInfo]]:
-    """
-    Can be used to pack user-defined commands.
-    """
-    if Developer == Developer.Robin:
-        return prepare_robins_commands()
-
-
-def global_setup_hook():
-    """
-    Can be used to alter the global variables in a custom defined way.
-    For example, device specific com ports or ethernet ports can be set here.
-    The global variables in the config.obsw_config file can be edited here
-    by using the handle.
-    For example: config.obsw_config.G_ETHERNET_SEND_ADDRESS = new_send_address
-    """
-    if Developer == Developer.Robin:
-        global_setup_hook_robin()
-
-
-def prepare_robins_commands():
-    from tmtc_core.tc.obsw_pus_tc_base import PusTelecommand
-    command = PusTelecommand(service=17, subservice=1, ssc=20)
-    return command.pack_command_tuple()
-
-
-def global_setup_hook_robin():
-    import config.obsw_config
-    pass
diff --git a/tmtc_client_cli.py b/tmtc_client_cli.py
new file mode 100644
index 0000000000000000000000000000000000000000..a744b5425ddf6f4c549cc140ee4f92c64c4d51f7
--- /dev/null
+++ b/tmtc_client_cli.py
@@ -0,0 +1,7 @@
+from core.tmtc_client_core import run_tmtc_client
+
+def main():
+    run_tmtc_client(False)
+
+if __name__ == "__main__":
+    main()
diff --git a/tmtc_client_gui.py b/tmtc_client_gui.py
new file mode 100644
index 0000000000000000000000000000000000000000..f389a92c690e7e4f4c9cd36fbba618c9ee208836
--- /dev/null
+++ b/tmtc_client_gui.py
@@ -0,0 +1,7 @@
+from core.tmtc_client_core import run_tmtc_client
+
+def main():
+    run_tmtc_client(True)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file