diff --git a/.flake8 b/.flake8
index 6ecc1f5550c5c0c1291e3b13d35ff48710ec5a4b..4fb7475a06393c433ae082a4054eff5b23f3eaae 100644
--- a/.flake8
+++ b/.flake8
@@ -1,4 +1,4 @@
 [flake8]
 max-line-length = 99
-exclude = config/, python/, src/rest/, .tox/
+exclude = config/, python/, src/aura_engine_api/rest/, .tox/
 ignore = E121,E123,E126,E203,E226,E24,E704,W503,N802
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 88e0f678baebd3f9dd2d29e6202509c9bd750f27..9cf4eb9d266ce3d6090e360b68ff6fd55e58e7ab 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,7 +6,7 @@ stages:
   - release
 
 variables:
-  API_ROOT_FILE: ./src/rest/swagger/swagger.yaml
+  API_ROOT_FILE: ./src/aura_engine_api/rest/swagger/swagger.yaml
   BUNDLED_JSON_FILE: ./public/api.json
 
 .release-rules: &release-rules
diff --git a/README.md b/README.md
index afe127f6b91078bf8c31bd959d6a629e42b1fc5a..af097db1e92e623d6f673e943af586ac95ac6d50 100644
--- a/README.md
+++ b/README.md
@@ -393,13 +393,13 @@ http://localhost:8008/api/v1/openapi.json
 ### Extending the API
 
 The workflow for extending the API follows the **API First** approach. This means you have to edit the API at https://app.swaggerhub.com/apis/AURA-Engine/engine-api/,
-using the SwaggerHub web editor. Then download the `python-flask` server stubs, and replace & merge the existing generated sources in `./src/rest`.
+using the SwaggerHub web editor. Then download the `python-flask` server stubs, and replace & merge the existing generated sources in `./src/aura_engine_api/rest`.
 
 All model files can usually be overwritten. Only controller and test classes need to undergo a merge action.
 
 In the future it might be favorable to use a local Codegen to generate the API artifacts.
 
-> Caveat: There is an issue with the generated source related to Python 3.8. Therefore `./src/rest/util.py` contains a workaround. Think about that when
+> Caveat: There is an issue with the generated source related to Python 3.8. Therefore `./src/aura_engine_api/rest/util.py` contains a workaround. Think about that when
 overwriting the existing file.
 
 ### Creating a local image
diff --git a/pyproject.toml b/pyproject.toml
index f961fc183623bff10d87e2b8294bf5c73e415484..2fec27db0012ac4f34d44cea43676a2bece05663 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -2,7 +2,7 @@
 target-version = ["py38"]
 # TODO: Use extend-exclude as soon as Debian Bookworm is released.
 exclude = '''
-    ^/src/rest/
+    ^/src/aura_engine_api/rest/
     | ^/config/
     | ^/python/
     | ^/.tox/
@@ -16,7 +16,7 @@ skip = [
     "config",
     "node_modules",
     "python",
-    "src/rest/",
+    "src/aura_engine_api/rest/",
     ".git",
     ".tox",
 ]
diff --git a/run.sh b/run.sh
index 349a2376bc0c66e1a12707eecdd60a5fff3233ba..1d4775494e4deed03178fb0ba16e7d2b92207973 100755
--- a/run.sh
+++ b/run.sh
@@ -34,7 +34,7 @@ echo "[ Docker=$docker ]"
 
 # Check for the correct Python version (3.8+)
 PYTHON_EXEC="python3"
-PYTHON_BASE_DIR="."
+PYTHON_BASE_DIR="src"
 echo "[ Using $("$PYTHON_EXEC" -V) ]"
 
 
@@ -49,29 +49,29 @@ if [[ $docker == "false" ]]; then
 		source python/bin/activate
 		echo "Running Engine API in Python Environment ($("$PYTHON_EXEC" -V))"
 		echo "Starting API Server"
-		"$PYTHON_EXEC" src/app.py
+		"$PYTHON_EXEC" -m aura_engine_api.app
 	fi
 
 	### Runs the API Server (Test) ###
 
 	if [[ $mode == "api-test-0" ]]; then
 		echo "Starting API Server 0"
-		"$PYTHON_EXEC" src/app.py config=tests/config/engine-0-api.ini
+		"$PYTHON_EXEC" -m aura_engine_api.app config=tests/config/engine-0-api.ini
 	fi
 	if [[ $mode == "api-test-1" ]]; then
 		echo "Starting API Server 1"
-		"$PYTHON_EXEC" src/app.py config=tests/config/engine-1-api.ini
+		"$PYTHON_EXEC" -m aura_engine_api.app config=tests/config/engine-1-api.ini
 	fi
 	if [[ $mode == "api-test-2" ]]; then
 		echo "Starting API Server 2"
-		"$PYTHON_EXEC" src/app.py config=tests/config/engine-2-api.ini
+		"$PYTHON_EXEC" -m aura_engine_api.app config=tests/config/engine-2-api.ini
 	fi
 
 	### Runs the API Server using Gunicorn without a system daemon (Production) ###
 
 	if [[ $mode == "prod" ]]; then
 		echo "Starting API Server"
-		gunicorn -c config/gunicorn.conf.py src.app:app
+		gunicorn -c config/gunicorn.conf.py aura_engine_api.app:app
 	fi
 
 	if [[ $mode == "test" ]]; then
@@ -82,7 +82,7 @@ if [[ $docker == "false" ]]; then
 	### CAUTION: This deletes everything in your database ###
 
 	if [[ $mode == "recreate-database" ]]; then
-		"$PYTHON_EXEC" src/app.py --recreate-database
+		"$PYTHON_EXEC" -m aura_engine_api.app --recreate-database
 	fi
 
 fi
diff --git a/setup.py b/setup.py
index bd80f626dfc49a3718f3faa4bf31fab79d08c085..94c61f356b86c0c3866280dc80c40fc33e141c97 100644
--- a/setup.py
+++ b/setup.py
@@ -40,7 +40,7 @@ setup(
     keywords=["OpenAPI", "AURA Engine API"],
     install_requires=REQUIRES,
     packages=find_packages(),
-    package_data={"": ["src/rest/swagger/swagger.yaml"]},
+    package_data={"": ["src/aura_engine_api/rest/swagger/swagger.yaml"]},
     include_package_data=True,
     entry_points={"console_scripts": ["src.app=src.app.__main__:main"]},
     long_description="""\
diff --git a/meta.py b/src/aura_engine_api/__init__.py
similarity index 100%
rename from meta.py
rename to src/aura_engine_api/__init__.py
diff --git a/src/app.py b/src/aura_engine_api/app.py
similarity index 88%
rename from src/app.py
rename to src/aura_engine_api/app.py
index 954fb7e95255ec5b8dacf91a58ba53dfaa7dbf30..507da8e6057989e602259f37b42fea92a3d83420 100644
--- a/src/app.py
+++ b/src/aura_engine_api/app.py
@@ -21,15 +21,14 @@ import atexit
 import sys
 
 import connexion
-
-import meta
-from base.config import AuraConfig
-from base.logger import AuraLogger
-from base.node import NodeType
-from models import db, ma
-from rest import encoder
-from service import ApiService
-from sync import SyncJob
+import aura_engine_api
+from aura_engine_api.base.config import AuraConfig
+from aura_engine_api.base.logger import AuraLogger
+from aura_engine_api.base.node import NodeType
+from aura_engine_api.models import db, ma
+from aura_engine_api.rest import encoder
+from aura_engine_api.service import ApiService
+from aura_engine_api.sync import SyncJob
 
 # Read command line parameters
 
@@ -120,7 +119,7 @@ with app.app_context():
         federation = "disabled"
     splash = (
         "\n\n        â–‘Eâ–‘Nâ–‘Gâ–‘Iâ–‘Nâ–‘Eâ–‘â–‘â–‘Aâ–‘Pâ–‘Iâ–‘ - v%s running as %s node - Federation %s.\n\n"
-        % (meta.__version__, type, federation)
+        % (aura_engine_api.__version__, type, federation)
     )
     logger.info(splash)
 
diff --git a/src/__init__.py b/src/aura_engine_api/base/__init__.py
similarity index 100%
rename from src/__init__.py
rename to src/aura_engine_api/base/__init__.py
diff --git a/src/base/config.py b/src/aura_engine_api/base/config.py
similarity index 97%
rename from src/base/config.py
rename to src/aura_engine_api/base/config.py
index cdf1c0f315fc7f54180afb1e35defd883ab2caca..e42e90fbf3860fc06059a7ceeb351f3ed9a54ced 100644
--- a/src/base/config.py
+++ b/src/aura_engine_api/base/config.py
@@ -44,8 +44,10 @@ class AuraConfig:
         Args:
             ini_path(String):      The path to the configuration file `engine-api.ini`
         """
-        default_ini_path = (
-            "%s/config/engine-api.ini" % Path(__file__).parent.parent.parent.absolute()
+        default_ini_path = os.path.join(
+            Path(__file__).parent.parent.parent.parent.absolute(),
+            "config",
+            "engine-api.ini",
         )
 
         if ini_path:
diff --git a/src/base/logger.py b/src/aura_engine_api/base/logger.py
similarity index 100%
rename from src/base/logger.py
rename to src/aura_engine_api/base/logger.py
diff --git a/src/base/node.py b/src/aura_engine_api/base/node.py
similarity index 100%
rename from src/base/node.py
rename to src/aura_engine_api/base/node.py
diff --git a/src/models.py b/src/aura_engine_api/models.py
similarity index 100%
rename from src/models.py
rename to src/aura_engine_api/models.py
diff --git a/src/base/__init__.py b/src/aura_engine_api/rest/__init__.py
similarity index 100%
rename from src/base/__init__.py
rename to src/aura_engine_api/rest/__init__.py
diff --git a/src/rest/__init__.py b/src/aura_engine_api/rest/controllers/__init__.py
similarity index 100%
rename from src/rest/__init__.py
rename to src/aura_engine_api/rest/controllers/__init__.py
diff --git a/src/rest/controllers/authorization_controller.py b/src/aura_engine_api/rest/controllers/authorization_controller.py
similarity index 100%
rename from src/rest/controllers/authorization_controller.py
rename to src/aura_engine_api/rest/controllers/authorization_controller.py
diff --git a/src/rest/controllers/internal_controller.py b/src/aura_engine_api/rest/controllers/internal_controller.py
similarity index 94%
rename from src/rest/controllers/internal_controller.py
rename to src/aura_engine_api/rest/controllers/internal_controller.py
index 93817db3d923e51c4c080a2b081aeb5f682bac4f..412f1476f5dd5704eae0117f6dcd76ab6a525fc3 100644
--- a/src/rest/controllers/internal_controller.py
+++ b/src/aura_engine_api/rest/controllers/internal_controller.py
@@ -1,14 +1,13 @@
 import connexion
 import six
-
 from dateutil.parser import parse
 from flask import current_app
 
-from src.rest.models.clock_info import ClockInfo  # noqa: E501
-from src.rest.models.health_log import HealthLog  # noqa: E501
-from src.rest.models.inline_response400 import InlineResponse400  # noqa: E501
-from src.rest.models.play_log import PlayLog  # noqa: E501
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.clock_info import ClockInfo
+from aura_engine_api.rest.models.health_log import HealthLog
+from aura_engine_api.rest.models.inline_response400 import InlineResponse400
+from aura_engine_api.rest.models.play_log import PlayLog
 
 
 def add_playlog(body):  # noqa: E501
diff --git a/src/rest/controllers/public_controller.py b/src/aura_engine_api/rest/controllers/public_controller.py
similarity index 92%
rename from src/rest/controllers/public_controller.py
rename to src/aura_engine_api/rest/controllers/public_controller.py
index ffeea843f48139a920e69d701ac3428c0e639766..d09e1d163bb3922a2951510b03ecf9cdd303f731 100644
--- a/src/rest/controllers/public_controller.py
+++ b/src/aura_engine_api/rest/controllers/public_controller.py
@@ -1,9 +1,9 @@
 import connexion
 import six
-
 from flask import current_app
-from src.rest.models.track import Track  # noqa: E501
-from src.rest import util
+
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.track import Track  # noqa: E501
 
 
 def current_track():  # noqa: E501
diff --git a/src/rest/encoder.py b/src/aura_engine_api/rest/encoder.py
similarity index 90%
rename from src/rest/encoder.py
rename to src/aura_engine_api/rest/encoder.py
index 5341e85ca0bed744b780577fd9e8160fc33a9bff..c9769f83e67edc3ea12b6def8fb28ec7488e2baa 100644
--- a/src/rest/encoder.py
+++ b/src/aura_engine_api/rest/encoder.py
@@ -1,7 +1,7 @@
 from connexion.apps.flask_app import FlaskJSONEncoder
 import six
 
-from src.rest.models.base_model_ import Model
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class JSONEncoder(FlaskJSONEncoder):
diff --git a/src/aura_engine_api/rest/models/__init__.py b/src/aura_engine_api/rest/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..b43f4d8a9b3470c6bd77ac1994216057d90c98c8
--- /dev/null
+++ b/src/aura_engine_api/rest/models/__init__.py
@@ -0,0 +1,14 @@
+# coding: utf-8
+
+# flake8: noqa
+from __future__ import absolute_import
+
+# import models into model package
+from aura_engine_api.rest.models.clock_info import ClockInfo
+from aura_engine_api.rest.models.health_log import HealthLog
+from aura_engine_api.rest.models.inline_response400 import InlineResponse400
+from aura_engine_api.rest.models.play_log import PlayLog
+from aura_engine_api.rest.models.playlist import Playlist
+from aura_engine_api.rest.models.playlist_entry import PlaylistEntry
+from aura_engine_api.rest.models.timeslot import Timeslot
+from aura_engine_api.rest.models.track import Track
diff --git a/src/rest/models/base_model_.py b/src/aura_engine_api/rest/models/base_model_.py
similarity index 97%
rename from src/rest/models/base_model_.py
rename to src/aura_engine_api/rest/models/base_model_.py
index 028910ff56e72325323bd0d80954e9b69291a4cf..04e095faaded0b0261de58ff45817fe30533e0e3 100644
--- a/src/rest/models/base_model_.py
+++ b/src/aura_engine_api/rest/models/base_model_.py
@@ -2,7 +2,7 @@ import pprint
 
 import six
 
-from src.rest import util
+from aura_engine_api.rest import util
 
 
 class Model(object):
diff --git a/src/rest/models/clock_info.py b/src/aura_engine_api/rest/models/clock_info.py
similarity index 93%
rename from src/rest/models/clock_info.py
rename to src/aura_engine_api/rest/models/clock_info.py
index 8796e7512233cc491332f5a222a818bab2e9779e..db19acf5f72cf0b262b4acfd8ad64a2935850eda 100644
--- a/src/rest/models/clock_info.py
+++ b/src/aura_engine_api/rest/models/clock_info.py
@@ -3,13 +3,13 @@
 from __future__ import absolute_import
 from datetime import date, datetime  # noqa: F401
 
-from typing import List, Dict  # noqa: F401
+from typing import Dict, List  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest.models.play_log import PlayLog  # noqa: F401,E501
-from src.rest.models.playlist import Playlist  # noqa: F401,E501
-from src.rest.models.timeslot import Timeslot  # noqa: F401,E501
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
+from aura_engine_api.rest.models.play_log import PlayLog  # noqa: F401,E501
+from aura_engine_api.rest.models.playlist import Playlist  # noqa: F401,E501
+from aura_engine_api.rest.models.timeslot import Timeslot  # noqa: F401,E501
 
 
 class ClockInfo(Model):
diff --git a/src/rest/models/health_log.py b/src/aura_engine_api/rest/models/health_log.py
similarity index 97%
rename from src/rest/models/health_log.py
rename to src/aura_engine_api/rest/models/health_log.py
index 59a210204d8b39fef62319869acf76f18c09cba6..6ec7d0b6402f8d646318cf25b3e8e622b74d8871 100644
--- a/src/rest/models/health_log.py
+++ b/src/aura_engine_api/rest/models/health_log.py
@@ -5,8 +5,8 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class HealthLog(Model):
diff --git a/src/rest/models/inline_response400.py b/src/aura_engine_api/rest/models/inline_response400.py
similarity index 93%
rename from src/rest/models/inline_response400.py
rename to src/aura_engine_api/rest/models/inline_response400.py
index 8428ccdffd6b1af60bfb7958dc46eb1683bbe7cb..85f140e9f1508c68447298e951d6fad04f23e3c1 100644
--- a/src/rest/models/inline_response400.py
+++ b/src/aura_engine_api/rest/models/inline_response400.py
@@ -5,8 +5,8 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class InlineResponse400(Model):
diff --git a/src/rest/models/play_log.py b/src/aura_engine_api/rest/models/play_log.py
similarity index 99%
rename from src/rest/models/play_log.py
rename to src/aura_engine_api/rest/models/play_log.py
index 06bccb3f259b47964f63265601f1e9b649844b30..c344d5e2036f7d06c79176caf64fed2fc8bd69b3 100644
--- a/src/rest/models/play_log.py
+++ b/src/aura_engine_api/rest/models/play_log.py
@@ -5,8 +5,8 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class PlayLog(Model):
diff --git a/src/rest/models/playlist.py b/src/aura_engine_api/rest/models/playlist.py
similarity index 92%
rename from src/rest/models/playlist.py
rename to src/aura_engine_api/rest/models/playlist.py
index 8e297213fee49cac2fd6cc7017794aff49393039..d66d55833c902722e04258e2aba7e1fbd4bb011d 100644
--- a/src/rest/models/playlist.py
+++ b/src/aura_engine_api/rest/models/playlist.py
@@ -5,9 +5,9 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest.models.playlist_entry import PlaylistEntry  # noqa: F401,E501
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
+from aura_engine_api.rest.models.playlist_entry import PlaylistEntry  # noqa: F401,E501
 
 
 class Playlist(Model):
diff --git a/src/rest/models/playlist_entry.py b/src/aura_engine_api/rest/models/playlist_entry.py
similarity index 98%
rename from src/rest/models/playlist_entry.py
rename to src/aura_engine_api/rest/models/playlist_entry.py
index aaf6566ab7c5b63d8305be94ea23660d3a259238..a82b7f7e34ba94f1cd0a60df3e433f7390a6a25c 100644
--- a/src/rest/models/playlist_entry.py
+++ b/src/aura_engine_api/rest/models/playlist_entry.py
@@ -5,8 +5,8 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class PlaylistEntry(Model):
diff --git a/src/rest/models/timeslot.py b/src/aura_engine_api/rest/models/timeslot.py
similarity index 98%
rename from src/rest/models/timeslot.py
rename to src/aura_engine_api/rest/models/timeslot.py
index 4aea4e330b87f18e2d42ceab136af2d1069bff04..d94bea36093c9c7c2625496a58b6c46790e1fa49 100644
--- a/src/rest/models/timeslot.py
+++ b/src/aura_engine_api/rest/models/timeslot.py
@@ -5,8 +5,8 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class Timeslot(Model):
diff --git a/src/rest/models/track.py b/src/aura_engine_api/rest/models/track.py
similarity index 98%
rename from src/rest/models/track.py
rename to src/aura_engine_api/rest/models/track.py
index 542208907a1ad295c014bcf8be1d8aed9e5c39e7..7fa5249787769c31fbfc16348766337919d89c03 100644
--- a/src/rest/models/track.py
+++ b/src/aura_engine_api/rest/models/track.py
@@ -5,8 +5,8 @@ from datetime import date, datetime  # noqa: F401
 
 from typing import List, Dict  # noqa: F401
 
-from src.rest.models.base_model_ import Model
-from src.rest import util
+from aura_engine_api.rest import util
+from aura_engine_api.rest.models.base_model_ import Model
 
 
 class Track(Model):
diff --git a/src/rest/swagger/swagger.yaml b/src/aura_engine_api/rest/swagger/swagger.yaml
similarity index 96%
rename from src/rest/swagger/swagger.yaml
rename to src/aura_engine_api/rest/swagger/swagger.yaml
index a847f0c113b07049939aa7b3e1f3e983876dcbcb..023c9544778363cb03acaa08d3432b648ba7f24e 100644
--- a/src/rest/swagger/swagger.yaml
+++ b/src/aura_engine_api/rest/swagger/swagger.yaml
@@ -96,7 +96,7 @@ paths:
                 x-content-type: application/json
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.public_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.public_controller
   /trackservice/current:
     get:
       tags:
@@ -114,7 +114,7 @@ paths:
                 $ref: '#/components/schemas/Track'
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.public_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.public_controller
   /clock:
     get:
       tags:
@@ -132,7 +132,7 @@ paths:
                 $ref: '#/components/schemas/ClockInfo'
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
     put:
       tags:
       - internal
@@ -152,7 +152,7 @@ paths:
           description: status updated
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
   /playlog:
     get:
       tags:
@@ -223,7 +223,7 @@ paths:
                 x-content-type: application/json
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
     post:
       tags:
       - internal
@@ -246,7 +246,7 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/inline_response_400'
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
   /playlog/report/{year_month}:
     get:
       tags:
@@ -276,7 +276,7 @@ paths:
                 x-content-type: application/json
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
   /source/active:
     get:
       tags:
@@ -295,7 +295,7 @@ paths:
                 x-content-type: application/json
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
   /source/active/{number}:
     put:
       tags:
@@ -320,7 +320,7 @@ paths:
           description: status updated
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
   /source/health/{number}:
     get:
       tags:
@@ -349,7 +349,7 @@ paths:
                 $ref: '#/components/schemas/HealthLog'
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
     post:
       tags:
       - internal
@@ -378,7 +378,7 @@ paths:
           description: health info logged
         "400":
           description: bad input parameter
-      x-openapi-router-controller: src.rest.controllers.internal_controller
+      x-openapi-router-controller: aura_engine_api.rest.controllers.internal_controller
 components:
   schemas:
     Track:
diff --git a/src/rest/test/__init__.py b/src/aura_engine_api/rest/test/__init__.py
similarity index 90%
rename from src/rest/test/__init__.py
rename to src/aura_engine_api/rest/test/__init__.py
index 5419f1270d0622d519971c574341971dd6d76270..66b15d5ddf6f313ac73c456ab0b91626be636e3f 100644
--- a/src/rest/test/__init__.py
+++ b/src/aura_engine_api/rest/test/__init__.py
@@ -3,7 +3,7 @@ import logging
 import connexion
 from flask_testing import TestCase
 
-from src.rest.encoder import JSONEncoder
+from aura_engine_api.rest.encoder import JSONEncoder
 
 
 class BaseTestCase(TestCase):
diff --git a/src/rest/test/test_internal_controller.py b/src/aura_engine_api/rest/test/test_internal_controller.py
similarity index 93%
rename from src/rest/test/test_internal_controller.py
rename to src/aura_engine_api/rest/test/test_internal_controller.py
index 87c9e7aecdc1c6fbc99ac61e0068140dc7b1bf59..0c5558cf5ec7c9561a6640a92a206d8be24e3795 100644
--- a/src/rest/test/test_internal_controller.py
+++ b/src/aura_engine_api/rest/test/test_internal_controller.py
@@ -17,17 +17,18 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-
 from __future__ import absolute_import
 
 from flask import json
 from six import BytesIO
 
-from src.rest.models.clock_info import ClockInfo  # noqa: E501
-from src.rest.models.health_log import HealthLog  # noqa: E501
-from src.rest.models.inline_response400 import InlineResponse400  # noqa: E501
-from src.rest.models.play_log import PlayLog  # noqa: E501
-from src.rest.test import BaseTestCase
+from aura_engine_api.rest.models.clock_info import ClockInfo  # noqa: E501
+from aura_engine_api.rest.models.health_log import HealthLog  # noqa: E501
+from aura_engine_api.rest.models.inline_response400 import (  # noqa: E501
+    InlineResponse400,
+)
+from aura_engine_api.rest.models.play_log import PlayLog  # noqa: E501
+from aura_engine_api.rest.test import BaseTestCase
 
 
 class TestInternalController(BaseTestCase):
diff --git a/src/rest/test/test_public_controller.py b/src/aura_engine_api/rest/test/test_public_controller.py
similarity index 94%
rename from src/rest/test/test_public_controller.py
rename to src/aura_engine_api/rest/test/test_public_controller.py
index 1022a0a326aa86b1060e82429c486e4526bcbee5..de9603bf513725fa4a41d5a1059e5aae95ee35bf 100644
--- a/src/rest/test/test_public_controller.py
+++ b/src/aura_engine_api/rest/test/test_public_controller.py
@@ -22,8 +22,8 @@ from __future__ import absolute_import
 from flask import json
 from six import BytesIO
 
-from src.rest.models.track import Track  # noqa: E501
-from src.rest.test import BaseTestCase
+from aura_engine_api.rest.models.track import Track  # noqa: E501
+from aura_engine_api.rest.test import BaseTestCase
 
 
 class TestPublicController(BaseTestCase):
diff --git a/src/rest/util.py b/src/aura_engine_api/rest/util.py
similarity index 100%
rename from src/rest/util.py
rename to src/aura_engine_api/rest/util.py
diff --git a/src/service.py b/src/aura_engine_api/service.py
similarity index 99%
rename from src/service.py
rename to src/aura_engine_api/service.py
index 04df1d364e9650f5bde75ceaea2328748b30afbd..efdaf237fdde1d531b24ca1ca4e972f73fa39b51 100644
--- a/src/service.py
+++ b/src/aura_engine_api/service.py
@@ -23,8 +23,8 @@ import requests
 import sqlalchemy
 from dateutil.parser import parse
 
-from base.node import NodeType
-from models import (
+from aura_engine_api.base.node import NodeType
+from aura_engine_api.models import (
     ActivityLog,
     ClockInfo,
     ClockInfoSchema,
@@ -34,7 +34,7 @@ from models import (
     PlayLogSchema,
     TrackSchema,
 )
-from rest import util
+from aura_engine_api.rest import util
 
 
 class ApiService:
diff --git a/src/sync.py b/src/aura_engine_api/sync.py
similarity index 98%
rename from src/sync.py
rename to src/aura_engine_api/sync.py
index 7dd7f4ab9072a55a647bf29c6e9e17d31fffc566..bde729b6375756d26dd6ddee68536cae0597154c 100644
--- a/src/sync.py
+++ b/src/aura_engine_api/sync.py
@@ -25,8 +25,8 @@ from sqlalchemy import create_engine
 from sqlalchemy.exc import IntegrityError, InvalidRequestError
 from sqlalchemy.orm import scoped_session, sessionmaker
 
-from models import ActivityLog, PlayLog
-from rest.models.play_log import PlayLog as PlayLogAPI
+from aura_engine_api.models import ActivityLog, PlayLog
+from aura_engine_api.rest.models.play_log import PlayLog as PlayLogAPI
 
 
 class SyncJob(threading.Thread):
diff --git a/src/rest/controllers/__init__.py b/src/rest/controllers/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/rest/models/__init__.py b/src/rest/models/__init__.py
deleted file mode 100644
index 7330bd7883d892b1eb9832aade077286d2001028..0000000000000000000000000000000000000000
--- a/src/rest/models/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-from __future__ import absolute_import
-# import models into model package
-from src.rest.models.clock_info import ClockInfo
-from src.rest.models.health_log import HealthLog
-from src.rest.models.inline_response400 import InlineResponse400
-from src.rest.models.play_log import PlayLog
-from src.rest.models.playlist import Playlist
-from src.rest.models.playlist_entry import PlaylistEntry
-from src.rest.models.timeslot import Timeslot
-from src.rest.models.track import Track