diff --git a/theodolite/build.gradle b/theodolite/build.gradle
index c01f261c7bd3c9e9b62bc7efeb93c492c499ab07..37f5b3f3969f14005e4ea65f39f1bc328bdc83d5 100644
--- a/theodolite/build.gradle
+++ b/theodolite/build.gradle
@@ -69,7 +69,7 @@ compileTestKotlin {
 }
 
 test {
-    // systemProperty "java.util.logging.manager", "org.jboss.logmanager.LogManager"
+    systemProperty "java.util.logging.manager", "org.jboss.logmanager.LogManager"
 
     // Required because of https://github.com/quarkusio/quarkus/issues/18973
     minHeapSize = "512m"
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Main.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Main.kt
deleted file mode 100644
index cbd7c3106b39c4571d559d4071cd4ac16e180bc8..0000000000000000000000000000000000000000
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Main.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package rocks.theodolite.kubernetes
-
-import io.fabric8.kubernetes.client.DefaultKubernetesClient
-import io.fabric8.kubernetes.client.NamespacedKubernetesClient
-import io.quarkus.runtime.annotations.QuarkusMain
-import mu.KotlinLogging
-import rocks.theodolite.kubernetes.operator.TheodoliteOperator
-import rocks.theodolite.kubernetes.standalone.TheodoliteStandalone
-import kotlin.system.exitProcess
-
-private val logger = KotlinLogging.logger {}
-
-@QuarkusMain
-object Main {
-
-    @JvmStatic
-    fun main(args: Array<String>) {
-
-        val mode = Configuration.EXECUTION_MODE
-        logger.info { "Start Theodolite with mode $mode" }
-
-        val namespace = Configuration.NAMESPACE
-        val client: NamespacedKubernetesClient = DefaultKubernetesClient().inNamespace(namespace)
-
-        when (mode.lowercase()) {
-            ExecutionModes.STANDALONE.value -> TheodoliteStandalone(client).start()
-            ExecutionModes.OPERATOR.value -> TheodoliteOperator(client).start()
-            else -> {
-                logger.error { "MODE $mode not found" }
-                exitProcess(1)
-            }
-        }
-    }
-}
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Theodolite.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Theodolite.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0da3123137a74730fb6beb2cc458958ab19e783a
--- /dev/null
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/Theodolite.kt
@@ -0,0 +1,65 @@
+package rocks.theodolite.kubernetes
+
+import io.fabric8.kubernetes.client.DefaultKubernetesClient
+import io.fabric8.kubernetes.client.NamespacedKubernetesClient
+import io.quarkus.runtime.LaunchMode
+import io.quarkus.runtime.Quarkus
+import io.quarkus.runtime.ShutdownEvent
+import io.quarkus.runtime.StartupEvent
+import io.quarkus.runtime.annotations.QuarkusMain
+import jakarta.enterprise.context.ApplicationScoped
+import jakarta.enterprise.event.Observes
+import jakarta.inject.Inject
+import mu.KotlinLogging
+import rocks.theodolite.kubernetes.operator.TheodoliteOperator
+import rocks.theodolite.kubernetes.standalone.TheodoliteStandalone
+
+private val LOGGER = KotlinLogging.logger {}
+
+@QuarkusMain
+object Theodolite {
+
+    @JvmStatic
+    fun main(args: Array<String>) {
+        Quarkus.run()
+    }
+
+    @ApplicationScoped
+    class AppEventListener {
+
+        @Inject
+        private lateinit var launchMode: LaunchMode
+
+        fun onStart(@Observes ev: StartupEvent) {
+            if (launchMode == LaunchMode.TEST) {
+                LOGGER.warn("Theodolite does not automatically start in TEST mode.")
+            } else {
+                val mode = Configuration.EXECUTION_MODE
+                LOGGER.info { "Start Theodolite in $mode mode." }
+
+                val namespace = Configuration.NAMESPACE
+                //val client = KubernetesClientBuilder().withConfig(ConfigBuilder().withNamespace(namespace).build()))
+                val client: NamespacedKubernetesClient = DefaultKubernetesClient().inNamespace(namespace)
+
+                when (mode.lowercase()) {
+                    ExecutionModes.STANDALONE.value -> TheodoliteStandalone(client).start()
+                    ExecutionModes.OPERATOR.value -> TheodoliteOperator(client).start()
+                    else -> {
+                        LOGGER.error { "MODE $mode not found" }
+                        Quarkus.asyncExit()
+                    }
+                }
+            }
+        }
+
+        fun onStop(@Observes ev: ShutdownEvent) {
+            if (launchMode == LaunchMode.TEST) {
+                LOGGER.warn("Theodolite did not automatically start in TEST mode.")
+            } else {
+                LOGGER.info("Quit Theodolite.")
+            }
+        }
+
+    }
+
+}