diff --git a/classes/modules/abstractModule.php b/classes/modules/abstractModule.php
index e9bcbe4fb5eaac64e9ad6e5312b9bce8a135077c..9a59faca9eccc8e6abd9adb5df549361bf9f1db9 100644
--- a/classes/modules/abstractModule.php
+++ b/classes/modules/abstractModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 abstract class AbstractModule
 {
diff --git a/classes/modules/adminModule.php b/classes/modules/adminModule.php
index 9a2cfd3864df851e26a97cb39cd5e983301b4fbe..9fa787286d81c038765d472f7a4e4695131c1901 100644
--- a/classes/modules/adminModule.php
+++ b/classes/modules/adminModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 use uib\ub\loadspeakr\Endpoint;
 use uib\ub\loadspeakr\HTTPStatus;
diff --git a/classes/modules/exportModule.php b/classes/modules/exportModule.php
index 5dc6c61b99863b6263b9843d6a63c383f9f86b87..162b71f0e0ba942af781c4291ec7053be5e4e428 100644
--- a/classes/modules/exportModule.php
+++ b/classes/modules/exportModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 require_once('abstractModule.php');
 
diff --git a/classes/modules/redirectModule.php b/classes/modules/redirectModule.php
index 614367ff0b90d991008469fc3f9ac835170e2de3..a72d6672ec5f0bc0a34866bee8c1e52f9db30672 100644
--- a/classes/modules/redirectModule.php
+++ b/classes/modules/redirectModule.php
@@ -1,5 +1,6 @@
-<?php
+<?php declare(strict_types=1);
 
+namespace uib\ub\loadspeakr\modules;
 use uib\ub\loadspeakr\MetaDb;
 
 require_once('abstractModule.php');
diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php
index a75dae07f7df03e10fc1d187d4f835995b82c8c3..ebc3818d43dd2f351d8b2c974207d3999cd8b758 100644
--- a/classes/modules/serviceModule.php
+++ b/classes/modules/serviceModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 use uib\ub\loadspeakr\Convert;
 use uib\ub\loadspeakr\HTTPStatus;
diff --git a/classes/modules/sessionModule.php b/classes/modules/sessionModule.php
index 9dbe2bfa8e89000231adfae17fe6f1ca409bb6ee..f2552529d2cc1db7215ee47c107efe26d04e8f12 100644
--- a/classes/modules/sessionModule.php
+++ b/classes/modules/sessionModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 use uib\ub\loadspeakr\HTTPStatus;
 
diff --git a/classes/modules/sparqlFilterModule.php b/classes/modules/sparqlFilterModule.php
index d269776ce495a43642a630bbb0a61f28f473c500..2adcb5e9c8a83a1e1bf25b2cd98fa6e8a8186f7f 100644
--- a/classes/modules/sparqlFilterModule.php
+++ b/classes/modules/sparqlFilterModule.php
@@ -1,5 +1,7 @@
 <?php
 
+namespace uib\ub\loadspeakr\modules;
+
 use uib\ub\loadspeakr\Convert;
 use uib\ub\loadspeakr\HTTPStatus;
 use uib\ub\loadspeakr\Logging;
diff --git a/classes/modules/staticModule.php b/classes/modules/staticModule.php
index d438b560078d9b87126b34c0910414d9930a0350..afced4760c5c355d73693f8d1a7919a6f8f2b1f5 100644
--- a/classes/modules/staticModule.php
+++ b/classes/modules/staticModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 use uib\ub\loadspeakr\HTTPStatus;
 use uib\ub\loadspeakr\Logging;
diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php
index 76d6cdac24351eec262089e19b1d80e03c0d9282..5ea51363329ed664f658bef0112d565b31aa30f7 100644
--- a/classes/modules/typeModule.php
+++ b/classes/modules/typeModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 use uib\ub\loadspeakr\Convert;
 use uib\ub\loadspeakr\HTTPStatus;
diff --git a/classes/modules/uriModule.php b/classes/modules/uriModule.php
index 59c39a65a37a692b50f7441eaf39c7fd4f6b8678..e1f21c68e7e767a053627073728d9c7ff47baec9 100644
--- a/classes/modules/uriModule.php
+++ b/classes/modules/uriModule.php
@@ -1,4 +1,6 @@
-<?php
+<?php declare(strict_types=1);
+
+namespace uib\ub\loadspeakr\modules;
 
 use uib\ub\loadspeakr\Convert;
 use uib\ub\loadspeakr\HTTPStatus;
diff --git a/composer.lock b/composer.lock
index b4c4a755d88a41e75fb5f7ed3bcd1d8aee63ded4..67609d55bf92ccfe9fec69a5c3f54a63372bae84 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1040,18 +1040,21 @@
         },
         {
             "name": "ubbdst/haanga",
-            "version": "v1.0.7",
+            "version": "1.0.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/ubbdst/Haanga.git",
-                "reference": "29f88109c1294415f91842136e9413ae0e6ea3d5"
+                "reference": "dabfeb1f4b67d735289b77d3b66107fde17077b6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/ubbdst/Haanga/zipball/29f88109c1294415f91842136e9413ae0e6ea3d5",
-                "reference": "29f88109c1294415f91842136e9413ae0e6ea3d5",
+                "url": "https://api.github.com/repos/ubbdst/Haanga/zipball/dabfeb1f4b67d735289b77d3b66107fde17077b6",
+                "reference": "dabfeb1f4b67d735289b77d3b66107fde17077b6",
                 "shasum": ""
             },
+            "require-dev": {
+                "phpunit/phpunit": "^9.5"
+            },
             "type": "library",
             "autoload": {
                 "classmap": [
@@ -1066,9 +1069,9 @@
             ],
             "description": "Template compiler for PHP, Django-style (as much as possible). Pretty efficent by avoiding to have anything at run-time.",
             "support": {
-                "source": "https://github.com/ubbdst/Haanga/tree/1.0.7"
+                "source": "https://github.com/ubbdst/Haanga/tree/1.0.9.1"
             },
-            "time": "2016-02-06T07:04:31+00:00"
+            "time": "2021-09-13T11:30:58+00:00"
         }
     ],
     "packages-dev": [
@@ -1889,33 +1892,33 @@
         },
         {
             "name": "phpspec/prophecy",
-            "version": "1.13.0",
+            "version": "1.14.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
+                "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
-                "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
+                "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
                 "shasum": ""
             },
             "require": {
                 "doctrine/instantiator": "^1.2",
-                "php": "^7.2 || ~8.0, <8.1",
+                "php": "^7.2 || ~8.0, <8.2",
                 "phpdocumentor/reflection-docblock": "^5.2",
                 "sebastian/comparator": "^3.0 || ^4.0",
                 "sebastian/recursion-context": "^3.0 || ^4.0"
             },
             "require-dev": {
-                "phpspec/phpspec": "^6.0",
+                "phpspec/phpspec": "^6.0 || ^7.0",
                 "phpunit/phpunit": "^8.0 || ^9.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.11.x-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
@@ -1950,22 +1953,22 @@
             ],
             "support": {
                 "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
+                "source": "https://github.com/phpspec/prophecy/tree/1.14.0"
             },
-            "time": "2021-03-17T13:42:18+00:00"
+            "time": "2021-09-10T09:02:12+00:00"
         },
         {
             "name": "phpstan/phpstan",
-            "version": "0.12.98",
+            "version": "0.12.99",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpstan.git",
-                "reference": "3bb7cc246c057405dd5e290c3ecc62ab51d57e00"
+                "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3bb7cc246c057405dd5e290c3ecc62ab51d57e00",
-                "reference": "3bb7cc246c057405dd5e290c3ecc62ab51d57e00",
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7",
+                "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7",
                 "shasum": ""
             },
             "require": {
@@ -1996,7 +1999,7 @@
             "description": "PHPStan - PHP Static Analysis Tool",
             "support": {
                 "issues": "https://github.com/phpstan/phpstan/issues",
-                "source": "https://github.com/phpstan/phpstan/tree/0.12.98"
+                "source": "https://github.com/phpstan/phpstan/tree/0.12.99"
             },
             "funding": [
                 {
@@ -2016,7 +2019,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-09-02T12:33:01+00:00"
+            "time": "2021-09-12T20:09:55+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
@@ -2445,12 +2448,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/Roave/SecurityAdvisories.git",
-                "reference": "8cebf1673eccd7e6552732142039c147c1023214"
+                "reference": "94b1ad0f093b41a6cfccbe1272026cbc1ebaad5c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8cebf1673eccd7e6552732142039c147c1023214",
-                "reference": "8cebf1673eccd7e6552732142039c147c1023214",
+                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/94b1ad0f093b41a6cfccbe1272026cbc1ebaad5c",
+                "reference": "94b1ad0f093b41a6cfccbe1272026cbc1ebaad5c",
                 "shasum": ""
             },
             "conflict": {
@@ -2519,7 +2522,7 @@
                 "ezsystems/ez-support-tools": ">=2.2,<2.2.3",
                 "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
                 "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1",
-                "ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4",
+                "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
                 "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6",
                 "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
                 "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<=1.3.1",
@@ -2557,6 +2560,7 @@
                 "grumpydictator/firefly-iii": "<5.6",
                 "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
                 "helloxz/imgurl": "<=2.31",
+                "ibexa/post-install": "<=1.0.4",
                 "icecoder/icecoder": "<=8",
                 "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
                 "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
@@ -2706,6 +2710,7 @@
                 "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
                 "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
                 "symbiote/silverstripe-versionedfiles": "<=2.0.3",
+                "symfont/process": ">=0,<4",
                 "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
                 "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
                 "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
@@ -2837,7 +2842,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2021-09-09T17:11:22+00:00"
+            "time": "2021-09-14T21:02:42+00:00"
         },
         {
             "name": "sabre/event",
diff --git a/index.php b/index.php
index b90dcaba92e2bd037188b76b6f0c523209c384fc..896e27a479376f65c793b84fc97eeb02481980d3 100644
--- a/index.php
+++ b/index.php
@@ -10,34 +10,34 @@ use uib\ub\loadspeakr\Utils;
 require_once __DIR__ . '/vendor/autoload.php';
 
 //Import
-if(isset($_GET['q']) && $_GET['q'] == 'import'){
-  include_once('classes/Importer.php');
-  $imp = new Importer();
-  $imp->run();
-  exit(0);
+if (isset($_GET['q']) && $_GET['q'] == 'import') {
+    include_once('classes/Importer.php');
+    $imp = new Importer();
+    $imp->run();
+    exit(0);
 }
 
 //Test if LODSPeaKr is configured
-if(!file_exists('settings.inc.php')){
-  echo 'Need to configure lodspeakr first. Please run "install.sh". Alternatively, you can <a href="import">import an existing application</a>';
-  exit(0);
+if (!file_exists('settings.inc.php')) {
+    echo 'Need to configure lodspeakr first. Please run "install.sh". Alternatively, you can <a href="import">import an existing application</a>';
+    exit(0);
 }
 
 include_once('common.inc.php');
 //Debug output
 
 $conf['logfile'] = null;
-if($conf['debug']){
-  include_once('classes/Logging.php');
-  if(isset($_GET['q']) && $_GET['q'] == 'logs'){
-    Logging::init();
-    exit(0);
-  }else{
-    $conf['logfile'] = Logging::createLogFile($_GET['q']);
-    //error_reporting(E_ALL);
-  }
-}else{
-  error_reporting(E_ERROR);
+if ($conf['debug']) {
+    include_once('classes/Logging.php');
+    if (isset($_GET['q']) && $_GET['q'] == 'logs') {
+        Logging::init();
+        exit(0);
+    } else {
+        $conf['logfile'] = Logging::createLogFile($_GET['q']);
+        //error_reporting(E_ALL);
+    }
+} else {
+    error_reporting(E_ERROR);
 }
 
 include_once('classes/HTTPStatus.php');
@@ -55,54 +55,60 @@ $extension = Utils::getExtension($acceptContentType, $conf['http_accept']);
 
 
 //Check content type is supported by LODSPeaKr
-if($acceptContentType == NULL){
-  HTTPStatus::send406($uri);
+if ($acceptContentType == null) {
+    HTTPStatus::send406($uri);
 }
 
 //Export
-if($conf['export'] && $_GET['q'] == 'export'){
-  include_once('settings.inc.php');
-  include_once('classes/Exporter.php');
-  $exp = new Exporter();
-  header('Content-Type: text/plain');
-  $exp->run();
-  exit(0);
+if ($conf['export'] && $_GET['q'] == 'export') {
+    include_once('settings.inc.php');
+    include_once('classes/Exporter.php');
+    $exp = new Exporter();
+    header('Content-Type: text/plain');
+    $exp->run();
+    exit(0);
 }
 
 //Redirect to root URL if necessary
-$uri = $conf['basedir'].$_GET['q'];
+$uri = $conf['basedir'] . $_GET['q'];
 $localUri = $uri;
-if($uri == $conf['basedir']){
-  header('Location: '.$conf['root']);
-  exit(0);
+if ($uri == $conf['basedir']) {
+    header('Location: ' . $conf['root']);
+    exit(0);
 }
 
 
 //Configure external URIs if necessary
-$localUri = $conf['basedir'].$_GET['q'];
+$localUri = $conf['basedir'] . $_GET['q'];
 
 $uri = Utils::getMirroredUri($localUri);
 
 
-//Modules
-foreach($conf['modules']['available'] as $i){
-  $className = $i.'Module';
-  $currentModule = $conf['modules']['directory'].$className.'.php';
-  if(!is_file($currentModule)){
-  	HTTPStatus::send500("<br/>Can't load or error in module <tt>".$currentModule."</tt>" );
-  	exit(1);
-  }
-  require_once($currentModule);
-  $module = new $className();
-  $matching = $module->match($uri);
-  if($matching != FALSE){
-  	$module->execute($matching);
-  	if($conf['logfile'] != null){
-  	  fwrite($conf['logfile'], "]}");
-  	  fclose($conf['logfile']);
-  	}
-  	exit(0);
-  }
+//Load Loadspeakr modules.
+foreach ($conf['modules']['available'] as $i) {
+    $className = $i . 'Module';
+    $currentModule = $conf['modules']['directory'] . $className . '.php';
+
+    if (!is_file($currentModule)) {
+        HTTPStatus::send500('<br/>Can\'t load or error in module <pre>' . $currentModule . '</pre>');
+        exit(1);
+    }
+
+    require_once($currentModule);
+    $namespacedClassName = 'uib\ub\loadspeakr\modules\\' . ucfirst($className);
+    $module = new $namespacedClassName();
+    $matching = $module->match($uri);
+
+    if ($matching != false) {
+        $module->execute($matching);
+
+        if ($conf['logfile'] != null) {
+            fwrite($conf['logfile'], "]}");
+            fclose($conf['logfile']);
+        }
+
+        exit(0);
+    }
 }
 
 HTTPStatus::send404($uri);