diff --git a/deadlock-plugins/deadlock-extension/src/core/commandHandler.ts b/deadlock-plugins/deadlock-extension/src/core/commandHandler.ts
index 73999d209c0c0af9da3239d4e5333e446d3026a4..616740ca80375832649cee57aae292a7ca85053d 100644
--- a/deadlock-plugins/deadlock-extension/src/core/commandHandler.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/commandHandler.ts
@@ -1,39 +1,22 @@
-import { commands, Uri, window } from 'vscode';
+import { commands } from 'vscode';
 import { Command } from '../theia/command';
 import Controller from './controller';
 import ExtensionStore from './extensionStore';
 
 export class CommandHandler {
 	private extensionStore: ExtensionStore;
-	constructor(private parent: Controller) {
+	constructor(private controller: Controller) {
 		this.extensionStore = ExtensionStore.getInstance();
 		this.initCommandHandler();
 	}
 
 	initCommandHandler() {
-		commands.registerCommand(CHOOSE_MISSION_WORKDIR_COMMAND.cmd, this.chooseMissionWorkdir.bind(this));
-		commands.registerCommand(AUTHENTICATE_COMMAND.cmd, this.parent.authenticate.bind(this.parent));
-		commands.registerCommand(CLEAR_COMMAND.cmd, this.parent.clear.bind(this.parent));
-	}
-
-	async chooseMissionWorkdir() {
-		const actualMissionWorkDir = this.extensionStore.getMissionWorkdir();
-
-		const folderUri = await window.showOpenDialog({
-			defaultUri: actualMissionWorkDir ? Uri.file(actualMissionWorkDir) : undefined,
-			canSelectFolders: true,
-			canSelectFiles: false,
-			title: 'Choisis le dossier qui contiendra tes missions',
-		});
-
-		if (!folderUri) {
-			if (this.extensionStore.getMissionWorkdir()) {
-				return;
-			}
-			this.chooseMissionWorkdir();
-		} else {
-			this.extensionStore.setMissionWorkdir(folderUri[0].path);
-		}
+		commands.registerCommand(
+			CHOOSE_MISSION_WORKDIR_COMMAND.cmd,
+			this.controller.chooseMissionWorkdir.bind(this.controller),
+		);
+		commands.registerCommand(AUTHENTICATE_COMMAND.cmd, this.controller.authenticate.bind(this.controller));
+		commands.registerCommand(CLEAR_COMMAND.cmd, this.controller.clear.bind(this.controller));
 	}
 }
 
diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts
index 4a8cc8a1b8183c315e8097a79aa0167989f4f1de..d5cfd5692b4dffd54621a24a32ed3bdb3c8a4421 100644
--- a/deadlock-plugins/deadlock-extension/src/core/controller.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts
@@ -12,6 +12,7 @@ export default class Controller {
 	private commandHandler: CommandHandler;
 	private briefingView: BriefingView;
 	private gettingStartedView: GettingStartedView;
+	private extensionStore: ExtensionStore;
 	constructor(private context: vscode.ExtensionContext) {
 		this.briefingView = new BriefingView();
 		this.gettingStartedView = new GettingStartedView(context.extensionUri);
@@ -21,6 +22,7 @@ export default class Controller {
 			KEYCLOAK_TOKEN_CREATE_URL,
 			KEYCLOAK_USER_INFO_URL,
 		);
+		this.extensionStore = ExtensionStore.getInstance();
 
 		this.init();
 	}
@@ -45,7 +47,25 @@ export default class Controller {
 		const exensionStorage = ExtensionStore.getInstance();
 		this.gettingStartedView.isAlreadyConnected = !!(await exensionStorage.getAccessToken());
 	}
+	async chooseMissionWorkdir() {
+		const actualMissionWorkDir = this.extensionStore.getMissionWorkdir();
 
+		const folderUri = await vscode.window.showOpenDialog({
+			defaultUri: actualMissionWorkDir ? vscode.Uri.file(actualMissionWorkDir) : undefined,
+			canSelectFolders: true,
+			canSelectFiles: false,
+			title: 'Choisis le dossier qui contiendra tes missions',
+		});
+
+		if (!folderUri) {
+			if (this.extensionStore.getMissionWorkdir()) {
+				return;
+			}
+			this.chooseMissionWorkdir();
+		} else {
+			this.extensionStore.setMissionWorkdir(folderUri[0].path);
+		}
+	}
 	public async clear() {
 		const exensionStorage = ExtensionStore.getInstance();
 		await exensionStorage.clear();
@@ -57,9 +77,8 @@ export default class Controller {
 		// The answer might be 'yes' because when the student is already authenticated, the log in button should be disabled.
 		await this.connection.registerDevice();
 		const tokens = await this.connection.getToken({ openLink: Controller.openBrowserWithUrl });
-		const exensionStorage = ExtensionStore.getInstance();
-		await exensionStorage.setAccessToken(tokens.accessToken);
-		await exensionStorage.setRefreshToken(tokens.refreshToken);
+		await this.extensionStore.setAccessToken(tokens.accessToken);
+		await this.extensionStore.setRefreshToken(tokens.refreshToken);
 		this.gettingStartedView.isAlreadyConnected = true;
 	}
 	public static openBrowserWithUrl(url: string) {
@@ -69,13 +88,12 @@ export default class Controller {
 	public async launchMission(missionId: string | null) {
 		if (missionId) {
 			vscode.window.showInformationMessage(`vous lancez la mission ${missionId}`);
-			const extensionStore = ExtensionStore.getInstance();
-			const hadMissionWorkdir = extensionStore.getMissionWorkdir() !== undefined;
+			const hadMissionWorkdir = this.extensionStore.getMissionWorkdir() !== undefined;
 			if (!hadMissionWorkdir) {
 				await vscode.commands.executeCommand(CHOOSE_MISSION_WORKDIR_COMMAND.cmd);
 			}
 
-			const hadBeenConnected = (await extensionStore.getAccessToken()) !== undefined;
+			const hadBeenConnected = (await this.extensionStore.getAccessToken()) !== undefined;
 
 			if (!hadBeenConnected) {
 				this.authenticate();