diff --git a/modules/core/engine.py b/modules/core/engine.py
index 4d0376cd4e5818ddcc1164b9d1fff9004fd36139..58a88e2294b84de66ea0d18325492edc07e8d2d7 100644
--- a/modules/core/engine.py
+++ b/modules/core/engine.py
@@ -28,13 +28,14 @@ import json
 
 from modules.communication.liquidsoap.playerclient import LiquidSoapPlayerClient
 # from modules.communication.liquidsoap.recorderclient import LiquidSoapRecorderClient
-from modules.core.startup import StartupThread
-from modules.core.state import PlayerStateService
+from modules.core.startup       import StartupThread
+from modules.core.state         import PlayerStateService
+from modules.core.monitor       import Monitoring
 from modules.communication.mail import AuraMailer
 
-from modules.base.enum import ChannelType, Channel, TransitionType
-from modules.base.utils import TerminalColors, SimpleUtil
-from modules.base.exceptions import LQConnectionError, InvalidChannelException, NoActiveEntryException
+from modules.base.enum          import ChannelType, Channel, TransitionType
+from modules.base.utils         import TerminalColors, SimpleUtil
+from modules.base.exceptions    import LQConnectionError, InvalidChannelException, NoActiveEntryException, EngineMalfunctionException
 
 
 class SoundSystem():
@@ -48,6 +49,7 @@ class SoundSystem():
     transaction = 0
     channels = None
     scheduler = None
+    monitoring = None
     #error_data = None #FIXME Can be removed
     auramailer = None
     is_liquidsoap_running = False
@@ -76,6 +78,7 @@ class SoundSystem():
 
         self.client = LiquidSoapPlayerClient(config, "engine.sock")
         # self.lqcr = LiquidSoapRecorderClient(config, "record.sock")
+        self.monitoring = Monitoring(config, self)
 
         self.auramailer = AuraMailer(self.config)
         self.is_active()
@@ -111,6 +114,17 @@ class SoundSystem():
         self.is_liquidsoap_running = True
         self.logger.info(SimpleUtil.green("Engine Core ------[ connected ]-------- Liquidsoap"))
 
+        # Start Monitoring
+        is_valid = self.monitoring.has_valid_status(False)
+        status = self.monitoring.get_status()
+        self.logger.info("Status Monitor:\n%s" % json.dumps(status, indent=4))
+        if not is_valid:
+            self.logger.info("Engine Status: " + SimpleUtil.red(status["engine"]["status"]))
+            raise EngineMalfunctionException
+        else:
+            self.logger.info("Engine Status: " + SimpleUtil.green("OK"))
+
+
 
     def is_ready(self):
         """
diff --git a/modules/core/monitor.py b/modules/core/monitor.py
index 7fbc753aa11060974c52af8c098bae441356f5fc..f73c5b94e93af7bdf6997fc2e02d4d3eb539a277 100644
--- a/modules/core/monitor.py
+++ b/modules/core/monitor.py
@@ -108,7 +108,8 @@ class Monitoring:
         Args:
             update_vitality_only (Boolean): Refreshes only the vital parts required for the heartbeat
         """
-                
+        is_valid = False
+
         if update_vitality_only:
             self.update_vitality_status()
         else:
@@ -121,16 +122,15 @@ class Monitoring:
                 and self.status["audio_store"]["exists"]:
 
                 self.status["engine"]["status"] = MonitorResponseCode.OK.value
-                return True
+                is_valid = True
             else:
                 self.status["engine"]["status"] = MonitorResponseCode.INVALID_STATE.value
-                return False
 
         except Exception as e:
             self.logger.error("Exception while validating engine status: " + str(e))
             self.status["engine"]["status"] = MonitorResponseCode.INVALID_STATE.value
         
-        return False
+        return is_valid
 
 
 
@@ -178,7 +178,7 @@ class Monitoring:
         self.status["redis_ready"]              = self.validate_redis_connection()
         self.status["audio_store"]              = self.validate_directory(self.config.get("audiofolder"))
 
-        # After first update start the Heartbeat Monitior
+        # After first update start the Heartbeat Monitor
         if not self.heartbeat_running:
             self.heartbeat_running = True
             if self.config.get("heartbeat_frequency") > 0:
@@ -189,10 +189,10 @@ class Monitoring:
     def heartbeat(self):
         """
         Every `heartbeat_frequency` seconds the current vitality status is checked. If it's okay,
-        as heartbeat is sent to the configured server.
+        a heartbeat is sent to the configured server.
         """
         if self.has_valid_status(True):
-            self.heartbeat_socket.sendto(b"OK", (self.heartbeat_server, self.heartbeat_port))
+            self.heartbeat_socket.sendto(str.encode("OK"), (self.heartbeat_server, self.heartbeat_port))
 
         threading.Timer(self.config.get("heartbeat_frequency"), self.heartbeat).start()
 
diff --git a/modules/core/startup.py b/modules/core/startup.py
index 5c3de48ed66010128bec7b4ab867e9f9729993ce..82fe85d20d2c0145179caf61f1419006e2aebe2e 100644
--- a/modules/core/startup.py
+++ b/modules/core/startup.py
@@ -25,10 +25,9 @@ import threading
 import meta
 import json
 
-from modules.base.exceptions    import NoActiveScheduleException, EngineMalfunctionException
+from modules.base.exceptions    import NoActiveScheduleException
 from modules.base.enum          import Channel, ChannelType
 from modules.base.utils         import TerminalColors, SimpleUtil, EngineUtil
-from modules.core.monitor       import Monitoring
 
 class StartupThread(threading.Thread):
     """
@@ -50,7 +49,6 @@ class StartupThread(threading.Thread):
         self.logger = logging.getLogger("AuraEngine")
         self.soundsystem = soundsystem
         self.scheduler = soundsystem.scheduler
-        self.monitoring = Monitoring(soundsystem.config, soundsystem)
 
 
     def run(self):
@@ -58,24 +56,14 @@ class StartupThread(threading.Thread):
         Boots the soundsystem.
         """
         try:
-            self.soundsystem.start()
-
-            is_valid = self.monitoring.has_valid_status(False)
-            status = self.monitoring.get_status()
-            self.logger.info("Status Monitor:\n%s" % json.dumps(status, indent=4))
-            if not is_valid:
-                self.logger.info("Engine Status: " + SimpleUtil.red(status["engine"]["status"]))
-                raise EngineMalfunctionException
-            else:
-                self.logger.info("Engine Status: " + SimpleUtil.green("OK"))
-            
+            self.soundsystem.start()            
             self.logger.info(EngineUtil.engine_info("Engine Core", meta.__version__))
             self.scheduler.on_ready()
 
         except NoActiveScheduleException as e:
             self.logger.info("Nothing scheduled at startup time. Please check if there are follow-up schedules.")
         except Exception as e:
-            self.logger.error(SimpleUtil.red("Error while initializing the sound-system: " + str(e)))
+            self.logger.error(SimpleUtil.red("Error while initializing the soundsystem: " + str(e)))