diff --git a/src/aura_engine/app.py b/src/aura_engine/app.py
index 52765e3155134d07f36eb0d079948537650401fa..958da7cf29f3e79c574b59692500caeaca760408 100755
--- a/src/aura_engine/app.py
+++ b/src/aura_engine/app.py
@@ -35,7 +35,7 @@ from aura_engine.base.logger import AuraLogger
 from aura_engine.engine import Engine
 from aura_engine.scheduling.models import DB
 
-config = AuraConfig()
+config = AuraConfig.instance
 
 
 def configure_flask():
diff --git a/src/aura_engine/base/config.py b/src/aura_engine/base/config.py
index d95fe7ee6c185208d4080342bebab7755074ed3e..a5bfaebfb87c95ffe4a0121fc74c34a8bf453e9b 100644
--- a/src/aura_engine/base/config.py
+++ b/src/aura_engine/base/config.py
@@ -93,12 +93,20 @@ class AuraConfig:
     Holds the Engine Configuration as in the file `engine.ini`.
     """
 
-    instance = None
+    _instance = None
     yaml_path = ""
     confuse_config = None
     config = None  # points to a validated config (hopefully later)
     logger = None
 
+    @classmethod
+    @property
+    def instance(cls):
+        """Create and return singleton instance."""
+        if cls._instance is None:
+            cls._instance = AuraConfig()
+        return cls._instance
+
     def __init__(self, yaml_path="/etc/aura/engine.yaml"):
         """
         Initialize the configuration, defaults to `/etc/aura/engine.yaml`.
diff --git a/src/aura_engine/core/channels.py b/src/aura_engine/core/channels.py
index b2554bbd7c5ea566f74c93190031ce82ffb08d0e..e18bc36e887d2a469b36a5394321b6ed20eeddbf 100644
--- a/src/aura_engine/core/channels.py
+++ b/src/aura_engine/core/channels.py
@@ -576,7 +576,7 @@ class ChannelFactory:
             mixer (Mixer): The mixer instance
 
         """
-        self.config = AuraConfig()
+        self.config = AuraConfig.instance
         self.logger = logging.getLogger("engine")
         self.mixer = mixer
 
diff --git a/src/aura_engine/plugins/clock.py b/src/aura_engine/plugins/clock.py
index 4bec67ed6144c9d650393a29224eaa0fb4eeda01..0f1da1fe23b8e39d837cfbf8663ec37fe68610fc 100644
--- a/src/aura_engine/plugins/clock.py
+++ b/src/aura_engine/plugins/clock.py
@@ -45,7 +45,7 @@ class ClockInfoHandler:
         Initialize.
         """
         self.logger = logging.getLogger("engine")
-        self.config = AuraConfig.config().config
+        self.config = AuraConfig.instance.config
         self.api = SimpleRestApi()
         self.engine = engine
 
diff --git a/src/aura_engine/plugins/monitor.py b/src/aura_engine/plugins/monitor.py
index 4f29f068c6775d67676b5fca7ba99b9038e6d744..190cd244cab52ea9559dba75b2924a03163f4dea 100644
--- a/src/aura_engine/plugins/monitor.py
+++ b/src/aura_engine/plugins/monitor.py
@@ -87,7 +87,7 @@ class AuraMonitor:
         Initialize Monitoring.
         """
         self.logger = logging.getLogger("engine")
-        self.config = AuraConfig.config()
+        self.config = AuraConfig.instance.config
         self.engine = engine
         self.status = dict()
         self.status["engine"] = dict()
diff --git a/src/aura_engine/scheduling/models.py b/src/aura_engine/scheduling/models.py
index d4d8cead57f46c4e12a5747ac3d932cb3dec2d8b..b6a5f8f6265b01fa62d72b680a01fa330adbdf0e 100644
--- a/src/aura_engine/scheduling/models.py
+++ b/src/aura_engine/scheduling/models.py
@@ -45,7 +45,7 @@ from aura_engine.base.utils import SimpleUtil
 from aura_engine.resources import ResourceUtil
 
 # Initialize DB Model and session
-config = AuraConfig()
+config = AuraConfig.instance
 engine = sa.create_engine(config.get_database_uri())
 Base = declarative_base()
 Base.metadata.bind = engine
diff --git a/src/aura_engine/scheduling/programme.py b/src/aura_engine/scheduling/programme.py
index 24ab8fd08878d0ae17cd3ec9690a8cf8092ee683..3b42d0ca4cfaf8f126aed355265af6750c717d4d 100644
--- a/src/aura_engine/scheduling/programme.py
+++ b/src/aura_engine/scheduling/programme.py
@@ -50,7 +50,7 @@ class ProgrammeService:
     programme_store = None
 
     def __init__(self):
-        self.config = AuraConfig.config().config
+        self.config = AuraConfig.instance.config
         self.logger = logging.getLogger("engine")
         self.programme_store = ProgrammeStore()
 
diff --git a/src/aura_engine/scheduling/scheduler.py b/src/aura_engine/scheduling/scheduler.py
index 0313ae644d576c20d392acee8b5a622a2cef11e1..91131e71cba074438c7c3c55e800762ef97de52f 100644
--- a/src/aura_engine/scheduling/scheduler.py
+++ b/src/aura_engine/scheduling/scheduler.py
@@ -65,7 +65,7 @@ class AuraScheduler(threading.Thread):
     is_engine_ready: bool = None
 
     def __init__(self, engine):
-        self.config = AuraConfig.config().config
+        self.config = AuraConfig.instance.config
         self.logger = logging.getLogger("engine")
         self.timetable = ProgrammeService()
         self.timetable_renderer = TimetableRenderer(self)
@@ -441,7 +441,7 @@ class TimeslotCommand(EngineExecutor):
             engine (Engine): The engine
             timeslot (Timeslot): The timeslot which is starting at this time
         """
-        self.config = AuraConfig()
+        self.config = AuraConfig.instance
         self.engine = engine
 
         now_unix = SU.timestamp()
diff --git a/src/aura_engine/scheduling/utils.py b/src/aura_engine/scheduling/utils.py
index bb1f29b333856c068ed72560106c58669bf769d3..1ce21d162765cad676c3e790a444d9933b91336c 100644
--- a/src/aura_engine/scheduling/utils.py
+++ b/src/aura_engine/scheduling/utils.py
@@ -121,7 +121,7 @@ class M3UPlaylistProcessor:
     playlist_folder = None
 
     def __init__(self):
-        self.config = AuraConfig.config()
+        self.config = AuraConfig.instance
         self.logger = logging.getLogger("engine")
         self.playlist_folder = self.config.abs_playlist_path()