diff --git a/djangoldp/conf/server_template/config.yml b/djangoldp/conf/server_template/config.yml
index 6cf16a14ea468d5c801b4aa7195be7c34670d11c..5bb3ad69126f77a280468e3220401ce1723b0084 100644
--- a/djangoldp/conf/server_template/config.yml
+++ b/djangoldp/conf/server_template/config.yml
@@ -9,20 +9,7 @@ server:
   # Django required settings
   ALLOWED_HOSTS:
     - '*'
-  MIDDLEWARE:
-    - django.middleware.security.SecurityMiddleware
-    - django.contrib.sessions.middleware.SessionMiddleware
-    - django.middleware.common.CommonMiddleware
-    - django.middleware.csrf.CsrfViewMiddleware
-    - django.contrib.auth.middleware.AuthenticationMiddleware
-    - django.contrib.messages.middleware.MessageMiddleware
-    - django.middleware.clickjacking.XFrameOptionsMiddleware
   SECRET_KEY: "{{secret_key}}"
-  AUTH_PASSWORD_VALIDATORS:
-    - NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator
-    - NAME: django.contrib.auth.password_validation.MinimumLengthValidator
-    - NAME: django.contrib.auth.password_validation.CommonPasswordValidator
-    - NAME: django.contrib.auth.password_validation.NumericPasswordValidator
   DATABASES:
     default:
       ENGINE: django.db.backends.sqlite3
diff --git a/djangoldp/conf/server_template/manage.py-tpl b/djangoldp/conf/server_template/manage.py-tpl
index 2840eb3a57723cd8760a473f780bb802e23002f2..76a59b917de043a36995b77b2c8e6f36e42564e9 100755
--- a/djangoldp/conf/server_template/manage.py-tpl
+++ b/djangoldp/conf/server_template/manage.py-tpl
@@ -5,7 +5,6 @@ from djangoldp.conf import settings as ldpsettings
 
 if __name__ == "__main__":
 
-    os.environ.setdefault("DJANGOLDP_SETTINGS", "server.settings")
     ldpsettings.configure()
 
     try:
diff --git a/djangoldp/conf/server_template/server/settings.py-tpl b/djangoldp/conf/server_template/server/settings.py-tpl
deleted file mode 100644
index 0e50027637168d4fc05e076cb216906c11ad8761..0000000000000000000000000000000000000000
--- a/djangoldp/conf/server_template/server/settings.py-tpl
+++ /dev/null
@@ -1,2 +0,0 @@
-#vim: syntax=python
-SECRET_KEY = 'FIXME'
diff --git a/djangoldp/conf/server_template/server/wsgi.py-tpl b/djangoldp/conf/server_template/server/wsgi.py-tpl
index 92767b7ae17deee4050415ceb6b4c915b4c90692..3876c6d74fed43b664191a22d23b0a3a16400f32 100644
--- a/djangoldp/conf/server_template/server/wsgi.py-tpl
+++ b/djangoldp/conf/server_template/server/wsgi.py-tpl
@@ -10,7 +10,8 @@ https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
 import os
 
 from django.core.wsgi import get_wsgi_application
+from djangoldp.conf import settings as ldpsettings
 
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
+ldpsettings.configure()
 
 application = get_wsgi_application()
diff --git a/djangoldp/conf/settings.py b/djangoldp/conf/settings.py
index 3ce311e5b2c97c3dbb0066fa87369ad1cbd038f3..bc2db85e1de21538ea6cdaa0bfd470ab0e3a4866 100644
--- a/djangoldp/conf/settings.py
+++ b/djangoldp/conf/settings.py
@@ -1,6 +1,7 @@
 import os
 import sys
 import yaml
+from django.core.exceptions import ImproperlyConfigured
 from django.conf import settings as django_settings
 from . import global_settings
 
@@ -14,12 +15,15 @@ def configure():
 
     # ref: https://docs.djangoproject.com/fr/2.2/topics/settings/#custom-default-settings
     settings = LDPSettings('config.yml')
-    django_settings.configure(settings)
+    django_settings.configure(settings)     # gives a LazySettings
 
 
 class LDPSettings(object):
 
-    def __init__(self, path, *args, **kwargs):
+    def __init__(self, path):
+
+        if django_settings.configured:
+            raise ImproperlyConfigured('Settings have been configured already')
 
         self.path = path
         self._config = None
@@ -35,28 +39,19 @@ class LDPSettings(object):
 
         return self._config
 
-    def __getattr__(self, name):
-
-        """Look for the value in config and fallback on django defaults."""
-
-        try:
-            if not name.startswith('_') and name.isupper():
-                return self.config['server'][name]
-        except KeyError:
-            try:
-                return getattr(global_settings, name)
-            except AttributeError:
-                # logger.info(f'The settings {name} is not accessible')
-                raise
-
     @property
     def LDP_PACKAGES(self):
+
+        """Returns the list of LDP packages configured."""
+
         pkg = self.config.get('ldppackages', [])
         return [] if pkg is None else pkg
 
     @property
     def INSTALLED_APPS(self):
 
+        """Returns the default installed apps and the LDP packages."""
+
         # get default apps
         apps = getattr(global_settings, 'INSTALLED_APPS')
 
@@ -67,6 +62,8 @@ class LDPSettings(object):
     @property
     def MIDDLEWARE(self):
 
+        """Returns the default middlewares and the middlewares found in each LDP packages."""
+
         # get default middlewares
         middleware = getattr(global_settings, 'MIDDLEWARE')
 
@@ -87,3 +84,18 @@ class LDPSettings(object):
                     pass
 
         return middleware
+
+    def __getattr__(self, name):
+
+        """Look for the value in config and fallback on defaults."""
+
+        try:
+            if not name.startswith('_') and name.isupper():
+                return self.config['server'][name]
+        except KeyError:
+            try:
+                return getattr(global_settings, name)
+            except AttributeError:
+                # logger.info(f'The settings {name} is not accessible')
+                raise
+