diff --git a/.vscode/launch.json b/.vscode/launch.json
index 53fe86e85acd7e15db5494c61d787f97fa64a57b..d7eea5b9afd4998f3862199550d8aeb25eaf53ad 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -3,24 +3,15 @@
 	"version": "0.2.0",
 	"configurations": [
 		{
+			"name": "Launch Extension",
 			"type": "extensionHost",
 			"request": "launch",
-			"name": "Launch Client",
 			"runtimeExecutable": "${execPath}",
-			"args": ["--extensionDevelopmentPath=${workspaceRoot}"],
-			"outFiles": ["${workspaceRoot}/client/out/**/*.js"],
-			"preLaunchTask": {
-				"type": "npm",
-				"script": "watch"
-			}
-		},
-		{
-			"type": "node",
-			"request": "attach",
-			"name": "Attach to Server",
-			"port": 6009,
-			"restart": true,
-			"outFiles": ["${workspaceRoot}/server/out/**/*.js"]
+			"args": ["--extensionDevelopmentPath=${workspaceRoot}", "--debug" ],
+			"stopOnEntry": false,
+			"sourceMaps": true,
+			"outFiles": ["${workspaceRoot}/out/src"],
+			"preLaunchTask": "compile"
 		},
 		{
 			"name": "Language Server E2E Test",
@@ -29,16 +20,10 @@
 			"runtimeExecutable": "${execPath}",
 			"args": [
 				"--extensionDevelopmentPath=${workspaceRoot}",
-				"--extensionTestsPath=${workspaceRoot}/client/out/test/index",
-				"${workspaceRoot}/client/testFixture"
+				"--extensionTestsPath=${workspaceRoot}/out/test/index",
+				"${workspaceRoot}/testFixture"
 			],
-			"outFiles": ["${workspaceRoot}/client/out/test/**/*.js"]
+			"outFiles": ["${workspaceRoot}/out/test/**/*.js"]
 		}
 	],
-	"compounds": [
-		{
-			"name": "Client + Server",
-			"configurations": ["Launch Client", "Attach to Server"]
-		}
-	]
 }
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 5efd8048880a1897e9014a322538e00db30def48..31bfc59960e862e145465cf055859a78d4888ff0 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -1,6 +1,40 @@
 {
 	"version": "2.0.0",
+	"command": "npm",
 	"tasks": [
+		{
+			"label": "compile",
+			// we run the custom script "compile" as defined in package.json
+			"args": [
+				"run",
+				"compile",
+				"--loglevel",
+				"silent"
+			],
+			// The tsc compiler is started in watching mode
+			"isBackground": true,
+			// use the standard tsc in watch mode problem matcher to find compile problems in the output.
+			"problemMatcher": "$tsc-watch",
+			"group": {
+				"kind": "build",
+				"isDefault": true
+			},
+
+		},
+		{
+			"label": "build-server",
+			// we run the custom script "compile" as defined in package.json
+			"args": [
+				"run",
+				"build-server",
+				"--loglevel",
+				"silent"
+			],
+			// The tsc compiler is started in watching mode
+			"isBackground": false
+		},
+
+
 		{
 			"type": "npm",
 			"script": "compile",
diff --git a/README.md b/README.md
index 8e579a7f929c22dcebf979444eb29d878bf89995..757df35f7a653ab3628751c8835ff4d3eb8b248b 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,6 @@ Please note that user settings overwrite workspace settings.
 ## Future plans
 - Linter Support (via Server, is still in development by Mircosoft https://microsoft.github.io/language-server-protocol/specifications/specification-3-16/)
 - Quickfix support aká Code Completion
-- Make startup time faster
 - Switch to Java Server
 
 ## Release Notes
diff --git a/client/package-lock.json b/client/package-lock.json
deleted file mode 100644
index 123e30e9b1c0c75d1857b69af010e63d76e8de66..0000000000000000000000000000000000000000
--- a/client/package-lock.json
+++ /dev/null
@@ -1,216 +0,0 @@
-{
-	"name": "lsp-b-client",
-	"version": "0.0.1",
-	"lockfileVersion": 1,
-	"requires": true,
-	"dependencies": {
-		"@types/vscode": {
-			"version": "1.43.0",
-			"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.43.0.tgz",
-			"integrity": "sha512-kIaR9qzd80rJOxePKpCB/mdy00mz8Apt2QA5Y6rdrKFn13QNFNeP3Hzmsf37Bwh/3cS7QjtAeGSK7wSqAU0sYQ==",
-			"dev": true
-		},
-		"agent-base": {
-			"version": "4.3.0",
-			"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
-			"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-			"dev": true,
-			"requires": {
-				"es6-promisify": "^5.0.0"
-			}
-		},
-		"balanced-match": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-			"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-			"dev": true
-		},
-		"brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"dev": true,
-			"requires": {
-				"balanced-match": "^1.0.0",
-				"concat-map": "0.0.1"
-			}
-		},
-		"concat-map": {
-			"version": "0.0.1",
-			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-			"dev": true
-		},
-		"debug": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-			"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-			"dev": true,
-			"requires": {
-				"ms": "2.0.0"
-			}
-		},
-		"es6-promise": {
-			"version": "4.2.8",
-			"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-			"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-			"dev": true
-		},
-		"es6-promisify": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
-			"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
-			"dev": true,
-			"requires": {
-				"es6-promise": "^4.0.3"
-			}
-		},
-		"fs.realpath": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-			"dev": true
-		},
-		"glob": {
-			"version": "7.1.6",
-			"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-			"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-			"dev": true,
-			"requires": {
-				"fs.realpath": "^1.0.0",
-				"inflight": "^1.0.4",
-				"inherits": "2",
-				"minimatch": "^3.0.4",
-				"once": "^1.3.0",
-				"path-is-absolute": "^1.0.0"
-			}
-		},
-		"http-proxy-agent": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
-			"integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
-			"dev": true,
-			"requires": {
-				"agent-base": "4",
-				"debug": "3.1.0"
-			}
-		},
-		"https-proxy-agent": {
-			"version": "2.2.4",
-			"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
-			"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
-			"dev": true,
-			"requires": {
-				"agent-base": "^4.3.0",
-				"debug": "^3.1.0"
-			}
-		},
-		"inflight": {
-			"version": "1.0.6",
-			"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-			"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-			"dev": true,
-			"requires": {
-				"once": "^1.3.0",
-				"wrappy": "1"
-			}
-		},
-		"inherits": {
-			"version": "2.0.4",
-			"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-			"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-			"dev": true
-		},
-		"minimatch": {
-			"version": "3.0.4",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-			"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-			"dev": true,
-			"requires": {
-				"brace-expansion": "^1.1.7"
-			}
-		},
-		"ms": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-			"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-			"dev": true
-		},
-		"once": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-			"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-			"dev": true,
-			"requires": {
-				"wrappy": "1"
-			}
-		},
-		"path-is-absolute": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-			"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-			"dev": true
-		},
-		"rimraf": {
-			"version": "2.7.1",
-			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-			"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-			"dev": true,
-			"requires": {
-				"glob": "^7.1.3"
-			}
-		},
-		"vscode-jsonrpc": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz",
-			"integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A=="
-		},
-		"vscode-languageclient": {
-			"version": "6.1.3",
-			"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz",
-			"integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==",
-			"requires": {
-				"semver": "^6.3.0",
-				"vscode-languageserver-protocol": "^3.15.3"
-			},
-			"dependencies": {
-				"semver": {
-					"version": "6.3.0",
-					"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-					"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-				}
-			}
-		},
-		"vscode-languageserver-protocol": {
-			"version": "3.15.3",
-			"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz",
-			"integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==",
-			"requires": {
-				"vscode-jsonrpc": "^5.0.1",
-				"vscode-languageserver-types": "3.15.1"
-			}
-		},
-		"vscode-languageserver-types": {
-			"version": "3.15.1",
-			"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz",
-			"integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ=="
-		},
-		"vscode-test": {
-			"version": "1.3.0",
-			"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.3.0.tgz",
-			"integrity": "sha512-LddukcBiSU2FVTDr3c1D8lwkiOvwlJdDL2hqVbn6gIz+rpTqUCkMZSKYm94Y1v0WXlHSDQBsXyY+tchWQgGVsw==",
-			"dev": true,
-			"requires": {
-				"http-proxy-agent": "^2.1.0",
-				"https-proxy-agent": "^2.2.4",
-				"rimraf": "^2.6.3"
-			}
-		},
-		"wrappy": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-			"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-			"dev": true
-		}
-	}
-}
diff --git a/client/package.json b/client/package.json
deleted file mode 100644
index 867e8599d15a5a038f91b387755a297226a30b2b..0000000000000000000000000000000000000000
--- a/client/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-	"name": "lsp-b-client",
-	"description": "client part of the language pack",
-	"author": "Sebastian Stock",
-	"license": "MIT",
-	"version": "0.0.1",
-	"publisher": "SeeBasTStick",
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/hhu-stups/b-language-extension"
-	},
-	"engines": {
-		"vscode": "^1.43.0"
-	},
-	"dependencies": {
-		"vscode-languageclient": "^6.1.3"
-	},
-	"devDependencies": {
-		"@types/vscode": "1.43.0",
-		"vscode-test": "^1.3.0"
-	}
-}
diff --git a/client/src/test/completion.test.ts b/client/src/test/completion.test.ts
deleted file mode 100644
index 476629e4d4ccde53caa42de270716b1c8eb7ed44..0000000000000000000000000000000000000000
--- a/client/src/test/completion.test.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
-
-import * as vscode from 'vscode';
-import * as assert from 'assert';
-import { getDocUri, activate } from './helper';
-
-suite('Should do completion', () => {
-	const docUri = getDocUri('completion.txt');
-
-	test('Completes JS/TS in txt file', async () => {
-		await testCompletion(docUri, new vscode.Position(0, 0), {
-			items: [
-				{ label: 'JavaScript', kind: vscode.CompletionItemKind.Text },
-				{ label: 'TypeScript', kind: vscode.CompletionItemKind.Text }
-			]
-		});
-	});
-});
-
-
-async function testCompletion(
-	docUri: vscode.Uri,
-	position: vscode.Position,
-	expectedCompletionList: vscode.CompletionList
-) {
-	await activate(docUri);
-
-	// Executing the command `vscode.executeCompletionItemProvider` to simulate triggering completion
-	const actualCompletionList = (await vscode.commands.executeCommand(
-		'vscode.executeCompletionItemProvider',
-		docUri,
-		position
-	)) as vscode.CompletionList;
-
-	assert.ok(actualCompletionList.items.length >= 2);
-	expectedCompletionList.items.forEach((expectedItem, i) => {
-		const actualItem = actualCompletionList.items[i];
-		assert.equal(actualItem.label, expectedItem.label);
-		assert.equal(actualItem.kind, expectedItem.kind);
-	});
-}
diff --git a/client/src/test/diagnostics.test.ts b/client/src/test/diagnostics.test.ts
deleted file mode 100644
index 1aa8a36f50b8d215b3c1734f7a638499f03beb54..0000000000000000000000000000000000000000
--- a/client/src/test/diagnostics.test.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
-
-import * as vscode from 'vscode';
-import * as assert from 'assert';
-import { getDocUri, activate } from './helper';
-
-suite('Should get diagnostics', () => {
-	const docUri = getDocUri('diagnostics.txt');
-
-	test('Diagnoses uppercase texts', async () => {
-		await testDiagnostics(docUri, [
-			{ message: 'ANY is all uppercase.', range: toRange(0, 0, 0, 3), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' },
-			{ message: 'ANY is all uppercase.', range: toRange(0, 14, 0, 17), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' },
-			{ message: 'OS is all uppercase.', range: toRange(0, 18, 0, 20), severity: vscode.DiagnosticSeverity.Warning, source: 'ex' }
-		]);
-	});
-});
-
-function toRange(sLine: number, sChar: number, eLine: number, eChar: number) {
-	const start = new vscode.Position(sLine, sChar);
-	const end = new vscode.Position(eLine, eChar);
-	return new vscode.Range(start, end);
-}
-
-async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) {
-	await activate(docUri);
-
-	const actualDiagnostics = vscode.languages.getDiagnostics(docUri);
-
-	assert.equal(actualDiagnostics.length, expectedDiagnostics.length);
-
-	expectedDiagnostics.forEach((expectedDiagnostic, i) => {
-		const actualDiagnostic = actualDiagnostics[i];
-		assert.equal(actualDiagnostic.message, expectedDiagnostic.message);
-		assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range);
-		assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity);
-	});
-}
\ No newline at end of file
diff --git a/client/src/test/helper.ts b/client/src/test/helper.ts
deleted file mode 100644
index 6e6724d37440d772ced5eb02826a1ab5660be47a..0000000000000000000000000000000000000000
--- a/client/src/test/helper.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
-
-import * as vscode from 'vscode';
-import * as path from 'path';
-
-export let doc: vscode.TextDocument;
-export let editor: vscode.TextEditor;
-export let documentEol: string;
-export let platformEol: string;
-
-/**
- * Activates the vscode.lsp-sample extension
- */
-export async function activate(docUri: vscode.Uri) {
-	// The extensionId is `publisher.name` from package.json
-	const ext = vscode.extensions.getExtension('vscode-samples.lsp-sample')!;
-	await ext.activate();
-	try {
-		doc = await vscode.workspace.openTextDocument(docUri);
-		editor = await vscode.window.showTextDocument(doc);
-		await sleep(2000); // Wait for server activation
-	} catch (e) {
-		console.error(e);
-	}
-}
-
-async function sleep(ms: number) {
-	return new Promise(resolve => setTimeout(resolve, ms));
-}
-
-export const getDocPath = (p: string) => {
-	return path.resolve(__dirname, '../../testFixture', p);
-};
-export const getDocUri = (p: string) => {
-	return vscode.Uri.file(getDocPath(p));
-};
-
-export async function setTestContent(content: string): Promise<boolean> {
-	const all = new vscode.Range(
-		doc.positionAt(0),
-		doc.positionAt(doc.getText().length)
-	);
-	return editor.edit(eb => eb.replace(all, content));
-}
diff --git a/client/src/test/index.ts b/client/src/test/index.ts
deleted file mode 100644
index 9e1060ed655d391e7b16dd9dcc47d738e8f410b7..0000000000000000000000000000000000000000
--- a/client/src/test/index.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
-import * as path from 'path';
-import * as Mocha from 'mocha';
-import * as glob from 'glob';
-
-export function run(): Promise<void> {
-	// Create the mocha test
-	const mocha = new Mocha({
-		ui: 'tdd',
-	});
-	mocha.useColors(true);
-	mocha.timeout(100000);
-
-	const testsRoot = __dirname;
-
-	return new Promise((resolve, reject) => {
-		glob('**.test.js', { cwd: testsRoot }, (err, files) => {
-			if (err) {
-				return reject(err);
-			}
-
-			// Add files to the test suite
-			files.forEach(f => mocha.addFile(path.resolve(testsRoot, f)));
-
-			try {
-				// Run the mocha test
-				mocha.run(failures => {
-					if (failures > 0) {
-						reject(new Error(`${failures} tests failed.`));
-					} else {
-						resolve();
-					}
-				});
-			} catch (err) {
-				console.error(err);
-				reject(err);
-			}
-		});
-	});
-}
\ No newline at end of file
diff --git a/client/src/test/runTest.ts b/client/src/test/runTest.ts
deleted file mode 100644
index 3361768c873d43d0191853a7f99cb0bbb2b43fbf..0000000000000000000000000000000000000000
--- a/client/src/test/runTest.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- *  Copyright (c) Microsoft Corporation. All rights reserved.
- *  Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-import * as path from 'path';
-
-import { runTests } from 'vscode-test';
-
-async function main() {
-	try {
-		// The folder containing the Extension Manifest package.json
-		// Passed to `--extensionDevelopmentPath`
-		const extensionDevelopmentPath = path.resolve(__dirname, '../../../');
-
-		// The path to test runner
-		// Passed to --extensionTestsPath
-		const extensionTestsPath = path.resolve(__dirname, './index');
-
-		// Download VS Code, unzip it and run the integration test
-		await runTests({ extensionDevelopmentPath, extensionTestsPath });
-	} catch (err) {
-		console.error('Failed to run tests');
-		process.exit(1);
-	}
-}
-
-main();
\ No newline at end of file
diff --git a/client/testFixture/completion.txt b/client/testFixture/completion.txt
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/client/testFixture/diagnostics.txt b/client/testFixture/diagnostics.txt
deleted file mode 100644
index d910cfb5af85f17d84785d754e9e20b881190b0e..0000000000000000000000000000000000000000
--- a/client/testFixture/diagnostics.txt
+++ /dev/null
@@ -1 +0,0 @@
-ANY browsers, ANY OS.
\ No newline at end of file
diff --git a/client/tsconfig.json b/client/tsconfig.json
deleted file mode 100644
index 9e5ff6a2435e8a2ee97da7799221e650a5cfb673..0000000000000000000000000000000000000000
--- a/client/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-	"compilerOptions": {
-		"module": "commonjs",
-		"target": "es6",
-		"outDir": "out",
-		"rootDir": "src",
-		"sourceMap": true
-	},
-	"include": ["src"],
-	"exclude": ["node_modules", ".vscode-test"]
-}
diff --git a/package-lock.json b/package-lock.json
index 6342e7418ad0d3827e6246f1a206d06421169719..efafdecc7e6734d6e247b61c165de1014c95fed9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -43,12 +43,6 @@
 				}
 			}
 		},
-		"@tootallnate/once": {
-			"version": "1.1.2",
-			"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
-			"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
-			"dev": true
-		},
 		"@types/color-name": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
@@ -62,9 +56,9 @@
 			"dev": true
 		},
 		"@types/json-schema": {
-			"version": "7.0.4",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz",
-			"integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==",
+			"version": "7.0.5",
+			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
+			"integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==",
 			"dev": true
 		},
 		"@types/mocha": {
@@ -83,9 +77,9 @@
 			}
 		},
 		"@types/node": {
-			"version": "14.0.5",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz",
-			"integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA=="
+			"version": "14.0.13",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz",
+			"integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA=="
 		},
 		"@types/stream-to-array": {
 			"version": "2.3.0",
@@ -104,9 +98,9 @@
 			}
 		},
 		"@types/vscode": {
-			"version": "1.45.1",
-			"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.45.1.tgz",
-			"integrity": "sha512-0NO9qrrEJBO8FsqHCrFMgR2suKnwCsKBWvRSb2OzH5gs4i3QO5AhEMQYrSzDbU/wLPt7N617/rN9lPY213gmwg=="
+			"version": "1.46.0",
+			"resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.46.0.tgz",
+			"integrity": "sha512-8m9wPEB2mcRqTWNKs9A9Eqs8DrQZt0qNFO8GkxBOnyW6xR//3s77SoMgb/nY1ctzACsZXwZj3YRTDsn4bAoaUw=="
 		},
 		"@typescript-eslint/experimental-utils": {
 			"version": "2.34.0",
@@ -147,29 +141,6 @@
 				"tsutils": "^3.17.1"
 			},
 			"dependencies": {
-				"debug": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-					"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-					"dev": true,
-					"requires": {
-						"ms": "^2.1.1"
-					}
-				},
-				"glob": {
-					"version": "7.1.6",
-					"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-					"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-					"dev": true,
-					"requires": {
-						"fs.realpath": "^1.0.0",
-						"inflight": "^1.0.4",
-						"inherits": "2",
-						"minimatch": "^3.0.4",
-						"once": "^1.3.0",
-						"path-is-absolute": "^1.0.0"
-					}
-				},
 				"semver": {
 					"version": "7.3.2",
 					"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
@@ -179,9 +150,9 @@
 			}
 		},
 		"acorn": {
-			"version": "7.2.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
-			"integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==",
+			"version": "7.3.1",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz",
+			"integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==",
 			"dev": true
 		},
 		"acorn-jsx": {
@@ -190,26 +161,6 @@
 			"integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
 			"dev": true
 		},
-		"agent-base": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
-			"integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
-			"dev": true,
-			"requires": {
-				"debug": "4"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-					"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-					"dev": true,
-					"requires": {
-						"ms": "^2.1.1"
-					}
-				}
-			}
-		},
 		"ajv": {
 			"version": "6.12.2",
 			"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
@@ -325,12 +276,6 @@
 			"integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
 			"dev": true
 		},
-		"buffer-from": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-			"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-			"dev": true
-		},
 		"callsites": {
 			"version": "3.1.0",
 			"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -344,9 +289,9 @@
 			"dev": true
 		},
 		"chalk": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz",
-			"integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==",
+			"version": "4.1.0",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+			"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
 			"dev": true,
 			"requires": {
 				"ansi-styles": "^4.1.0",
@@ -498,12 +443,6 @@
 			"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
 			"dev": true
 		},
-		"commander": {
-			"version": "2.15.1",
-			"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
-			"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
-			"dev": true
-		},
 		"concat-map": {
 			"version": "0.0.1",
 			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -582,22 +521,22 @@
 			"integrity": "sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw=="
 		},
 		"es-abstract": {
-			"version": "1.17.5",
-			"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
-			"integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+			"version": "1.17.6",
+			"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
+			"integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
 			"dev": true,
 			"requires": {
 				"es-to-primitive": "^1.2.1",
 				"function-bind": "^1.1.1",
 				"has": "^1.0.3",
 				"has-symbols": "^1.0.1",
-				"is-callable": "^1.1.5",
-				"is-regex": "^1.0.5",
+				"is-callable": "^1.2.0",
+				"is-regex": "^1.1.0",
 				"object-inspect": "^1.7.0",
 				"object-keys": "^1.1.1",
 				"object.assign": "^4.1.0",
-				"string.prototype.trimleft": "^2.1.1",
-				"string.prototype.trimright": "^2.1.1"
+				"string.prototype.trimend": "^1.0.1",
+				"string.prototype.trimstart": "^1.0.1"
 			}
 		},
 		"es-to-primitive": {
@@ -614,14 +553,12 @@
 		"es6-promise": {
 			"version": "4.2.8",
 			"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
-			"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
-			"dev": true
+			"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
 		},
 		"es6-promisify": {
 			"version": "5.0.0",
 			"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
 			"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
-			"dev": true,
 			"requires": {
 				"es6-promise": "^4.0.3"
 			}
@@ -633,9 +570,9 @@
 			"dev": true
 		},
 		"eslint": {
-			"version": "7.1.0",
-			"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.1.0.tgz",
-			"integrity": "sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA==",
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.2.0.tgz",
+			"integrity": "sha512-B3BtEyaDKC5MlfDa2Ha8/D6DsS4fju95zs0hjS3HdGazw+LNayai38A25qMppK37wWGWNYSPOR6oYzlz5MHsRQ==",
 			"dev": true,
 			"requires": {
 				"@babel/code-frame": "^7.0.0",
@@ -644,10 +581,10 @@
 				"cross-spawn": "^7.0.2",
 				"debug": "^4.0.1",
 				"doctrine": "^3.0.0",
-				"eslint-scope": "^5.0.0",
+				"eslint-scope": "^5.1.0",
 				"eslint-utils": "^2.0.0",
-				"eslint-visitor-keys": "^1.1.0",
-				"espree": "^7.0.0",
+				"eslint-visitor-keys": "^1.2.0",
+				"espree": "^7.1.0",
 				"esquery": "^1.2.0",
 				"esutils": "^2.0.2",
 				"file-entry-cache": "^5.0.1",
@@ -685,9 +622,9 @@
 			}
 		},
 		"eslint-scope": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
-			"integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+			"version": "5.1.0",
+			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz",
+			"integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==",
 			"dev": true,
 			"requires": {
 				"esrecurse": "^4.1.0",
@@ -704,20 +641,20 @@
 			}
 		},
 		"eslint-visitor-keys": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
-			"integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz",
+			"integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==",
 			"dev": true
 		},
 		"espree": {
-			"version": "7.0.0",
-			"resolved": "https://registry.npmjs.org/espree/-/espree-7.0.0.tgz",
-			"integrity": "sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==",
+			"version": "7.1.0",
+			"resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz",
+			"integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==",
 			"dev": true,
 			"requires": {
-				"acorn": "^7.1.1",
+				"acorn": "^7.2.0",
 				"acorn-jsx": "^5.2.0",
-				"eslint-visitor-keys": "^1.1.0"
+				"eslint-visitor-keys": "^1.2.0"
 			}
 		},
 		"esprima": {
@@ -776,9 +713,9 @@
 			}
 		},
 		"fast-deep-equal": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
-			"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
+			"version": "3.1.3",
+			"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 			"dev": true
 		},
 		"fast-json-stable-stringify": {
@@ -949,49 +886,6 @@
 			"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
 			"dev": true
 		},
-		"http-proxy-agent": {
-			"version": "4.0.1",
-			"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
-			"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
-			"dev": true,
-			"requires": {
-				"@tootallnate/once": "1",
-				"agent-base": "6",
-				"debug": "4"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-					"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-					"dev": true,
-					"requires": {
-						"ms": "^2.1.1"
-					}
-				}
-			}
-		},
-		"https-proxy-agent": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-			"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-			"dev": true,
-			"requires": {
-				"agent-base": "6",
-				"debug": "4"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-					"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-					"dev": true,
-					"requires": {
-						"ms": "^2.1.1"
-					}
-				}
-			}
-		},
 		"iconv-lite": {
 			"version": "0.4.24",
 			"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -1033,9 +927,9 @@
 			}
 		},
 		"inherits": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-			"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+			"version": "2.0.4",
+			"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+			"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
 		},
 		"inquirer": {
 			"version": "7.1.0",
@@ -1126,9 +1020,9 @@
 			"dev": true
 		},
 		"is-callable": {
-			"version": "1.1.5",
-			"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
-			"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
+			"integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
 			"dev": true
 		},
 		"is-date-object": {
@@ -1165,12 +1059,12 @@
 			"dev": true
 		},
 		"is-regex": {
-			"version": "1.0.5",
-			"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
-			"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
+			"integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
 			"dev": true,
 			"requires": {
-				"has": "^1.0.3"
+				"has-symbols": "^1.0.1"
 			}
 		},
 		"is-symbol": {
@@ -1291,8 +1185,7 @@
 		"minimist": {
 			"version": "1.2.5",
 			"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-			"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-			"dev": true
+			"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
 		},
 		"mkdirp": {
 			"version": "1.0.4",
@@ -1408,7 +1301,8 @@
 		"ms": {
 			"version": "2.1.2",
 			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+			"dev": true
 		},
 		"mute-stream": {
 			"version": "0.0.8",
@@ -1431,13 +1325,6 @@
 				"minimist": "^1.2.0",
 				"split2": "^2.1.0",
 				"through2": "^2.0.3"
-			},
-			"dependencies": {
-				"minimist": {
-					"version": "1.2.5",
-					"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-					"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-				}
 			}
 		},
 		"node-environment-flags": {
@@ -1448,6 +1335,14 @@
 			"requires": {
 				"object.getownpropertydescriptors": "^2.0.3",
 				"semver": "^5.7.0"
+			},
+			"dependencies": {
+				"semver": {
+					"version": "5.7.1",
+					"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+					"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+					"dev": true
+				}
 			}
 		},
 		"normalize-path": {
@@ -1577,7 +1472,7 @@
 		},
 		"path-is-absolute": {
 			"version": "1.0.1",
-			"resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+			"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
 			"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
 		},
 		"path-key": {
@@ -1681,7 +1576,6 @@
 			"version": "2.6.3",
 			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
 			"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-			"dev": true,
 			"requires": {
 				"glob": "^7.1.3"
 			}
@@ -1713,9 +1607,9 @@
 			"dev": true
 		},
 		"semver": {
-			"version": "5.7.1",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-			"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+			"version": "6.3.0",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+			"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
 		},
 		"set-blocking": {
 			"version": "2.0.0",
@@ -1763,22 +1657,6 @@
 				}
 			}
 		},
-		"source-map": {
-			"version": "0.6.1",
-			"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-			"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-			"dev": true
-		},
-		"source-map-support": {
-			"version": "0.5.19",
-			"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-			"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
-			"dev": true,
-			"requires": {
-				"buffer-from": "^1.0.0",
-				"source-map": "^0.6.0"
-			}
-		},
 		"split2": {
 			"version": "2.2.0",
 			"resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
@@ -1822,28 +1700,6 @@
 				"es-abstract": "^1.17.5"
 			}
 		},
-		"string.prototype.trimleft": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
-			"integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
-			"dev": true,
-			"requires": {
-				"define-properties": "^1.1.3",
-				"es-abstract": "^1.17.5",
-				"string.prototype.trimstart": "^1.0.0"
-			}
-		},
-		"string.prototype.trimright": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
-			"integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
-			"dev": true,
-			"requires": {
-				"define-properties": "^1.1.3",
-				"es-abstract": "^1.17.5",
-				"string.prototype.trimend": "^1.0.0"
-			}
-		},
 		"string.prototype.trimstart": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
@@ -1983,9 +1839,9 @@
 			"integrity": "sha512-0u70/SDLSCaX23UddnwAb2GvZZ2N0Rbjnmemn5pHoR40D32Xcva5KRGWV9SdJOKHCjJUlmctmCTvT0z+2yT8aw=="
 		},
 		"tslib": {
-			"version": "1.9.3",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-			"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+			"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
 			"dev": true
 		},
 		"tsutils": {
@@ -2013,9 +1869,9 @@
 			"dev": true
 		},
 		"typescript": {
-			"version": "3.9.3",
-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.3.tgz",
-			"integrity": "sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==",
+			"version": "3.9.5",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz",
+			"integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==",
 			"dev": true
 		},
 		"uri-js": {
@@ -2033,6 +1889,13 @@
 			"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
 			"requires": {
 				"inherits": "2.0.3"
+			},
+			"dependencies": {
+				"inherits": {
+					"version": "2.0.3",
+					"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+					"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+				}
 			}
 		},
 		"util-deprecate": {
@@ -2041,128 +1904,58 @@
 			"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
 		},
 		"v8-compile-cache": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
-			"integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
+			"version": "2.1.1",
+			"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+			"integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
 			"dev": true
 		},
-		"vscode": {
-			"version": "1.1.37",
-			"resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz",
-			"integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==",
-			"dev": true,
-			"requires": {
-				"glob": "^7.1.2",
-				"http-proxy-agent": "^4.0.1",
-				"https-proxy-agent": "^5.0.0",
-				"mocha": "^5.2.0",
-				"semver": "^5.4.1",
-				"source-map-support": "^0.5.0",
-				"vscode-test": "^0.4.1"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "3.1.0",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
-					"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-					"dev": true,
-					"requires": {
-						"ms": "2.0.0"
-					}
-				},
-				"he": {
-					"version": "1.1.1",
-					"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
-					"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
-					"dev": true
-				},
-				"minimist": {
-					"version": "0.0.8",
-					"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-					"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-					"dev": true
-				},
-				"mocha": {
-					"version": "5.2.0",
-					"resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
-					"integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
-					"dev": true,
-					"requires": {
-						"browser-stdout": "1.3.1",
-						"commander": "2.15.1",
-						"debug": "3.1.0",
-						"diff": "3.5.0",
-						"escape-string-regexp": "1.0.5",
-						"glob": "7.1.2",
-						"growl": "1.10.5",
-						"he": "1.1.1",
-						"minimatch": "3.0.4",
-						"mkdirp": "0.5.1",
-						"supports-color": "5.4.0"
-					},
-					"dependencies": {
-						"glob": {
-							"version": "7.1.2",
-							"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-							"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-							"dev": true,
-							"requires": {
-								"fs.realpath": "^1.0.0",
-								"inflight": "^1.0.4",
-								"inherits": "2",
-								"minimatch": "^3.0.4",
-								"once": "^1.3.0",
-								"path-is-absolute": "^1.0.0"
-							}
-						},
-						"mkdirp": {
-							"version": "0.5.1",
-							"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-							"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-							"dev": true,
-							"requires": {
-								"minimist": "0.0.8"
-							}
-						}
-					}
-				},
-				"ms": {
-					"version": "2.0.0",
-					"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-					"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-					"dev": true
-				},
-				"supports-color": {
-					"version": "5.4.0",
-					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
-					"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
-					"dev": true,
-					"requires": {
-						"has-flag": "^3.0.0"
-					}
-				}
-			}
-		},
 		"vscode-api": {
 			"version": "0.0.0",
 			"resolved": "https://registry.npmjs.org/vscode-api/-/vscode-api-0.0.0.tgz",
 			"integrity": "sha512-3fHcQPTDb/gKOIecijWor6HNk0qh3lpWlwJJzOjGnyKR+Ircz67/rXyvvZ2iIToAvGORPCRcmCoXS1grzipkwQ=="
 		},
+		"vscode-jsonrpc": {
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz",
+			"integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A=="
+		},
+		"vscode-languageclient": {
+			"version": "6.1.3",
+			"resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-6.1.3.tgz",
+			"integrity": "sha512-YciJxk08iU5LmWu7j5dUt9/1OLjokKET6rME3cI4BRpiF6HZlusm2ZwPt0MYJ0lV5y43sZsQHhyon2xBg4ZJVA==",
+			"requires": {
+				"semver": "^6.3.0",
+				"vscode-languageserver-protocol": "^3.15.3"
+			}
+		},
+		"vscode-languageserver-protocol": {
+			"version": "3.15.3",
+			"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz",
+			"integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==",
+			"requires": {
+				"vscode-jsonrpc": "^5.0.1",
+				"vscode-languageserver-types": "3.15.1"
+			}
+		},
+		"vscode-languageserver-types": {
+			"version": "3.15.1",
+			"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz",
+			"integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ=="
+		},
 		"vscode-test": {
-			"version": "0.4.3",
-			"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz",
-			"integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==",
-			"dev": true,
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.4.0.tgz",
+			"integrity": "sha512-Jt7HNGvSE0+++Tvtq5wc4hiXLIr2OjDShz/gbAfM/mahQpy4rKBnmOK33D+MR67ATWviQhl+vpmU3p/qwSH/Pg==",
 			"requires": {
 				"http-proxy-agent": "^2.1.0",
-				"https-proxy-agent": "^2.2.1"
+				"https-proxy-agent": "^2.2.4",
+				"rimraf": "^2.6.3"
 			},
 			"dependencies": {
 				"agent-base": {
 					"version": "4.3.0",
 					"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
 					"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
-					"dev": true,
 					"requires": {
 						"es6-promisify": "^5.0.0"
 					}
@@ -2171,7 +1964,6 @@
 					"version": "3.1.0",
 					"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
 					"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-					"dev": true,
 					"requires": {
 						"ms": "2.0.0"
 					}
@@ -2180,7 +1972,6 @@
 					"version": "2.1.0",
 					"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
 					"integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
-					"dev": true,
 					"requires": {
 						"agent-base": "4",
 						"debug": "3.1.0"
@@ -2190,7 +1981,6 @@
 					"version": "2.2.4",
 					"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
 					"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
-					"dev": true,
 					"requires": {
 						"agent-base": "^4.3.0",
 						"debug": "^3.1.0"
@@ -2199,8 +1989,7 @@
 				"ms": {
 					"version": "2.0.0",
 					"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-					"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-					"dev": true
+					"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
 				}
 			}
 		},
diff --git a/package.json b/package.json
index c8ec2eb0c7a2ccc85c3f1c163adf44a6ed5a3418..430947cd6114ada235a19250d480869dc5b233bd 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
 	"activationEvents": [
 		"onLanguage:classicalb"
 	],
-	"main": "./client/out/extension",
+	"main": "./out/extension",
 	"contributes": {
 		"configuration": {
 			"type": "object",
@@ -104,25 +104,24 @@
 		]
 	},
 	"scripts": {
-		"vscode:prepublish": "npm run compile",
-		"compile": "tsc -b",
-		"watch": "tsc -b -w",
-		"postinstall": "cd client && npm install && cd ../server && npm install && cd ..",
-		"test": "sh ./scripts/e2e.sh"
+		"vscode:prepublish": "tsc -p ./",
+		"compile": "tsc -watch -p ./",
+		"postinstall": "node ./node_modules/vscode/bin/install",
+		"test": "node ./node_modules/vscode/bin/test",
+		"tslint": "gulp tslint"
 	},
 	"devDependencies": {
 		"@types/mocha": "^7.0.2",
-		"@types/node": "^14.0.5",
+		"@types/node": "^14.0.13",
 		"@typescript-eslint/parser": "^2.34.0",
-		"eslint": "^7.1.0",
+		"eslint": "^7.2.0",
 		"mocha": "^7.2.0",
-		"typescript": "^3.9.3",
-		"vscode": "^1.1.37"
+		"typescript": "^3.9.5"
 	},
 	"dependencies": {
 		"@types/ndjson": "^1.5.0",
 		"@types/stream-to-array": "^2.3.0",
-		"@types/vscode": "^1.45.1",
+		"@types/vscode": "^1.46.0",
 		"error": "^10.4.0",
 		"mkdirp": "^1.0.4",
 		"ndjson": "^1.5.0",
@@ -130,6 +129,8 @@
 		"stream-to-array": "^2.3.0",
 		"ts-xor": "^1.0.8",
 		"vscode-api": "0.0.0",
+		"vscode-languageclient": "^6.1.3",
+		"vscode-test": "^1.4.0",
 		"vscode-uri": "^2.1.2",
 		"without": "^1.2.3"
 	}
diff --git a/server/package-lock.json b/server/package-lock.json
deleted file mode 100644
index cfc6a3d26860a34c126cf1ec4d273adfa629c906..0000000000000000000000000000000000000000
--- a/server/package-lock.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-	"name": "lsp-b-server",
-	"version": "0.0.1",
-	"lockfileVersion": 1,
-	"requires": true,
-	"dependencies": {
-		"vscode-jsonrpc": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz",
-			"integrity": "sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A=="
-		},
-		"vscode-languageserver": {
-			"version": "6.1.1",
-			"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz",
-			"integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==",
-			"requires": {
-				"vscode-languageserver-protocol": "^3.15.3"
-			}
-		},
-		"vscode-languageserver-protocol": {
-			"version": "3.15.3",
-			"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz",
-			"integrity": "sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw==",
-			"requires": {
-				"vscode-jsonrpc": "^5.0.1",
-				"vscode-languageserver-types": "3.15.1"
-			}
-		},
-		"vscode-languageserver-textdocument": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz",
-			"integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA=="
-		},
-		"vscode-languageserver-types": {
-			"version": "3.15.1",
-			"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz",
-			"integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ=="
-		}
-	}
-}
diff --git a/server/package.json b/server/package.json
deleted file mode 100644
index eead6970463a509f3f1f1f6b786145d328ce506a..0000000000000000000000000000000000000000
--- a/server/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-	"name": "lsp-b-server",
-	"description": "Example implementation of a language server in node.",
-	"version": "0.0.1",
-	"author": "Sebastian Stock",
-	"license": "MIT",
-	"engines": {
-		"node": "*"
-	},
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/hhu-stups/b-language-extension"
-	},
-	"dependencies": {
-		"vscode-languageserver": "^6.1.1",
-		"vscode-languageserver-textdocument": "^1.0.1"
-	},
-	"scripts": {}
-}
diff --git a/server/src/errorHandler.ts b/server/src/errorHandler.ts
deleted file mode 100644
index 1abc44dce6112fe29821fe2f8536b791b2a8eb8c..0000000000000000000000000000000000000000
--- a/server/src/errorHandler.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-import { Diagnostic, DiagnosticSeverity } from 'vscode-languageserver'
-import { TextDocument, Position } from 'vscode-languageserver-textdocument'
-import * as fs from 'fs';
-import * as readline from 'readline'
-
-
-
-/**
- * Reads the error file, casts the errors to a readable form, sorts them by origin
- * @param errorPath the path to the file where the ndjson errors are stored
- */
-export async function readErrors(errorPath: string): Promise<Map<string, Set<NDJSON>>> {
-	let result: Map<string, Set<NDJSON>> = new Map()
-
-	var stream = fs.createReadStream(errorPath)
-
-	const rl = readline.createInterface({
-		input: stream,
-		crlfDelay: Infinity
-	});
-
-
-	let i : number = 1
-	for await (const line of rl) {
-
-		let obj: NDJSON 
-
-		try{
-		    obj = JSON.parse(line)
-		}catch(e){
-			throw Error(e.message + " at line " + line)
-		}
-		i++
-		let path: string = obj.details.file
-
-
-		if (!result.has(path)) {
-			result.set(path, new Set())
-		}
-
-		result.get(path)!.add(obj)
-	}
-
-	return result
-}
-
-/**
- * Builds diagnostics for a given Set of infos
- * @param infos the set of infos to build diagnostics with
- */
-export function matchErrors(infos: Set<NDJSON>, file?: TextDocument | undefined): Array<Diagnostic> {
-	let result: Array<Diagnostic> = new Array()
-
-	for (var info of infos) {
-
-
-		let serveity: DiagnosticSeverity = DiagnosticSeverity.Error
-
-		if (info.type == "error") {
-			serveity = DiagnosticSeverity.Error
-		}
-
-		if (info.type == "warning") {
-			serveity = DiagnosticSeverity.Warning
-		}
-
-		if (info.type == "information") {
-			serveity = DiagnosticSeverity.Information
-		}
-
-		let content: JBody = info.details
-
-		// Managing case we get conent with no error massage
-		if (content.start.line == -1 && content.start.col == -1 && content.end.line == -1 && content.end.col == -1) {
-			if (file != undefined) {
-				//Due to server architecture we only have the most actual document
-				let targetLine = getFirstOccurence(file).line
-				content.start = { line: targetLine, col: 0 }
-				content.end = { line: targetLine, col: Number.MAX_VALUE }
-			} else {
-				//Fallback if an error occurs on  differnt document
-				content.start = { line: 1, col: 0 }
-				content.end = { line: 1, col: Number.MAX_VALUE }
-			}
-		}
-
-		let diagnostic = {
-			severity: serveity,
-			range: {
-				start:
-				{
-					character: content.start.col,
-					line: content.start.line - 1
-				},
-				end: {
-					character: content.end.col,
-					line: content.end.line - 1
-				}
-			},
-			message: content.message,
-			source: 'prob_prolog',
-
-		};
-
-		result.push(diagnostic)
-	}
-
-	return result
-
-}
-
-
-////////////// Representation of the NDJSON File
-export interface NDJSON {
-	type: string
-	details: JBody
-}
-
-export interface JBody {
-	message: string;
-	type: string;
-	file: string;
-	start: StartOrEnd;
-	end: StartOrEnd;
-}
-
-export interface StartOrEnd {
-	line: number;
-	col: number;
-}
-
-///////////////////
-
-
-/**
- * Returns the exakt positiion of the first occurence of an non whitespace token
- * @param textdocument the Textdocument to analzie
- */
-function getFirstOccurence(textdocument: TextDocument): Position {
-	let counter: number = textdocument.getText().search(/\S|$/)
-	let pos: Position = textdocument.positionAt(counter)
-	pos.line = pos.line + 1
-	return pos
-}
-
diff --git a/server/src/server.ts b/server/src/server.ts
deleted file mode 100644
index 0c3b7f41af34ca91c7879754275de74879104ddc..0000000000000000000000000000000000000000
--- a/server/src/server.ts
+++ /dev/null
@@ -1,282 +0,0 @@
-import {
-	createConnection,
-	TextDocuments,
-	Diagnostic,
-	ProposedFeatures,
-	InitializeParams,
-	DidChangeConfigurationNotification,
-	CompletionItem,
-	TextDocumentPositionParams,
-	TextDocumentSyncKind,
-	InitializeResult,
-
-} from 'vscode-languageserver';
-
-import {
-	TextDocument
-} from 'vscode-languageserver-textdocument';
-
-
-import { URI } from 'vscode-uri';
-import * as fs from 'fs';
-import { NDJSON, readErrors, matchErrors } from './errorHandler';
-import * as wordComplition from './wordCompletion'
-import * as path from 'path';
-
-
-
-// Create a connection for the server. The connection uses Node's IPC as a transport.
-// Also include all preview / proposed LSP features.
-let connection = createConnection(ProposedFeatures.all);
-
-// Create a simple text document manager. The text document manager
-// supports full document sync only
-let documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument);
-
-let hasConfigurationCapability: boolean = false;
-let hasWorkspaceFolderCapability: boolean = false;
-let hasDiagnosticRelatedInformationCapability: boolean = false;
-
-
-
-
-connection.onInitialize((params: InitializeParams) => {
-	let capabilities = params.capabilities;
-
-	// Does the client support the `workspace/configuration` request?
-	// If not, we will fall back using global settings
-	hasConfigurationCapability = !!(
-		capabilities.workspace && !!capabilities.workspace.configuration
-	);
-	hasWorkspaceFolderCapability = !!(
-		capabilities.workspace && !!capabilities.workspace.workspaceFolders
-	);
-	hasDiagnosticRelatedInformationCapability = !!(
-		capabilities.textDocument &&
-		capabilities.textDocument.publishDiagnostics &&
-		capabilities.textDocument.publishDiagnostics.relatedInformation
-	);
-
-
-
-
-	const result: InitializeResult = {
-		capabilities: {
-			textDocumentSync: TextDocumentSyncKind.Full,
-			// Tell the client that the server supports code completion
-			completionProvider: {
-				resolveProvider: true
-			}
-		}
-	};
-	if (hasWorkspaceFolderCapability) {
-		result.capabilities.workspace = {
-			workspaceFolders: {
-				supported: true
-			}
-		};
-	}
-	return result;
-});
-
-connection.onInitialized(() => {
-	if (hasConfigurationCapability) {
-		// Register for all configuration changes.
-		connection.client.register(DidChangeConfigurationNotification.type, undefined);
-	}
-	if (hasWorkspaceFolderCapability) {
-		connection.workspace.onDidChangeWorkspaceFolders(_event => {
-			connection.console.log('Workspace folder change event received.');
-		});
-	}
-});
-
-// The settings
-interface Settings {
-	maxNumberOfProblems: number
-	strictChecks: boolean
-	wdChecks: boolean
-	performanceHints: boolean
-	//PYTHONSETTING
-	probHome: string
-}
-
-
-const defaultSettings: Settings = {
-	maxNumberOfProblems: 1000,
-	probHome: "~/prob_prolog/probcli.sh",
-	strictChecks: false,
-	wdChecks: false,
-	//PYTHONDEFAULT
-	performanceHints: false
-};
-
-let globalSettings: Settings = defaultSettings;
-
-// Cache the settings of all open documents
-let documentSettings: Map<string, Thenable<Settings>> = new Map();
-
-connection.onDidChangeConfiguration(change => {
-	if (hasConfigurationCapability) {
-		// Reset all cached document settings
-		documentSettings.clear();
-	} else {
-		globalSettings = <Settings>(
-			(change.settings.languageServer || defaultSettings)
-		);
-	}
-
-	// Revalidate all open text documents
-	documents.all().forEach(validateTextDocument);
-});
-
-function getDocumentSettings(resource: string): Thenable<Settings> {
-	if (!hasConfigurationCapability) {
-		return Promise.resolve(globalSettings);
-	}
-	let result = documentSettings.get(resource);
-	if (!result) {
-		result = connection.workspace.getConfiguration({
-			scopeUri: resource,
-			section: 'languageServer'
-		});
-		documentSettings.set(resource, result);
-	}
-	return result;
-}
-
-// Only keep settings for open documents
-documents.onDidClose(e => {
-	documentSettings.delete(e.document.uri);
-});
-
-
-
-documents.onDidOpen(change => {
-	validateTextDocument(change.document)
-})
-
-documents.onDidSave(change => {
-	validateTextDocument(change.document)
-})
-
-
-async function validateTextDocument(textDocument: TextDocument): Promise<void> {
-	let settings = await getDocumentSettings(textDocument.uri) // Waiting for correct setting; otherwise allways default
-
-	let documentPath: path.ParsedPath = path.parse(URI.parse(textDocument.uri).path);
-
-	let errorDic : string = documentPath.dir + '/tmp'
-	let errorPath: string = errorDic + '/_error.json'
-
-
-	const { exec } = require('child_process');
-
-	if (!fs.existsSync(errorDic)){
-		fs.mkdirSync(errorDic);
-	}
-
-	fs.writeFile(errorPath, "", () => { }) //Insure a clean error file
-
-	let command: string = getCommand(URI.parse(textDocument.uri).path, errorPath, settings)
-//	console.log(command)
-	if (correctPath(settings.probHome)) {
-		exec(command, (err: string, stdout: string, stderr: string) => {
-			let errorMap: Promise<Map<string, Set<NDJSON>>> = readErrors(errorPath)
-			errorMap.then(function (result: Map<string, Set<NDJSON>>) {
-
-				let diagnostics: Array<Diagnostic> = new Array()
-
-				for (let entry of result) {
-					if (entry[0] == textDocument.uri) {
-						diagnostics = matchErrors(entry[1], textDocument)
-					} else {
-						diagnostics = matchErrors(entry[1])
-					}
-					connection.sendDiagnostics({ uri: entry[0], diagnostics });
-				}
-
-			}, function (err) {
-				connection.sendNotification("parse_error_prob", "there are things wrong with the parse results " + err)
-			});
-		
-
-		if(!stdout.includes('Running ProB Command-line Interface'))
-		{
-			connection.sendNotification("path_error_prob", "could not call/reach probcli "+ command)	
-		}
-		
-		
-		})
-	}
-}
-
-
-
-
-function getCommand(documentPath: string, errorPath: string, settings: Settings): string {
-	let wdCmd = ""
-	let strict = ""
-	let perf = ""
-//	console.log(documentPath)
-	//PYTHONVAR
-
-	if (settings.wdChecks == true) {
-		wdCmd = " -wd-check -release_java_parser "
-	}
-
-	if (settings.strictChecks == true) {
-		strict = " -p STRICT_CLASH_CHECKING TRUE -p TYPE_CHECK_DEFINITIONS TRUE -lint "
-	}
-
-	if (settings.performanceHints == true) {
-		perf = " -p PERFORMANCE_INFO TRUE "
-	}
-
-	//PYTHONIF
-
-	return settings.probHome + ' -p MAX_INITIALISATIONS 0 -version '
-		+ perf
-		+ strict
-		+ wdCmd
-		/*PYTHONCMD*/
-		+ documentPath
-		+ " -p "
-		+ "NDJSON_ERROR_LOG_FILE "
-		+ errorPath
-}
-
-
-function correctPath(path: string): boolean {
-	try {
-		fs.accessSync(path)
-	} catch (e) {
-		connection.sendNotification("path_error_prob", path + " seems to be the wrong path to ProB")
-		return false
-	}
-	return true
-}
-
-
-// This handler provides the initial list of the completion items.
-connection.onCompletion(
-
-	(textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => {
-		return wordComplition.selectCompletion(textDocumentPosition)
-	}
-);
-
-
-
-
-
-//Can be used to enrich completion with more infos
-connection.onCompletionResolve(
-	(item: CompletionItem) => { return item })
-
-
-// for open, change and close text document events
-documents.listen(connection);
-
-// Listen on the connection
-connection.listen();
diff --git a/server/src/wordCompletion.ts b/server/src/wordCompletion.ts
deleted file mode 100644
index 9a13257a978cb999aefacaaa2326d413c4335c10..0000000000000000000000000000000000000000
--- a/server/src/wordCompletion.ts
+++ /dev/null
@@ -1,1390 +0,0 @@
-
-import {
-
-	CompletionItem,
-	CompletionItemKind,
-	TextDocumentPositionParams,
-
-} from 'vscode-languageserver';
-
-export function selectCompletion(textDocumentPosition : TextDocumentPositionParams) : CompletionItem[]{
-
-
-	if(textDocumentPosition.textDocument.uri.endsWith(".mch")){
-		return completionCommon().concat(completionAbstractMachine()).concat(completionCommonAbstract())
-	}
-
-	if(textDocumentPosition.textDocument.uri.endsWith(".ref")){
-		return completionCommon().concat(completionRefinement()).concat(completionCommonAbstract())
-	}
-
-	if(textDocumentPosition.textDocument.uri.endsWith(".imp")){
-		return completionCommon().concat(completionImplementation())
-	}
-
-	if(textDocumentPosition.textDocument.uri.endsWith(".def")){
-		return completionDefinition()
-	}
-
-
-	return []
-
-}
-
-
-
-function completionDefinition() : CompletionItem []{
-	return[
-		{
-			label: 'DEFINITION',
-			kind: CompletionItemKind.Text,
-		}
-	]
-
-	
-}
-
-function completionAbstractMachine() : CompletionItem[] {
-		
-	return [
-		{
-			label: 'MACHINE',
-			kind: CompletionItemKind.Text,
-		}
-	]
-}
-
-function completionImplementation() : CompletionItem[] {
-		
-	return [
-		{
-			label: 'IMPLEMENTATION',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'IMPORTS',
-			kind: CompletionItemKind.Text,
-		}
-	]
-}
-
-
-function completionRefinement() : CompletionItem[] {
-		
-	return [
-		{
-			label: 'REFINEMENT',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'REFINES',
-			kind: CompletionItemKind.Text,
-		},
-		
-	]
-}
-
-function completionCommon() : CompletionItem[] {
-		
-	return [
-		{
-			label: 'SEES',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'INCLUDES',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'PROMOTES',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'EXTENDS',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'SETS',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'CONCRETE_CONSTANTS',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'PROPERTIES',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'CONCRETE_VARIALBES',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'INVARIANT',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'ASSERTIONS',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'OPERATIONS',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'END',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label:'skip',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'id',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'closure',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'closure1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'iterate',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'pred',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'succ',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'prj1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'prj2',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ran',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'dom',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'POW',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'POW1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'NAT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'NAT1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INTEGER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'NATURAL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'NATURAL1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'MININT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'MAXINT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FIN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FIN1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'card',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'union',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'UNION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'inter',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INTER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PI',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SIGMA',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'mod',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'seq',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'seq1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'iseq',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'iseq1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'perm',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'size',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'rev',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'first',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'last',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'front',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'tail',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'conc',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'max',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'min',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'or',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'not',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'bool',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BOOL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'TRUE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FALSE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'fnc',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'rel',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'rec',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'struct',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'left',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'right',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'tree',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'btree',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'top',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'postfix',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'mirror',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'prefix',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'infix',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'sons',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'bin',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'son',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'arity',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'subtree',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'rank',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'father',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'const',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'sizet',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_ALLOW_LOCAL_OPERATION_CALLS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_ALLOW_INCOMPLETE_SETUP_CONSTANTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_CHR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_CLPFD',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_COMPRESSION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_CSE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_DEFAULT_SETSIZE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_DOUBLE_EVALUATION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_EXPAND_FORALL_UPTO',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_INVARIANT_CHECKING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_KODKOD',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_KODKOD_ONLY_FULL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_KODKOD_MAX_NR_SOLS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_KODKOD_SYMMETRY',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_KODKOD_SAT_SOLVER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_MAXINT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_MAX_DISPLAY_SET',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_MAX_INITIALISATIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_MAX_OPERATIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_MEMO',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_MININT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_OPTIMIZE_AST',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_PGE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_PROOF_INFO',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_RANDOMISE_ENUMERATION_ORDER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_SMT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_SMT_SUPPORTED_INTERPRETER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_STATIC_ORDERING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_STATIC_SYMMETRY_DETECTION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_SYMBOLIC',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_SYMMETRY_MODE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_TIME_OUT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_TK_CUSTOM_STATE_VIEW_PADDING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_TK_CUSTOM_STATE_VIEW_STRING_PADDING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_TRACE_INFO',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_TRY_FIND_ABORT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_TYPE_CHECK_DEFINITIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SET_PREF_USE_RECORD_CONSTRUCTION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'HEURISTIC_FUNCTION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CUSTOM_GRAPH_EDGES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CUSTOM_GRAPH_NODES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG0',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG2',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG3',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG4',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG5',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG6',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG7',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG8',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_IMG9',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION_DEFAULT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION0',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION2',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION3',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION4',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION5',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION6',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION7',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION8',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_FUNCTION9',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_RIGHT_CLICK',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_CLICK',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_STR_JUSTIFY_LEFT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_STR_JUSTIFY_RIGHT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_STR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_STR1',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_STR2',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANIMATION_STR3',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CODES_TO_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'GOAL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SCOPE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DO_NOT_ENUMERATE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FORCE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'LEQ_SYM_BREAK',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REPLACE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_APPEND',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_CONC',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_LENGTH',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_SPLIT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_JOIN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_CHARS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_CODES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_PADLEFT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_REV',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_TO_INT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_TO_LOWER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_TO_UPPER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_IS_ALPHANUMERIC',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_IS_DECIMAL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_IS_INT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_IS_NUMBER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_CONTAINS_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_EQUAL_CASE_INSENSITIVE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DEC_STRING_TO_INT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_TO_ENUM',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRING_IS_NUMBER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'TYPED_STRING_TO_ENUM',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INT_TO_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INT_TO_DEC_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INT_TO_HEX_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'STRINGIFY',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'TO_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'TO_INT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FORMAT_TO_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PRINT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PRINTF',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FPRINTF',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'printf',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'vprintf',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'fprintf',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'observe',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ABS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CDIV',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FDIV',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'GCD',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'MSB',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'COS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SIN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'TAN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SQRT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BNOT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BAND',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BOR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BXOR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BLSHIFT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BRSHIFT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'RANDOM',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'NORMAL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'random_element',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'random_subset',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'random_ordering',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'random_permutation',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'random_numset',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'READ_FILE_AS_STRINGS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'READ_LINE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CHOOSE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'MU',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REGEX_MATCH',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REGEX_REPLACE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REGEX_SEARCH_STR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REGEX_SEARCH',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REGEX_SEARCH_ALL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'IS_REGEX',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SORT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SQUASH',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SUB_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'HASH',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SHA_HASH',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SHA_HASH_HEX',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'READ_CSV',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'READ_CSV_SEQUENCE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'READ_XML',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'READ_XML_FROM_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'WRITE_XML',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'WRITE_XML_TO_STRING',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'MACHINE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'MODEL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SYSTEM',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REFINEMENT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'IMPLEMENTATION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REFINES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'USES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INCLUDES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SEES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'IMPORTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'EXTENDS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PROMOTES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SETS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INITIALISATION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'OPERATIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'LOCAL_OPERATIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'EVENTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'THEOREMS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'INVARIANT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'VARIANT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DEFINITIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ASSERTIONS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ASSERT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ABSTRACT_VARIABLES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CONCRETE_VARIABLES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CONSTANTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CONSTRAINTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ABSTRACT_CONSTANTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CONCRETE_CONSTANTS',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PROPERTIES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'VALUES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SELECT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'THEN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'END',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'IF',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ANY',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'WHERE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'WHEN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ELSE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ELSIF',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PRE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BEGIN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CHOICE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'WHILE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DO',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'VAR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'EITHER',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'OR',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'LET',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'IN',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'CASE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'OF',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ref',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'RULES_MACHINE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'RULE_ANY',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'RULE_FORALL',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'RULEID',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'RULE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'COMPUTATION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DEPENDS_ON_COMPUTATION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DEPENDS_ON_RULE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'COUNTEREXAMPLE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'EXPECT',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ERROR_TYPE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'ERROR_TYPES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'BODY',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'REFERENCES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'SUCCEEDED_RULE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FAILED_RULE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'GET_RULE_COUNTEREXAMPLES',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'FUNCTION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'PRECONDITION',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'DEFINE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'TYPE',
-			kind:CompletionItemKind.Text,
-		},
-		{
-			label:'VALUE',
-			kind:CompletionItemKind.Text,
-		},
-		
-	]
-}
-
-function completionCommonAbstract() : CompletionItem[] {
-	return [
-		{
-			label: 'VARIABLES',
-			kind: CompletionItemKind.Text,
-		},
-		{
-			label: 'CONSTANTS',
-			kind: CompletionItemKind.Text,
-		}
-	]
-}
-
diff --git a/server/tsconfig.json b/server/tsconfig.json
deleted file mode 100644
index 974842f3aba80a09ba280b96469191886c19d518..0000000000000000000000000000000000000000
--- a/server/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-	"compilerOptions": {
-		"target": "es6",
-		"module": "commonjs",
-		"moduleResolution": "node",
-		"sourceMap": true,
-		"strict": true,
-		"outDir": "out",
-		"rootDir": "src"
-	},
-	"include": ["src"],
-	"exclude": ["node_modules", ".vscode-test"]
-}
diff --git a/client/src/extension.ts b/src/extension.ts
similarity index 65%
rename from client/src/extension.ts
rename to src/extension.ts
index 121c863a110ea6e3fed9e0f148f586a2b3b7a32e..6c2bb9457f26e10d0262e43fb04d3de03aebe449 100644
--- a/client/src/extension.ts
+++ b/src/extension.ts
@@ -3,11 +3,15 @@
  * Licensed under the MIT License. See License.txt in the project root for license information.
  * ------------------------------------------------------------------------------------------ */
 
-import * as path from 'path';
 import { 
 	workspace, 
 	ExtensionContext, 
-	window } from 'vscode';
+	window,
+	WorkspaceConfiguration,
+	TextEditor,
+StatusBarAlignment } from 'vscode';
+
+
 
 import {
 	LanguageClient,
@@ -20,9 +24,9 @@ let client: LanguageClient;
 
 export function activate(context: ExtensionContext) {
 	// The server is implemented in node
-	let serverModule = context.asAbsolutePath(
+/*	let serverModule = context.asAbsolutePath(
 		path.join('server', 'out', 'server.js')
-	);
+	);*/
 	// The debug options for the server
 	// --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging
 	let debugOptions = { execArgv: ['--nolazy', '--inspect=6009'] };
@@ -30,12 +34,15 @@ export function activate(context: ExtensionContext) {
 	// If the extension is launched in debug mode then the debug server options are used
 	// Otherwise the run options are used
 	let serverOptions: ServerOptions = {
-		run: { module: serverModule, transport: TransportKind.ipc },
+	/*	run: { module: serverModule, transport: TransportKind.ipc },
 		debug: {
 			module: serverModule,
 			transport: TransportKind.ipc,
 			options: debugOptions
 		}
+		*/
+		command: '/usr/bin/java',
+		args: [ "-jar", "/home/sebastian/IdeaProjects/b-language-server/build/libs/b-language-server-all.jar"]
 	};
 
 	// Options to control the language client
@@ -49,12 +56,10 @@ export function activate(context: ExtensionContext) {
 	};
 
 	// Create the language client and start the client.
-	client = new LanguageClient(
-		'languageServer',
-		'Language Server Example',
-		serverOptions,
-		clientOptions
-	);
+	client = new LanguageClient('languageServer', 'Language Server', serverOptions, clientOptions)
+
+
+
 
 	client.onReady().then(() => {
 		let bla = window.createOutputChannel("internal_error")
@@ -64,14 +69,21 @@ export function activate(context: ExtensionContext) {
 		client.onNotification("parse_error_prob", (message:string) => {
 			window.showErrorMessage('a error occured :' + message)
 		});
+		client.onNotification("lsp-test", (message:string) => {
+			window.showErrorMessage('test message recived: ' + message)
+		});
 	});
 
+	let item = window.createStatusBarItem(StatusBarAlignment.Right, Number.MIN_VALUE);
+
 	
-	//context.subscriptions.push(client.start());
+
+	item.text = 'Starting Le Language Server de Chamrousse...';
+	toggleItem(window.activeTextEditor, item);
 
 	// Start the client. This will also launch the server
-	client.start();
-	console.log("Client started")
+	let disposable = client.start();
+	context.subscriptions.push(disposable);
 }
 
 
@@ -82,3 +94,17 @@ export function deactivate(): Thenable<void> | undefined {
 	return client.stop();
 }
 
+
+function toggleItem(editor: TextEditor, item) {
+	if(editor && editor.document &&
+		(editor.document.languageId === 'ski')){
+		item.show();
+	} else{
+		item.hide();
+	}
+}
+
+function getServerConfiguration():WorkspaceConfiguration {
+	return workspace.getConfiguration('ski');
+}
+
diff --git a/tsconfig.json b/tsconfig.json
index ed91ffa45fb1c9fc4b9efb4b0c46c67aee4cbb01..0a19365b8dcef2853ba6914e5857481522681675 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -13,9 +13,5 @@
 	"exclude": [
 		"node_modules",
 		".vscode-test"
-	],
-	"references": [
-		{ "path": "./client" },
-		{ "path": "./server" }
 	]
 }
\ No newline at end of file