diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0dda0bdb6be4434c91801cb6665364fb7fd63d6a..aaef44bad89714bc269af83ba50f00e3d63217a9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,32 +1,227 @@
-workflow:
+stages:
+  - build
+  - test
+  - check
+  - deploy
+
+.dind:
+  tags:
+    - exec-dind
+  # see https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
+  # for image usage and settings for building with TLS and docker in docker
+  image: docker:19.03.1
+  services:
+    - docker:19.03.1-dind
+  variables:
+    DOCKER_TLS_CERTDIR: "/certs"
+
+
+# Theodolite Benchmarks
+
+.benchmarks:
+  image: openjdk:11-jdk
+  tags:
+    - exec-docker
+  variables:
+    GRADLE_OPTS: "-Dorg.gradle.daemon=false"
+  cache:
+    paths:
+      - .gradle
+  before_script:
+    - cd theodolite-benchmarks
+    - export GRADLE_USER_HOME=`pwd`/.gradle
+
+build-benchmarks:
+  stage: build
+  extends: .benchmarks
+  script: ./gradlew --build-cache assemble
+  artifacts:
+    paths:
+      - "theodolite-benchmarks/build/libs/*.jar"
+      - "theodolite-benchmarks/*/build/distributions/*.tar"
+    expire_in: 1 day
+
+test-benchmarks:
+  stage: test
+  extends: .benchmarks
+  needs:
+    - build-benchmarks
+  script: ./gradlew test --continue
+  artifacts:
+    reports:
+      junit:
+        - "theodolite-benchmarks/**/build/test-results/test/TEST-*.xml"
+
+checkstyle-benchmarks:
+  stage: check
+  extends: .benchmarks
+  needs:
+    - build-benchmarks
+    - test-benchmarks
+  script: ./gradlew checkstyle --continue
+  artifacts:
+    paths:
+      - "theodolite-benchmarks/*/build/reports/checkstyle/main.html"
+    when: on_failure
+    expire_in: 1 day
+
+pmd-benchmarks:
+  stage: check
+  extends: .benchmarks
+  needs:
+    - build-benchmarks
+    - test-benchmarks
+  script: ./gradlew pmd --continue
+  artifacts:
+    paths:
+      - "theodolite-benchmarks/*/build/reports/pmd/*.html"
+    when: on_failure
+    expire_in: 1 day
+
+spotbugs-benchmarks:
+  stage: check
+  extends: .benchmarks
+  needs:
+    - build-benchmarks
+    - test-benchmarks
+  script: ./gradlew spotbugs --continue
+  artifacts:
+    paths:
+      - "theodolite-benchmarks/*/build/reports/spotbugs/*.html"
+    when: on_failure
+    expire_in: 1 day
+
+.deploy-benchmarks:
+  stage: deploy
+  extends:
+    - .benchmarks
+    - .dind
+  needs:
+    - build-benchmarks
+    - checkstyle-benchmarks
+    - pmd-benchmarks
+    - spotbugs-benchmarks
+  script:
+    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
+    - docker build --pull -t $IMAGE_NAME ./$JAVA_PROJECT_NAME
+    - "[ ! $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME $CR_HOST/$CR_ORG/$IMAGE_NAME:${DOCKER_TAG_NAME}latest"
+    - "[ ! $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME $CR_HOST/$CR_ORG/$IMAGE_NAME:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
+    - "[ $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME $CR_HOST/$CR_ORG/$IMAGE_NAME:$CI_COMMIT_TAG"
+    - echo $CR_PW | docker login $CR_HOST -u $CR_USER --password-stdin
+    - docker push $CR_HOST/$CR_ORG/$IMAGE_NAME
+    - docker logout
   rules:
-    - if: $CI_MERGE_REQUEST_ID
-      when: never
-    - when: always
+    - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
+      when: always
+    - changes:
+      - 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"
+      when: manual
+      allow_failure: true
 
-stages:
-  - triggers
+deploy-uc1-kstreams-app:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc1-kstreams-app"
+    JAVA_PROJECT_NAME: "uc1-application"
+
+deploy-uc2-kstreams-app:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc2-kstreams-app"
+    JAVA_PROJECT_NAME: "uc2-application"
+
+deploy-uc3-kstreams-app:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc3-kstreams-app"
+    JAVA_PROJECT_NAME: "uc3-application"
+
+deploy-uc4-kstreams-app:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc4-kstreams-app"
+    JAVA_PROJECT_NAME: "uc4-application"
+
+deploy-uc1-load-generator:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc1-workload-generator"
+    JAVA_PROJECT_NAME: "uc1-workload-generator"
 
-benchmarks:
-  stage: triggers
-  trigger:
-    include: benchmarks/.gitlab-ci.yml
-    strategy: depend
+deploy-uc2-load-generator:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc2-workload-generator"
+    JAVA_PROJECT_NAME: "uc2-workload-generator"
+
+deploy-uc3-load-generator:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc3-workload-generator"
+    JAVA_PROJECT_NAME: "uc3-workload-generator"
+
+deploy-uc4-load-generator:
+  extends: .deploy-benchmarks
+  variables:
+    IMAGE_NAME: "theodolite-uc4-workload-generator"
+    JAVA_PROJECT_NAME: "uc4-workload-generator"
+      
+
+# Theodolite Framework
+
+deploy-theodolite:
+  stage: deploy
+  extends:
+    - .dind
+  script:
+    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
+    - docker build --pull -t theodolite ./execution
+    - "[ ! $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"
+    - echo $CR_PW | docker login $CR_HOST -u $CR_USER --password-stdin
+    - docker push $CR_HOST/$CR_ORG/theodolite
+    - docker logout
   rules:
-    - if: "$CI_COMMIT_TAG"
+    - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $CI_COMMIT_TAG"
+      when: always
     - changes:
-      - benchmarks/*
-    - when: manual
+      - execution/**/*
+      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
 
-execution:
-  stage: triggers
-  trigger:
-    include: execution/.gitlab-ci.yml
-    strategy: depend
+
+# 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: "$CI_COMMIT_TAG"
+    - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $CI_COMMIT_TAG"
+      when: always
     - changes:
-      - execution/*
-    - when: manual
+      - 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/benchmarks/.gitlab-ci.yml b/benchmarks/.gitlab-ci.yml
deleted file mode 100644
index 1a4d354701459d4730dab398e0210ab9189d7ad3..0000000000000000000000000000000000000000
--- a/benchmarks/.gitlab-ci.yml
+++ /dev/null
@@ -1,414 +0,0 @@
-image: openjdk:11-jdk
-
-# Disable the Gradle daemon for Continuous Integration servers as correctness
-# is usually a priority over speed in CI environments. Using a fresh
-# runtime for each build is more reliable since the runtime is completely
-# isolated from any previous builds.
-variables:
-  GRADLE_OPTS: "-Dorg.gradle.daemon=false"
-
-cache:
-  paths:
-    - .gradle
-
-before_script:
-  - cd benchmarks
-  - export GRADLE_USER_HOME=`pwd`/.gradle
-
-stages:
-  - build
-  - test
-  - check
-  - deploy
-
-build:
-  stage: build
-  tags:
-    - exec-docker
-  script: ./gradlew --build-cache assemble
-  artifacts:
-    paths:
-      - "benchmarks/build/libs/*.jar"
-      - "benchmarks/*/build/distributions/*.tar"
-    expire_in: 1 day
-
-test:
-  stage: test
-  tags:
-    - exec-docker
-  script: ./gradlew test --continue
-  artifacts:
-    reports:
-      junit:
-        - "benchmarks/**/build/test-results/test/TEST-*.xml"
-
-checkstyle:
-  stage: check
-  tags:
-    - exec-docker
-  script: ./gradlew checkstyle --continue
-  artifacts:
-    paths:
-      - "benchmarks/*/build/reports/checkstyle/main.html"
-    when: on_failure
-    expire_in: 1 day
-
-pmd:
-  stage: check
-  tags:
-    - exec-docker
-  script: ./gradlew pmd --continue
-  artifacts:
-    paths:
-      - "benchmarks/*/build/reports/pmd/*.html"
-    when: on_failure
-    expire_in: 1 day
-
-spotbugs:
-  stage: check
-  tags:
-    - exec-docker
-  script: ./gradlew spotbugs --continue
-  artifacts:
-    paths:
-      - "benchmarks/*/build/reports/spotbugs/*.html"
-    when: on_failure
-    expire_in: 1 day
-
-
-.deploy:
-  stage: deploy
-  tags:
-    - exec-dind
-  # see https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
-  # for image usage and settings for building with TLS and docker in docker
-  image: docker:19.03.1
-  services:
-    - docker:19.03.1-dind
-  variables:
-    DOCKER_TLS_CERTDIR: "/certs"
-  script:
-    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
-    - docker build --pull -t $IMAGE_NAME ./$JAVA_PROJECT_NAME
-    - "[ ! $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME $DOCKERHUB_ORG/$IMAGE_NAME:${DOCKER_TAG_NAME}latest"
-    - "[ ! $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME $DOCKERHUB_ORG/$IMAGE_NAME:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
-    - "[ $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME $DOCKERHUB_ORG/$IMAGE_NAME:$CI_COMMIT_TAG"
-    - echo $DOCKERHUB_PW | docker login -u $DOCKERHUB_ID --password-stdin
-    - docker push $DOCKERHUB_ORG/$IMAGE_NAME
-    - docker logout
-  rules:
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      # - $JAVA_PROJECT_NAME/**/* # hope this can be simplified soon, see #51
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc1-kstreams-app:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc1-kstreams-app"
-    JAVA_PROJECT_NAME: "uc1-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc1-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc2-kstreams-app:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc2-kstreams-app"
-    JAVA_PROJECT_NAME: "uc2-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc2-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc3-kstreams-app:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc3-kstreams-app"
-    JAVA_PROJECT_NAME: "uc3-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc3-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc4-kstreams-app:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc4-kstreams-app"
-    JAVA_PROJECT_NAME: "uc4-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc4-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc1-workload-generator:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc1-workload-generator"
-    JAVA_PROJECT_NAME: "uc1-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc1-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc2-workload-generator:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc2-workload-generator"
-    JAVA_PROJECT_NAME: "uc2-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc2-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc3-workload-generator:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc3-workload-generator"
-    JAVA_PROJECT_NAME: "uc3-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc3-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-uc4-workload-generator:
-  extends: .deploy
-  variables:
-    IMAGE_NAME: "theodolite-uc4-workload-generator"
-    JAVA_PROJECT_NAME: "uc4-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc4-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-.deploy-ghcr:
-  stage: deploy
-  tags:
-    - exec-dind
-  # see https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
-  # for image usage and settings for building with TLS and docker in docker
-  image: docker:19.03.1
-  services:
-    - docker:19.03.1-dind
-  variables:
-    DOCKER_TLS_CERTDIR: "/certs"
-  script:
-    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
-    - docker build --pull -t $IMAGE_NAME ./$JAVA_PROJECT_NAME
-    - "[ ! $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME ghcr.io/$GITHUB_CR_ORG/$IMAGE_NAME:${DOCKER_TAG_NAME}latest"
-    - "[ ! $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME ghcr.io/$GITHUB_CR_ORG/$IMAGE_NAME:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
-    - "[ $CI_COMMIT_TAG ] && docker tag $IMAGE_NAME ghcr.io/$GITHUB_CR_ORG/$IMAGE_NAME:$CI_COMMIT_TAG"
-    - echo $GITHUB_CR_TOKEN | docker login ghcr.io -u $GITHUB_CR_USER --password-stdin
-    - docker push ghcr.io/$GITHUB_CR_ORG/$IMAGE_NAME
-    - docker logout
-  rules:
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      # - $JAVA_PROJECT_NAME/**/* # hope this can be simplified soon, see #51
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc1-kstreams-app:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc1-kstreams-app"
-    JAVA_PROJECT_NAME: "uc1-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc1-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc2-kstreams-app:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc2-kstreams-app"
-    JAVA_PROJECT_NAME: "uc2-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc2-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc3-kstreams-app:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc3-kstreams-app"
-    JAVA_PROJECT_NAME: "uc3-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc3-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc4-kstreams-app:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc4-kstreams-app"
-    JAVA_PROJECT_NAME: "uc4-application"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc4-application/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc1-workload-generator:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc1-workload-generator"
-    JAVA_PROJECT_NAME: "uc1-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc1-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc2-workload-generator:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc2-workload-generator"
-    JAVA_PROJECT_NAME: "uc2-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc2-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc3-workload-generator:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc3-workload-generator"
-    JAVA_PROJECT_NAME: "uc3-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc3-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
-deploy-ghcr-uc4-workload-generator:
-  extends: .deploy-ghcr
-  variables:
-    IMAGE_NAME: "theodolite-uc4-workload-generator"
-    JAVA_PROJECT_NAME: "uc4-workload-generator"
-  rules: # hope this can be simplified soon, see #51
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - benchmarks/uc4-workload-generator/**/*
-      - benchmarks/application-kafkastreams-commons/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $IMAGE_NAME && $JAVA_PROJECT_NAME"
-      when: manual
-      allow_failure: true
-
diff --git a/benchmarks/uc2-application/build.gradle b/benchmarks/uc2-application/build.gradle
deleted file mode 100644
index ea3d8779a0cd5406808df190d623d1508a143b9d..0000000000000000000000000000000000000000
--- a/benchmarks/uc2-application/build.gradle
+++ /dev/null
@@ -1 +0,0 @@
-mainClassName = "theodolite.uc2.application.AggregationService"
diff --git a/benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs b/benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 4e04e2891754324a6e1bf55348b6a38f592bb301..0000000000000000000000000000000000000000
--- a/benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,127 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=true
-cleanup.always_use_this_for_non_static_method_access=true
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=true
-cleanup.correct_indentation=true
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=true
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=true
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=true
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=true
-cleanup.use_this_for_non_static_field_access=true
-cleanup.use_this_for_non_static_field_access_only_if_necessary=false
-cleanup.use_this_for_non_static_method_access=true
-cleanup.use_this_for_non_static_method_access_only_if_necessary=false
-cleanup_profile=_CAU-SE-Style
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CAU-SE-Style
-formatter_settings_version=15
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=true
-sp_cleanup.always_use_this_for_non_static_method_access=true
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=true
-sp_cleanup.correct_indentation=true
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=true
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=true
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=true
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=true
-sp_cleanup.use_this_for_non_static_field_access=true
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
-sp_cleanup.use_this_for_non_static_method_access=true
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
diff --git a/benchmarks/uc4-application/build.gradle b/benchmarks/uc4-application/build.gradle
deleted file mode 100644
index 56663022144166711d6bebce0f6480e358a738b5..0000000000000000000000000000000000000000
--- a/benchmarks/uc4-application/build.gradle
+++ /dev/null
@@ -1 +0,0 @@
-mainClassName = "theodolite.uc4.application.HistoryService"
diff --git a/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 4e04e2891754324a6e1bf55348b6a38f592bb301..0000000000000000000000000000000000000000
--- a/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,127 +0,0 @@
-cleanup.add_default_serial_version_id=true
-cleanup.add_generated_serial_version_id=false
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=false
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=false
-cleanup.always_use_this_for_non_static_field_access=true
-cleanup.always_use_this_for_non_static_method_access=true
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=true
-cleanup.correct_indentation=true
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=true
-cleanup.make_parameters_final=true
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=true
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=true
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=true
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=false
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=true
-cleanup.remove_unused_private_members=false
-cleanup.remove_unused_private_methods=true
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=true
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=true
-cleanup.use_this_for_non_static_field_access=true
-cleanup.use_this_for_non_static_field_access_only_if_necessary=false
-cleanup.use_this_for_non_static_method_access=true
-cleanup.use_this_for_non_static_method_access_only_if_necessary=false
-cleanup_profile=_CAU-SE-Style
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_CAU-SE-Style
-formatter_settings_version=15
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=true
-sp_cleanup.always_use_this_for_non_static_method_access=true
-sp_cleanup.convert_functional_interfaces=false
-sp_cleanup.convert_to_enhanced_for_loop=true
-sp_cleanup.correct_indentation=true
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=true
-sp_cleanup.make_parameters_final=true
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_modifiers=false
-sp_cleanup.remove_redundant_semicolons=true
-sp_cleanup.remove_redundant_type_arguments=true
-sp_cleanup.remove_trailing_whitespaces=true
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=true
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=true
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=true
-sp_cleanup.use_this_for_non_static_field_access=true
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
-sp_cleanup.use_this_for_non_static_method_access=true
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
diff --git a/execution/.gitlab-ci.yml b/execution/.gitlab-ci.yml
deleted file mode 100644
index 5577de7a083708a6bb9b83571f458e2c1fbfb340..0000000000000000000000000000000000000000
--- a/execution/.gitlab-ci.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-stages:
-  - deploy
-
-deploy:
-  stage: deploy
-  tags:
-    - exec-dind
-  image: docker:19.03.1
-  services:
-    - docker:19.03.1-dind
-  variables:
-    DOCKER_TLS_CERTDIR: "/certs"
-  script:
-    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
-    - docker build --pull -t theodolite ./execution
-    - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $DOCKERHUB_ORG/theodolite:${DOCKER_TAG_NAME}latest"
-    - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $DOCKERHUB_ORG/theodolite:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
-    - "[ $CI_COMMIT_TAG ] && docker tag theodolite $DOCKERHUB_ORG/theodolite:$CI_COMMIT_TAG"
-    - echo $DOCKERHUB_PW | docker login -u $DOCKERHUB_ID --password-stdin
-    - docker push $DOCKERHUB_ORG/theodolite
-    - docker logout
-  rules:
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - execution/**/*
-      if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW"
-      when: always
-    - if: "$DOCKERHUB_ORG && $DOCKERHUB_ID && $DOCKERHUB_PW"
-      when: manual
-      allow_failure: true
-  
-deploy-ghcr:
-  stage: deploy
-  tags:
-    - exec-dind
-  image: docker:19.03.1
-  services:
-    - docker:19.03.1-dind
-  variables:
-    DOCKER_TLS_CERTDIR: "/certs"
-  script:
-    - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//')
-    - docker build --pull -t theodolite ./execution
-    - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite ghcr.io/$GITHUB_CR_ORG/theodolite:${DOCKER_TAG_NAME}latest"
-    - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite ghcr.io/$GITHUB_CR_ORG/theodolite:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
-    - "[ $CI_COMMIT_TAG ] && docker tag theodolite ghcr.io/$GITHUB_CR_ORG/theodolite:$CI_COMMIT_TAG"
-    - echo $GITHUB_CR_TOKEN | docker login ghcr.io -u $GITHUB_CR_USER --password-stdin
-    - docker push ghcr.io/$GITHUB_CR_ORG/theodolite
-    - docker logout
-  rules:
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN && $CI_COMMIT_TAG"
-      when: always
-    - changes:
-      - execution/**/*
-      if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN"
-      when: always
-    - if: "$GITHUB_CR_ORG && $GITHUB_CR_USER && $GITHUB_CR_TOKEN"
-      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/execution/run_uc.py b/execution/run_uc.py
index 7f5580f20863482281095aa1fda220393c91e8b0..904b87b377ca2db3f2d4ddd4fb70aba0136cfa21 100644
--- a/execution/run_uc.py
+++ b/execution/run_uc.py
@@ -141,9 +141,9 @@ def start_workload_generator(svc_yaml, wg_yaml, dim_value, uc_id):
     wl_max_records = 150000
     wl_instances = (num_sensors + wl_max_records - 1) // wl_max_records
 
-    # set parameters special for uc 2
-    if uc_id == '2':
-        print('use uc2 stuff')
+    # set parameters special for uc 4
+    if uc_id == '4':
+        print('use uc4 stuff')
         num_nested_groups = dim_value
         num_sensors = 4
         approx_num_sensors = num_sensors ** num_nested_groups
@@ -161,7 +161,7 @@ def start_workload_generator(svc_yaml, wg_yaml, dim_value, uc_id):
 
     replace_env_value(wg_containter['env'], 'NUM_SENSORS', str(num_sensors))
 
-    if uc_id == '2':  # Special configuration for uc2
+    if uc_id == '4':  # Special configuration for UC4
         replace_env_value(
             wg_containter['env'], 'NUM_NESTED_GROUPS', str(num_nested_groups))
 
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 93%
rename from benchmarks/build.gradle
rename to theodolite-benchmarks/build.gradle
index 3cb86b68e9d37c53572c6611fad1057b5505e9cc..ea8fb80bb2c2bac6121dbaaf72f742aa0e9c62bb 100644
--- a/benchmarks/build.gradle
+++ b/theodolite-benchmarks/build.gradle
@@ -67,7 +67,6 @@ configure(useCaseApplications) {
       implementation 'org.apache.kafka:kafka-streams:2.6.0' // enable TransformerSuppliers
       implementation 'com.google.code.gson:gson:2.8.2'
       implementation 'com.google.guava:guava:24.1-jre'
-      implementation 'org.jctools:jctools-core:2.1.1'
       implementation 'org.slf4j:slf4j-simple:1.7.25'
       implementation project(':application-kafkastreams-commons')
 
@@ -82,8 +81,6 @@ configure(useCaseGenerators) {
       // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
       implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
       implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
-      implementation 'com.google.guava:guava:24.1-jre'
-      implementation 'org.jctools:jctools-core:2.1.1'
       implementation 'org.slf4j:slf4j-simple:1.7.25'
 
       // These dependencies are used for the workload-generator-commmon
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 100%
rename from docker-test/uc1-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml
diff --git a/docker-test/uc2-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml
similarity index 91%
rename from docker-test/uc2-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml
index 4b8face83aca11ce09c97074b934dad9a725d7ed..6bb0c1e7d5afccab7724c40eabc30d4c01d59cb6 100755
--- a/docker-test/uc2-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml
@@ -1,9 +1,10 @@
 version: '2'
 services:
   zookeeper:
+    #image: wurstmeister/zookeeper
     image: confluentinc/cp-zookeeper
-    expose:
-      - "9092"
+    ports:
+      - "2181:2181"
     environment:
       ZOOKEEPER_CLIENT_PORT: 2181
   kafka:
@@ -24,10 +25,10 @@ services:
     depends_on:
       - zookeeper
       - kafka
+    #ports:
+    #  - "8081:8081"
     expose:
       - "8081"
-    #ports:
-    #  - 8081:8081
     environment:
       SCHEMA_REGISTRY_HOST_NAME: schema-registry
       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
@@ -39,6 +40,7 @@ services:
     environment:
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
+      KAFKA_WINDOW_DURATION_MINUTES: 60
   uc-wg: 
     image: ghcr.io/cau-se/theodolite-uc2-workload-generator:latest
     depends_on:
@@ -49,5 +51,4 @@ services:
       PORT: 5701
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
-      NUM_SENSORS: 4
-      NUM_NESTED_GROUPS: 4
\ No newline at end of file
+      NUM_SENSORS: 10
diff --git a/docker-test/uc3-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml
similarity index 96%
rename from docker-test/uc3-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml
index 8daf34651a9250381a582a2dc1203b3ebd3c8c25..b4ae8c16f9fc21164134aad62e6ef776225fc7db 100755
--- a/docker-test/uc3-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml
@@ -40,7 +40,6 @@ services:
     environment:
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
-      KAFKA_WINDOW_DURATION_MINUTES: 60
   uc-wg: 
     image: ghcr.io/cau-se/theodolite-uc3-workload-generator:latest
     depends_on:
@@ -51,4 +50,4 @@ services:
       PORT: 5701
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
-      NUM_SENSORS: 10
\ No newline at end of file
+      NUM_SENSORS: 10
diff --git a/docker-test/uc4-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml
similarity index 93%
rename from docker-test/uc4-docker-compose/docker-compose.yml
rename to theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml
index 29ff13913bbfb0769bc2b4c442c88296058c10d7..14b1c1ad38379f45682c8fffa263ca9c9ada2d4d 100755
--- a/docker-test/uc4-docker-compose/docker-compose.yml
+++ b/theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml
@@ -1,10 +1,9 @@
 version: '2'
 services:
   zookeeper:
-    #image: wurstmeister/zookeeper
     image: confluentinc/cp-zookeeper
-    ports:
-      - "2181:2181"
+    expose:
+      - "2181"
     environment:
       ZOOKEEPER_CLIENT_PORT: 2181
   kafka:
@@ -25,10 +24,10 @@ services:
     depends_on:
       - zookeeper
       - kafka
-    #ports:
-    #  - "8081:8081"
     expose:
       - "8081"
+    #ports:
+    #  - 8081:8081
     environment:
       SCHEMA_REGISTRY_HOST_NAME: schema-registry
       SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181'
@@ -50,4 +49,5 @@ services:
       PORT: 5701
       KAFKA_BOOTSTRAP_SERVERS: kafka:9092
       SCHEMA_REGISTRY_URL: http://schema-registry:8081
-      NUM_SENSORS: 10
+      NUM_SENSORS: 4
+      NUM_NESTED_GROUPS: 4
\ No newline at end of file
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/uc2-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc1-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/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/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from benchmarks/workload-generator-commons/.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 55%
rename from benchmarks/uc2-application/Dockerfile
rename to theodolite-benchmarks/uc2-application/Dockerfile
index 99076645ab5e1c3b1a77d2aec7408dc8846f9f51..5177dcede26016990b73467460fd358823c43c76 100644
--- a/benchmarks/uc2-application/Dockerfile
+++ b/theodolite-benchmarks/uc2-application/Dockerfile
@@ -2,5 +2,5 @@ FROM openjdk:11-slim
 
 ADD build/distributions/uc2-application.tar /
 
-CMD   JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
+CMD JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
      /uc2-application/bin/uc2-application
\ No newline at end of file
diff --git a/theodolite-benchmarks/uc2-application/build.gradle b/theodolite-benchmarks/uc2-application/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..e4d3f5346e401def9c9a5a49820d0682eafb0ad3
--- /dev/null
+++ b/theodolite-benchmarks/uc2-application/build.gradle
@@ -0,0 +1 @@
+mainClassName = "theodolite.uc2.application.HistoryService"
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java
similarity index 82%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java
index 349512f988bb182d8851e458a1bce244c756bbfe..1aa28400cc9d55c77518a880d8cc2f48a2823a6b 100644
--- a/benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
+++ b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java
@@ -1,4 +1,4 @@
-package theodolite.uc3.application;
+package theodolite.uc2.application;
 
 import java.time.Duration;
 import java.util.Objects;
@@ -6,7 +6,7 @@ import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
 import theodolite.commons.kafkastreams.ConfigurationKeys;
-import theodolite.uc3.streamprocessing.Uc3KafkaStreamsBuilder;
+import theodolite.uc2.streamprocessing.Uc2KafkaStreamsBuilder;
 import titan.ccp.common.configuration.ServiceConfigurations;
 
 /**
@@ -34,12 +34,12 @@ public class HistoryService {
    *
    */
   private void createKafkaStreamsApplication() {
-    final Uc3KafkaStreamsBuilder uc3KafkaStreamsBuilder = new Uc3KafkaStreamsBuilder(this.config);
-    uc3KafkaStreamsBuilder
+    final Uc2KafkaStreamsBuilder uc2KafkaStreamsBuilder = new Uc2KafkaStreamsBuilder(this.config);
+    uc2KafkaStreamsBuilder
         .outputTopic(this.config.getString(ConfigurationKeys.KAFKA_OUTPUT_TOPIC))
         .windowDuration(Duration.ofMinutes(this.windowDurationMinutes));
 
-    final KafkaStreams kafkaStreams = uc3KafkaStreamsBuilder.build();
+    final KafkaStreams kafkaStreams = uc2KafkaStreamsBuilder.build();
 
     this.stopEvent.thenRun(kafkaStreams::close);
     kafkaStreams.start();
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
similarity index 96%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
index d6d6d4ffb7ebb1236be73dd681c900311853e732..eda7c495a2cff6d58b62a8a6a74ea8e1b2d89aca 100644
--- a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
+++ b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc3.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import com.google.common.math.Stats;
 import java.time.Duration;
@@ -13,7 +13,7 @@ import org.apache.kafka.streams.kstream.Produced;
 import org.apache.kafka.streams.kstream.TimeWindows;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import theodolite.uc3.streamprocessing.util.StatsFactory;
+import theodolite.uc2.streamprocessing.util.StatsFactory;
 import titan.ccp.common.kafka.GenericSerde;
 import titan.ccp.common.kafka.avro.SchemaRegistryAvroSerdeFactory;
 import titan.ccp.model.records.ActivePowerRecord;
diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
similarity index 80%
rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
index 70113271a9d3c23499b85c07bf9d0a76db59f820..1d6019f27cb78f6643e111095edbbdd9f6c03e1b 100644
--- a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
+++ b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc3.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.time.Duration;
 import java.util.Objects;
@@ -11,21 +11,21 @@ import titan.ccp.common.kafka.avro.SchemaRegistryAvroSerdeFactory;
 /**
  * Builder for the Kafka Streams configuration.
  */
-public class Uc3KafkaStreamsBuilder extends KafkaStreamsBuilder {
+public class Uc2KafkaStreamsBuilder extends KafkaStreamsBuilder {
 
   private String outputTopic; // NOPMD
   private Duration windowDuration; // NOPMD
 
-  public Uc3KafkaStreamsBuilder(final Configuration config) {
+  public Uc2KafkaStreamsBuilder(final Configuration config) {
     super(config);
   }
 
-  public Uc3KafkaStreamsBuilder outputTopic(final String outputTopic) {
+  public Uc2KafkaStreamsBuilder outputTopic(final String outputTopic) {
     this.outputTopic = outputTopic;
     return this;
   }
 
-  public Uc3KafkaStreamsBuilder windowDuration(final Duration windowDuration) {
+  public Uc2KafkaStreamsBuilder windowDuration(final Duration windowDuration) {
     this.windowDuration = windowDuration;
     return this;
   }
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/util/StatsFactory.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java
similarity index 91%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/util/StatsFactory.java
rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java
index e97fbcd216c57a8aa965ee7a295c5633fa34810e..e4aff4fc80cea24c20be537f6aa5cda7c2be909a 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/util/StatsFactory.java
+++ b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing.util;
+package theodolite.uc2.streamprocessing.util;
 
 import com.google.common.math.Stats;
 import com.google.common.math.StatsAccumulator;
diff --git a/benchmarks/uc3-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties
similarity index 81%
rename from benchmarks/uc3-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties
index 011406f7ef1e23647eeae150d349f472214cbcd4..15293b1387b96688401bbc48bc2d1615c7b63aba 100644
--- a/benchmarks/uc3-application/src/main/resources/META-INF/application.properties
+++ b/theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties
@@ -1,4 +1,4 @@
-application.name=theodolite-uc3-application
+application.name=theodolite-uc2-application
 application.version=0.0.1
 
 kafka.bootstrap.servers=localhost:9092
diff --git a/benchmarks/uc3-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/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
index 4e04e2891754324a6e1bf55348b6a38f592bb301..fa98ca63d77bdee891150bd6713f70197a75cefc 100644
--- a/benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
+++ b/theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
@@ -32,7 +32,7 @@ cleanup.qualify_static_member_accesses_with_declaring_class=true
 cleanup.qualify_static_method_accesses_with_declaring_class=false
 cleanup.remove_private_constructors=true
 cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
+cleanup.remove_redundant_semicolons=true
 cleanup.remove_redundant_type_arguments=true
 cleanup.remove_trailing_whitespaces=true
 cleanup.remove_trailing_whitespaces_all=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 97%
rename from benchmarks/uc2-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc2-workload-generator/Dockerfile
index 162243e055732de84d1680dba609425f4068dbc2..55593e0295efb0c4f7d4c484b1b104c256f9b958 100644
--- a/benchmarks/uc2-workload-generator/Dockerfile
+++ b/theodolite-benchmarks/uc2-workload-generator/Dockerfile
@@ -1,6 +1,6 @@
-FROM openjdk:11-slim
-
-ADD build/distributions/uc2-workload-generator.tar /
-
-CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
+FROM openjdk:11-slim
+
+ADD build/distributions/uc2-workload-generator.tar /
+
+CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
      /uc2-workload-generator/bin/uc2-workload-generator
\ No newline at end of file
diff --git a/benchmarks/uc2-workload-generator/build.gradle b/theodolite-benchmarks/uc2-workload-generator/build.gradle
similarity index 98%
rename from benchmarks/uc2-workload-generator/build.gradle
rename to theodolite-benchmarks/uc2-workload-generator/build.gradle
index b92e0c2edc54786ea957338b9981922f0a6a7b32..f2c3e5d2e73b655dffd94222ecfbc4fc31b7f722 100644
--- a/benchmarks/uc2-workload-generator/build.gradle
+++ b/theodolite-benchmarks/uc2-workload-generator/build.gradle
@@ -1 +1 @@
-mainClassName = "theodolite.uc2.workloadgenerator.LoadGenerator"
+mainClassName = "theodolite.uc2.workloadgenerator.LoadGenerator"
diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
similarity index 58%
rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
rename to theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
index c0d885ed1730e0d658a7d176d21d7c57529c55b0..2c5b59bc19f703c4216bc02920b62bcf9da5d5fb 100644
--- a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
+++ b/theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
@@ -1,22 +1,19 @@
-package theodolite.uc4.workloadgenerator;
+package theodolite.uc2.workloadgenerator;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Load generator for Theodolite use case UC4.
+ * Load generator for Theodolite use case UC2.
  */
 public final class LoadGenerator {
 
   private static final Logger LOGGER = LoggerFactory.getLogger(LoadGenerator.class);
 
-  private LoadGenerator() {
-    throw new UnsupportedOperationException();
-  }
+  private LoadGenerator() {}
 
   public static void main(final String[] args) {
-    LOGGER.info("Start workload generator for use case UC4");
+    LOGGER.info("Start workload generator for use case UC2");
     theodolite.commons.workloadgeneration.LoadGenerator.fromEnvironment().run();
   }
-
 }
diff --git a/benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 99%
rename from benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
index 4e04e2891754324a6e1bf55348b6a38f592bb301..fa98ca63d77bdee891150bd6713f70197a75cefc 100644
--- a/benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
+++ b/theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs
@@ -32,7 +32,7 @@ cleanup.qualify_static_member_accesses_with_declaring_class=true
 cleanup.qualify_static_method_accesses_with_declaring_class=false
 cleanup.remove_private_constructors=true
 cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
+cleanup.remove_redundant_semicolons=true
 cleanup.remove_redundant_type_arguments=true
 cleanup.remove_trailing_whitespaces=true
 cleanup.remove_trailing_whitespaces_all=true
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 75%
rename from benchmarks/uc3-application/Dockerfile
rename to theodolite-benchmarks/uc3-application/Dockerfile
index c70a24268e114e924b5f06dc7a8979100f5d8455..61141baaf752af4b596c8a04cd0d7cc2e6d740af 100644
--- a/benchmarks/uc3-application/Dockerfile
+++ b/theodolite-benchmarks/uc3-application/Dockerfile
@@ -1,8 +1,6 @@
 FROM openjdk:11-slim
 
-
 ADD build/distributions/uc3-application.tar /
 
-
 CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
-     /uc3-application/bin/uc3-application
\ No newline at end of file
+     /uc3-application/bin/uc3-application
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/uc4-application/src/main/java/theodolite/uc4/application/HistoryService.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
similarity index 83%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/application/HistoryService.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
index 12f35e8dcc532b19e470722094ba5aff07420ad2..84fb29969d2ce37a1d443752790379b1af634df5 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/application/HistoryService.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
@@ -1,11 +1,11 @@
-package theodolite.uc4.application;
+package theodolite.uc3.application;
 
 import java.time.Duration;
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
 import theodolite.commons.kafkastreams.ConfigurationKeys;
-import theodolite.uc4.streamprocessing.Uc4KafkaStreamsBuilder;
+import theodolite.uc3.streamprocessing.Uc3KafkaStreamsBuilder;
 import titan.ccp.common.configuration.ServiceConfigurations;
 
 /**
@@ -32,8 +32,8 @@ public class HistoryService {
    */
   private void createKafkaStreamsApplication() {
     // Use case specific stream configuration
-    final Uc4KafkaStreamsBuilder uc4KafkaStreamsBuilder = new Uc4KafkaStreamsBuilder(this.config);
-    uc4KafkaStreamsBuilder
+    final Uc3KafkaStreamsBuilder uc3KafkaStreamsBuilder = new Uc3KafkaStreamsBuilder(this.config);
+    uc3KafkaStreamsBuilder
         .outputTopic(this.config.getString(ConfigurationKeys.KAFKA_OUTPUT_TOPIC))
         .aggregtionDuration(
             Duration.ofDays(this.config.getInt(ConfigurationKeys.AGGREGATION_DURATION_DAYS)))
@@ -41,7 +41,7 @@ public class HistoryService {
             Duration.ofDays(this.config.getInt(ConfigurationKeys.AGGREGATION_ADVANCE_DAYS)));
 
     // Configuration of the stream application
-    final KafkaStreams kafkaStreams = uc4KafkaStreamsBuilder.build();
+    final KafkaStreams kafkaStreams = uc3KafkaStreamsBuilder.build();
 
     this.stopEvent.thenRun(kafkaStreams::close);
     kafkaStreams.start();
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKey.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java
similarity index 96%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKey.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java
index 97807e3bdecf4000cc2edeed364b8f9d1bc9bb8e..549674f9f546a26d38491195edc2139aeadd785b 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKey.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import java.util.Objects;
 
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeyFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java
similarity index 92%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeyFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java
index edb9ad2b20ac645dfade840130e1be67d2505304..837ca9d32e1a353917adcd3f70eb1af51d801613 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeyFactory.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import java.time.LocalDateTime;
 
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeySerde.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java
similarity index 96%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeySerde.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java
index ff404ab121ca2e60da65f11d89b8ec5849bd600d..6855907e7f357d681c3bd9a6054bf15ad29711ed 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeySerde.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import org.apache.kafka.common.serialization.Serde;
 import titan.ccp.common.kafka.simpleserdes.BufferSerde;
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayRecordFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java
similarity index 95%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayRecordFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java
index 7249309cea036bff9203ce9a7aa32489f69edebe..dfa9b95b08b95bf29621969c56a1e76cdcfc7877 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayRecordFactory.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import com.google.common.math.Stats;
 import org.apache.kafka.streams.kstream.Windowed;
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordDatabaseAdapter.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java
similarity index 98%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordDatabaseAdapter.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java
index 8f693d5d3d309eb73a017b8d33dfcd63e70724fb..342cb3e04cd632fc4e8129de0bad6f12e8119dfa 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordDatabaseAdapter.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsKeyFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java
similarity index 88%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsKeyFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java
index cf67efbd34362c337a956d80f14731cf9b9d6b77..0e414c4a13f1cf7df1da5f0026b6de82e1c1c6ce 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsKeyFactory.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import java.time.LocalDateTime;
 
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsRecordFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java
similarity index 94%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsRecordFactory.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java
index 79eb4b9f76e4429cf84d0af0e56875ea0386e218..31935df9db0949b05e602109b3edc23dee9499af 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsRecordFactory.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import com.google.common.math.Stats;
 import org.apache.avro.specific.SpecificRecord;
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
similarity index 97%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
index a0c87ba4702b9c3f191291a3f04679cc73fcb04b..1e976c07158720b3681d89413a5f277b1395f32d 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import com.google.common.math.Stats;
 import java.time.Duration;
@@ -16,7 +16,7 @@ import org.apache.kafka.streams.kstream.Grouped;
 import org.apache.kafka.streams.kstream.Materialized;
 import org.apache.kafka.streams.kstream.Produced;
 import org.apache.kafka.streams.kstream.TimeWindows;
-import theodolite.uc4.streamprocessing.util.StatsFactory;
+import theodolite.uc3.streamprocessing.util.StatsFactory;
 import titan.ccp.common.kafka.GenericSerde;
 import titan.ccp.common.kafka.avro.SchemaRegistryAvroSerdeFactory;
 import titan.ccp.model.records.ActivePowerRecord;
diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
similarity index 80%
rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
index 67c652967194f59db560b8ad6fd86410725b3c9c..ea9b064602b1aa7cf7350826da18990ae3191d43 100644
--- a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
+++ b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc4.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import java.time.Duration;
 import java.util.Objects;
@@ -11,27 +11,27 @@ import titan.ccp.common.kafka.avro.SchemaRegistryAvroSerdeFactory;
 /**
  * Builder for the Kafka Streams configuration.
  */
-public class Uc4KafkaStreamsBuilder extends KafkaStreamsBuilder {
+public class Uc3KafkaStreamsBuilder extends KafkaStreamsBuilder {
 
   private String outputTopic; // NOPMD
   private Duration aggregtionDuration; // NOPMD
   private Duration aggregationAdvance; // NOPMD
 
-  public Uc4KafkaStreamsBuilder(final Configuration config) {
+  public Uc3KafkaStreamsBuilder(final Configuration config) {
     super(config);
   }
 
-  public Uc4KafkaStreamsBuilder outputTopic(final String outputTopic) {
+  public Uc3KafkaStreamsBuilder outputTopic(final String outputTopic) {
     this.outputTopic = outputTopic;
     return this;
   }
 
-  public Uc4KafkaStreamsBuilder aggregtionDuration(final Duration aggregtionDuration) {
+  public Uc3KafkaStreamsBuilder aggregtionDuration(final Duration aggregtionDuration) {
     this.aggregtionDuration = aggregtionDuration;
     return this;
   }
 
-  public Uc4KafkaStreamsBuilder aggregationAdvance(final Duration aggregationAdvance) {
+  public Uc3KafkaStreamsBuilder aggregationAdvance(final Duration aggregationAdvance) {
     this.aggregationAdvance = aggregationAdvance;
     return this;
   }
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/uc4-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties
similarity index 83%
rename from benchmarks/uc4-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties
index b46681533e63bf86a51439778a46940da348559d..1273441a61763325c812541e1af8c243f81a31a5 100644
--- a/benchmarks/uc4-application/src/main/resources/META-INF/application.properties
+++ b/theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties
@@ -1,4 +1,4 @@
-application.name=theodolite-uc4-application
+application.name=theodolite-uc3-application
 application.version=0.0.1
 
 kafka.bootstrap.servers=localhost:9092
diff --git a/benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
similarity index 99%
rename from benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
index 4e04e2891754324a6e1bf55348b6a38f592bb301..fa98ca63d77bdee891150bd6713f70197a75cefc 100644
--- a/benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs
+++ b/theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs
@@ -32,7 +32,7 @@ cleanup.qualify_static_member_accesses_with_declaring_class=true
 cleanup.qualify_static_method_accesses_with_declaring_class=false
 cleanup.remove_private_constructors=true
 cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
+cleanup.remove_redundant_semicolons=true
 cleanup.remove_redundant_type_arguments=true
 cleanup.remove_trailing_whitespaces=true
 cleanup.remove_trailing_whitespaces_all=true
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 71%
rename from benchmarks/uc3-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc3-workload-generator/Dockerfile
index 6efd5ec6163815c467ef22e18f3d2cc1e0e3259a..8422c9d5371b86ced0a38c141c461aef452133ac 100644
--- a/benchmarks/uc3-workload-generator/Dockerfile
+++ b/theodolite-benchmarks/uc3-workload-generator/Dockerfile
@@ -1,6 +1,6 @@
-FROM openjdk:11-slim
-
-ADD build/distributions/uc3-workload-generator.tar /
-
-CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
-     /uc3-workload-generator/bin/uc3-workload-generator
\ No newline at end of file
+FROM openjdk:11-slim
+
+ADD build/distributions/uc3-workload-generator.tar /
+
+CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
+     /uc3-workload-generator/bin/uc3-workload-generator
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 85%
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
index 662113fd1ae76e64d13933a01d18d9d08e950613..97527abfdd86f5ea39c20c3da31cd7cd26b674e5 100644
--- 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
@@ -10,10 +10,13 @@ public final class LoadGenerator {
 
   private static final Logger LOGGER = LoggerFactory.getLogger(LoadGenerator.class);
 
-  private LoadGenerator() {}
+  private LoadGenerator() {
+    throw new UnsupportedOperationException();
+  }
 
   public static void main(final String[] args) {
     LOGGER.info("Start workload generator for use case UC3");
     theodolite.commons.workloadgeneration.LoadGenerator.fromEnvironment().run();
   }
+
 }
diff --git a/benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
similarity index 99%
rename from benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
rename to theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
index 4e04e2891754324a6e1bf55348b6a38f592bb301..fa98ca63d77bdee891150bd6713f70197a75cefc 100644
--- a/benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs
+++ b/theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs
@@ -32,7 +32,7 @@ cleanup.qualify_static_member_accesses_with_declaring_class=true
 cleanup.qualify_static_method_accesses_with_declaring_class=false
 cleanup.remove_private_constructors=true
 cleanup.remove_redundant_modifiers=false
-cleanup.remove_redundant_semicolons=false
+cleanup.remove_redundant_semicolons=true
 cleanup.remove_redundant_type_arguments=true
 cleanup.remove_trailing_whitespaces=true
 cleanup.remove_trailing_whitespaces_all=true
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 54%
rename from benchmarks/uc4-application/Dockerfile
rename to theodolite-benchmarks/uc4-application/Dockerfile
index 8cb65188ab9885af0dc4e243319969626cb74d62..add251c0ef11324830bcada9174fbbdecc18d532 100644
--- a/benchmarks/uc4-application/Dockerfile
+++ b/theodolite-benchmarks/uc4-application/Dockerfile
@@ -1,8 +1,6 @@
 FROM openjdk:11-slim
 
-
 ADD build/distributions/uc4-application.tar /
 
-
-CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
+CMD JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
      /uc4-application/bin/uc4-application
diff --git a/benchmarks/uc2-application/README.md b/theodolite-benchmarks/uc4-application/README.md
similarity index 100%
rename from benchmarks/uc2-application/README.md
rename to theodolite-benchmarks/uc4-application/README.md
diff --git a/theodolite-benchmarks/uc4-application/build.gradle b/theodolite-benchmarks/uc4-application/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..9cb1b311d8f50769d371952db886e4a00a454591
--- /dev/null
+++ b/theodolite-benchmarks/uc4-application/build.gradle
@@ -0,0 +1 @@
+mainClassName = "theodolite.uc4.application.AggregationService"
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/application/AggregationService.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java
similarity index 85%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/application/AggregationService.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java
index 2f828278f5a3033c3e479bf82f3c8c5d9d4c380c..5c9d0910e7fbc60e58b13fc838f7ef2407de2aa3 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/application/AggregationService.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java
@@ -1,11 +1,11 @@
-package theodolite.uc2.application;
+package theodolite.uc4.application;
 
 import java.time.Duration;
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
 import theodolite.commons.kafkastreams.ConfigurationKeys;
-import theodolite.uc2.streamprocessing.Uc2KafkaStreamsBuilder;
+import theodolite.uc4.streamprocessing.Uc4KafkaStreamsBuilder;
 import titan.ccp.common.configuration.ServiceConfigurations;
 
 /**
@@ -36,15 +36,15 @@ public class AggregationService {
    * @param clusterSession the database session which the application should use.
    */
   private void createKafkaStreamsApplication() {
-    final Uc2KafkaStreamsBuilder uc2KafkaStreamsBuilder = new Uc2KafkaStreamsBuilder(this.config);
-    uc2KafkaStreamsBuilder
+    final Uc4KafkaStreamsBuilder uc4KafkaStreamsBuilder = new Uc4KafkaStreamsBuilder(this.config);
+    uc4KafkaStreamsBuilder
         .feedbackTopic(this.config.getString(ConfigurationKeys.KAFKA_FEEDBACK_TOPIC))
         .outputTopic(this.config.getString(ConfigurationKeys.KAFKA_OUTPUT_TOPIC))
         .configurationTopic(this.config.getString(ConfigurationKeys.KAFKA_CONFIGURATION_TOPIC))
         .emitPeriod(Duration.ofMillis(this.config.getLong(ConfigurationKeys.EMIT_PERIOD_MS)))
         .gracePeriod(Duration.ofMillis(this.config.getLong(ConfigurationKeys.GRACE_PERIOD_MS)));
 
-    final KafkaStreams kafkaStreams = uc2KafkaStreamsBuilder.build();
+    final KafkaStreams kafkaStreams = uc4KafkaStreamsBuilder.build();
 
     this.stopEvent.thenRun(kafkaStreams::close);
     kafkaStreams.start();
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformer.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java
similarity index 99%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformer.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java
index d4f9097ad0fa176842872e43f2f69a8616a65166..db28c86bce79caa4345a3a2bc7914c3e2bbd1a32 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformer.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Map;
 import java.util.Optional;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformerSupplier.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java
similarity index 97%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformerSupplier.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java
index 2b2d71c2f95d052cee19394e3e62e674776f8627..d17757d6800890eaf5260af9c25914344ca4a625 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformerSupplier.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Map;
 import java.util.Optional;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformer.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java
similarity index 98%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformer.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java
index 724c7f6e2eaebc7be53f03b89d143d885c4a055c..d3500adff664cba8f3f92707a0adba34534404b7 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformer.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import com.google.common.base.MoreObjects;
 import java.util.ArrayList;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformerSupplier.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java
similarity index 96%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformerSupplier.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java
index 7d9a7df3d465260623abef2b13e9f3765925bc57..51c7ce1f6cb144c88356ef1b32bdfce400e1ffb4 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformerSupplier.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Map;
 import java.util.Set;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointRecordParents.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java
similarity index 96%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointRecordParents.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java
index cba05f1ed8e585d5c31aaa92207e0d2854436736..e9a5a824e43dfbab83151da5c2a8f18f9105f494 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointRecordParents.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Objects;
 import java.util.Set;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/OptionalParentsSerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java
similarity index 97%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/OptionalParentsSerde.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java
index 5cb8f1ed8fcc1cecff1eefa4922531555a78c25f..a1e9767da047951e04d4c3914c2d1b36bd18626b 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/OptionalParentsSerde.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.HashSet;
 import java.util.Optional;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ParentsSerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java
similarity index 96%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ParentsSerde.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java
index 266eaad015979a9e4ae748f7647ddcaf5947c78b..df6f848b5dfde10a96aceaf4d4a293364d52b982 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ParentsSerde.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.HashSet;
 import java.util.Set;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/RecordAggregator.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java
similarity index 97%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/RecordAggregator.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java
index 9564e994da8fc909147bec76097c737f14247868..34ef3762d6a3219958329762ce6e39844684068a 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/RecordAggregator.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import org.apache.kafka.streams.kstream.Windowed;
 import titan.ccp.model.records.ActivePowerRecord;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKey.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java
similarity index 96%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKey.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java
index a4fb5b33966882b94d46c96282bdaaed92d67ebd..667cc6d5ee83a41f7c04fc8074a18ef1a9422b0e 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKey.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Objects;
 
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKeySerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java
similarity index 95%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKeySerde.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java
index d6773c6159f1d04ddf1c3f36fd25447575befce8..63b9e44b5a7bde8f47fe7620b286aefa7fc60841 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKeySerde.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import org.apache.kafka.common.serialization.Serde;
 import titan.ccp.common.kafka.simpleserdes.BufferSerde;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
similarity index 99%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
index 74e9bb99b80efec4c27d7eb50668d622a5d951f9..623870313cd341d0594fee38d2fd0ae297abbeae 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.time.Duration;
 import java.util.Properties;
diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
similarity index 80%
rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
index 7e077b101c0e1bfab359fc347ffe8c4acc9b88fc..9f1af3ba066bcdfef7f8e9073947d570a1327515 100644
--- a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
+++ b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.time.Duration;
 import java.util.Objects;
@@ -11,7 +11,7 @@ import titan.ccp.common.kafka.avro.SchemaRegistryAvroSerdeFactory;
 /**
  * Builder for the Kafka Streams configuration.
  */
-public class Uc2KafkaStreamsBuilder extends KafkaStreamsBuilder { // NOPMD builder method
+public class Uc4KafkaStreamsBuilder extends KafkaStreamsBuilder { // NOPMD builder method
 
   private static final Duration EMIT_PERIOD_DEFAULT = Duration.ofSeconds(1);
   private static final Duration GRACE_PERIOD_DEFAULT = Duration.ZERO;
@@ -22,31 +22,31 @@ public class Uc2KafkaStreamsBuilder extends KafkaStreamsBuilder { // NOPMD build
   private Duration emitPeriod; // NOPMD
   private Duration gracePeriod; // NOPMD
 
-  public Uc2KafkaStreamsBuilder(final Configuration config) {
+  public Uc4KafkaStreamsBuilder(final Configuration config) {
     super(config);
   }
 
-  public Uc2KafkaStreamsBuilder feedbackTopic(final String feedbackTopic) {
+  public Uc4KafkaStreamsBuilder feedbackTopic(final String feedbackTopic) {
     this.feedbackTopic = feedbackTopic;
     return this;
   }
 
-  public Uc2KafkaStreamsBuilder outputTopic(final String outputTopic) {
+  public Uc4KafkaStreamsBuilder outputTopic(final String outputTopic) {
     this.outputTopic = outputTopic;
     return this;
   }
 
-  public Uc2KafkaStreamsBuilder configurationTopic(final String configurationTopic) {
+  public Uc4KafkaStreamsBuilder configurationTopic(final String configurationTopic) {
     this.configurationTopic = configurationTopic;
     return this;
   }
 
-  public Uc2KafkaStreamsBuilder emitPeriod(final Duration emitPeriod) {
+  public Uc4KafkaStreamsBuilder emitPeriod(final Duration emitPeriod) {
     this.emitPeriod = Objects.requireNonNull(emitPeriod);
     return this;
   }
 
-  public Uc2KafkaStreamsBuilder gracePeriod(final Duration gracePeriod) {
+  public Uc4KafkaStreamsBuilder gracePeriod(final Duration gracePeriod) {
     this.gracePeriod = Objects.requireNonNull(gracePeriod);
     return this;
   }
diff --git a/benchmarks/uc2-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties
similarity index 86%
rename from benchmarks/uc2-application/src/main/resources/META-INF/application.properties
rename to theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties
index 8f1af5f590eff7f2b12706d61a7c89d9152f7949..ce06091076e6ff7f9ede355c7f54c12b3d872119 100644
--- a/benchmarks/uc2-application/src/main/resources/META-INF/application.properties
+++ b/theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties
@@ -1,4 +1,4 @@
-application.name=theodolite-uc2-application
+application.name=theodolite-uc4-application
 application.version=0.0.1
 
 kafka.bootstrap.servers=localhost:9092
diff --git a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/OptionalParentsSerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java
similarity index 95%
rename from benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/OptionalParentsSerdeTest.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java
index 54e8c460e642d53bb013ef6888570d6fc36ff614..600fc0b15ccc3ac3d902565fba1d073e37d98d0f 100644
--- a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/OptionalParentsSerdeTest.java
+++ b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Optional;
 import java.util.Set;
diff --git a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/ParentsSerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java
similarity index 91%
rename from benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/ParentsSerdeTest.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java
index f12604d6a19ca36e9c151210005c910b37908307..994593e27914af2ad56693e4b08b8143b27000b7 100644
--- a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/ParentsSerdeTest.java
+++ b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Set;
 import org.junit.Test;
diff --git a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SensorParentKeySerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java
similarity index 92%
rename from benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SensorParentKeySerdeTest.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java
index 7ca99bcb79baeb5f95a8270b99a559f2f108867e..34f87fa98ca7de7d6ca24a49a73729e5ecc2e74b 100644
--- a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SensorParentKeySerdeTest.java
+++ b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import org.junit.Test;
 
diff --git a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTester.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java
similarity index 94%
rename from benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTester.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java
index 8e9f5a3608e5bae032c6e79b7cd059a0776987c2..b5d5f942dac068379fe90a7462545adb7a11e7df 100644
--- a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTester.java
+++ b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import static org.junit.Assert.assertEquals;
 import java.util.function.Function;
diff --git a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTesterFactory.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java
similarity index 94%
rename from benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTesterFactory.java
rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java
index 5cdbfc60574bfc924423516f80ec61850853bcff..e8083ed778c450ef6717ca7b9c73daa3d96a7af3 100644
--- a/benchmarks/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTesterFactory.java
+++ b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import org.apache.kafka.common.serialization.Serde;
 
diff --git a/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..fa98ca63d77bdee891150bd6713f70197a75cefc
--- /dev/null
+++ b/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=true
+cleanup.always_use_this_for_non_static_method_access=true
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=true
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=true
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=true
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=false
+cleanup_profile=_CAU-SE-Style
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CAU-SE-Style
+formatter_settings_version=15
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=;
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=true
+sp_cleanup.always_use_this_for_non_static_method_access=true
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
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 60%
rename from benchmarks/uc4-workload-generator/Dockerfile
rename to theodolite-benchmarks/uc4-workload-generator/Dockerfile
index 8f077637acb82e23ee69a8df749baeb72b3098af..f39923e59d3079d3b163ffc5d2e4906599de026d 100644
--- a/benchmarks/uc4-workload-generator/Dockerfile
+++ b/theodolite-benchmarks/uc4-workload-generator/Dockerfile
@@ -2,5 +2,5 @@ FROM openjdk:11-slim
 
 ADD build/distributions/uc4-workload-generator.tar /
 
-CMD  JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
+CMD JAVA_OPTS="$JAVA_OPTS -Dorg.slf4j.simpleLogger.defaultLogLevel=$LOG_LEVEL" \
      /uc4-workload-generator/bin/uc4-workload-generator
diff --git a/benchmarks/uc4-workload-generator/build.gradle b/theodolite-benchmarks/uc4-workload-generator/build.gradle
similarity index 98%
rename from benchmarks/uc4-workload-generator/build.gradle
rename to theodolite-benchmarks/uc4-workload-generator/build.gradle
index 76bbce013b67bab325bac06c1986693da3028f0c..8865ec9391213f3d8c52be2366573dee09652087 100644
--- a/benchmarks/uc4-workload-generator/build.gradle
+++ b/theodolite-benchmarks/uc4-workload-generator/build.gradle
@@ -1 +1 @@
-mainClassName = "theodolite.uc4.workloadgenerator.LoadGenerator"
+mainClassName = "theodolite.uc4.workloadgenerator.LoadGenerator"
diff --git a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/ConfigPublisher.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java
similarity index 98%
rename from benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/ConfigPublisher.java
rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java
index ad24e8e4bc8f86b7ed4d5dc2822622f8da22d6d1..ad0ee7082da9116f9ccb66a79d48b36bfb30da2e 100644
--- a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/ConfigPublisher.java
+++ b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.workloadgenerator;
+package theodolite.uc4.workloadgenerator;
 
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
diff --git a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
similarity index 93%
rename from benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
index 826387c484455fed4a7accb5dda56a66a4b63713..8320d16b98fa1d253064d08397d5df1bb8e17b79 100644
--- a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
+++ b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.workloadgenerator;
+package theodolite.uc4.workloadgenerator;
 
 import java.util.Objects;
 import org.slf4j.Logger;
@@ -8,7 +8,7 @@ import titan.ccp.configuration.events.Event;
 import titan.ccp.model.sensorregistry.SensorRegistry;
 
 /**
- * Load generator for Theodolite use case UC2.
+ * Load generator for Theodolite use case UC4.
  */
 public final class LoadGenerator {
 
@@ -39,7 +39,7 @@ public final class LoadGenerator {
     final SensorRegistry sensorRegistry =
         new SensorRegistryBuilder(numNestedGroups, numSensors).build();
 
-    LOGGER.info("Start workload generator for use case UC2");
+    LOGGER.info("Start workload generator for use case UC4");
     theodolite.commons.workloadgeneration.LoadGenerator.fromEnvironment()
         .withKeySpace(new KeySpace("s_", sensorRegistry.getMachineSensors().size()))
         .withBeforeAction(() -> {
diff --git a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/SensorRegistryBuilder.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java
similarity index 97%
rename from benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/SensorRegistryBuilder.java
rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java
index 7c34ac89471386f4ddd508a304f2197602beab27..60303056a01466b908b73e51377427f5d8347441 100644
--- a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/SensorRegistryBuilder.java
+++ b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.workloadgenerator;
+package theodolite.uc4.workloadgenerator;
 
 import titan.ccp.model.sensorregistry.MutableAggregatedSensor;
 import titan.ccp.model.sensorregistry.MutableSensorRegistry;
diff --git a/benchmarks/uc2-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/uc2-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/uc2-workload-generator/src/test/java/theodolite/uc2/workloadgenerator/SensorRegistryBuilderTest.java b/theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java
similarity index 97%
rename from benchmarks/uc2-workload-generator/src/test/java/theodolite/uc2/workloadgenerator/SensorRegistryBuilderTest.java
rename to theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java
index 17b208edac4acafa92b7a75e053e2fe97a9afdb6..424c84ec96cdd90077fb7934686cd021b040e732 100644
--- a/benchmarks/uc2-workload-generator/src/test/java/theodolite/uc2/workloadgenerator/SensorRegistryBuilderTest.java
+++ b/theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java
@@ -1,4 +1,4 @@
-package theodolite.uc2.workloadgenerator;
+package theodolite.uc4.workloadgenerator;
 
 
 import java.util.Collection;
diff --git a/theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..fa98ca63d77bdee891150bd6713f70197a75cefc
--- /dev/null
+++ b/theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=true
+cleanup.always_use_this_for_non_static_method_access=true
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=true
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=true
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=true
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_modifiers=false
+cleanup.remove_redundant_semicolons=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=false
+cleanup_profile=_CAU-SE-Style
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_CAU-SE-Style
+formatter_settings_version=15
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=;
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=true
+sp_cleanup.always_use_this_for_non_static_method_access=true
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=true
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_semicolons=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=true
+sp_cleanup.use_this_for_non_static_field_access=true
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false
+sp_cleanup.use_this_for_non_static_method_access=true
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=false
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 100%
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
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