diff --git a/engine-api.py b/engine-api.py
index acf5961e7a1c3a6447716069d01b5f7bd68d4a79..67eaeda5e99926156351bfe0d3f61725d251dfd8 100644
--- a/engine-api.py
+++ b/engine-api.py
@@ -36,12 +36,11 @@ from flask_restful                  import Api, Resource, abort
 from apispec                        import APISpec
 from apispec.ext.marshmallow        import MarshmallowPlugin
 from apispec_webframeworks.flask    import FlaskPlugin
-# import werkzeug
 from werkzeug.exceptions            import HTTPException, default_exceptions, Aborter
 
 from modules.base.logger            import AuraLogger
 from modules.base.config            import AuraConfig
-from modules.base.models            import AuraDatabaseModel, Schedule, Playlist, PlaylistEntry, PlaylistEntryMetaData, TrackService
+from modules.base.models            import AuraDatabaseModel, Schedule, Playlist, PlaylistEntry, PlaylistEntryMetaData
 
 
 
diff --git a/engine-core.py b/engine-core.py
index 7ce9df6d253a9399effa65d74b101cdf927839fa..c9c636ebf4487ea609c28a8622226523b7f30381 100755
--- a/engine-core.py
+++ b/engine-core.py
@@ -181,7 +181,7 @@ class AuraEngine:
 if __name__ == "__main__":        
 
     engine = AuraEngine()
-    lqs_startup = True
+    start_lqs = True
     lqs_cmd = False
 
     signal.signal(signal.SIGINT, engine.exit_gracefully)
@@ -189,7 +189,7 @@ if __name__ == "__main__":
 
     if len(sys.argv) >= 2:
         if "--without-lqs" in sys.argv:
-            lqs_startup = False
+            start_lqs = False
         if "--get-lqs-command" in sys.argv:
             lqs_cmd = True
         if "--use-test-data" in sys.argv:
@@ -200,4 +200,4 @@ if __name__ == "__main__":
     if lqs_cmd:
         print(engine.get_lqs_cmd(True, True))
     else:
-        engine.startup(lqs_startup)
+        engine.startup(start_lqs)
diff --git a/modules/base/mail.py b/modules/base/mail.py
index d5829fe36945e98d70d81fca12d26c50ad17e50f..e32c90906b9b36c9e29fceb4f9e3f8d549f77923 100644
--- a/modules/base/mail.py
+++ b/modules/base/mail.py
@@ -26,7 +26,7 @@ class MailingException(Exception):
     """
     Thrown when some mail cannot be sent.
     """
-    pass
+
 
 
 
diff --git a/modules/base/models.py b/modules/base/models.py
index ccb20f6a600c4f10970c48a9a2b2e5f565fe8fad..5939a4cc77e0b65dea52d7ddf4d799c780c6abb1 100644
--- a/modules/base/models.py
+++ b/modules/base/models.py
@@ -25,19 +25,18 @@ import datetime
 import sqlalchemy as sa
 
 from sqlalchemy.ext.declarative         import declarative_base
-from sqlalchemy                         import orm, func
-from sqlalchemy                         import BigInteger, Boolean, Column, DateTime, Integer, String, ForeignKey, ForeignKeyConstraint
+from sqlalchemy                         import orm
+from sqlalchemy                         import BigInteger, Boolean, Column, DateTime, Integer, String, ForeignKey
 from sqlalchemy.orm                     import relationship
-from sqlalchemy.sql.expression          import false, true
-from sqlalchemy.ext.hybrid              import hybrid_property, hybrid_method
+from sqlalchemy.ext.hybrid              import hybrid_property
 
-from sqlalchemy                         import create_engine
 
-from modules.base.enum                  import Channel, ChannelType, PlaylistType
+from modules.scheduling.types           import PlaylistType
 from modules.base.config                import AuraConfig
 from modules.base.utils                 import SimpleUtil, EngineUtil
 
 
+
 # Init Config
 config = AuraConfig()
 
diff --git a/modules/base/utils.py b/modules/base/utils.py
index 873eaec7d94093a2c26e19006116ca1b95981848..34e7133dd3208d3aeaf145d2c3eb506411a8bc9c 100644
--- a/modules/base/utils.py
+++ b/modules/base/utils.py
@@ -21,7 +21,8 @@ import datetime
 import time
 
 from enum import Enum
-from modules.base.enum import Channel, ChannelType, PlaylistType
+from modules.core.channels import ChannelType
+from modules.scheduling.types import PlaylistType
 
 
 
diff --git a/modules/cli/padavan.py b/modules/cli/padavan.py
index c27a267cd9f1cbd1b595cc8479027258039ec323..737cdb8b4bfe37f7d23b7246ef6e5b1308d7acfb 100644
--- a/modules/cli/padavan.py
+++ b/modules/cli/padavan.py
@@ -19,7 +19,7 @@
 
 import json
 
-from modules.base.enum import RedisChannel
+from modules.cli.redis.channels import RedisChannel
 from modules.base.utils import TerminalColors
 from modules.cli.redis.adapter import ClientRedisAdapter, ServerRedisAdapter
 from modules.base.models import AuraDatabaseModel
diff --git a/modules/cli/redis/adapter.py b/modules/cli/redis/adapter.py
index 4c66327546e6c550fe718c24f93b0b401970843a..39b14af4f9b7a6c4dc7b96463ee85b4270b4820c 100644
--- a/modules/cli/redis/adapter.py
+++ b/modules/cli/redis/adapter.py
@@ -31,7 +31,7 @@ from modules.cli.redis.messenger import RedisMessenger
 from modules.cli.redis.statestore import RedisStateStore
 # from modules.communication.connection_tester import ConnectionTester
 from modules.base.exceptions import RedisConnectionException
-from modules.base.enum import RedisChannel
+from modules.cli.redis.channels import RedisChannel
 from modules.base.utils import TerminalColors
 
 
diff --git a/modules/cli/redis/channels.py b/modules/cli/redis/channels.py
new file mode 100644
index 0000000000000000000000000000000000000000..3dba2f4db748dac5365d654ff29a2b79e08ee3d4
--- /dev/null
+++ b/modules/cli/redis/channels.py
@@ -0,0 +1,39 @@
+#
+# Aura Engine (https://gitlab.servus.at/aura/engine)
+#
+# Copyright (C) 2017-2020 - The Aura Engine Team.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+from enum import Enum
+
+
+
+class RedisChannel(Enum):
+    STANDARD = "aura"
+
+    DPE_REPLY = "delete_playlist_entry_reply"
+    FNP_REPLY = "fetch_new_programme_reply"
+    GAP_REPLY = "get_act_programme_reply"
+    GS_REPLY  = "get_status_reply"
+    GCS_REPLY = "get_connection_status_reply"
+    GNF_REPLY = "get_next_file_reply"
+    IPE_REPLY = "insert_playlist_entry_reply"
+    IP_REPLY  = "init_player_reply"
+    TS_REPLY  = "track_service_reply"
+    MPE_REPLY = "move_playlist_entry_reply"
+    PMQ_REPLY = "print_message_queue_reply"
+    RDB_REPLY = "recreate_database_reply"
+    SNF_REPLY = "get_next_file_reply"
diff --git a/modules/cli/redis/messenger.py b/modules/cli/redis/messenger.py
index bbbe7e5dd84d13b9d4d443f9b1edbc4fe69d2d14..b68218323a1517ee3cae5bb7595c55d5931a3ff4 100644
--- a/modules/cli/redis/messenger.py
+++ b/modules/cli/redis/messenger.py
@@ -22,7 +22,7 @@ import logging
 
 
 from modules.cli.redis.statestore import RedisStateStore
-from modules.base.enum import RedisChannel
+from modules.cli.redis.channels import RedisChannel
 
 
 """
diff --git a/modules/base/enum.py b/modules/core/channels.py
similarity index 65%
rename from modules/base/enum.py
rename to modules/core/channels.py
index 2a655aee8fce7b54879cf0f4e7bfbda8ce77717b..dce672c30f788c08d16ad226311373f8c4bb039e 100644
--- a/modules/base/enum.py
+++ b/modules/core/channels.py
@@ -21,24 +21,14 @@ from enum import Enum
 
 
 
-class RedisChannel(Enum):
-    STANDARD = "aura"
-
-    DPE_REPLY = "delete_playlist_entry_reply"
-    FNP_REPLY = "fetch_new_programme_reply"
-    GAP_REPLY = "get_act_programme_reply"
-    GS_REPLY  = "get_status_reply"
-    GCS_REPLY = "get_connection_status_reply"
-    GNF_REPLY = "get_next_file_reply"
-    IPE_REPLY = "insert_playlist_entry_reply"
-    IP_REPLY  = "init_player_reply"
-    TS_REPLY  = "track_service_reply"
-    MPE_REPLY = "move_playlist_entry_reply"
-    PMQ_REPLY = "print_message_queue_reply"
-    RDB_REPLY = "recreate_database_reply"
-    SNF_REPLY = "get_next_file_reply"
-
+class TransitionType(Enum):
+    """
+    Types of fade-in and fade-out transition.
+    """
+    INSTANT = "instant"
+    FADE = "fade"
 
+    
 class Channel(Enum):
     """
     Channel name mappings to the Liqidsoap channel IDs
@@ -94,39 +84,6 @@ class ChannelType(Enum):
         return str(self.value["id"])
 
 
-class TransitionType(Enum):
-    """
-    Types of fade-in and fade-out transition.
-    """
-    INSTANT = "instant"
-    FADE = "fade"
-
-
-class PlaylistType(Enum):
-    DEFAULT     = { "id": 0, "name": "default" }    # Default play mode
-    SHOW        = { "id": 1, "name": "show" }       # The first played when some default playlist fails
-    TIMESLOT    = { "id": 2, "name": "timeslot" }   # The second played when the timeslot fallback fails
-    STATION     = { "id": 3, "name": "station" }    # The last played when everything else fails
-
-    @property
-    def id(self):
-        return self.value["id"]
-
-    def __str__(self):
-        return str(self.value["name"])
-
-
-class TimerType(Enum):
-    SWITCH = "switch"
-    FADEIN = "fadein"
-    FADEOUT = "fadeout"
-
-
-class EntryQueueState(Enum):
-    OKAY = "ok"
-    CUT = "cut"
-    OUT_OF_SCHEDULE = "oos"
-
 class EntryPlayState(Enum):
     UNKNOWN = "unknown"
     LOADING = "loading"
@@ -139,4 +96,4 @@ class LiquidsoapResponse(Enum):
     STREAM_STATUS_POLLING = "polling"
     STREAM_STATUS_STOPPED = "stopped"
     STREAM_STATUS_CONNECTED = "connected"
-    
\ No newline at end of file
+    
diff --git a/modules/core/engine.py b/modules/core/engine.py
index 0fa5a2293581029f783493117b4b033c597cdf8c..dee253d32aa408d5bc78a362b7b47e1da8d2d490 100644
--- a/modules/core/engine.py
+++ b/modules/core/engine.py
@@ -20,21 +20,18 @@
 import time
 import logging
 
-from urllib.parse               import urlparse, ParseResult
 from contextlib                 import suppress
 from threading                  import Thread
 
 import meta
 
-from modules.base.enum          import ChannelType, Channel, TransitionType, LiquidsoapResponse, EntryPlayState
 from modules.base.utils         import TerminalColors, SimpleUtil as SU, EngineUtil
-from modules.base.exceptions    import LQConnectionError, InvalidChannelException, NoActiveEntryException, LQStreamException, LoadSourceException
-from modules.core.liquidsoap.playerclient import LiquidSoapPlayerClient
-# from modules.core.liquidsoap.recorderclient import LiquidSoapRecorderClient
+from modules.base.exceptions    import LQConnectionError, InvalidChannelException, LQStreamException, LoadSourceException
+from modules.core.channels      import ChannelType, Channel, TransitionType, LiquidsoapResponse, EntryPlayState
 from modules.core.startup       import StartupThread
-from modules.core.state         import PlayerStateService
 from modules.core.events        import EngineEventDispatcher
-
+from modules.core.liquidsoap.playerclient import LiquidSoapPlayerClient
+# from modules.core.liquidsoap.recorderclient import LiquidSoapRecorderClient
 
 
 class SoundSystem():
diff --git a/modules/core/events.py b/modules/core/events.py
index 8fff9894ba0fd7a8e8e38f387c09361fc19c1635..8c05f027ba4f1a43fc0cca577830838f324627c6 100644
--- a/modules/core/events.py
+++ b/modules/core/events.py
@@ -21,7 +21,6 @@ import logging
 
 from modules.base.utils         import SimpleUtil as SU
 from modules.base.exceptions    import NoActiveEntryException
-# from modules.base.exceptions    import LQConnectionError, InvalidChannelException, NoActiveEntryException, EngineMalfunctionException, LQStreamException, LoadSourceException
 from modules.base.mail          import AuraMailer
 from modules.plugins.monitor    import AuraMonitor
 from modules.core.state         import PlayerStateService
@@ -203,7 +202,7 @@ class EngineEventDispatcher():
         Callend when no entry is playing
         """
         self.logger.debug("on_idle(..)")
-        self.logger.warn(SU.red("Currently there's nothing playing!"))
+        self.logger.error(SU.red("Currently there's nothing playing!"))
         self.call_event("on_idle", None)
 
 
diff --git a/modules/core/liquidsoap/playerclient.py b/modules/core/liquidsoap/playerclient.py
index f0e3c12d469097539f6e7a25bf4b155d46b61975..1f9150e2bf82db1927b6734d116310a5119503bd 100644
--- a/modules/core/liquidsoap/playerclient.py
+++ b/modules/core/liquidsoap/playerclient.py
@@ -17,7 +17,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-from modules.base.enum import Channel
+# FIXME Refactor to avoid use of Channel Class here
+from modules.core.channels import Channel
 from modules.core.liquidsoap.client import LiquidSoapClient
 
 
@@ -257,17 +258,17 @@ class LiquidSoapPlayerClient(LiquidSoapClient):
 
 
     # ------------------------------------------------------------------------------------------ #
-    def recorder(self, num, command, *args):
-        if command == "status":
-            return self.recorderstatus(num)
+    # def recorder(self, num, command, *args):
+    #     if command == "status":
+    #         return self.recorderstatus(num)
 
-        if command == "start":
-            return self.recorderstart(num)
+    #     if command == "start":
+    #         return self.recorderstart(num)
 
-        if command == "stop":
-            return self.recorderstop(num)
+    #     if command == "stop":
+    #         return self.recorderstop(num)
 
-        return "LiquidSoapPlayerClient does not understand mixer." + command + str(args)
+    #     return "LiquidSoapPlayerClient does not understand mixer." + command + str(args)
 
 
     # ------------------------------------------------------------------------------------------ #
diff --git a/modules/scheduling/calendar.py b/modules/scheduling/calendar.py
index 1c229206842fadf4274b4d3c1bfc15d3d270ea3a..410d80a2aa4d9bf72c87d42979fc9d0e17096334 100644
--- a/modules/scheduling/calendar.py
+++ b/modules/scheduling/calendar.py
@@ -26,7 +26,7 @@ import logging
 
 from datetime import datetime
 
-from modules.base.enum import PlaylistType
+from modules.scheduling.types import PlaylistType
 from modules.base.utils import SimpleUtil
 from modules.base.models import Schedule, Playlist, PlaylistEntry, PlaylistEntryMetaData
 from modules.scheduling.calender_fetcher import CalendarFetcher
diff --git a/modules/scheduling/fallback_manager.py b/modules/scheduling/fallback_manager.py
index 8b9d37dec68fb00a0fc2e76bce266b5e47a143d5..1e67bd8dfbebd9251aa11e833704cf17acdaa323 100644
--- a/modules/scheduling/fallback_manager.py
+++ b/modules/scheduling/fallback_manager.py
@@ -27,10 +27,10 @@ import random
 import librosa
 
 from accessify                  import private, protected
-from modules.base.enum          import PlaylistType
+from modules.scheduling.types   import PlaylistType
 from modules.base.utils         import SimpleUtil, EngineUtil
 from modules.base.mail          import AuraMailer
-from modules.base.enum          import ChannelType
+from modules.core.channels      import ChannelType
 
 
 class FallbackManager:
diff --git a/modules/scheduling/scheduler.py b/modules/scheduling/scheduler.py
index 78f10fd47d2272302c5bde7fad5279c7d3488289..9088817e4b6326f32501794de4355580c20b7822 100644
--- a/modules/scheduling/scheduler.py
+++ b/modules/scheduling/scheduler.py
@@ -18,25 +18,26 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-
+import logging
+import threading
 import time
 import json
 import decimal
 import traceback
 import sqlalchemy
-import logging
-import threading
 
 from operator import attrgetter
 from datetime import datetime, timedelta
 
-from modules.base.models import AuraDatabaseModel, Schedule, Playlist, PlaylistEntry, PlaylistEntryMetaData
-from modules.base.exceptions import NoActiveScheduleException, NoActiveEntryException, LoadSourceException
-from modules.base.enum import Channel, ChannelType, TimerType, TransitionType, EntryQueueState, EntryPlayState
-from modules.base.utils import SimpleUtil, TerminalColors, EngineUtil
 from modules.cli.redis.messenger import RedisMessenger
-from modules.scheduling.calendar import AuraCalendarService
-from modules.scheduling.fallback_manager import FallbackManager
+
+from modules.base.utils                     import SimpleUtil, EngineUtil
+from modules.base.models                    import AuraDatabaseModel, Schedule, Playlist
+from modules.base.exceptions                import NoActiveScheduleException, LoadSourceException
+from modules.core.channels                  import ChannelType, TransitionType, EntryPlayState
+from modules.scheduling.types               import EntryQueueState
+from modules.scheduling.calendar            import AuraCalendarService
+from modules.scheduling.fallback_manager    import FallbackManager
 
 
 # FIXME this is probably not needed?
diff --git a/modules/scheduling/types.py b/modules/scheduling/types.py
new file mode 100644
index 0000000000000000000000000000000000000000..3ba1d8e02e34adbfb615380973a0e625388d53cc
--- /dev/null
+++ b/modules/scheduling/types.py
@@ -0,0 +1,56 @@
+#
+# Aura Engine (https://gitlab.servus.at/aura/engine)
+#
+# Copyright (C) 2017-2020 - The Aura Engine Team.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+from enum import Enum
+
+
+class PlaylistType(Enum):
+    """
+    Types of playlists.
+    """
+    DEFAULT     = { "id": 0, "name": "default" }    # Default play mode
+    SHOW        = { "id": 1, "name": "show" }       # The first played when some default playlist fails
+    TIMESLOT    = { "id": 2, "name": "timeslot" }   # The second played when the timeslot fallback fails
+    STATION     = { "id": 3, "name": "station" }    # The last played when everything else fails
+
+    @property
+    def id(self):
+        return self.value["id"]
+
+    def __str__(self):
+        return str(self.value["name"])
+
+
+# class TimerType(Enum):
+#     """
+#     Types of queue timers.
+#     """
+#     SWITCH = "switch"
+#     FADEIN = "fadein"
+#     FADEOUT = "fadeout"
+
+
+class EntryQueueState(Enum):
+    """
+    Types of playlist entrie behaviours.
+    """
+    OKAY = "ok"
+    CUT = "cut"
+    OUT_OF_SCHEDULE = "oos"
+