diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 73f69e0958611ac6e00bde95641f6699030ad235..0000000000000000000000000000000000000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
-# Editor-based HTTP Client requests
-/httpRequests/
diff --git a/build.gradle.kts b/build.gradle.kts
index 265b97a50a15dcf4e721e57e04834487aa65a23d..6f541ad966a2f41dc6cc7584cc4b5f5fcffcc756 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -7,7 +7,7 @@
 
 plugins {
     // Apply the Kotlin JVM plugin to add support for Kotlin.
-    id("org.jetbrains.kotlin.jvm") version "1.3.72"
+    kotlin("jvm") version "1.4.0"
     idea
     // Apply the application plugin to add support for building a CLI application.
     application
@@ -31,6 +31,10 @@ dependencies {
     // Use the Kotlin JDK 8 standard library.
     implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
 
+
+  //  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")
+
+
     // eclipse lsp implementation
     implementation("org.eclipse.lsp4j", "org.eclipse.lsp4j",  "0.9.0")
 
diff --git a/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernel.kt b/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernel.kt
index ce43d095a54191d71d7a87d0cf2c937084380f85..d8c2ae3db7a541321fc3ae17abefbe1ffebb7877 100644
--- a/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernel.kt
+++ b/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernel.kt
@@ -1,5 +1,6 @@
 
 import b.language.server.communication.Communicator
+import b.language.server.communication.CommunicatorInterface
 import b.language.server.dataStorage.ProBSettings
 import b.language.server.proBMangement.prob2.MyWarningListener
 import b.language.server.proBMangement.prob2.convertErrorItems
@@ -20,10 +21,13 @@ import java.io.IOException
 
 
 class ProBKernel @Inject constructor(private val injector : Injector, val classicalBFactory : ClassicalBFactory,
-                                     private val animationSelector: AnimationSelector, private val animator : ReusableAnimator) {
+                                     private val animationSelector: AnimationSelector,
+                                     private val animator : ReusableAnimator
+                              //       private val communicator: Communicator
+) {
 
-    private val communicator : Communicator = Communicator
 
+    val communicator = Communicator
     fun check(path : String, settings : ProBSettings) : List<Diagnostic>{
         communicator.sendDebugMessage("Unload old machine", MessageType.Info)
         unloadMachine()
diff --git a/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelManager.kt b/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelManager.kt
index 5691d3cd2a9285b30822fb8212bf212ec74ed804..4afb8b58642d066238fa96ccecdfe597e0360509 100644
--- a/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelManager.kt
+++ b/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelManager.kt
@@ -7,10 +7,12 @@ import b.language.server.dataStorage.ProBSettings
 import b.language.server.dataStorage.Settings
 import b.language.server.proBMangement.ProBInterface
 import b.language.server.proBMangement.WrongPathException
+import com.google.inject.CreationException
 import com.google.inject.Guice
 import com.google.inject.Stage
 import org.eclipse.lsp4j.Diagnostic
 import org.eclipse.lsp4j.MessageType
+import kotlin.concurrent.thread
 
 /**
  * Setup a connection to ProB2 Kernel
@@ -46,14 +48,22 @@ class ProBKernelManager(private val communicator : CommunicatorInterface) : ProB
      * @return an instance of prob kernel
      */
     fun setup(probHome : String) : ProBKernel{
-        if(probHome != "DEFAULT"){
+        if(false){
             System.setProperty("prob.home", probHome)
             communicator.sendDebugMessage("$probHome selected", MessageType.Info)
         }else{
             communicator.sendDebugMessage("default prob selected", MessageType.Info)
         }
 
-        val injector = Guice.createInjector(Stage.PRODUCTION, ProBKernelModule())
+        communicator.sendDebugMessage("creating injector...", MessageType.Info)
+        System.err.println((communicator as Communicator).client.toString())
+        val injector =
+            Guice.createInjector(Stage.PRODUCTION, ProBKernelModule())
+
+        communicator.sendDebugMessage("..done", MessageType.Info)
+        System.err.println((communicator as Communicator).client.toString())
+
+
         val kernel : ProBKernel
         try{
             kernel = injector.getInstance(ProBKernel::class.java)
@@ -61,8 +71,14 @@ class ProBKernelManager(private val communicator : CommunicatorInterface) : ProB
             communicator.sendDebugMessage("wrong path to prob", MessageType.Error)
             throw WrongPathException("wrong path to prob $probHome")
         }
+        communicator.sendDebugMessage("returning kernel", MessageType.Info)
+
         return kernel
     }
 
 
+    class Test() : Thread(){
+
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelModule.kt b/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelModule.kt
index 66af5f22b45b9a0e017b052fbf1d880711ef2f95..023d4f0009626b1829b80118fda74a946904e71c 100644
--- a/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelModule.kt
+++ b/src/main/kotlin/b/language/server/proBMangement/prob2/ProBKernelModule.kt
@@ -1,10 +1,12 @@
 package b.language.server.proBMangement.prob2
 
+import b.language.server.communication.CommunicatorInterface
 import com.google.inject.AbstractModule
 import de.prob.MainModule
 
-class ProBKernelModule : AbstractModule() {
+class ProBKernelModule() : AbstractModule() {
     override fun configure() {
         install(MainModule())
+   //     bind(CommunicatorInterface::class.java).toInstance(communicatorInterface)
     }
 }
diff --git a/src/test/kotlin/b/language/server/communication/DummyCommunication.kt b/src/test/kotlin/b/language/server/communication/DummyCommunication.kt
index e6de95d3d9ca9d4b7506896f366357c1b701f311..0eb59e2ec6816df2a898b111c548094f37a912ba 100644
--- a/src/test/kotlin/b/language/server/communication/DummyCommunication.kt
+++ b/src/test/kotlin/b/language/server/communication/DummyCommunication.kt
@@ -9,7 +9,7 @@ import org.eclipse.lsp4j.PublishDiagnosticsParams
  * The Communicator is a side effect class, we don“t want side effects in out tests; especially such that are for
  * debug purpose only
  */
-class DummyCommunication : CommunicatorInterface {
+class DummyCommunication() : CommunicatorInterface {
 
     val outputCollector = mutableListOf<String>()
 
@@ -44,6 +44,14 @@ class DummyCommunication : CommunicatorInterface {
      * @param mode the new state of the debug mode
      */
     override fun setDebugMode(mode: Boolean) {
-
+        TODO("Not yet implemented")
     }
+
+    /**
+     * To enable/disable debug mode
+     *
+     * @param mode the new state of the debug mode
+     */
+
+
 }
\ No newline at end of file
diff --git a/src/test/kotlin/b/language/server/prob2/proBMangement/ProBKernelManagerTest.kt b/src/test/kotlin/b/language/server/prob2/proBMangement/ProBKernelManagerTest.kt
index ef33ff0ed7202aa1652726d16cf942387f0c4806..966ce62b7d4a0cf747b6e499da0ca41da54ce14b 100644
--- a/src/test/kotlin/b/language/server/prob2/proBMangement/ProBKernelManagerTest.kt
+++ b/src/test/kotlin/b/language/server/prob2/proBMangement/ProBKernelManagerTest.kt
@@ -1,16 +1,17 @@
 package b.language.server.prob2.proBMangement
 
 import b.language.server.communication.DummyCommunication
+import b.language.server.dataStorage.Settings
 import b.language.server.proBMangement.WrongPathException
 import b.language.server.proBMangement.prob2.ProBKernelManager
+import org.eclipse.lsp4j.Diagnostic
 import org.junit.jupiter.api.Assertions
 import org.junit.jupiter.api.Test
-import org.junit.jupiter.api.assertThrows
-import org.junit.jupiter.api.function.Executable
+import java.io.File
 import kotlin.test.assertEquals
 
 class ProBKernelManagerTest {
-
+/*
     @Test
     fun testCorrectBaseSetup(){
         val dummyCommunication = DummyCommunication()
@@ -18,7 +19,7 @@ class ProBKernelManagerTest {
 
         proBKernelManager.setup("DEFAULT")
 
-        assertEquals(listOf("default prob selected"), dummyCommunication.outputCollector)
+        assertEquals(listOf("default prob selected", "generating kernel...", "..done"), dummyCommunication.outputCollector)
     }
 
 
@@ -32,6 +33,13 @@ class ProBKernelManagerTest {
 
     @Test
     fun testCheckDocument(){
+        val dummyCommunication = DummyCommunication()
+        val proBKernelManager = ProBKernelManager(dummyCommunication)
 
+        val diagnostics = proBKernelManager.checkDocument("src/test/resources/Lift.mch", Settings(100, true, true, true, File("DEFAULT")))
+        println(dummyCommunication.outputCollector)
+        println(diagnostics)
     }
+    */
+
 }
\ No newline at end of file
diff --git a/src/test/resources/Lift.mch b/src/test/resources/Lift.mch
new file mode 100644
index 0000000000000000000000000000000000000000..2aa64ac79146448a2b7f351d4dbf080844e7484d
--- /dev/null
+++ b/src/test/resources/Lift.mch
@@ -0,0 +1,19 @@
+MACHINE Lift
+
+VARIABLES  floor
+
+INVARIANT  floor : 0..100 /* NAT */
+
+INITIALISATION floor :=
+
+
+
+
+OPER1ATIONS
+
+	inc = PRE floor<100 THEN floor := floor + 1 END ;
+	dec = PRE floor>0 THEN floor := floor - 1 END;
+	open_door = skip;
+	close_door = skip
+
+END