diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5743d9f732630259ad5401b53e39db64536d35d2..9ae3bd53ab352a6f3adf1b8826f8b3fccaeae7d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,7 +28,7 @@ stages:
     paths:
       - .gradle
   before_script:
-    - cd benchmarks
+    - cd theodolite-benchmarks
     - export GRADLE_USER_HOME=`pwd`/.gradle
 
 build-benchmarks:
@@ -37,8 +37,8 @@ build-benchmarks:
   script: ./gradlew --build-cache assemble
   artifacts:
     paths:
-      - "benchmarks/build/libs/*.jar"
-      - "benchmarks/*/build/distributions/*.tar"
+      - "theodolite-benchmarks/build/libs/*.jar"
+      - "theodolite-benchmarks/*/build/distributions/*.tar"
     expire_in: 1 day
 
 test-benchmarks:
@@ -50,7 +50,7 @@ test-benchmarks:
   artifacts:
     reports:
       junit:
-        - "benchmarks/**/build/test-results/test/TEST-*.xml"
+        - "theodolite-benchmarks/**/build/test-results/test/TEST-*.xml"
 
 checkstyle-benchmarks:
   stage: check
@@ -61,7 +61,7 @@ checkstyle-benchmarks:
   script: ./gradlew checkstyle --continue
   artifacts:
     paths:
-      - "benchmarks/*/build/reports/checkstyle/main.html"
+      - "theodolite-benchmarks/*/build/reports/checkstyle/main.html"
     when: on_failure
     expire_in: 1 day
 
@@ -74,7 +74,7 @@ pmd-benchmarks:
   script: ./gradlew pmd --continue
   artifacts:
     paths:
-      - "benchmarks/*/build/reports/pmd/*.html"
+      - "theodolite-benchmarks/*/build/reports/pmd/*.html"
     when: on_failure
     expire_in: 1 day
 
@@ -87,7 +87,7 @@ spotbugs-benchmarks:
   script: ./gradlew spotbugs --continue
   artifacts:
     paths:
-      - "benchmarks/*/build/reports/spotbugs/*.html"
+      - "theodolite-benchmarks/*/build/reports/spotbugs/*.html"
     when: on_failure
     expire_in: 1 day
 
@@ -114,10 +114,10 @@ spotbugs-benchmarks:
     - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
       when: always
     - changes:
-      - benchmarks/*
-      - benchmarks/$JAVA_PROJECT_NAME/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      - benchmarks/workload-generator-commons/**/*
+      - theodolite-benchmarks/*
+      - theodolite-benchmarks/$JAVA_PROJECT_NAME/**/*
+      - theodolite-benchmarks/application-kafkastreams-commons/**/*
+      - theodolite-benchmarks/workload-generator-commons/**/*
       if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
       when: always
     - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
@@ -176,7 +176,7 @@ deploy-uc4-load-generator:
 # Theodolite Framework
 
 .theodolite:
-  image: openjdk:11-jdk
+  image: ghcr.io/graalvm/graalvm-ce:java11-21.0.0.2
   tags:
     - exec-docker
   variables:
@@ -189,23 +189,33 @@ deploy-uc4-load-generator:
     - cd theodolite-quarkus
     - export GRADLE_USER_HOME=`pwd`/.gradle
 
-build-theodolite:
+build-theodolite-jvm:
   stage: build
   extends: .theodolite
-  # script: ./gradlew --build-cache assemble -Dquarkus.package.type=native
   script: ./gradlew --build-cache assemble
   artifacts:
     paths:
       - "theodolite-quarkus/build/lib/*"
       - "theodolite-quarkus/build/*-runner.jar"
-      # - "theodolite-quarkus/build/*-runner" # For native image
+    expire_in: 1 day
+
+build-theodolite-native:
+  stage: build
+  extends: .theodolite
+  script:
+    - gu install native-image # TODO move to image
+    - ./gradlew --build-cache assemble -Dquarkus.package.type=native
+  artifacts:
+    paths:
+      - "theodolite-quarkus/build/*-runner"
     expire_in: 1 day
 
 test-theodolite:
   stage: test
   extends: .theodolite
   needs:
-    - build-theodolite
+    - build-theodolite-jvm
+    - build-theodolite-native
   script: ./gradlew test --stacktrace
 
 # Disabled for now
@@ -213,7 +223,7 @@ test-theodolite:
   stage: check
   extends: .theodolite
   needs:
-    - build-theodolite
+    - build-theodolite-jvm
     - test-theodolite
   script: ./gradlew ktlintCheck --continue
 
@@ -222,7 +232,7 @@ test-theodolite:
   stage: check
   extends: .theodolite
   needs:
-    - build-theodolite
+    - build-theodolite-jvm
     - test-theodolite
   script: ./gradlew detekt --continue
 
@@ -232,12 +242,12 @@ deploy-theodolite:
     - .theodolite
     - .dind
   needs:
-    - build-theodolite
+    - build-theodolite-native
     - test-theodolite
   script:
     - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
-    #- docker build -f src/main/docker/Dockerfile.native -t theodolite .
-    - docker build -f src/main/docker/Dockerfile.jvm -t theodolite .
+    - docker build -f src/main/docker/Dockerfile.native -t theodolite .
+    #- docker build -f src/main/docker/Dockerfile.jvm -t theodolite .
     - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:${DOCKER_TAG_NAME}latest"
     - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
     - "[ $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:$CI_COMMIT_TAG"
@@ -254,3 +264,30 @@ deploy-theodolite:
     - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
       when: manual
       allow_failure: true
+
+
+# Theodolite Random Scheduler
+
+deploy-random-scheduler:
+  stage: deploy
+  extends:
+    - .dind
+  script:
+    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
+    - docker build --pull -t theodolite-random-scheduler execution/infrastructure/random-scheduler
+    - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite-random-scheduler $CR_HOST/$CR_ORG/theodolite-random-scheduler:${DOCKER_TAG_NAME}latest"
+    - "[ $CI_COMMIT_TAG ] && docker tag theodolite-random-scheduler $CR_HOST/$CR_ORG/theodolite-random-scheduler:$CI_COMMIT_TAG"
+    - echo $CR_PW | docker login $CR_HOST -u $CR_USER --password-stdin
+    - docker push $CR_HOST/$CR_ORG/theodolite-random-scheduler
+    - docker logout
+  rules:
+    - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $CI_COMMIT_TAG"
+      when: always
+    - changes:
+      - execution/infrastructure/random-scheduler/**/*
+      if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
+      when: always
+    - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW"
+      when: manual
+      allow_failure: true
+      
\ No newline at end of file
diff --git a/execution/infrastructure/random-scheduler/Dockerfile b/execution/infrastructure/random-scheduler/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..45f8ae9632022b458853013c1a52370c364e0002
--- /dev/null
+++ b/execution/infrastructure/random-scheduler/Dockerfile
@@ -0,0 +1,10 @@
+FROM alpine:3.12
+
+RUN apk update && apk add bash curl jq
+RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \
+  && chmod +x ./kubectl \
+  && mv ./kubectl /usr/local/bin/kubectl
+
+ADD schedule.sh /bin/schedule
+
+CMD /bin/schedule
diff --git a/execution/infrastructure/random-scheduler/README.md b/execution/infrastructure/random-scheduler/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..59b9acb0aefd48a5afe581ebb96d871370760b10
--- /dev/null
+++ b/execution/infrastructure/random-scheduler/README.md
@@ -0,0 +1,12 @@
+# Theodolite Random Scheduler
+This directory contains the Theodolite Random Scheduler that schedules pods on random nodes.
+
+## Build and Push
+Run the following commands
+
+- `docker build -t theodolite-random-scheduler .`
+- `docker tag theodolite-random-scheduler <user>/theodolite-random-scheduler`
+- `docker push <user>/theodolite-random-scheduler`
+
+## Deployment
+Deploy the `deployment.yaml` file into Kubernetes. Note, that the `TARGET_NAMESPACE` environment variable specifies the operating namespace of the random scheduler.
diff --git a/execution/infrastructure/random-scheduler/deployment.yaml b/execution/infrastructure/random-scheduler/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3c8c0ed5a8657146c1e9aba3e6715ec9c6456651
--- /dev/null
+++ b/execution/infrastructure/random-scheduler/deployment.yaml
@@ -0,0 +1,25 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: random-scheduler
+  labels:
+    app: random-scheduler
+  namespace: kube-system
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: random-scheduler
+  template:
+    metadata:
+      labels:
+        app: random-scheduler
+    spec:
+      serviceAccount: random-scheduler
+      containers:
+        - name: random-scheduler
+          image: ghcr.io/cau-se/theodolite-random-scheduler:latest
+          imagePullPolicy: Always
+          env:
+            - name: TARGET_NAMESPACE
+              value: default
diff --git a/execution/infrastructure/random-scheduler/rbac.yaml b/execution/infrastructure/random-scheduler/rbac.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ba463cc54a575730cacac6b905603892572b11ec
--- /dev/null
+++ b/execution/infrastructure/random-scheduler/rbac.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  namespace: kube-system
+  name: random-scheduler 
+  labels:
+    app: random-scheduler 
+    component: random-scheduler
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: random-scheduler
+subjects:
+- kind: ServiceAccount
+  name: random-scheduler
+  namespace: kube-system
+roleRef:
+  kind: ClusterRole
+  apiGroup: rbac.authorization.k8s.io
+  name: system:kube-scheduler
\ No newline at end of file
diff --git a/execution/infrastructure/random-scheduler/schedule.sh b/execution/infrastructure/random-scheduler/schedule.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e2e10c0abbdd06da5f5075cd21851331ffb593fe
--- /dev/null
+++ b/execution/infrastructure/random-scheduler/schedule.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# use kubectl in proxy mode in order to allow curl requesting the k8's api server
+kubectl proxy --port 8080 &
+
+echo "Target Namespace: $TARGET_NAMESPACE"
+while true;
+do
+    for PODNAME in $(kubectl get pods -n $TARGET_NAMESPACE -o json | jq '.items[] | select(.spec.schedulerName == "random-scheduler") | select(.spec.nodeName == null) | .metadata.name' | tr -d '"');
+    do
+        NODES=($(kubectl get nodes -o json | jq '.items[].metadata.name' | tr -d '"'))
+        NUMNODES=${#NODES[@]}
+        CHOSEN=${NODES[$[$RANDOM % $NUMNODES]]}
+        curl --header "Content-Type:application/json" --request POST --data '{"apiVersion":"v1", "kind": "Binding", "metadata": {"name": "'$PODNAME'"}, "target": {"apiVersion": "v1", "kind": "Node", "name": "'$CHOSEN'"}}' localhost:8080/api/v1/namespaces/$TARGET_NAMESPACE/pods/$PODNAME/binding/
+        echo "Assigned $PODNAME to $CHOSEN"
+    done
+    sleep 1
+done
\ No newline at end of file
diff --git a/slope-evaluator/Dockerfile b/slope-evaluator/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..032b8153a6989ca04631ba553289dacb3620a38d
--- /dev/null
+++ b/slope-evaluator/Dockerfile
@@ -0,0 +1,6 @@
+FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
+
+COPY requirements.txt requirements.txt
+RUN pip install -r requirements.txt
+
+COPY ./app /app
\ No newline at end of file
diff --git a/slope-evaluator/README.md b/slope-evaluator/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..25c02b42e6a6eb4611972febf935403b8b8703c8
--- /dev/null
+++ b/slope-evaluator/README.md
@@ -0,0 +1,26 @@
+# Lag Trend SLO Evaluator
+
+## Execution
+
+For development:
+
+```sh
+uvicorn main:app --reload
+```
+
+Build the docker image:
+
+```sh
+docker build . -t theodolite-evaluator
+```
+
+Run the Docker image:
+
+```sh
+ docker run -p 80:80 theodolite-evaluator
+```
+
+## Configuration
+
+You can set the `HOST` and the `PORT` (and a lot of more parameters) via environment variables. Default is `0.0.0.0:80`.
+For more information see [here](https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker#advanced-usage).
diff --git a/slope-evaluator/app/main.py b/slope-evaluator/app/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..83709c0f71563d9bd1c29c5f064645144163ea72
--- /dev/null
+++ b/slope-evaluator/app/main.py
@@ -0,0 +1,51 @@
+from fastapi import FastAPI,Request
+import trend_slope_computer as trend_slope_computer
+import logging
+import os
+import pandas as pd
+import json
+import sys
+
+app = FastAPI()
+
+logging.basicConfig(stream=sys.stdout,
+                    format="%(asctime)s %(levelname)s %(name)s: %(message)s")
+logger = logging.getLogger("API")
+
+
+if os.getenv('LOG_LEVEL') == 'INFO':
+    logger.setLevel(logging.INFO)
+elif os.getenv('LOG_LEVEL') == 'WARNING':
+    logger.setLevel(logging.WARNING)
+elif os.getenv('LOG_LEVEL') == 'DEBUG':
+    logger.setLevel((logging.DEBUG))
+
+def execute(results, threshold, warmup):
+    d = []
+    for result in results:
+        group = result['metric']['group']
+        for value in result['values']:
+            d.append({'group': group, 'timestamp': int(
+                value[0]), 'value': int(value[1]) if value[1] != 'NaN' else 0})
+
+    df = pd.DataFrame(d)
+
+    logger.info(df)
+    try:
+        trend_slope = trend_slope_computer.compute(df, warmup)
+    except Exception as e:
+        err_msg = 'Computing trend slope failed'
+        logger.exception(err_msg)
+        logger.error('Mark this subexperiment as not successful and continue benchmark')
+        return False
+
+    logger.info("Trend Slope: %s", trend_slope)
+
+    return trend_slope < threshold
+
+@app.post("/evaluate-slope",response_model=bool)
+async def evaluate_slope(request: Request):
+    data = json.loads(await request.body())
+    return execute(data['total_lag'], data['threshold'], data['warmup'])
+
+logger.info("Slope evaluator is online")
\ No newline at end of file
diff --git a/slope-evaluator/app/trend_slope_computer.py b/slope-evaluator/app/trend_slope_computer.py
new file mode 100644
index 0000000000000000000000000000000000000000..c128d9f48c1e7ba20e43dfbfd6a0391eeec2b60b
--- /dev/null
+++ b/slope-evaluator/app/trend_slope_computer.py
@@ -0,0 +1,18 @@
+from sklearn.linear_model import LinearRegression
+import pandas as pd
+import os
+
+def compute(x, warmup_sec):
+    input = x
+    input['sec_start'] = input.loc[0:, 'timestamp'] - input.iloc[0]['timestamp']
+    regress = input.loc[input['sec_start'] >= warmup_sec] # Warm-Up
+
+    X = regress.iloc[:, 2].values.reshape(-1, 1)  # values converts it into a numpy array
+    Y = regress.iloc[:, 3].values.reshape(-1, 1)  # -1 means that calculate the dimension of rows, but have 1 column
+    linear_regressor = LinearRegression()  # create object for the class
+    linear_regressor.fit(X, Y)  # perform linear regression
+    Y_pred = linear_regressor.predict(X)  # make predictions
+
+    trend_slope = linear_regressor.coef_[0][0]
+
+    return trend_slope
diff --git a/slope-evaluator/requirements.txt b/slope-evaluator/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ca77b6c891136b1388aaf56c5ae269d6ee4b5729
--- /dev/null
+++ b/slope-evaluator/requirements.txt
@@ -0,0 +1,3 @@
+fastapi==0.55.1
+scikit-learn==0.20.3
+pandas==1.0.3
diff --git a/benchmarks/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/application-kafkastreams-commons/build.gradle b/theodolite-benchmarks/application-kafkastreams-commons/build.gradle
similarity index 100%
rename from benchmarks/application-kafkastreams-commons/build.gradle
rename to theodolite-benchmarks/application-kafkastreams-commons/build.gradle
diff --git a/benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java b/theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java
similarity index 100%
rename from benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java
rename to theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java
diff --git a/benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java b/theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java
similarity index 100%
rename from benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java
rename to theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java
diff --git a/benchmarks/build.gradle b/theodolite-benchmarks/build.gradle
similarity index 100%
rename from benchmarks/build.gradle
rename to theodolite-benchmarks/build.gradle
diff --git a/benchmarks/config/README.md b/theodolite-benchmarks/config/README.md
similarity index 100%
rename from benchmarks/config/README.md
rename to theodolite-benchmarks/config/README.md
diff --git a/benchmarks/config/checkstyle-suppression.xml b/theodolite-benchmarks/config/checkstyle-suppression.xml
similarity index 100%
rename from benchmarks/config/checkstyle-suppression.xml
rename to theodolite-benchmarks/config/checkstyle-suppression.xml
diff --git a/benchmarks/config/checkstyle.xml b/theodolite-benchmarks/config/checkstyle.xml
similarity index 100%
rename from benchmarks/config/checkstyle.xml
rename to theodolite-benchmarks/config/checkstyle.xml
diff --git a/benchmarks/config/eclipse-cleanup.xml b/theodolite-benchmarks/config/eclipse-cleanup.xml
similarity index 100%
rename from benchmarks/config/eclipse-cleanup.xml
rename to theodolite-benchmarks/config/eclipse-cleanup.xml
diff --git a/benchmarks/config/eclipse-formatter.xml b/theodolite-benchmarks/config/eclipse-formatter.xml
similarity index 100%
rename from benchmarks/config/eclipse-formatter.xml
rename to theodolite-benchmarks/config/eclipse-formatter.xml
diff --git a/benchmarks/config/eclipse-import-order.importorder b/theodolite-benchmarks/config/eclipse-import-order.importorder
similarity index 100%
rename from benchmarks/config/eclipse-import-order.importorder
rename to theodolite-benchmarks/config/eclipse-import-order.importorder
diff --git a/benchmarks/config/pmd.xml b/theodolite-benchmarks/config/pmd.xml
similarity index 100%
rename from benchmarks/config/pmd.xml
rename to theodolite-benchmarks/config/pmd.xml
diff --git a/benchmarks/config/spotbugs-exclude-filter.xml b/theodolite-benchmarks/config/spotbugs-exclude-filter.xml
similarity index 100%
rename from benchmarks/config/spotbugs-exclude-filter.xml
rename to theodolite-benchmarks/config/spotbugs-exclude-filter.xml
diff --git a/docker-test/uc1-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml
similarity index 91%
rename from docker-test/uc1-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml
index cdc9df40257362934a93fcbe2de24b6035d40bca..41d981bc4a2d770d42da39c96005d3ed6fcefef5 100755
--- a/docker-test/uc1-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml
@@ -32,7 +32,7 @@ services:
       SCHEMA_REGISTRY_HOST_NAME: schema-registry
       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
   uc-app:
-    image: theodolite/theodolite-uc1-kstreams-app:latest
+    image: ghcr.io/cau-se/theodolite-uc1-kstreams-app:latest
     depends_on:
       - schema-registry
       - kafka
@@ -40,7 +40,7 @@ services:
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
   uc-wg: 
-    image: theodolite/theodolite-uc1-workload-generator:latest
+    image: ghcr.io/cau-se/theodolite-uc1-workload-generator:latest
     depends_on:
       - schema-registry
       - kafka
diff --git a/docker-test/uc2-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml
similarity index 92%
rename from docker-test/uc2-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml
index 613553fcfa53122205b6e58d85fb7225eae90d7c..6bb0c1e7d5afccab7724c40eabc30d4c01d59cb6 100755
--- a/docker-test/uc2-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml
@@ -33,7 +33,7 @@ services:
       SCHEMA_REGISTRY_HOST_NAME: schema-registry
       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
   uc-app:
-    image: theodolite/theodolite-uc2-kstreams-app:latest
+    image: ghcr.io/cau-se/theodolite-uc2-kstreams-app:latest
     depends_on:
       - schema-registry
       - kafka
@@ -42,7 +42,7 @@ services:
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
       KAFKA_WINDOW_DURATION_MINUTES: 60
   uc-wg: 
-    image: theodolite/theodolite-uc2-workload-generator:latest
+    image: ghcr.io/cau-se/theodolite-uc2-workload-generator:latest
     depends_on:
       - schema-registry
       - kafka
diff --git a/docker-test/uc3-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml
similarity index 92%
rename from docker-test/uc3-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml
index d321318b4024b678cf8f37007e90dc62a2042ece..b4ae8c16f9fc21164134aad62e6ef776225fc7db 100755
--- a/docker-test/uc3-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml
@@ -33,7 +33,7 @@ services:
       SCHEMA_REGISTRY_HOST_NAME: schema-registry
       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
   uc-app:
-    image: theodolite/theodolite-uc3-kstreams-app:latest
+    image: ghcr.io/cau-se/theodolite-uc3-kstreams-app:latest
     depends_on:
       - schema-registry
       - kafka
@@ -41,7 +41,7 @@ services:
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
   uc-wg: 
-    image: theodolite/theodolite-uc3-workload-generator:latest
+    image: ghcr.io/cau-se/theodolite-uc3-workload-generator:latest
     depends_on:
       - schema-registry
       - kafka
diff --git a/docker-test/uc4-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml
similarity index 92%
rename from docker-test/uc4-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml
index d478d74e55a1b5423a390c624848b20f5faf2969..14b1c1ad38379f45682c8fffa263ca9c9ada2d4d 100755
--- a/docker-test/uc4-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml
@@ -32,7 +32,7 @@ services:
       SCHEMA_REGISTRY_HOST_NAME: schema-registry
       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
   uc-app:
-    image: theodolite/theodolite-uc4-kstreams-app:latest
+    image: ghcr.io/cau-se/theodolite-uc4-kstreams-app:latest
     depends_on:
       - schema-registry
       - kafka
@@ -40,7 +40,7 @@ services:
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
   uc-wg: 
-    image: theodolite/theodolite-uc4-workload-generator:latest
+    image: ghcr.io/cau-se/theodolite-uc4-workload-generator:latest
     depends_on:
       - schema-registry
       - kafka
diff --git a/benchmarks/gradle/wrapper/gradle-wrapper.jar b/theodolite-benchmarks/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from benchmarks/gradle/wrapper/gradle-wrapper.jar
rename to theodolite-benchmarks/gradle/wrapper/gradle-wrapper.jar
diff --git a/benchmarks/gradle/wrapper/gradle-wrapper.properties b/theodolite-benchmarks/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from benchmarks/gradle/wrapper/gradle-wrapper.properties
rename to theodolite-benchmarks/gradle/wrapper/gradle-wrapper.properties
diff --git a/benchmarks/gradlew b/theodolite-benchmarks/gradlew
similarity index 100%
rename from benchmarks/gradlew
rename to theodolite-benchmarks/gradlew
diff --git a/benchmarks/gradlew.bat b/theodolite-benchmarks/gradlew.bat
similarity index 100%
rename from benchmarks/gradlew.bat
rename to theodolite-benchmarks/gradlew.bat
diff --git a/benchmarks/settings.gradle b/theodolite-benchmarks/settings.gradle
similarity index 87%
rename from benchmarks/settings.gradle
rename to theodolite-benchmarks/settings.gradle
index 9104525ce160a25957f9731f820a723b4f36f7d5..5c524a57cedbfdaff4aa8e3e39ed3a07711948bc 100644
--- a/benchmarks/settings.gradle
+++ b/theodolite-benchmarks/settings.gradle
@@ -1,4 +1,4 @@
-rootProject.name = 'scalability-benchmarking'
+rootProject.name = 'theodolite-benchmarks'
 
 include 'workload-generator-commons'
 include 'application-kafkastreams-commons'
diff --git a/benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc1-application/Dockerfile b/theodolite-benchmarks/uc1-application/Dockerfile
similarity index 100%
rename from benchmarks/uc1-application/Dockerfile
rename to theodolite-benchmarks/uc1-application/Dockerfile
diff --git a/benchmarks/uc1-application/build.gradle b/theodolite-benchmarks/uc1-application/build.gradle
similarity index 100%
rename from benchmarks/uc1-application/build.gradle
rename to theodolite-benchmarks/uc1-application/build.gradle
diff --git a/benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java b/theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java
similarity index 100%
rename from benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java
rename to theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java
diff --git a/benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java
similarity index 100%
rename from benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java
diff --git a/benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java b/theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
similarity index 100%
rename from benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
diff --git a/benchmarks/uc1-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc1-application/src/main/resources/META-INF/application.properties
similarity index 100%
rename from benchmarks/uc1-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc1-application/src/main/resources/META-INF/application.properties
diff --git a/benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc1-workload-generator/Dockerfile b/theodolite-benchmarks/uc1-workload-generator/Dockerfile
similarity index 100%
rename from benchmarks/uc1-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc1-workload-generator/Dockerfile
diff --git a/benchmarks/uc1-workload-generator/build.gradle b/theodolite-benchmarks/uc1-workload-generator/build.gradle
similarity index 100%
rename from benchmarks/uc1-workload-generator/build.gradle
rename to theodolite-benchmarks/uc1-workload-generator/build.gradle
diff --git a/benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java
similarity index 100%
rename from benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java
rename to theodolite-benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java
diff --git a/benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc2-application/Dockerfile b/theodolite-benchmarks/uc2-application/Dockerfile
similarity index 100%
rename from benchmarks/uc2-application/Dockerfile
rename to theodolite-benchmarks/uc2-application/Dockerfile
diff --git a/benchmarks/uc2-application/build.gradle b/theodolite-benchmarks/uc2-application/build.gradle
similarity index 100%
rename from benchmarks/uc2-application/build.gradle
rename to theodolite-benchmarks/uc2-application/build.gradle
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java
similarity index 100%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
similarity index 100%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
similarity index 100%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java
similarity index 100%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java
diff --git a/benchmarks/uc2-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties
similarity index 100%
rename from benchmarks/uc2-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties
diff --git a/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
similarity index 99%
rename from benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
index fa98ca63d77bdee891150bd6713f70197a75cefc..4d01df75552c562406705858b6368ecf59d6e82f 100644
--- a/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
+++ b/theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
@@ -66,6 +66,7 @@ org.eclipse.jdt.ui.ignorelowercasenames=true
 org.eclipse.jdt.ui.importorder=;
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc2-workload-generator/Dockerfile b/theodolite-benchmarks/uc2-workload-generator/Dockerfile
similarity index 100%
rename from benchmarks/uc2-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc2-workload-generator/Dockerfile
diff --git a/benchmarks/uc2-workload-generator/build.gradle b/theodolite-benchmarks/uc2-workload-generator/build.gradle
similarity index 100%
rename from benchmarks/uc2-workload-generator/build.gradle
rename to theodolite-benchmarks/uc2-workload-generator/build.gradle
diff --git a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
similarity index 100%
rename from benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
rename to theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
diff --git a/benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc3-application/Dockerfile b/theodolite-benchmarks/uc3-application/Dockerfile
similarity index 100%
rename from benchmarks/uc3-application/Dockerfile
rename to theodolite-benchmarks/uc3-application/Dockerfile
diff --git a/benchmarks/uc3-application/build.gradle b/theodolite-benchmarks/uc3-application/build.gradle
similarity index 100%
rename from benchmarks/uc3-application/build.gradle
rename to theodolite-benchmarks/uc3-application/build.gradle
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java
similarity index 100%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java
diff --git a/benchmarks/uc3-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties
similarity index 100%
rename from benchmarks/uc3-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties
diff --git a/benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc3-workload-generator/Dockerfile b/theodolite-benchmarks/uc3-workload-generator/Dockerfile
similarity index 100%
rename from benchmarks/uc3-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc3-workload-generator/Dockerfile
diff --git a/benchmarks/uc3-workload-generator/build.gradle b/theodolite-benchmarks/uc3-workload-generator/build.gradle
similarity index 100%
rename from benchmarks/uc3-workload-generator/build.gradle
rename to theodolite-benchmarks/uc3-workload-generator/build.gradle
diff --git a/benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java
similarity index 100%
rename from benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java
rename to theodolite-benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java
diff --git a/benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc4-application/Dockerfile b/theodolite-benchmarks/uc4-application/Dockerfile
similarity index 100%
rename from benchmarks/uc4-application/Dockerfile
rename to theodolite-benchmarks/uc4-application/Dockerfile
diff --git a/benchmarks/uc4-application/README.md b/theodolite-benchmarks/uc4-application/README.md
similarity index 100%
rename from benchmarks/uc4-application/README.md
rename to theodolite-benchmarks/uc4-application/README.md
diff --git a/benchmarks/uc4-application/build.gradle b/theodolite-benchmarks/uc4-application/build.gradle
similarity index 100%
rename from benchmarks/uc4-application/build.gradle
rename to theodolite-benchmarks/uc4-application/build.gradle
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
similarity index 100%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
diff --git a/benchmarks/uc4-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties
similarity index 100%
rename from benchmarks/uc4-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties
diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java
similarity index 100%
rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java
diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java
similarity index 100%
rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java
diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java
similarity index 100%
rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java
diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java
similarity index 100%
rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java
diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java
similarity index 100%
rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java
diff --git a/benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
similarity index 99%
rename from benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
index fa98ca63d77bdee891150bd6713f70197a75cefc..4d01df75552c562406705858b6368ecf59d6e82f 100644
--- a/benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs
+++ b/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
@@ -66,6 +66,7 @@ org.eclipse.jdt.ui.ignorelowercasenames=true
 org.eclipse.jdt.ui.importorder=;
 org.eclipse.jdt.ui.ondemandthreshold=99
 org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
diff --git a/benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/uc4-workload-generator/Dockerfile b/theodolite-benchmarks/uc4-workload-generator/Dockerfile
similarity index 100%
rename from benchmarks/uc4-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc4-workload-generator/Dockerfile
diff --git a/benchmarks/uc4-workload-generator/build.gradle b/theodolite-benchmarks/uc4-workload-generator/build.gradle
similarity index 100%
rename from benchmarks/uc4-workload-generator/build.gradle
rename to theodolite-benchmarks/uc4-workload-generator/build.gradle
diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java
similarity index 100%
rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java
rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java
diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
similarity index 100%
rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java
similarity index 100%
rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java
rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java
diff --git a/benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties
similarity index 100%
rename from benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties
diff --git a/benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java b/theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java
similarity index 100%
rename from benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java
rename to theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java
diff --git a/benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs
diff --git a/benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs
similarity index 100%
rename from benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs
rename to theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs
diff --git a/benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs
similarity index 100%
rename from benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs
rename to theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs
diff --git a/benchmarks/workload-generator-commons/build.gradle b/theodolite-benchmarks/workload-generator-commons/build.gradle
similarity index 100%
rename from benchmarks/workload-generator-commons/build.gradle
rename to theodolite-benchmarks/workload-generator-commons/build.gradle
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java
similarity index 93%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java
index dd17234bf1adb1f0fcf3ff3ab134a0743b917369..6e4a43271fbf1e0193c2d39569a0814d1f7935cd 100644
--- a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java
+++ b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java
@@ -6,6 +6,7 @@ import org.apache.avro.specific.SpecificRecord;
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.errors.SerializationException;
 import org.apache.kafka.common.serialization.StringSerializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -116,7 +117,13 @@ public class KafkaRecordSender<T extends SpecificRecord> implements RecordSender
             this.keyAccessor.apply(monitoringRecord), monitoringRecord);
 
     LOGGER.debug("Send record to Kafka topic {}: {}", this.topic, record);
-    this.producer.send(record);
+    try {
+      this.producer.send(record);
+    } catch (final SerializationException e) {
+      LOGGER.warn(
+          "Record could not be serialized and thus not sent to Kafka due to exception. Skipping this record.", // NOCS
+          e);
+    }
   }
 
   public void terminate() {
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java
diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java
rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java
diff --git a/benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java b/theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java
rename to theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java
diff --git a/benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java b/theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java
similarity index 100%
rename from benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java
rename to theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java
diff --git a/theodolite-quarkus/build.gradle b/theodolite-quarkus/build.gradle
index ba80ced4b1e4e58f34d5b316f4a46f4e032654a9..1ceb0937776299e6fc9a3c0ec470c9e320e6790f 100644
--- a/theodolite-quarkus/build.gradle
+++ b/theodolite-quarkus/build.gradle
@@ -20,12 +20,13 @@ dependencies {
     implementation 'io.quarkus:quarkus-resteasy'
     testImplementation 'io.quarkus:quarkus-junit5'
     testImplementation 'io.rest-assured:rest-assured'
+    implementation 'com.google.code.gson:gson:2.8.5'
 
     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'
-    compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.7.0'
-    compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.6.2'
+    implementation 'org.apache.kafka:kafka-clients:2.7.0'
+    implementation 'khttp:khttp:1.0.0'
 }
 
 group 'theodolite'
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
index 32b06d10f609b8898ac94d514baf4f293b1a2c97..25535e1a64db9641cd47747cf8676b3994964690 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt
@@ -22,6 +22,10 @@ class BenchmarkExecution {
     class Slo {
         lateinit var sloType: String
         var threshold by Delegates.notNull<Int>()
+        lateinit var prometheusUrl: String
+        lateinit var externalSloUrl: String
+        var offset by Delegates.notNull<Int>()
+        var warmup by Delegates.notNull<Int>()
     }
 
     class LoadDefinition {
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/ExternalSloChecker.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/ExternalSloChecker.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2de8e2dc9c03ec5449c9f04585622d6730644aa2
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/ExternalSloChecker.kt
@@ -0,0 +1,40 @@
+package theodolite.evaluation
+
+import com.google.gson.Gson
+import khttp.post
+import java.net.ConnectException
+import java.time.Duration
+import java.time.Instant
+
+class ExternalSloChecker(
+    private val prometheusURL: String,
+    private val query: String,
+    private val externalSlopeURL: String,
+    private val threshold: Int,
+    private val offset: Duration,
+    private val warmup: Int
+) :
+    SloChecker {
+
+    private val RETRIES = 2
+    private val TIMEOUT = 60.0
+
+    override fun evaluate(start: Instant, end: Instant): Boolean {
+        var counter = 0
+        val metricFetcher = MetricFetcher(prometheusURL = prometheusURL, offset = offset)
+        val fetchedData = metricFetcher.fetchMetric(start, end, query)
+        val data =
+            Gson().toJson(mapOf("total_lag" to fetchedData.data?.result, "threshold" to threshold, "warmup" to warmup))
+
+        while (counter < RETRIES) {
+            val result = post(externalSlopeURL, data = data, timeout = TIMEOUT)
+            if (result.statusCode != 200) {
+                counter++
+            } else {
+                return result.text.toBoolean()
+            }
+        }
+
+        throw ConnectException("Could not reach slope evaluation")
+    }
+}
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/MetricFetcher.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/MetricFetcher.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7dbaf568c3452e7ae565002ae00e5314502f8930
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/MetricFetcher.kt
@@ -0,0 +1,55 @@
+package theodolite.evaluation
+
+import com.google.gson.Gson
+import khttp.get
+import khttp.responses.Response
+import mu.KotlinLogging
+import theodolite.util.PrometheusResponse
+import java.net.ConnectException
+import java.time.Duration
+import java.time.Instant
+
+private val logger = KotlinLogging.logger {}
+
+class MetricFetcher(private val prometheusURL: String, private val offset: Duration) {
+    private val RETRIES = 2
+    private val TIMEOUT = 60.0
+
+    fun fetchMetric(start: Instant, end: Instant, query: String): PrometheusResponse {
+
+        val offsetStart = start.minus(offset)
+        val offsetEnd = end.minus(offset)
+
+        var counter = 0
+        val parameter = mapOf(
+            "query" to query,
+            "start" to offsetStart.toString(),
+            "end" to offsetEnd.toString(),
+            "step" to "5s"
+        )
+
+        while (counter < RETRIES) {
+            val response = get("$prometheusURL/api/v1/query_range", params = parameter, timeout = TIMEOUT)
+            if (response.statusCode != 200) {
+                val message = response.jsonObject.toString()
+                logger.warn { "Could not connect to Prometheus: $message, retrying now" }
+                counter++
+            } else {
+                val values = parseValues(response)
+                if (values.data?.result.isNullOrEmpty()) {
+                    logger.error { "Empty query result: $values" }
+                    throw NoSuchFieldException()
+                }
+                return parseValues(response)
+            }
+        }
+        throw ConnectException("No answer from Prometheus received")
+    }
+
+    private fun parseValues(values: Response): PrometheusResponse {
+        return Gson().fromJson<PrometheusResponse>(
+            values.jsonObject.toString(),
+            PrometheusResponse::class.java
+        )
+    }
+}
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SLOChecker.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SLOChecker.kt
deleted file mode 100644
index 396e1864b491e15d44881439c10847a39ea18286..0000000000000000000000000000000000000000
--- a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SLOChecker.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package theodolite.evaluation
-
-interface SLOChecker {}
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloChecker.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloChecker.kt
new file mode 100644
index 0000000000000000000000000000000000000000..53ed1b7fa02681f97b121f93d690c0654f961a94
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloChecker.kt
@@ -0,0 +1,7 @@
+package theodolite.evaluation
+
+import java.time.Instant
+
+interface SloChecker {
+    fun evaluate(start: Instant, end: Instant): Boolean
+}
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloCheckerFactory.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloCheckerFactory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2170ef7b6abdb74499d05ac623c7892ac36b72d9
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloCheckerFactory.kt
@@ -0,0 +1,29 @@
+package theodolite.evaluation
+
+import java.time.Duration
+
+class SloCheckerFactory {
+
+    fun create(
+        slotype: String,
+        prometheusURL: String,
+        query: String,
+        externalSlopeURL: String,
+        threshold: Int,
+        offset: Duration,
+        warmup: Int
+    ): SloChecker {
+
+        return when (slotype) {
+            "lag trend" -> ExternalSloChecker(
+                prometheusURL = prometheusURL,
+                query = query,
+                externalSlopeURL = externalSlopeURL,
+                threshold = threshold,
+                offset = offset,
+                warmup = warmup
+            )
+            else -> throw IllegalArgumentException("Slotype $slotype not found.")
+        }
+    }
+}
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt
index 1e939812298da33c47513b3322ff33c00ea001be..d3c2fdcbc0274066e62dd2dfe01fd2a8cf940f13 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt
@@ -2,6 +2,7 @@ package theodolite.execution
 
 import mu.KotlinLogging
 import theodolite.benchmark.Benchmark
+import theodolite.benchmark.BenchmarkExecution
 import theodolite.util.ConfigurationOverride
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
@@ -22,7 +23,8 @@ abstract class BenchmarkExecutor(
     val benchmark: Benchmark,
     val results: Results,
     val executionDuration: Duration,
-    configurationOverrides: List<ConfigurationOverride>
+    configurationOverrides: List<ConfigurationOverride>,
+    val slo: BenchmarkExecution.Slo
 ) {
 
     /**
@@ -39,9 +41,13 @@ abstract class BenchmarkExecutor(
      *
      */
     fun waitAndLog() {
-        for (i in 1.rangeTo(executionDuration.toMinutes())) {
-            Thread.sleep(Duration.ofMinutes(1).toMillis())
-            logger.info { "Executed: $i minutes" }
+        logger.info { "Execution of a new benchmark started." }
+        for (i in 1.rangeTo(executionDuration.toSeconds())) {
+
+            Thread.sleep(Duration.ofSeconds(1).toMillis())
+            if ((i % 60) == 0L) {
+                logger.info { "Executed: ${i / 60} minutes" }
+            }
         }
     }
 }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
index 45616a100a8ed067237413ac5afa9fd32f4865e1..19a0cb61c7bc24a00b1c769e77f4174d2f09d2d9 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
@@ -1,25 +1,51 @@
 package theodolite.execution
 
+import mu.KotlinLogging
 import theodolite.benchmark.Benchmark
+import theodolite.benchmark.BenchmarkExecution
+import theodolite.evaluation.SloCheckerFactory
 import theodolite.util.ConfigurationOverride
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 import theodolite.util.Results
 import java.time.Duration
+import java.time.Instant
+
+private val logger = KotlinLogging.logger {}
 
 class BenchmarkExecutorImpl(
     benchmark: Benchmark,
     results: Results,
     executionDuration: Duration,
-    private val configurationOverrides: List<ConfigurationOverride>
-) : BenchmarkExecutor(benchmark, results, executionDuration, configurationOverrides) {
+    private val configurationOverrides: List<ConfigurationOverride>,
+    slo: BenchmarkExecution.Slo
+) : BenchmarkExecutor(benchmark, results, executionDuration, configurationOverrides, slo) {
+    //TODO ADD SHUTDOWN HOOK HERE
     override fun runExperiment(load: LoadDimension, res: Resource): Boolean {
         val benchmarkDeployment = benchmark.buildDeployment(load, res, this.configurationOverrides)
         benchmarkDeployment.setup()
         this.waitAndLog()
         benchmarkDeployment.teardown()
-        // todo evaluate
-        val result = false // if success else false
+
+        var result = false
+        try {
+            result = SloCheckerFactory().create(
+                slotype = slo.sloType,
+                prometheusURL = slo.prometheusUrl,
+                query = "sum by(group)(kafka_consumergroup_group_lag >= 0)",
+                externalSlopeURL = slo.externalSloUrl,
+                threshold = slo.threshold,
+                offset = Duration.ofHours(slo.offset.toLong()),
+                warmup = slo.warmup
+            )
+                .evaluate(
+                    Instant.now().minus(executionDuration),
+                    Instant.now()
+                )
+        } catch (e: Exception) {
+            logger.error { "Evaluation failed for resource: ${res.get()} and load: ${load.get()} error: $e" }
+        }
+
         this.results.setResult(Pair(load, res), result)
         return result
     }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
index da569e792660b2ec66fb7e7542103b242a733cb2..89a3fb4fe5e0f81aa12aa566c9dbb2630c9b9bfe 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt
@@ -21,10 +21,18 @@ class TheodoliteExecutor(
         val strategyFactory = StrategyFactory()
 
         val executionDuration = Duration.ofSeconds(config.execution.duration)
-        val executor = BenchmarkExecutorImpl(kubernetesBenchmark, results, executionDuration, config.configOverrides)
         val resourcePatcherDefinition = PatcherDefinitionFactory().createPatcherDefinition(config.resources.resourceType, this.kubernetesBenchmark.resourceTypes)
         val loadDimensionPatcherDefinition = PatcherDefinitionFactory().createPatcherDefinition(config.load.loadType, this.kubernetesBenchmark.loadTypes)
 
+        val executor =
+            BenchmarkExecutorImpl(
+                kubernetesBenchmark,
+                results,
+                executionDuration,
+                config.configOverrides,
+                config.slos[0]
+            )
+
         return Config(
             loads = config.load.loadValues.map { load -> LoadDimension(load, loadDimensionPatcherDefinition) },
             resources = config.resources.resourceValues.map { resource -> Resource(resource, resourcePatcherDefinition) },
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt b/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt
index 9cdf1c43fae9a72bd78126d420522b2d41a399ee..1336f57517ef74d8c781cc3b51bf130dbf8d99c5 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt
@@ -4,6 +4,7 @@ import mu.KotlinLogging
 import org.apache.kafka.clients.admin.AdminClient
 import org.apache.kafka.clients.admin.ListTopicsResult
 import org.apache.kafka.clients.admin.NewTopic
+import java.util.*
 
 private val logger = KotlinLogging.logger {}
 
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e512bd7efb534c705afa3fe17dbc77396a8741db
--- /dev/null
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt
@@ -0,0 +1,20 @@
+package theodolite.util
+
+data class PrometheusResponse(
+    var status: String? = null,
+    var data: PromData? = null
+)
+
+data class PromData(
+    var resultType: String? = null,
+    var result: List<PromResult>? = null
+)
+
+data class PromResult(
+    var metric: PromMetric? = null,
+    var values: List<Any>? = null
+)
+
+data class PromMetric(
+    var group: String? = null
+)
diff --git a/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml b/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml
index 270daee1708ca4791c65ff9f4a9e1a1e7e78c4d3..a91d123628a03bb7fd82821d6f34d7bf1239c154 100644
--- a/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml
+++ b/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml
@@ -3,17 +3,21 @@ benchmark: "benchmarkType"
 load:
   loadType: "NumSensors"
   loadValues:
-    - 10000
+    - 50000
 resources:
   resourceType: "Instances"
   resourceValues:
-    - 2
+    - 1
 slos:
-  - sloType: "slo type"
+  - sloType: "lag trend"
     threshold: 1000
+    prometheusUrl: "http://localhost:32656"
+    externalSloUrl: "http://localhost:80/evaluate-slope"
+    offset: 0
+    warmup: 0
 execution:
   strategy: "LinearSearch"
-  duration: 300
+  duration: 60
   repetitions: 1
   restrictions:
     - "LowerBound"
@@ -33,7 +37,7 @@ configOverrides:
       resource: "uc1-kstreams-deployment.yaml"
       container: "uc-application"
       variableName: "cpu"
-    value: "50m"
+    value: "1000m"
   - patcher:
       type: "ResourceLimitPatcher"
       resource: "uc1-kstreams-deployment.yaml"
diff --git a/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt b/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt
index d50541c2e7b07a6e8efa7c9846661de1cbb450bf..e4ffa950ba9034e019ede941c49c418c18c1e41d 100644
--- a/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt
+++ b/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt
@@ -4,6 +4,7 @@ import io.quarkus.test.junit.QuarkusTest
 import org.junit.jupiter.api.Assertions.assertEquals
 import org.junit.jupiter.api.Test
 import theodolite.patcher.PatcherDefinitionFactory
+import theodolite.benchmark.BenchmarkExecution
 import theodolite.strategies.restriction.LowerBoundRestriction
 import theodolite.strategies.searchstrategy.BinarySearch
 import theodolite.strategies.searchstrategy.CompositeStrategy
@@ -31,7 +32,8 @@ class CompositeStrategyTest {
         val mockResources: List<Resource> = (0..6).map { number -> Resource(number, listOf(emptyPatcherDefinition)) }
         val results = Results()
         val benchmark = TestBenchmark()
-        val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results)
+        val sloChecker: BenchmarkExecution.Slo = BenchmarkExecution.Slo()
+        val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results, sloChecker)
         val linearSearch = LinearSearch(benchmarkExecutor)
         val lowerBoundRestriction = LowerBoundRestriction(results)
         val strategy =
@@ -64,8 +66,9 @@ class CompositeStrategyTest {
         val mockResources: List<Resource> = (0..6).map { number -> Resource(number, listOf(emptyPatcherDefinition)) }
         val results = Results()
         val benchmark = TestBenchmark()
+        val sloChecker: BenchmarkExecution.Slo = BenchmarkExecution.Slo()
         val benchmarkExecutorImpl =
-            TestBenchmarkExecutorImpl(mockResults, benchmark, results)
+            TestBenchmarkExecutorImpl(mockResults, benchmark, results, sloChecker)
         val binarySearch = BinarySearch(benchmarkExecutorImpl)
         val lowerBoundRestriction = LowerBoundRestriction(results)
         val strategy =
@@ -98,7 +101,8 @@ class CompositeStrategyTest {
         val mockResources: List<Resource> = (0..7).map { number -> Resource(number, listOf(emptyPatcherDefinition)) }
         val results = Results()
         val benchmark = TestBenchmark()
-        val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results)
+        val sloChecker: BenchmarkExecution.Slo = BenchmarkExecution.Slo()
+        val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results, sloChecker)
         val binarySearch = BinarySearch(benchmarkExecutor)
         val lowerBoundRestriction = LowerBoundRestriction(results)
         val strategy =
diff --git a/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt b/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt
index bab20b7b56a6b95efd7e616338419b632a8f42d7..2de07d48dbe59313506745e6c97b2ae9a5ed114e 100644
--- a/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt
+++ b/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt
@@ -1,6 +1,7 @@
 package theodolite
 
 import theodolite.benchmark.Benchmark
+import theodolite.benchmark.BenchmarkExecution
 import theodolite.execution.BenchmarkExecutor
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
@@ -10,16 +11,19 @@ import java.time.Duration
 class TestBenchmarkExecutorImpl(
     private val mockResults: Array<Array<Boolean>>,
     benchmark: Benchmark,
-    results: Results
+    results: Results,
+    slo: BenchmarkExecution.Slo
 ) :
     BenchmarkExecutor(
-        benchmark, results, executionDuration = Duration.ofSeconds(1),
-        configurationOverrides = emptyList()
+        benchmark,
+        results,
+        executionDuration = Duration.ofSeconds(1),
+        configurationOverrides = emptyList(),
+        slo = slo
     ) {
 
     override fun runExperiment(load: LoadDimension, res: Resource): Boolean {
         val result = this.mockResults[load.get()][res.get()]
-
         this.results.setResult(Pair(load, res), result)
         return result
     }