diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/ExperimentConfig.kt b/theodolite-quarkus/src/main/kotlin/theodolite/ExperimentConfig.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5b2fb22c0fd88bf63a942c9b68a8a3042946ecd7
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/ExperimentConfig.kt
@@ -0,0 +1,26 @@
+package theodolite
+
+import theodolite.strategies.SearchAlgorithm
+
+data class ExperimentConfig(
+    val useCase: Int,
+    val expId: Int,
+    val dimValues: Array<Int>,
+    val replicass: Array<Int>,
+    val partitions: Int,
+    val cpuLimit: String,
+    val memoryLimit: String,
+    val executionMinutes: Float,
+    val prometheusBaseUrl: String,
+    val reset: Boolean,
+    val namespace: String,
+    val resultPath: String,
+    val configurations: Any,
+    val restrictionStrategy: SearchAlgorithm,
+    val searchStrategy: SearchStrategy,
+    val benchmark: Any, // TODO
+    val sloChecker: Any // TODO
+) {
+
+
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/ExperimentExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/ExperimentExecutor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9c68ca5cf69843d77d9376e2007b35fc01785f92
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/ExperimentExecutor.kt
@@ -0,0 +1,9 @@
+package theodolite
+
+class ExperimentExecutor(
+    val config: ExperimentConfig
+) {
+    fun run() {
+        this.config.restrictionStrategy.restrictResource();
+    }
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/Main.kt b/theodolite-quarkus/src/main/kotlin/theodolite/Main.kt
index cf6a7cb5d1fa028e0841d58839b674800f251edc..d606aedd87a2f5a2a3ad71fbf805589ba90c1e4d 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/Main.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/Main.kt
@@ -6,9 +6,29 @@ import io.quarkus.runtime.annotations.QuarkusMain
 object Main {
     @JvmStatic
     fun main(args: Array<String>) {
-        println("Running main method")
+        println("Starting Benchmarks")
 
+        val config: ExperimentConfig = ExperimentConfig(
+            exp_id = 0,
+            use_case = 1,
+            dim_values = arrayOf(1,2,3),
+            configurations = TODO(),
+            domain_restriction_strategy = TODO(),
+            cpu_limit = "1000m",
+            execution_minutes = 5f,
+            memory_limit = "4gb",
+            namespace = "default",
+            partitions = 10,
+            prometheus_base_url = "http://localhost:9090",
+            replicass = arrayOf(1,2,3),
+            reset = false,
+            result_path = "./results",
+            search_strategy = TODO(),
+            subexperiment_evaluator = TODO(),
+            subexperiment_executor = TODO()
+        )
 
-        //Quarkus.run()
+        val executor: ExperimentExecutor = ExperimentExecutor(config)
+        executor.run()
     }
 }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/BinarySearch.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/BinarySearch.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c9fd0f498d88fe89eaaa06655a3e3dd40b7c2d00
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/BinarySearch.kt
@@ -0,0 +1,10 @@
+package theodolite.strategies
+
+import theodolite.strategies.searchstrategy.Benchmark
+import theodolite.strategies.searchstrategy.SearchStrategy
+
+class BinarySearch(benchmark: Benchmark) : SearchStrategy(benchmark) {
+    override fun findSuitableResources(load: Int, resources: List<Int>): Int {
+
+    }
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/EvenResourcesRestriction.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/EvenResourcesRestriction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..24078a23dce707aad2758f1e86395beac5682717
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/EvenResourcesRestriction.kt
@@ -0,0 +1,12 @@
+package theodolite.strategies
+
+import theodolite.strategies.restriction.CompositeRestriction
+import theodolite.strategies.restriction.Restriction
+
+class EvenResourcesRestriction(childRestriction: Restriction) : CompositeRestriction(childRestriction) {
+    override fun restrict(loads: List<Int>, resources: List<Int>) {
+        val filteredResources: List<Int> = resources.filter { x -> x % 2 == 0 };
+        this.childRestriction.restrict(loads, filteredResources);
+    }
+
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/LinearSearch.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/LinearSearch.kt
new file mode 100644
index 0000000000000000000000000000000000000000..79938f7fa20a710a7289979c841658bfb2dcf640
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/LinearSearch.kt
@@ -0,0 +1,14 @@
+package theodolite.strategies
+
+import theodolite.strategies.searchstrategy.Benchmark
+import theodolite.strategies.searchstrategy.SearchStrategy
+
+class LinearSearch(benchmark: Benchmark) : SearchStrategy(benchmark) {
+
+    override fun findSuitableResources(load: Int, resources: List<Int>): Int {
+        for (res in resources) {
+            if (this.benchmark.execute(load, res)) return resources.indexOf(res);
+        }
+        return resources.size;
+    }
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/LowerBoundRestriction.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/LowerBoundRestriction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..157281a4c8c6da073a29e2ec802bb059cc5ecd7d
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/LowerBoundRestriction.kt
@@ -0,0 +1,16 @@
+package theodolite.strategies
+
+import theodolite.strategies.restriction.PrimitiveRestriction
+import theodolite.strategies.searchstrategy.SearchStrategy
+
+class LowerBoundRestriction(searchStrategy: SearchStrategy) : PrimitiveRestriction(searchStrategy) {
+    override fun restrict(loads: List<Int>, resources: List<Int>): List<Int> {
+        val lowerBounds: MutableList<Int> = ArrayList<Int>();
+        var lowerBound = 0;
+        for (load in loads) {
+            lowerBound = this.searchStrategy.findSuitableResources(load, resources.subList(lowerBound, resources.size));
+            lowerBounds.add(lowerBound);
+        }
+        return lowerBounds;
+    }
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/CompositeRestriction.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/CompositeRestriction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6f61dc2ad0c7210001007510b999523c137ee501
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/CompositeRestriction.kt
@@ -0,0 +1,4 @@
+package theodolite.strategies.restriction
+
+abstract class CompositeRestriction(val childRestriction: Restriction): Restriction {
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/PrimitiveRestriction.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/PrimitiveRestriction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0e1873ec232316b0e535bcbeba47a3158dc54265
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/PrimitiveRestriction.kt
@@ -0,0 +1,7 @@
+package theodolite.strategies.restriction
+
+import theodolite.strategies.searchstrategy.SearchStrategy
+
+abstract class PrimitiveRestriction(val searchStrategy: SearchStrategy): Restriction {
+
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/Restriction.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/Restriction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4dc5ca5246b6f75852e15b1a8ab25265961a983b
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/Restriction.kt
@@ -0,0 +1,5 @@
+package theodolite.strategies.restriction
+
+interface Restriction {
+    fun restrict(loads: List<Int>, resources: List<Int>): List<Int>;
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/Benchmark.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/Benchmark.kt
new file mode 100644
index 0000000000000000000000000000000000000000..eb3e22a362b61510bab97b4e518864d64fa0582a
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/Benchmark.kt
@@ -0,0 +1,7 @@
+package theodolite.strategies.searchstrategy
+
+class Benchmark {
+    fun execute(load: Int, res: Int): Boolean {
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b42e78c9edb01b32bcb5be61c385296f9ac71c95
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
@@ -0,0 +1,5 @@
+package theodolite.strategies.searchstrategy
+
+abstract class SearchStrategy(val benchmark: Benchmark) {
+    abstract fun findSuitableResources(load: Int, resources: List<Int>): Int;
+}
\ No newline at end of file