diff --git a/theodolite-quarkus/.dockerignore b/theodolite-quarkus/.dockerignore
index 4361d2fb38ddc889a2c68222aa5b600fbcfbf6f9..d95caadc42523460fa9d78cf17629c8ee231acc9 100644
--- a/theodolite-quarkus/.dockerignore
+++ b/theodolite-quarkus/.dockerignore
@@ -2,4 +2,5 @@
 !build/*-runner
 !build/*-runner.jar
 !build/lib/*
-!build/quarkus-app/*
\ No newline at end of file
+!build/quarkus-app/*
+!config/*
\ No newline at end of file
diff --git a/theodolite-quarkus/build.gradle b/theodolite-quarkus/build.gradle
index 1ceb0937776299e6fc9a3c0ec470c9e320e6790f..7f32c0c5bab25b1d62b6cd9aa6f5db5eb6d78e47 100644
--- a/theodolite-quarkus/build.gradle
+++ b/theodolite-quarkus/build.gradle
@@ -25,6 +25,7 @@ dependencies {
     implementation 'org.slf4j:slf4j-simple:1.7.29'
     implementation 'io.github.microutils:kotlin-logging:1.12.0'
     implementation 'io.fabric8:kubernetes-client:5.0.0-alpha-2'
+    implementation 'io.quarkus:quarkus-kubernetes-client'
     implementation 'org.apache.kafka:kafka-clients:2.7.0'
     implementation 'khttp:khttp:1.0.0'
 }
diff --git a/theodolite-quarkus/build_jvm.sh b/theodolite-quarkus/build_jvm.sh
index f3970d08e62ac3661dac038148b011b774276ceb..95e2e44427a894a0513e6358b439d23e3eea834b 100755
--- a/theodolite-quarkus/build_jvm.sh
+++ b/theodolite-quarkus/build_jvm.sh
@@ -1,7 +1,6 @@
 
-./gradlew build
+./gradlew build -x test
 
 docker build -f src/main/docker/Dockerfile.jvm -t quarkus/theodolite-quarkus-jvm .
 
-
 docker run -i --rm -p 8080:8080 quarkus/theodolite-quarkus-jvm
diff --git a/theodolite-quarkus/build_native.sh b/theodolite-quarkus/build_native.sh
index 8b663f6edd909554acf4e53c5ff3304f7c8f150b..1effa3268ce5b863a680c6f4bdc6b4b632b2d4c6 100755
--- a/theodolite-quarkus/build_native.sh
+++ b/theodolite-quarkus/build_native.sh
@@ -1,6 +1,5 @@
 
-./gradlew build -Dquarkus.package.type=native
-
+./gradlew build -Dquarkus.package.type=native -x test
 
 docker build -f src/main/docker/Dockerfile.native -t quarkus/theodolite-quarkus .
 
diff --git a/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml b/theodolite-quarkus/config/BenchmarkExecution.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml
rename to theodolite-quarkus/config/BenchmarkExecution.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/BenchmarkType.yaml b/theodolite-quarkus/config/BenchmarkType.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/BenchmarkType.yaml
rename to theodolite-quarkus/config/BenchmarkType.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/aggregation-service.yaml b/theodolite-quarkus/config/aggregation-service.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/aggregation-service.yaml
rename to theodolite-quarkus/config/aggregation-service.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/jmx-configmap.yaml b/theodolite-quarkus/config/jmx-configmap.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/jmx-configmap.yaml
rename to theodolite-quarkus/config/jmx-configmap.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/uc1-service-monitor.yaml b/theodolite-quarkus/config/service-monitor.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/uc1-service-monitor.yaml
rename to theodolite-quarkus/config/service-monitor.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/uc1-kstreams-deployment.yaml b/theodolite-quarkus/config/uc1-kstreams-deployment.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/uc1-kstreams-deployment.yaml
rename to theodolite-quarkus/config/uc1-kstreams-deployment.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/uc1-load-generator-deployment.yaml b/theodolite-quarkus/config/uc1-load-generator-deployment.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/uc1-load-generator-deployment.yaml
rename to theodolite-quarkus/config/uc1-load-generator-deployment.yaml
diff --git a/theodolite-quarkus/src/main/resources/yaml/uc1-load-generator-service.yaml b/theodolite-quarkus/config/uc1-load-generator-service.yaml
similarity index 100%
rename from theodolite-quarkus/src/main/resources/yaml/uc1-load-generator-service.yaml
rename to theodolite-quarkus/config/uc1-load-generator-service.yaml
diff --git a/theodolite-quarkus/config/uc1-service-monitor.yaml b/theodolite-quarkus/config/uc1-service-monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e7e758cacb5086305efa26292ddef2afc958096
--- /dev/null
+++ b/theodolite-quarkus/config/uc1-service-monitor.yaml
@@ -0,0 +1,14 @@
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  labels:
+    app: titan-ccp-aggregation
+    appScope: titan-ccp
+  name: titan-ccp-aggregation
+spec:
+  selector:
+    matchLabels:
+        app: titan-ccp-aggregation
+  endpoints:
+    - port: metrics
+      interval: 10s
diff --git a/theodolite-quarkus/src/main/docker/Dockerfile.jvm b/theodolite-quarkus/src/main/docker/Dockerfile.jvm
index d6a4e05cdef5c8c1e25337b3d5a312e1e98a641a..6733d5d441e8292e02547cf59131c706575e9d86 100644
--- a/theodolite-quarkus/src/main/docker/Dockerfile.jvm
+++ b/theodolite-quarkus/src/main/docker/Dockerfile.jvm
@@ -44,6 +44,7 @@ RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \
 ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
 COPY build/lib/* /deployments/lib/
 COPY build/*-runner.jar /deployments/app.jar
+COPY config/ /deployments/config/
 
 EXPOSE 8080
 USER 1001
diff --git a/theodolite-quarkus/src/main/docker/Dockerfile.native b/theodolite-quarkus/src/main/docker/Dockerfile.native
index 4a6d4147c2c098a0c5f181cc96c9916eede64c97..37a5a4bd8472a358194dbb14a5fce61df94804d3 100644
--- a/theodolite-quarkus/src/main/docker/Dockerfile.native
+++ b/theodolite-quarkus/src/main/docker/Dockerfile.native
@@ -20,6 +20,7 @@ RUN chown 1001 /work \
     && chmod "g+rwX" /work \
     && chown 1001:root /work
 COPY --chown=1001:root build/*-runner /work/application
+COPY config/ /work/config/
 
 EXPOSE 8080
 USER 1001
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/Benchmark.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/Benchmark.kt
index fb343a0fa594c3f0d46125ca0debc7d0a6c223d8..df92ed111206bb58f50a589a612d6f598575244b 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/Benchmark.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/Benchmark.kt
@@ -1,9 +1,11 @@
 package theodolite.benchmark
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.util.ConfigurationOverride
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 
+@RegisterForReflection
 interface Benchmark {
     fun buildDeployment(
         load: LoadDimension,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
index 72895a42c7e52b6e15cdff01b2805af130e441aa..a2d649ab38f4c0fda31d7c99d687cc253efe1ea8 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
@@ -4,13 +4,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize
 import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Namespaced
 import io.fabric8.kubernetes.client.CustomResource
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.util.ConfigurationOverride
-import java.lang.System.exit
-import kotlin.concurrent.thread
 import kotlin.properties.Delegates
-import kotlin.system.exitProcess
 
 @JsonDeserialize
+@RegisterForReflection
 class BenchmarkExecution : CustomResource(), Namespaced {
     lateinit var name: String
     lateinit var benchmark: String
@@ -21,6 +20,7 @@ class BenchmarkExecution : CustomResource(), Namespaced {
     lateinit var configOverrides: List<ConfigurationOverride?>
 
     @JsonDeserialize
+    @RegisterForReflection
     class Execution : KubernetesResource {
         lateinit var strategy: String
         var duration by Delegates.notNull<Long>()
@@ -29,7 +29,8 @@ class BenchmarkExecution : CustomResource(), Namespaced {
     }
 
     @JsonDeserialize
-    class Slo : KubernetesResource{
+    @RegisterForReflection
+    class Slo : KubernetesResource {
         lateinit var sloType: String
         var threshold by Delegates.notNull<Int>()
         lateinit var prometheusUrl: String
@@ -38,14 +39,17 @@ class BenchmarkExecution : CustomResource(), Namespaced {
         var warmup by Delegates.notNull<Int>()
     }
 
+
     @JsonDeserialize
-    class LoadDefinition : KubernetesResource{
+    @RegisterForReflection
+    class LoadDefinition : KubernetesResource {
         lateinit var loadType: String
         lateinit var loadValues: List<Int>
     }
 
     @JsonDeserialize
-    class ResourceDefinition : KubernetesResource{
+    @RegisterForReflection
+    class ResourceDefinition : KubernetesResource {
         lateinit var resourceType: String
         lateinit var resourceValues: List<Int>
     }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt
index 7da65427f7124a451d208f208863dd3c4f86c6d5..d0640cd7b3e5d39823f9a2254a93aef66435c18b 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt
@@ -4,17 +4,17 @@ import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.api.model.Namespaced
 import io.fabric8.kubernetes.client.CustomResource
 import io.fabric8.kubernetes.client.DefaultKubernetesClient
+import io.quarkus.runtime.annotations.RegisterForReflection
 import mu.KotlinLogging
 import theodolite.k8s.K8sResourceLoader
 import theodolite.patcher.PatcherFactory
 import theodolite.util.*
 
 private val logger = KotlinLogging.logger {}
-
 private var DEFAULT_NAMESPACE = "default"
 
-
-class KubernetesBenchmark : Benchmark , CustomResource(), Namespaced {
+@RegisterForReflection
+class KubernetesBenchmark : Benchmark, CustomResource(), Namespaced {
     lateinit var name: String
     lateinit var appResource: List<String>
     lateinit var loadGenResource: List<String>
@@ -22,9 +22,9 @@ class KubernetesBenchmark : Benchmark , CustomResource(), Namespaced {
     lateinit var loadTypes: List<TypeName>
     lateinit var kafkaConfig: KafkaConfig
     lateinit var namespace: String
+    lateinit var path: String
 
     private fun loadKubernetesResources(resources: List<String>): List<Pair<String, KubernetesResource>> {
-        val basePath = "./../../../resources/main/yaml/"
         val parser = YamlParser()
 
         namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
@@ -33,7 +33,7 @@ class KubernetesBenchmark : Benchmark , CustomResource(), Namespaced {
         val loader = K8sResourceLoader(DefaultKubernetesClient().inNamespace(namespace))
         return resources
             .map { resource ->
-                val resourcePath = "$basePath/$resource"
+                val resourcePath = "$path/$resource"
                 val kind = parser.parse(resourcePath, HashMap<String, String>()::class.java)?.get("kind")!!
                 val k8sResource = loader.loadK8sResource(kind, resourcePath)
                 Pair(resource, k8sResource)
@@ -49,13 +49,20 @@ class KubernetesBenchmark : Benchmark , CustomResource(), Namespaced {
         val patcherFactory = PatcherFactory()
 
         // patch the load dimension the resources
-        load.getType().forEach { patcherDefinition -> patcherFactory.createPatcher(patcherDefinition, resources).patch(load.get().toString()) }
-        res.getType().forEach{ patcherDefinition -> patcherFactory.createPatcher(patcherDefinition, resources).patch(res.get().toString()) }
+        load.getType().forEach { patcherDefinition ->
+            patcherFactory.createPatcher(patcherDefinition, resources).patch(load.get().toString())
+        }
+        res.getType().forEach { patcherDefinition ->
+            patcherFactory.createPatcher(patcherDefinition, resources).patch(res.get().toString())
+        }
 
         // Patch the given overrides
-        configurationOverrides.forEach { override -> override?.let { patcherFactory.createPatcher(it.patcher, resources).patch(override.value) } }
-
-
+        configurationOverrides.forEach { override ->
+            override?.let {
+                patcherFactory.createPatcher(it.patcher, resources).patch(override.value)
+            }
+        }
+        
         return KubernetesBenchmarkDeployment(
             namespace = namespace,
             resources = resources.map { r -> r.second },
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
index 35d7cc79ba8aafa17584d392d94443e59a7fa590..238cb17071c5b48fc883808b4334b79dada7ee32 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
@@ -2,10 +2,12 @@ package theodolite.benchmark
 
 import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.client.DefaultKubernetesClient
+import io.quarkus.runtime.annotations.RegisterForReflection
 import org.apache.kafka.clients.admin.NewTopic
 import theodolite.k8s.K8sManager
 import theodolite.k8s.TopicManager
 
+@RegisterForReflection
 class KubernetesBenchmarkDeployment(
     val namespace: String,
     val resources: List<KubernetesResource>,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
index fa435df36d01d37131b3d233bd40a921d34a6f6d..26836c46b27c547479a2984d6a9109b87f2481ec 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
@@ -1,6 +1,6 @@
 package theodolite.execution
 
-import mu.KotlinLogging
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.benchmark.Benchmark
 import theodolite.benchmark.BenchmarkExecution
 import theodolite.evaluation.AnalysisExecutor
@@ -10,8 +10,7 @@ import theodolite.util.Resource
 import theodolite.util.Results
 import java.time.Duration
 
-private val logger = KotlinLogging.logger {}
-
+@RegisterForReflection
 class BenchmarkExecutorImpl(
     benchmark: Benchmark,
     results: Results,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt
index 6293868a5c5a2a29b8e13bdad7fbbe19c10402d4..67cad64e4cb82d2f68fbcb2cfab715f4a564d245 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt
@@ -16,12 +16,22 @@ object TheodoliteYamlExecutor {
     fun main(args: Array<String>) {
         logger.info { "Theodolite started" }
 
+        val executionPath = System.getenv("THEODOLITE_EXECUTION") ?: "./config/BenchmarkExecution.yaml"
+        val benchmarkPath = System.getenv("THEODOLITE_BENCHMARK") ?: "./config/BenchmarkType.yaml"
+        val appResource = System.getenv("THEODOLITE_APP_RESOURCES") ?: "./config"
+
+        logger.info { "Using $executionPath for BenchmarkExecution" }
+        logger.info { "Using $benchmarkPath for BenchmarkType" }
+        logger.info { "Using $appResource for Resources" }
+
+
         // load the BenchmarkExecution and the BenchmarkType
         val parser = YamlParser()
         val benchmarkExecution =
-            parser.parse("./../../../resources/main/yaml/BenchmarkExecution.yaml", BenchmarkExecution::class.java)!!
+            parser.parse(path = executionPath, E = BenchmarkExecution::class.java)!!
         val benchmark =
-            parser.parse("./../../../resources/main/yaml/BenchmarkType.yaml", KubernetesBenchmark::class.java)!!
+            parser.parse(path = benchmarkPath, E = KubernetesBenchmark::class.java)!!
+        benchmark.path = appResource
 
         val shutdown = Shutdown(benchmarkExecution, benchmark)
         Runtime.getRuntime().addShutdownHook(thread { shutdown.run()})
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/patcher/Patcher.kt b/theodolite-quarkus/src/main/kotlin/theodolite/patcher/Patcher.kt
index 82c562572de4acd932997d71e53138ecf2865462..55cde39f5a6d7bb4cacd1e539593fc0538d108af 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/patcher/Patcher.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/patcher/Patcher.kt
@@ -1,5 +1,8 @@
 package theodolite.patcher
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 interface Patcher {
     fun <T> patch(value: T)
 }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt
index b2e09a0cc2ce03bb735a00994c7f7f109527a56b..75c7e86b57e3b3afb0121eab628f2872458efe74 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt
@@ -1,5 +1,6 @@
 package theodolite.strategies.restriction
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 import theodolite.util.Results
@@ -8,6 +9,7 @@ import theodolite.util.Results
  * A "Restriction Strategy" restricts a list of resources based on the current
  * results of all previously performed benchmarks.
  */
+@RegisterForReflection
 abstract class RestrictionStrategy(val results: Results) {
     /**
      * Next Restrict the given resource list for the given load based on the result object.
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt
index 8ffca54fa8b6e1359f60dbfe9394b348ef5e71c4..01d841c91b2de6fb70208ef4f8da12ab75361818 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt
@@ -1,10 +1,12 @@
 package theodolite.strategies.searchstrategy
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.execution.BenchmarkExecutor
 import theodolite.strategies.restriction.RestrictionStrategy
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 
+@RegisterForReflection
 class CompositeStrategy(
     benchmarkExecutor: BenchmarkExecutor,
     private val searchStrategy: SearchStrategy,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
index d57246ca4337290ab3502192e3b3b0dc275c6596..888a58585b08cd02b116ee1d2e275138f5f690e8 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
@@ -1,9 +1,11 @@
 package theodolite.strategies.searchstrategy
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.execution.BenchmarkExecutor
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 
+@RegisterForReflection
 abstract class SearchStrategy(val benchmarkExecutor: BenchmarkExecutor) {
     /**
      * Find smallest suitable resource from the specified resource list for the given load.
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt
index a6120564c8a69f50461acdc857b02ac2198cafc8..15defa6c7127bc82d6ea2b13abe51076e44bd5a9 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt
@@ -1,7 +1,9 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.strategies.searchstrategy.CompositeStrategy
 
+@RegisterForReflection
 data class Config(
     val loads: List<LoadDimension>,
     val resources: List<Resource>,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/ConfigurationOverride.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/ConfigurationOverride.kt
index 4d290eab95648064a0a4efb19961ae29b92f8688..c4801dfbab0beb01cab025200cceab17efb0053d 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/ConfigurationOverride.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/ConfigurationOverride.kt
@@ -1,8 +1,10 @@
 package theodolite.util
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import io.quarkus.runtime.annotations.RegisterForReflection
 
 @JsonDeserialize
+@RegisterForReflection
 class ConfigurationOverride {
     lateinit var patcher: PatcherDefinition
     lateinit var value: String
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
index 2a54dc3b16abe6171eb90a99d87dab4810ab2333..cb94c8b7bfac4c3bc043e04a67d673ccaddea3c5 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
@@ -1,9 +1,11 @@
 package theodolite.util
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import io.quarkus.runtime.annotations.RegisterForReflection
 import org.apache.kafka.clients.admin.NewTopic
 import kotlin.properties.Delegates
 
+@RegisterForReflection
 @JsonDeserialize
 class KafkaConfig {
     lateinit var bootstrapServer: String
@@ -13,6 +15,7 @@ class KafkaConfig {
         return topics.map { topic -> NewTopic(topic.name, topic.numPartitions, topic.replicationFactor) }
     }
 
+    @RegisterForReflection
     class TopicWrapper {
         lateinit var name: String
         var numPartitions by Delegates.notNull<Int>()
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
index 43cb861b2d6bbbe457a61d6f98f42487aad1d216..4f092e5f9dd8fed8f4a6229eecf4f8a26a2e7e76 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
@@ -1,5 +1,9 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+
+@RegisterForReflection
 data class LoadDimension(private val number: Int, private val type: List<PatcherDefinition>) {
     fun get(): Int {
         return this.number
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/PatcherDefinition.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/PatcherDefinition.kt
index fedcc0459a18b43a53e9980517da91c004a5ed97..e78048cd7691f8bfd14f663d401384ae6c329d4b 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/PatcherDefinition.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/PatcherDefinition.kt
@@ -1,8 +1,10 @@
 package theodolite.util
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import io.quarkus.runtime.annotations.RegisterForReflection
 
 @JsonDeserialize
+@RegisterForReflection
 class PatcherDefinition {
     lateinit var type: String
     lateinit var resource: String
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt
index e512bd7efb534c705afa3fe17dbc77396a8741db..ca26ad117034b160e48dc950e80062100a1c68d8 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt
@@ -1,20 +1,26 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 data class PrometheusResponse(
     var status: String? = null,
     var data: PromData? = null
 )
 
+@RegisterForReflection
 data class PromData(
     var resultType: String? = null,
     var result: List<PromResult>? = null
 )
 
+@RegisterForReflection
 data class PromResult(
     var metric: PromMetric? = null,
     var values: List<Any>? = null
 )
 
+@RegisterForReflection
 data class PromMetric(
     var group: String? = null
 )
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
index 094e89ebb0d4566499068331ca2fc890f3335597..59acf175e31b2707b236b421d2055bb14a49ca1a 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
@@ -1,6 +1,10 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 data class Resource(private val number: Int, private val type: List<PatcherDefinition>) {
+
     fun get(): Int {
         return this.number
     }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt
index c827e8303f5c08f4f612476a1069ecefc0a7308b..a8a902ff69742bbb617685ac5cd24bf6c419c370 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt
@@ -1,5 +1,8 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 class Results {
     private val results: MutableMap<Pair<LoadDimension, Resource>, Boolean> = mutableMapOf()
 
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/TypeName.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/TypeName.kt
index 0ee8a18982ae2a59d022a5c45bfa9c843db6a5f0..20758466c5d5efbcb999bf0bf9c4edbe63ea1032 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/TypeName.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/TypeName.kt
@@ -1,7 +1,9 @@
 package theodolite.util
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import io.quarkus.runtime.annotations.RegisterForReflection
 
+@RegisterForReflection
 @JsonDeserialize
 class TypeName {
     lateinit var typeName: String
diff --git a/theodolite-quarkus/src/main/resources/application.properties b/theodolite-quarkus/src/main/resources/application.properties
index 32eef7a25d994df7e67bbb61f550903d83f8594b..318ce68ff1ae344f44288bfaacfbc43538211f50 100644
--- a/theodolite-quarkus/src/main/resources/application.properties
+++ b/theodolite-quarkus/src/main/resources/application.properties
@@ -1 +1,4 @@
-quarkus.package.main-class=TheodoliteOperator
\ No newline at end of file
+quarkus.package.main-class=TheodoliteYamlExecutor
+quarkus.native.additional-build-args=\
+  --initialize-at-run-time=io.fabric8.kubernetes.client.internal.CertUtils,\
+  --report-unsupported-elements-at-runtime
\ No newline at end of file