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/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
index 342ceebb89a2ccd04a84ba40fb49a1e4872fa24d..d8656bc3c215906d36d42d1a0ffffe142248e1b9 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 19a0cb61c7bc24a00b1c769e77f4174d2f09d2d9..da7d2328bfa6cd2705386fca4b8e621dfe65e578 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
@@ -1,5 +1,6 @@
 package theodolite.execution
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import mu.KotlinLogging
 import theodolite.benchmark.Benchmark
 import theodolite.benchmark.BenchmarkExecution
@@ -13,6 +14,7 @@ import java.time.Instant
 
 private val logger = KotlinLogging.logger {}
 
+@RegisterForReflection
 class BenchmarkExecutorImpl(
     benchmark: Benchmark,
     results: Results,
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/KafkaConfig.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
index d21e8c77f87ed82e65b3fad6876cd361c0358d38..46960ccdb1aedad1c104f6f5ec2082077f55e4de 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
@@ -13,6 +13,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 29d47460bc49ec44e9a46a129e3dab3246f305b6..654c4d0cc52f4a2e3246211773d83aea589ced81 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
@@ -1,5 +1,8 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 data class LoadDimension(private val number: Int, private val type: String) {
     fun get(): Int {
         return this.number
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
index cb172e0b8de4cff5fc08828a177f3dd9d58bbb53..c62f785a4ecadc4caa55bfa38872f4ff4f8cdd09 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
@@ -1,5 +1,8 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 data class Resource(private val number: Int, private val type: String) {
     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 91bde71792fdca383fc9511658bab39aa58d12ce..2f746a17a0fd7ec0eb26a12426c41a6c1669aa54 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()