diff --git a/ExpressAPI/src/express/API.ts b/ExpressAPI/src/express/API.ts
index 55d2fe4765ecb0810e206d456715a1da4895adae..de0be9385997af3611b9eb4a9bf6f3341dabcb95 100644
--- a/ExpressAPI/src/express/API.ts
+++ b/ExpressAPI/src/express/API.ts
@@ -13,7 +13,7 @@ import logger                  from '../shared/logging/WinstonLogger';
 import ParamsCallbackManager   from '../middlewares/ParamsCallbackManager';
 import ApiRoutesManager        from '../routes/ApiRoutesManager';
 import compression             from 'compression';
-import ClientVersionMiddleware from '../middlewares/ClientVersionMiddleware';
+import ClientVersionCheckerMiddleware from '../middlewares/ClientVersionCheckerMiddleware';
 
 
 class API implements WorkerTask {
@@ -23,6 +23,16 @@ class API implements WorkerTask {
     constructor() {
         this.backend = express();
 
+        this.initBaseMiddlewares();
+
+        this.backend.use(ClientVersionCheckerMiddleware.register());
+
+        ParamsCallbackManager.registerOnBackend(this.backend);
+        SessionMiddleware.registerOnBackend(this.backend);
+        ApiRoutesManager.registerOnBackend(this.backend);
+    }
+
+    private initBaseMiddlewares() {
         this.backend.use(multer({
                                     limits: { fieldSize: 100 * 1024 * 1024 }
                                 }).none()); //Used for extract params from body with format "form-data", The none is for say that we do not wait a file in params
@@ -30,7 +40,7 @@ class API implements WorkerTask {
         this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
         this.backend.use(cors()); //Allow CORS requests
         this.backend.use(compression()); //Compress responses
-
+    }
         this.backend.use(ClientVersionMiddleware.register());
 
         ParamsCallbackManager.register(this.backend);
diff --git a/ExpressAPI/src/middlewares/ClientVersionMiddleware.ts b/ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts
similarity index 94%
rename from ExpressAPI/src/middlewares/ClientVersionMiddleware.ts
rename to ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts
index f4bed40e30357b8fb035c66e3012f582950c817d..1503abd73446130ef06f332c9685d7bfd88e38f0 100644
--- a/ExpressAPI/src/middlewares/ClientVersionMiddleware.ts
+++ b/ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts
@@ -6,7 +6,7 @@ import { HttpStatusCode } from 'axios';
 import DojoStatusCode     from '../shared/types/Dojo/DojoStatusCode';
 
 
-class ClientVersionMiddleware {
+class ClientVersionCheckerMiddleware {
     register(): (req: express.Request, res: express.Response, next: express.NextFunction) => void {
         return async (req: express.Request, res: express.Response, next: express.NextFunction) => {
             if ( req.headers['client'] && req.headers['client-version'] ) {
@@ -32,4 +32,4 @@ class ClientVersionMiddleware {
 }
 
 
-export default new ClientVersionMiddleware();
\ No newline at end of file
+export default new ClientVersionCheckerMiddleware();
\ No newline at end of file
diff --git a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
index 9af8f193cba8598dbddaf8d710a6a343e971f0bb..cfcb275a4c3239e33f83fbb6360a10e31b5b0141 100644
--- a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
+++ b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
@@ -33,7 +33,7 @@ class ParamsCallbackManager {
         }
     }
 
-    register(backend: Express) {
+    registerOnBackend(backend: Express) {
         this.listenParam('assignmentNameOrUrl', backend, (AssignmentManager.get as GetFunction).bind(AssignmentManager), [ {
             exercises: true,
             staff    : true
diff --git a/ExpressAPI/src/middlewares/SecurityMiddleware.ts b/ExpressAPI/src/middlewares/SecurityMiddleware.ts
index cc7e06799011d2fd0a7201f9efd3719f81499955..ec5f3888910e42e5a010f5657bc97229c5f209d4 100644
--- a/ExpressAPI/src/middlewares/SecurityMiddleware.ts
+++ b/ExpressAPI/src/middlewares/SecurityMiddleware.ts
@@ -31,7 +31,7 @@ class SecurityMiddleware {
                                 isAllowed = isAllowed || (req.boundParams.assignment?.published ?? false);
                                 break;
                             case SecurityCheckType.EXERCISE_SECRET:
-                                isAllowed = isAllowed || req.headers.authorization?.replace('ExerciseSecret ', '') === req.boundParams.exercise!.secret;
+                                isAllowed = isAllowed || (req.headers.ExerciseSecret as string | undefined) === req.boundParams.exercise!.secret;
                                 break;
                             default:
                                 break;
diff --git a/ExpressAPI/src/middlewares/SessionMiddleware.ts b/ExpressAPI/src/middlewares/SessionMiddleware.ts
index 8f87f7d8e4d4ed87878a606669ff913ca605f1ba..bf237bfd28d71562e22b68b2317b447abff88c28 100644
--- a/ExpressAPI/src/middlewares/SessionMiddleware.ts
+++ b/ExpressAPI/src/middlewares/SessionMiddleware.ts
@@ -1,15 +1,16 @@
-import express from 'express';
-import Session from '../controllers/Session';
+import express     from 'express';
+import Session     from '../controllers/Session';
+import { Express } from 'express-serve-static-core';
 
 
 class SessionMiddleware {
-    register(): (req: express.Request, res: express.Response, next: express.NextFunction) => void {
-        return async (req: express.Request, res: express.Response, next: express.NextFunction) => {
+    registerOnBackend(backend: Express) {
+        backend.use(async (req: express.Request, res: express.Response, next: express.NextFunction) => {
             req.session = new Session();
             await req.session.initSession(req, res);
 
             return next();
-        };
+        });
     }
 }
 
diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts
index 025dc331c72b2a94258e472fb488ef55266896f8..605bbc45ad29c13d9a2ff698ee93a86f34ba28ca 100644
--- a/ExpressAPI/src/routes/AssignmentRoutes.ts
+++ b/ExpressAPI/src/routes/AssignmentRoutes.ts
@@ -49,8 +49,8 @@ class AssignmentRoutes implements RoutesManager {
         backend.get('/assignments/:assignmentNameOrUrl', SecurityMiddleware.check(true), this.getAssignment);
         backend.post('/assignments', SecurityMiddleware.check(true, SecurityCheckType.TEACHING_STAFF), ParamsValidatorMiddleware.validate(this.assignmentValidator), this.createAssignment);
 
-        backend.patch('/assignments/:assignmentNameOrUrl/publish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.changeAssignmentPublishedStatus(true));
-        backend.patch('/assignments/:assignmentNameOrUrl/unpublish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.changeAssignmentPublishedStatus(false));
+        backend.patch('/assignments/:assignmentNameOrUrl/publish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.publishAssignment);
+        backend.patch('/assignments/:assignmentNameOrUrl/unpublish', SecurityMiddleware.check(true, SecurityCheckType.ASSIGNMENT_STAFF), this.unpublishAssignment);
     }
 
     // Get an assignment by its name or gitlab url
@@ -167,6 +167,14 @@ class AssignmentRoutes implements RoutesManager {
         }
     }
 
+    private async publishAssignment(req: express.Request, res: express.Response) {
+        return this.changeAssignmentPublishedStatus(true)(req, res);
+    }
+
+    private async unpublishAssignment(req: express.Request, res: express.Response) {
+        return this.changeAssignmentPublishedStatus(false)(req, res);
+    }
+
     private changeAssignmentPublishedStatus(publish: boolean): (req: express.Request, res: express.Response) => Promise<void> {
         return async (req: express.Request, res: express.Response): Promise<void> => {
             if ( publish ) {
diff --git a/ExpressAPI/src/routes/BaseRoutes.ts b/ExpressAPI/src/routes/BaseRoutes.ts
index 0ef1eb0d6af2aab2e6c9fbd7f471c5aa670ebc93..c0ac80aa491060937f3c309fd52c314f18144fe7 100644
--- a/ExpressAPI/src/routes/BaseRoutes.ts
+++ b/ExpressAPI/src/routes/BaseRoutes.ts
@@ -6,8 +6,16 @@ import RoutesManager   from '../express/RoutesManager';
 
 class BaseRoutes implements RoutesManager {
     registerOnBackend(backend: Express) {
-        backend.get('/', (req: express.Request, res: express.Response) => { res.status(StatusCodes.OK).end(); });
-        backend.get('/health_check', (req: express.Request, res: express.Response) => { res.status(StatusCodes.OK).end(); });
+        backend.get('/', this.homepage);
+        backend.get('/health_check', this.healthCheck);
+    }
+
+    private async homepage(req: express.Request, res: express.Response) {
+        return req.session.sendResponse(res, StatusCodes.OK);
+    }
+
+    private async healthCheck(req: express.Request, res: express.Response) {
+        return req.session.sendResponse(res, StatusCodes.OK);
     }
 }
 
diff --git a/ExpressAPI/src/routes/SessionRoutes.ts b/ExpressAPI/src/routes/SessionRoutes.ts
index 29ebdfbacc5578ec02b597af6d09539903c9a2a5..a5bd42f18851e66b469cf4d66591f5a2dd9f9ad5 100644
--- a/ExpressAPI/src/routes/SessionRoutes.ts
+++ b/ExpressAPI/src/routes/SessionRoutes.ts
@@ -34,7 +34,7 @@ class SessionRoutes implements RoutesManager {
     registerOnBackend(backend: Express) {
         backend.post('/login', ParamsValidatorMiddleware.validate(this.loginValidator), this.login);
         backend.post('/refresh_tokens', ParamsValidatorMiddleware.validate(this.refreshTokensValidator), this.refreshTokens);
-        backend.get('/test_session', SecurityMiddleware.check(true), (req: express.Request, res: express.Response) => req.session.sendResponse(res, StatusCodes.OK));
+        backend.get('/test_session', SecurityMiddleware.check(true), this.testSession);
     }
 
     private async login(req: express.Request, res: express.Response) {
@@ -71,6 +71,10 @@ class SessionRoutes implements RoutesManager {
             req.session.sendResponse(res, StatusCodes.INTERNAL_SERVER_ERROR, {}, 'Unknown error while refresh tokens', DojoStatusCode.REFRESH_TOKENS_FAILED);
         }
     }
+
+    private async testSession(req: express.Request, res: express.Response) {
+        req.session.sendResponse(res, StatusCodes.OK);
+    }
 }