diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
index fe5b723a5d21c020ea015368e4787a66c1f0d5a1..0e94dc8c5c743c341541b5925924ed3910d3870b 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
@@ -5,7 +5,10 @@ import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Namespaced
 import io.fabric8.kubernetes.client.CustomResource
 import theodolite.util.ConfigurationOverride
+import java.lang.System.exit
+import kotlin.concurrent.thread
 import kotlin.properties.Delegates
+import kotlin.system.exitProcess
 
 @JsonDeserialize
 class BenchmarkExecution : CustomResource(), Namespaced {
@@ -17,6 +20,10 @@ class BenchmarkExecution : CustomResource(), Namespaced {
     lateinit var execution: Execution
     lateinit var configOverrides: List<ConfigurationOverride?>
 
+    fun stop() {
+        throw InterruptedException()
+    }
+
     @JsonDeserialize
     class Execution : KubernetesResource {
         lateinit var strategy: String
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt
index f18fc1cbbe989b41b8786630f6ee2dd8ffe174d3..6504abfa84da0dbbfa2ae358d91b4e73a0c71a62 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt
@@ -1,5 +1,6 @@
 package theodolite.execution
 
+import io.smallrye.mutiny.helpers.Subscriptions.cancel
 import mu.KotlinLogging
 import theodolite.benchmark.Benchmark
 import theodolite.benchmark.BenchmarkExecution
@@ -36,6 +37,10 @@ abstract class BenchmarkExecutor(
      */
     abstract fun runExperiment(load: LoadDimension, res: Resource): Boolean
 
+    fun stop() {
+        throw InterruptedException()
+    }
+
     /**
      * Wait while the benchmark is running and log the number of minutes executed every 1 minute.
      *
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt
index a4acec6c5d37b57c4f87adf82c2f032d3cea6c9b..04ed7e03d8d457c136077efbd3578283409f757e 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteController.kt
@@ -21,7 +21,6 @@ class TheodoliteController(
     val executionContext: CustomResourceDefinitionContext
 ) {
     lateinit var executor: TheodoliteExecutor
-    val self = this
     val executionsQueue: Queue<BenchmarkExecution> = LinkedList<BenchmarkExecution>()
     val benchmarks: MutableMap<String, KubernetesBenchmark> = HashMap()
 
@@ -94,6 +93,8 @@ class TheodoliteController(
         while (true) {
             try {
                 reconcile()
+                logger.info { "Theodolite is waiting for new jobs" }
+                sleep(1000)
             } catch (e: InterruptedException) {
                 logger.error { "Execution interrupted with error: $e" }
             }
@@ -113,10 +114,16 @@ class TheodoliteController(
                 executor = TheodoliteExecutor(config = execution, kubernetesBenchmark = benchmark)
                 executor.run()
                 // wait until executions is deleted
-                client.customResource(executionContext).delete(client.namespace, execution.metadata.name)
-                while (executionsQueue.contains(execution)) {
-                    sleep(1000)
+                try {
+                    client.customResource(executionContext).delete(client.namespace, execution.metadata.name)
+                    while (executionsQueue.contains(execution)) {
+                        logger.info { "sleep" }
+                        sleep(1000)
+                    }
+                } catch (e: Exception) {
+                    logger.error { "Error while delete current execution" }
                 }
+                logger.info { "Execution is finally stopped for execution ${execution.name}" }
             }
         }
     }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
index 1ad39649376bde1dde8f0dd8d65806c970179e2a..d3d2357ae750447a4ac26b3deefcab91de447781 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
@@ -32,6 +32,7 @@ class TheodoliteExecutor(
     }
 
     var isRunning = false
+    lateinit var executor: BenchmarkExecutor
 
     private fun buildConfig(): Config {
         val results = Results()
@@ -51,7 +52,7 @@ class TheodoliteExecutor(
                 this.kubernetesBenchmark.loadTypes
             )
 
-        val executor =
+        executor =
             BenchmarkExecutorImpl(
                 kubernetesBenchmark,
                 results,
@@ -90,13 +91,26 @@ class TheodoliteExecutor(
     fun run() {
         isRunning = true
         logger.info { "Start thread" }
-        executionThread.start()
-        logger.info { "Stop Thread" }
+        // executionThread.start()
+        if (config == null || kubernetesBenchmark == null) {
+            logger.error { "Execution or Benchmark not found" }
+        } else {
+            val config = buildConfig()
+            // execute benchmarks for each load
+            for (load in config.loads) {
+                config.compositeStrategy.findSuitableResource(load, config.resources)
+            }
+            logger.info { "Stop Thread" }
+        }
     }
 
     fun stop() {
         // TODO call shutdown hook
         isRunning = false
-        executionThread.interrupt()
+        try {
+            executor.stop()
+        } catch (e: InterruptedException) {
+            logger.warn { "Execution stopped" }
+        }
     }
 }