diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt
index 3e64965721c6c865d213e4eddc16094b39b0e1af..bb85e92bd10536b73a38fc6d3b1159b3fd17a517 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt
@@ -17,7 +17,8 @@ class TheodoliteController(
     val informerBenchmarkExecution: SharedInformer<BenchmarkExecution>,
     val informerBenchmarkType: SharedInformer<KubernetesBenchmark>
 ) {
-    var executor: TheodoliteExecutor = TheodoliteExecutor()
+    lateinit var executor: TheodoliteExecutor
+    val self = this
     val executionsQueue: Queue<BenchmarkExecution> = LinkedList<BenchmarkExecution>()
     val benchmarks: MutableMap<String, KubernetesBenchmark> = HashMap()
 
@@ -34,7 +35,7 @@ class TheodoliteController(
             override fun onUpdate(oldExecution: BenchmarkExecution, newExecution: BenchmarkExecution) {
                 if (executor.getExecution().name == newExecution.name) {
                     executor.stop()
-                    executor.setExecution(newExecution)
+                    executor = TheodoliteExecutor(config = newExecution, kubernetesBenchmark = executor.getBenchmark())
                     executor.run()
                 } else {
                     executionsQueue.remove(oldExecution)
@@ -60,7 +61,7 @@ class TheodoliteController(
                 onAdd(newBenchmark)
                 if (executor.getBenchmark().name == oldBenchmark.name) {
                     executor.stop()
-                    executor.setBenchmark(newBenchmark)
+                    executor = TheodoliteExecutor(config = executor.getExecution(), kubernetesBenchmark = newBenchmark)
                     executor.run()
                 }
             }
@@ -86,16 +87,17 @@ class TheodoliteController(
 
     @Synchronized
     private fun reconcile() {
-        while(executionsQueue.isNotEmpty() && !executor.isRunning) {
+        while(executionsQueue.isNotEmpty()) {
             val execution = executionsQueue.poll()
             val benchmark = benchmarks[execution.name]
             if (benchmark == null) {
                 logger.error { "No benchmark found for execution ${execution.name}" }
                 executionsQueue.add(execution)
             } else {
-                executor.setExecution(execution)
-                executor.setBenchmark(benchmark)
-                executor.run()
+                if ((this::executor.isInitialized && !executor.isRunning) || !this::executor.isInitialized) {
+                    executor = TheodoliteExecutor(config = execution, kubernetesBenchmark = benchmark)
+                    executor.run()
+                }
             }
         }
     }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
index 14d492c962b86fef129d83f5536d7b95f2dd3ce6..6fe54d3839c576b98156a1353a5f0c0746794701 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
@@ -24,13 +24,14 @@ class TheodoliteExecutor(
     private val executionThread = Thread {
         if(config == null || kubernetesBenchmark == null) {
             logger.error { "Execution or Benchmark not found" }
-        }else {
+        } else {
             val config = buildConfig()
             // execute benchmarks for each load
             for (load in config.loads) {
                 config.compositeStrategy.findSuitableResource(load, config.resources)
             }
         }
+        isRunning = false
     }
 
     var isRunning = false
@@ -91,21 +92,13 @@ class TheodoliteExecutor(
 
     fun run() {
         isRunning = true
+        logger.info { "Start thread" }
         executionThread.run()
+        logger.info { "Stop Thread" }
     }
 
     fun stop() {
         isRunning = false
         executionThread.interrupt()
     }
-
-    fun setExecution(config: BenchmarkExecution) {
-        this.config = config
-    }
-    fun setBenchmark(benchmark: KubernetesBenchmark) {
-        this.kubernetesBenchmark = benchmark
-    }
-
-    constructor() {}
-
-    }
+}