diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7559bf2824b2d2db24ec4915667a4ba4a0fc073e..433facfa99765228af9b753cf88378fc9d939a88 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,28 +15,6 @@ stages:
   variables:
     DOCKER_TLS_CERTDIR: "/certs"
 
-
-# Theodolite Docs
-
-build-docs:
-  stage: build
-  image: ruby:2.7
-  tags:
-    - exec-docker
-  cache:
-    paths:
-      - docs/vendor
-  before_script:
-    - cd docs
-    - gem install bundler
-    - bundle config set --local path 'vendor'
-    - bundle install
-  script: bundle exec jekyll build
-  artifacts:
-    paths:
-      - docs/_site
-
-
 # Theodolite Helm Chart
 
 lint-helm:
diff --git a/docs/.gitignore b/docs/.gitignore
deleted file mode 100644
index f40fbd8ba564ea28e0a2501e2921909467b39887..0000000000000000000000000000000000000000
--- a/docs/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-_site
-.sass-cache
-.jekyll-cache
-.jekyll-metadata
-vendor
diff --git a/docs/Gemfile b/docs/Gemfile
deleted file mode 100644
index ef3436c16b884aaca76405cbf09fef1a42b7be1e..0000000000000000000000000000000000000000
--- a/docs/Gemfile
+++ /dev/null
@@ -1,31 +0,0 @@
-source "https://rubygems.org"
-# Hello! This is where you manage which Jekyll version is used to run.
-# When you want to use a different version, change it below, save the
-# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
-#
-#     bundle exec jekyll serve
-#
-# This will help ensure the proper Jekyll version is running.
-# Happy Jekylling!
-#gem "jekyll", "~> 4.2.0"
-# This is the default theme for new Jekyll sites. You may change this to anything you like.
-gem "minima", "~> 2.5"
-# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
-# uncomment the line below. To upgrade, run `bundle update github-pages`.
-# gem "github-pages", group: :jekyll_plugins
-gem "github-pages", "~> 215", group: :jekyll_plugins
-# If you have any plugins, put them here!
-#group :jekyll_plugins do
-  #gem "jekyll-feed", "~> 0.12"
-#end
-
-# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
-# and associated library.
-platforms :mingw, :x64_mingw, :mswin, :jruby do
-  gem "tzinfo", "~> 1.2"
-  gem "tzinfo-data"
-end
-
-# Performance-booster for watching directories on Windows
-gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
-
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
deleted file mode 100644
index c02c195db7e5a655feab6e738fb4c4f0ba58af33..0000000000000000000000000000000000000000
--- a/docs/Gemfile.lock
+++ /dev/null
@@ -1,276 +0,0 @@
-GEM
-  remote: https://rubygems.org/
-  specs:
-    activesupport (6.0.4)
-      concurrent-ruby (~> 1.0, >= 1.0.2)
-      i18n (>= 0.7, < 2)
-      minitest (~> 5.1)
-      tzinfo (~> 1.1)
-      zeitwerk (~> 2.2, >= 2.2.2)
-    addressable (2.7.0)
-      public_suffix (>= 2.0.2, < 5.0)
-    coffee-script (2.4.1)
-      coffee-script-source
-      execjs
-    coffee-script-source (1.11.1)
-    colorator (1.1.0)
-    commonmarker (0.17.13)
-      ruby-enum (~> 0.5)
-    concurrent-ruby (1.1.9)
-    dnsruby (1.61.7)
-      simpleidn (~> 0.1)
-    em-websocket (0.5.2)
-      eventmachine (>= 0.12.9)
-      http_parser.rb (~> 0.6.0)
-    ethon (0.14.0)
-      ffi (>= 1.15.0)
-    eventmachine (1.2.7)
-    execjs (2.8.1)
-    faraday (1.4.3)
-      faraday-em_http (~> 1.0)
-      faraday-em_synchrony (~> 1.0)
-      faraday-excon (~> 1.1)
-      faraday-net_http (~> 1.0)
-      faraday-net_http_persistent (~> 1.1)
-      multipart-post (>= 1.2, < 3)
-      ruby2_keywords (>= 0.0.4)
-    faraday-em_http (1.0.0)
-    faraday-em_synchrony (1.0.0)
-    faraday-excon (1.1.0)
-    faraday-net_http (1.0.1)
-    faraday-net_http_persistent (1.1.0)
-    ffi (1.15.3)
-    forwardable-extended (2.6.0)
-    gemoji (3.0.1)
-    github-pages (215)
-      github-pages-health-check (= 1.17.2)
-      jekyll (= 3.9.0)
-      jekyll-avatar (= 0.7.0)
-      jekyll-coffeescript (= 1.1.1)
-      jekyll-commonmark-ghpages (= 0.1.6)
-      jekyll-default-layout (= 0.1.4)
-      jekyll-feed (= 0.15.1)
-      jekyll-gist (= 1.5.0)
-      jekyll-github-metadata (= 2.13.0)
-      jekyll-mentions (= 1.6.0)
-      jekyll-optional-front-matter (= 0.3.2)
-      jekyll-paginate (= 1.1.0)
-      jekyll-readme-index (= 0.3.0)
-      jekyll-redirect-from (= 0.16.0)
-      jekyll-relative-links (= 0.6.1)
-      jekyll-remote-theme (= 0.4.3)
-      jekyll-sass-converter (= 1.5.2)
-      jekyll-seo-tag (= 2.7.1)
-      jekyll-sitemap (= 1.4.0)
-      jekyll-swiss (= 1.0.0)
-      jekyll-theme-architect (= 0.1.1)
-      jekyll-theme-cayman (= 0.1.1)
-      jekyll-theme-dinky (= 0.1.1)
-      jekyll-theme-hacker (= 0.1.2)
-      jekyll-theme-leap-day (= 0.1.1)
-      jekyll-theme-merlot (= 0.1.1)
-      jekyll-theme-midnight (= 0.1.1)
-      jekyll-theme-minimal (= 0.1.1)
-      jekyll-theme-modernist (= 0.1.1)
-      jekyll-theme-primer (= 0.5.4)
-      jekyll-theme-slate (= 0.1.1)
-      jekyll-theme-tactile (= 0.1.1)
-      jekyll-theme-time-machine (= 0.1.1)
-      jekyll-titles-from-headings (= 0.5.3)
-      jemoji (= 0.12.0)
-      kramdown (= 2.3.1)
-      kramdown-parser-gfm (= 1.1.0)
-      liquid (= 4.0.3)
-      mercenary (~> 0.3)
-      minima (= 2.5.1)
-      nokogiri (>= 1.10.4, < 2.0)
-      rouge (= 3.26.0)
-      terminal-table (~> 1.4)
-    github-pages-health-check (1.17.2)
-      addressable (~> 2.3)
-      dnsruby (~> 1.60)
-      octokit (~> 4.0)
-      public_suffix (>= 2.0.2, < 5.0)
-      typhoeus (~> 1.3)
-    html-pipeline (2.14.0)
-      activesupport (>= 2)
-      nokogiri (>= 1.4)
-    http_parser.rb (0.6.0)
-    i18n (0.9.5)
-      concurrent-ruby (~> 1.0)
-    jekyll (3.9.0)
-      addressable (~> 2.4)
-      colorator (~> 1.0)
-      em-websocket (~> 0.5)
-      i18n (~> 0.7)
-      jekyll-sass-converter (~> 1.0)
-      jekyll-watch (~> 2.0)
-      kramdown (>= 1.17, < 3)
-      liquid (~> 4.0)
-      mercenary (~> 0.3.3)
-      pathutil (~> 0.9)
-      rouge (>= 1.7, < 4)
-      safe_yaml (~> 1.0)
-    jekyll-avatar (0.7.0)
-      jekyll (>= 3.0, < 5.0)
-    jekyll-coffeescript (1.1.1)
-      coffee-script (~> 2.2)
-      coffee-script-source (~> 1.11.1)
-    jekyll-commonmark (1.3.1)
-      commonmarker (~> 0.14)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-commonmark-ghpages (0.1.6)
-      commonmarker (~> 0.17.6)
-      jekyll-commonmark (~> 1.2)
-      rouge (>= 2.0, < 4.0)
-    jekyll-default-layout (0.1.4)
-      jekyll (~> 3.0)
-    jekyll-feed (0.15.1)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-gist (1.5.0)
-      octokit (~> 4.2)
-    jekyll-github-metadata (2.13.0)
-      jekyll (>= 3.4, < 5.0)
-      octokit (~> 4.0, != 4.4.0)
-    jekyll-mentions (1.6.0)
-      html-pipeline (~> 2.3)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-optional-front-matter (0.3.2)
-      jekyll (>= 3.0, < 5.0)
-    jekyll-paginate (1.1.0)
-    jekyll-readme-index (0.3.0)
-      jekyll (>= 3.0, < 5.0)
-    jekyll-redirect-from (0.16.0)
-      jekyll (>= 3.3, < 5.0)
-    jekyll-relative-links (0.6.1)
-      jekyll (>= 3.3, < 5.0)
-    jekyll-remote-theme (0.4.3)
-      addressable (~> 2.0)
-      jekyll (>= 3.5, < 5.0)
-      jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
-      rubyzip (>= 1.3.0, < 3.0)
-    jekyll-sass-converter (1.5.2)
-      sass (~> 3.4)
-    jekyll-seo-tag (2.7.1)
-      jekyll (>= 3.8, < 5.0)
-    jekyll-sitemap (1.4.0)
-      jekyll (>= 3.7, < 5.0)
-    jekyll-swiss (1.0.0)
-    jekyll-theme-architect (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-cayman (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-dinky (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-hacker (0.1.2)
-      jekyll (> 3.5, < 5.0)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-leap-day (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-merlot (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-midnight (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-minimal (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-modernist (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-primer (0.5.4)
-      jekyll (> 3.5, < 5.0)
-      jekyll-github-metadata (~> 2.9)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-slate (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-tactile (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-theme-time-machine (0.1.1)
-      jekyll (~> 3.5)
-      jekyll-seo-tag (~> 2.0)
-    jekyll-titles-from-headings (0.5.3)
-      jekyll (>= 3.3, < 5.0)
-    jekyll-watch (2.2.1)
-      listen (~> 3.0)
-    jemoji (0.12.0)
-      gemoji (~> 3.0)
-      html-pipeline (~> 2.2)
-      jekyll (>= 3.0, < 5.0)
-    kramdown (2.3.1)
-      rexml
-    kramdown-parser-gfm (1.1.0)
-      kramdown (~> 2.0)
-    liquid (4.0.3)
-    listen (3.5.1)
-      rb-fsevent (~> 0.10, >= 0.10.3)
-      rb-inotify (~> 0.9, >= 0.9.10)
-    mercenary (0.3.6)
-    minima (2.5.1)
-      jekyll (>= 3.5, < 5.0)
-      jekyll-feed (~> 0.9)
-      jekyll-seo-tag (~> 2.1)
-    minitest (5.14.4)
-    multipart-post (2.1.1)
-    nokogiri (1.11.7-x86_64-linux)
-      racc (~> 1.4)
-    octokit (4.21.0)
-      faraday (>= 0.9)
-      sawyer (~> 0.8.0, >= 0.5.3)
-    pathutil (0.16.2)
-      forwardable-extended (~> 2.6)
-    public_suffix (4.0.6)
-    racc (1.5.2)
-    rb-fsevent (0.11.0)
-    rb-inotify (0.10.1)
-      ffi (~> 1.0)
-    rexml (3.2.5)
-    rouge (3.26.0)
-    ruby-enum (0.9.0)
-      i18n
-    ruby2_keywords (0.0.4)
-    rubyzip (2.3.0)
-    safe_yaml (1.0.5)
-    sass (3.7.4)
-      sass-listen (~> 4.0.0)
-    sass-listen (4.0.0)
-      rb-fsevent (~> 0.9, >= 0.9.4)
-      rb-inotify (~> 0.9, >= 0.9.7)
-    sawyer (0.8.2)
-      addressable (>= 2.3.5)
-      faraday (> 0.8, < 2.0)
-    simpleidn (0.2.1)
-      unf (~> 0.1.4)
-    terminal-table (1.8.0)
-      unicode-display_width (~> 1.1, >= 1.1.1)
-    thread_safe (0.3.6)
-    typhoeus (1.4.0)
-      ethon (>= 0.9.0)
-    tzinfo (1.2.9)
-      thread_safe (~> 0.1)
-    unf (0.1.4)
-      unf_ext
-    unf_ext (0.0.7.7)
-    unicode-display_width (1.7.0)
-    zeitwerk (2.4.2)
-
-PLATFORMS
-  x86_64-linux
-  x86_64-linux-musl
-
-DEPENDENCIES
-  github-pages (~> 215)
-  minima (~> 2.5)
-  tzinfo (~> 1.2)
-  tzinfo-data
-  wdm (~> 0.1.1)
-
-BUNDLED WITH
-   2.2.21
diff --git a/docs/README.md b/docs/README.md
index a1e43024a89c05a56aec2410b6c130dde0645ba0..4fd13bdfc157efe8b3491695bb83972f96a82c5d 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,7 +1,6 @@
 ---
 title: Theodolite
 nav_order: 1
-nav_exclude: true
 permalink: /
 ---
 
diff --git a/docs/_config.yml b/docs/_config.yml
index a4997a99b26fcdb24b08a892a64fefa14bf69081..b0f0a13c22083b21a7c90ceaed44b846ffe55550 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,15 +1,6 @@
 title: "Theodolite"
-description: >-
-  Theodolite is a framework for benchmarking the horizontal and vertical
-  scalability of stream processing engines.
-
 remote_theme: pmarsceill/just-the-docs
 #color_scheme: "dark"
 aux_links:
     "Theodolite on GitHub":
-      - "//github.com/cau-se/theodolite"
-
-exclude:
-  - Gemfile
-  - Gemfile.lock
-  - vendor
+      - "//github.com/cau-se/theodolite"
\ No newline at end of file
diff --git a/docs/benchmarks-and-executions.md b/docs/benchmarks-and-executions.md
deleted file mode 100644
index 3e17e35307deea6b906d774933c6c5ffe8b6ee44..0000000000000000000000000000000000000000
--- a/docs/benchmarks-and-executions.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Benchmarks and Executions
-has_children: false
-nav_order: 2
----
-
-# Benchmarks and Executions
-
-In Theodolite, we distinguish between the static description of a scalability benchmark and its execution.
-
-## Benchmarks
-
-Benchmarks define what should be executed in scalability experiments. They
-consists of system under test (SUT) and an associated load generator, where
-both SUT and load generator are represented as sets of Kubernetes resources
-such Pods, Services, or ConfigMaps.
-Additionally, benchmarks define one or more load and resource types, scalability
-can be evaluated for.
-
-[TODO]: # (Link to metrics)
-
-Benchmarks are portable, that is they can be provided by standardization
-organizations, researchers, etc. and installed by other researchers,
-engineers, etc.
-They do not have a life-cycle. Instead, to run a benchmark, an execution of a
-benchmark is created and passed to Theodolite.
-
-## Execution
-
-An execution represents a one-time execution of a benchmark with a
-specific configuration. Hence, an execution refers to a benchmark and one of
-the load and resource types defined by that benchmark. Additionally, executions
-allow to alter the SUT or the load generator to evaluate regarding specific
-configurations.
-
-Executions also describe details regarding the scalability measurement method,
-such as for long experiment should be performed or how often they should be
-repeated.
-
-In contrast to benchmarks, execution have a life-cycle. They can be planned,
-executed, or aborted. Each execution of a benchmark is represented by an
-individual entity. This supports repeatability as executions can be archived
-and shared.
diff --git a/docs/crd-benchmark-doc.md b/docs/crd-benchmark-doc.md
new file mode 100644
index 0000000000000000000000000000000000000000..1e12d6ebd776b11d76241cfb530daeba9e0b5c24
--- /dev/null
+++ b/docs/crd-benchmark-doc.md
@@ -0,0 +1,374 @@
+# API Reference
+
+Packages:
+
+- [theodolite.com/v1](#theodolitecomv1)
+
+# theodolite.com/v1
+
+Resource Types:
+
+- [benchmark](#benchmark)
+
+
+
+
+## benchmark
+<sup><sup>[↩ Parent](#theodolitecomv1 )</sup></sup>
+
+
+
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+      <td><b>apiVersion</b></td>
+      <td>string</td>
+      <td>theodolite.com/v1</td>
+      <td>true</td>
+      </tr>
+      <tr>
+      <td><b>kind</b></td>
+      <td>string</td>
+      <td>benchmark</td>
+      <td>true</td>
+      </tr>
+      <tr>
+      <td><b><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectmeta-v1-meta">metadata</a></b></td>
+      <td>object</td>
+      <td>Refer to the Kubernetes API documentation for the fields of the `metadata` field.</td>
+      <td>true</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspec">spec</a></b></td>
+        <td>object</td>
+        <td>
+          <br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec
+<sup><sup>[↩ Parent](#benchmark)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>name</b></td>
+        <td>string</td>
+        <td>
+          This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>appResource</b></td>
+        <td>[]string</td>
+        <td>
+          A list of file names that reference Kubernetes resources that are deployed on the cluster for the system under test (SUT).<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspeckafkaconfig">kafkaConfig</a></b></td>
+        <td>object</td>
+        <td>
+          Contains the Kafka configuration.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>loadGenResource</b></td>
+        <td>[]string</td>
+        <td>
+          A list of file names that reference Kubernetes resources that are deployed on the cluster for the load generator.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspecloadtypesindex">loadTypes</a></b></td>
+        <td>[]object</td>
+        <td>
+          A list of load types that can be scaled for this benchmark. For each load type the concrete values are defined in the execution object.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspecresourcetypesindex">resourceTypes</a></b></td>
+        <td>[]object</td>
+        <td>
+          A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.kafkaConfig
+<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
+
+
+
+Contains the Kafka configuration.
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>bootstrapServer</b></td>
+        <td>string</td>
+        <td>
+          The bootstrap servers connection string.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspeckafkaconfigtopicsindex">topics</a></b></td>
+        <td>[]object</td>
+        <td>
+          List of topics to be created for each experiment. Alternative theodolite offers the possibility to remove certain topics after each experiment.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.kafkaConfig.topics[index]
+<sup><sup>[↩ Parent](#benchmarkspeckafkaconfig)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>removeOnly</b></td>
+        <td>boolean</td>
+        <td>
+          Determines if this topic should only be deleted after each experiement. For removeOnly topics the name can be a RegEx describing the topic.<br/>
+          <br/>
+            <i>Default</i>: false<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>name</b></td>
+        <td>string</td>
+        <td>
+          The name of the topic.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>numPartitions</b></td>
+        <td>integer</td>
+        <td>
+          The number of partitions of the topic.<br/>
+          <br/>
+            <i>Default</i>: 0<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>replicationFactor</b></td>
+        <td>integer</td>
+        <td>
+          The replication factor of the topic.<br/>
+          <br/>
+            <i>Default</i>: 0<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.loadTypes[index]
+<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b><a href="#benchmarkspecloadtypesindexpatchersindex">patchers</a></b></td>
+        <td>[]object</td>
+        <td>
+          List of patchers used to scale this resource type.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>typeName</b></td>
+        <td>string</td>
+        <td>
+          Name of the load type.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.loadTypes[index].patchers[index]
+<sup><sup>[↩ Parent](#benchmarkspecloadtypesindex)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>properties</b></td>
+        <td>object</td>
+        <td>
+          (Optional) Patcher specific additional arguments.<br/>
+          <br/>
+            <i>Default</i>: map[]<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>resource</b></td>
+        <td>string</td>
+        <td>
+          Specifies the Kubernetes resource to be patched.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>type</b></td>
+        <td>string</td>
+        <td>
+          Type of the Patcher.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.resourceTypes[index]
+<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b><a href="#benchmarkspecresourcetypesindexpatchersindex">patchers</a></b></td>
+        <td>[]object</td>
+        <td>
+          List of patchers used to scale this resource type.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>typeName</b></td>
+        <td>string</td>
+        <td>
+          Name of the resource type.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.resourceTypes[index].patchers[index]
+<sup><sup>[↩ Parent](#benchmarkspecresourcetypesindex)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>properties</b></td>
+        <td>object</td>
+        <td>
+          (Optional) Patcher specific additional arguments.<br/>
+          <br/>
+            <i>Default</i>: map[]<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>resource</b></td>
+        <td>string</td>
+        <td>
+          Specifies the Kubernetes resource to be patched.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>type</b></td>
+        <td>string</td>
+        <td>
+          Type of the patcher.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
\ No newline at end of file
diff --git a/docs/crd-execution-doc.md b/docs/crd-execution-doc.md
new file mode 100644
index 0000000000000000000000000000000000000000..21b5cdecabd4a247df9f2c0c8d376ad578f4032f
--- /dev/null
+++ b/docs/crd-execution-doc.md
@@ -0,0 +1,438 @@
+# API Reference
+
+Packages:
+
+- [theodolite.com/v1](#theodolitecomv1)
+
+# theodolite.com/v1
+
+Resource Types:
+
+- [execution](#execution)
+
+
+
+
+## execution
+<sup><sup>[↩ Parent](#theodolitecomv1 )</sup></sup>
+
+
+
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+      <td><b>apiVersion</b></td>
+      <td>string</td>
+      <td>theodolite.com/v1</td>
+      <td>true</td>
+      </tr>
+      <tr>
+      <td><b>kind</b></td>
+      <td>string</td>
+      <td>execution</td>
+      <td>true</td>
+      </tr>
+      <tr>
+      <td><b><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#objectmeta-v1-meta">metadata</a></b></td>
+      <td>object</td>
+      <td>Refer to the Kubernetes API documentation for the fields of the `metadata` field.</td>
+      <td>true</td>
+      </tr><tr>
+        <td><b><a href="#executionstatus">status</a></b></td>
+        <td>object</td>
+        <td>
+          <br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b><a href="#executionspec">spec</a></b></td>
+        <td>object</td>
+        <td>
+          <br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### execution.status
+<sup><sup>[↩ Parent](#execution)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>executionDuration</b></td>
+        <td>string</td>
+        <td>
+          Duration of the execution in seconds<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>executionState</b></td>
+        <td>string</td>
+        <td>
+          <br/>
+        </td>
+        <td>false</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec
+<sup><sup>[↩ Parent](#execution)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>name</b></td>
+        <td>string</td>
+        <td>
+          This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>benchmark</b></td>
+        <td>string</td>
+        <td>
+          The name of the benchmark this execution is referring to.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#executionspecconfigoverridesindex">configOverrides</a></b></td>
+        <td>[]object</td>
+        <td>
+          List of patchers that are used to override existing configurations.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#executionspecexecution">execution</a></b></td>
+        <td>object</td>
+        <td>
+          Defines the overall parameter for the execution.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#executionspecload">load</a></b></td>
+        <td>object</td>
+        <td>
+          Specifies the load values that are benchmarked.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#executionspecresources">resources</a></b></td>
+        <td>object</td>
+        <td>
+          Specifies the scaling resource that is benchmarked.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b><a href="#executionspecslosindex">slos</a></b></td>
+        <td>[]object</td>
+        <td>
+          List of resource values for the specified resource type.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec.configOverrides[index]
+<sup><sup>[↩ Parent](#executionspec)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b><a href="#executionspecconfigoverridesindexpatcher">patcher</a></b></td>
+        <td>object</td>
+        <td>
+          Patcher used to patch a resource<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>value</b></td>
+        <td>string</td>
+        <td>
+          <br/>
+        </td>
+        <td>false</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec.configOverrides[index].patcher
+<sup><sup>[↩ Parent](#executionspecconfigoverridesindex)</sup></sup>
+
+
+
+Patcher used to patch a resource
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>properties</b></td>
+        <td>object</td>
+        <td>
+          (Optional) Patcher specific additional arguments.<br/>
+          <br/>
+            <i>Default</i>: map[]<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>resource</b></td>
+        <td>string</td>
+        <td>
+          Specifies the Kubernetes resource to be patched.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>type</b></td>
+        <td>string</td>
+        <td>
+          Type of the Patcher.<br/>
+          <br/>
+            <i>Default</i>: <br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec.execution
+<sup><sup>[↩ Parent](#executionspec)</sup></sup>
+
+
+
+Defines the overall parameter for the execution.
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>loadGenerationDelay</b></td>
+        <td>integer</td>
+        <td>
+          Seconds to wait between the start of the SUT and the load generator.<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>duration</b></td>
+        <td>integer</td>
+        <td>
+          Defines the duration of each experiment in seconds.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>repetitions</b></td>
+        <td>integer</td>
+        <td>
+          Numper of repititions for each experiments.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>restrictions</b></td>
+        <td>[]string</td>
+        <td>
+          List of restriction strategys used to delimit the search space.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>strategy</b></td>
+        <td>string</td>
+        <td>
+          Defines the used strategy for the execution, either 'LinearSearch' or 'BinarySearch'<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec.load
+<sup><sup>[↩ Parent](#executionspec)</sup></sup>
+
+
+
+Specifies the load values that are benchmarked.
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>loadType</b></td>
+        <td>string</td>
+        <td>
+          The type of the load. It must match one of the load types specified in the referenced benchmark.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>loadValues</b></td>
+        <td>[]integer</td>
+        <td>
+          List of load values for the specified load type.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec.resources
+<sup><sup>[↩ Parent](#executionspec)</sup></sup>
+
+
+
+Specifies the scaling resource that is benchmarked.
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>resourceType</b></td>
+        <td>string</td>
+        <td>
+          The type of the resource. It must match one of the resource types specified in the referenced benchmark.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>resourceValues</b></td>
+        <td>[]integer</td>
+        <td>
+          <br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
+
+
+### execution.spec.slos[index]
+<sup><sup>[↩ Parent](#executionspec)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>externalSloUrl</b></td>
+        <td>string</td>
+        <td>
+          Connection string for a external slo analysis.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>offset</b></td>
+        <td>integer</td>
+        <td>
+          Hours by which the start and end timestamp will be shifted (for different timezones).<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>prometheusUrl</b></td>
+        <td>string</td>
+        <td>
+          Connection string for Promehteus.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>sloType</b></td>
+        <td>string</td>
+        <td>
+          The type of the SLO. It must match 'lag trend'.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>threshold</b></td>
+        <td>integer</td>
+        <td>
+          The threshold the SUT should meet for a sucessful experiment.<br/>
+        </td>
+        <td>true</td>
+      </tr><tr>
+        <td><b>warmup</b></td>
+        <td>integer</td>
+        <td>
+          Seconds of time that are ignored in the analysis.<br/>
+        </td>
+        <td>true</td>
+      </tr></tbody>
+</table>
\ No newline at end of file
diff --git a/docs/installation.md b/docs/installation.md
deleted file mode 100644
index e4381fbfb6646bc13021c78cdc13f8c8a6c28500..0000000000000000000000000000000000000000
--- a/docs/installation.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Installation
-has_children: false
-nav_order: 3
----
-
-# Installing Theodolite
-
-The easiest option to install Theodolite is using [Helm](https://helm.sh).
-To install Theodolite with all its dependencies run:
-
-```sh
-helm repo add theodolite https://cau-se.github.io/theodolite
-helm repo update
-helm install theodolite theodolite/theodolite
-```
-
-This installs Theodolite in operator mode. Operator mode is the easiest to be used, but requires some permissions in the installation. If those cannot be granted, Theodolite can also be installed for standalone mode. 
-
-
-## Installation Options
-
-As usual, the installation via Helm can be configured by passing a values YAML file:
-
-```
-helm install theodolite theodolite/theodolite --values <your-config.yaml>
-```
-
-For this purpose the [default values file]() can serve as a template for your custom configuration.
-
-### Operator mode
-
-The Theodolite operator allows to run and manage benchmarks through the Kubernetes API. It is installed by setting `operator.enabled` to `true`. In addition to Theodolite's dependencies, this will deploy all resources that are required for the operator as well as the CRDs, users will interact with.
-
-**TODO:** link
-
-### Standalone mode
-
-For running Theodolite in standalone mode, it is sufficient to disable the operator by setting `operator.enabled` to `false`. With this setting, only Theodolite's dependencies as well as resources to get the necessary permissions are installed.
-
-### Random Scheduler
-
-Installation of the random scheduler can be enabled and via `randomScheduler.enabled`. Please note that the random scheduler is neither required in operator mode nor in standalone mode. However, it has to be installed if benchmark executions should use random scheduling.
-
-**TODO:** link
-
-### Multiple installations in the same cluster
-
-Multiple Theodolite installations in the same namespace are currently not fully tested.
-In cases, where you need to install multiple Theodolite instances, it's best to use dedicated namespaces **and** different release names.
-
-*Note that for meaningful results, usually only one benchmark should be executed at a time.*
-
-## Installation Hints
-
-### Installation with a release name other than `theodolite`
-
-When using another release name than `theodolite`, make sure to adjust the Kafka Lag Exporter configuration of you `values.yaml` accordingly:
-
-```yaml
-kafka-lag-exporter:
-  clusters:
-  - name: "<your-release-name>-cp-kafka"
-    bootstrapBrokers: "<your-release-name>-cp-kafka:9092"
-```
-
-This seems unfortunately to be necessary as Helm does not let us inject values into dependency charts.
diff --git a/docs/release-process.md b/docs/release-process.md
index 28456f44291a2938974e53a6be5254882215d237..981306b0762e43eacb29a434cc1e505593548fce 100644
--- a/docs/release-process.md
+++ b/docs/release-process.md
@@ -1,7 +1,7 @@
 ---
 title: Release Process
 has_children: false
-nav_order: 5
+nav_order: 2
 ---
 
 # Release Process
@@ -35,7 +35,7 @@ again be merged into master.
 
 7. Tag this commit `v0.3.1` (can be done via GitLab). The corresponding Docker images will be uploaded.
 
-8. Create *releases* on GitLab and GitHub. Upload the generated Helm package to these releases via the UIs of GitLab and GitHub.
+8. Create *releases* on GitLab and GitHub. Upload the generated Helm package to these releases.
 
 9. Switch to the `master` branch.
 
diff --git a/docs/running-benchmarks.md b/docs/running-benchmarks.md
deleted file mode 100644
index 3cb8e30aa916352d1dcfeb62701c5df660cb9026..0000000000000000000000000000000000000000
--- a/docs/running-benchmarks.md
+++ /dev/null
@@ -1,111 +0,0 @@
----
-title: Running Benchmarks
-has_children: false
-nav_order: 4
----
-
-# Running Scalability Benchmarks
-
-There are two options to run scalability benchmarks with Theodolite:
-
-1. The [Theodolite Operator](#running-benchmarks-with-the-theodolite-operator) is a long-running service in your cluster, which accepts submitted benchmarks and executes them.
-2. In [standalone mode](#running-benchmarks-in-standalone-mode), Theodolite is started as a Kubernetes Job and only runs for the duration of one benchmark execution.
-
-While the operator is a bit more complex to install then the standalone mode,
-it makes it way easier to manage benchmarks and their executions. In
-particular, it allows to submit a set of experiments, which are then executed
-automatically one after another.
-**Therefore, running benchmarks with the operator is recommended.** 
-
-
-## Running Benchmarks with the Theodolite Operator
-
-The general process for running Theodolite benchmarks in operator mode is as follows:
-
-1. Create and deploy a new `Benchmark` resource or deploy one of the already existing ones.
-2. Define your benchmark execution as an `Execution` resource and deploy it.
-
-### 1. Creating a benchmark
-
-Benchmarks are defined as resources of our custom resource definition
-`Benchmark`. You can either create a new `Benchmark` for your custom benchmark
-or system under test or deploy one of the existing benchmarks, which can be
-found in [`theodolite-benchmarks/definitions`](theodolite-benchmarks/definitions). **TODO link**
-
-Suppose your `Benchmark` resource is stored in `example-benchmark.yaml`, you
-can deploy it by running:
-
-```sh
-kubectl apply -f example-benchmark.yaml
-```
-
-To see the list of all deployed benchmarks run:
-
-```sh
-kubectl get benchmarks
-```
-
-Additionally you need to make all your benchmark's Kubernetes resources available to the operator.
-
-**TODO benchmark resources**
-
-Once your benchmark is deployed, it is ready to be executed.
-
-### 2. Creating an execution
-
-To execute a benchmark, you need to describe this execution by creating an `Execution` resource.
-
-**TODO: details execution** 
-
-Suppose your `Execution` resource is stored in `example-execution.yaml`, you
-can deploy it by running:
-
-```sh
-kubectl apply -f example-execution.yaml
-```
-
-To see the list of all deployed benchmarks run:
-
-```sh
-kubectl get executions
-```
-
-The `STATUS` field will tell you whether a benchmark execution has been
-started, finished or failed due to some error. The `DURATION` field tells you
-for how long that execution is running (so far). Similar to a Kubernetes Job,
-an `Execution` is not automatically deleted once it is finished. This makes it
-easier to keep track of all the benchmark executions and to organize benchmark
-results.
-
-
-## Running Benchmarks in Standalone Mode
-
-The general process for running Theodolite benchmarks in standalone mode is as follows:
-
-1. Create a benchmark by writing a YAML file or select one of the already existing ones and create a ConfigMap from it.
-2. Define your benchmark execution as a YAML file and create a ConfigMap from it. We provide a template for this.
-3. Create a Theodolite Job from our template and mount your benchmark and benchmark execution with it.
-
-### 1. Creating a benchmark
-
-Creating a benchmark in standalone mode is similar to operator mode. However,
-instead of defining a benchmark as `Benchmark` resource, it is defined as a
-benchmark YAML file. Such a file deviates in the following points from a
-`Benchmark` resource:
-
-* The fields `apiVersion`, `kind` and `metadata` should be removed.
-* The benchmark's name (`metadata.name` in `Benchmark` resources) must be defined by the top-level field `name`.
-* Everything that is defined in `spec` has to be moved to the top-level.
-
-**TODO: example**
-
-**TODO: Create a ConfigMap containing the benchmark YAML files as well as all Kubernetes resources for that benchmark + deploy**
-
-### 2. Creating an execution
-
-**TODO: see above**
-
-
-### 3. Create a Theodolite Job
-
-**TODO example**
\ No newline at end of file
diff --git a/helm/benchmark-definitions b/helm/benchmark-definitions
new file mode 120000
index 0000000000000000000000000000000000000000..e25d86a1f35f9815225c23d78b8524f9df81f9b5
--- /dev/null
+++ b/helm/benchmark-definitions
@@ -0,0 +1 @@
+../theodolite-benchmarks/definitions/
\ No newline at end of file
diff --git a/helm/templates/theodolite/benchmark-resources-config-map.yaml b/helm/templates/theodolite/benchmark-resources-config-map.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4ec1c1bd9c3b9c05cb77920c20b9b573d413c94a
--- /dev/null
+++ b/helm/templates/theodolite/benchmark-resources-config-map.yaml
@@ -0,0 +1,19 @@
+{{- $processedDict := dict -}}
+{{- range $path, $bytes := .Files.Glob "benchmark-definitions/**/resources/**" }}
+{{- $name := base (dir (dir $path)) }}
+{{- if not (hasKey $processedDict $name) -}}
+{{ $_ := set $processedDict $name "true" }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+    name: benchmark-resources-{{ $name }}
+data:
+{{ ($.Files.Glob (printf "benchmark-definitions/%s/resources/*" $name)).AsConfig | indent 2 }}
+---
+{{- end }}
+{{- end }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+    name: benchmark-resources-custom
+data: {}
diff --git a/helm/templates/theodolite/random-scheduler/cluster-role-binding.yaml b/helm/templates/theodolite/random-scheduler/cluster-role-binding.yaml
index 658f75c8c5018fe5b9f47cf9619bb4ee5b26b8e5..605159e1b941730d9baddac679c3c1b91e8a88b6 100644
--- a/helm/templates/theodolite/random-scheduler/cluster-role-binding.yaml
+++ b/helm/templates/theodolite/random-scheduler/cluster-role-binding.yaml
@@ -1,4 +1,4 @@
-{{- if .Values.randomScheduler.rbac.create -}}
+{{- if and .Values.randomScheduler.enabled .Values.randomScheduler.rbac.create -}}
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRoleBinding
 metadata:
diff --git a/helm/templates/theodolite/random-scheduler/service-account.yaml b/helm/templates/theodolite/random-scheduler/service-account.yaml
index babfff17b46d62e7e820fcb9dc8a35d73b4e6538..593d9589de53b0c3ad9f826ea560c77acaf54a25 100644
--- a/helm/templates/theodolite/random-scheduler/service-account.yaml
+++ b/helm/templates/theodolite/random-scheduler/service-account.yaml
@@ -1,4 +1,4 @@
-{{- if .Values.randomScheduler.serviceAccount.create -}}
+{{- if and .Values.randomScheduler.enabled .Values.randomScheduler.serviceAccount.create -}}
 apiVersion: v1
 kind: ServiceAccount
 metadata:
diff --git a/helm/templates/theodolite/theodolite-operator.yaml b/helm/templates/theodolite/theodolite-operator.yaml
index 7e9194fb47956e9dfa447a5bf7f820f34bbd50d4..3487b9a4fabb16897b302d8be65f065a647ffb16 100644
--- a/helm/templates/theodolite/theodolite-operator.yaml
+++ b/helm/templates/theodolite/theodolite-operator.yaml
@@ -29,14 +29,30 @@ spec:
             - name: THEODOLITE_APP_RESOURCES
               value: "./benchmark-resources"
             - name: RESULTS_FOLDER
-              value: "results"
+              value: "./results"
           volumeMounts:
             {{- if .Values.operator.resultsVolume.enabled }}
             - name: theodolite-pv-storage
               mountPath: "/deployments/results"
             {{- end }}
-            - name: benchmark-resources
-              mountPath: /work/benchmark-resources
+            - name: benchmark-resources-uc1-kstreams
+              mountPath: /deployments/benchmark-resources/uc1-kstreams
+            - name: benchmark-resources-uc2-kstreams
+              mountPath: /deployments/benchmark-resources/uc2-kstreams
+            - name: benchmark-resources-uc3-kstreams
+              mountPath: /deployments/benchmark-resources/uc3-kstreams
+            - name: benchmark-resources-uc4-kstreams
+              mountPath: /deployments/benchmark-resources/uc4-kstreams
+            - name: benchmark-resources-uc1-flink
+              mountPath: /deployments/benchmark-resources/uc1-flink
+            - name: benchmark-resources-uc2-flink
+              mountPath: /deployments/benchmark-resources/uc2-flink
+            - name: benchmark-resources-uc3-flink
+              mountPath: /deployments/benchmark-resources/uc3-flink
+            - name: benchmark-resources-uc4-flink
+              mountPath: /deployments/benchmark-resources/uc4-flink
+            - name: benchmark-resources-custom
+              mountPath: /deployments/benchmark-resources/custom
         {{- if .Values.operator.sloChecker.lagTrend.enabled }}
         - name: lag-trend-slo-checker
           image: "{{ .Values.operator.sloChecker.lagTrend.image }}:{{ .Values.operator.sloChecker.lagTrend.imageTag }}"
@@ -67,8 +83,40 @@ spec:
         persistentVolumeClaim:
           claimName: {{ .Values.operator.resultsVolume.persistentVolumeClaim.name | quote }}
       {{- end }}
-      - name: benchmark-resources
+      - name: benchmark-resources-uc1-kstreams
         configMap:
-          name: benchmark-resources
+          name: benchmark-resources-uc1-kstreams
+          optional: true
+      - name: benchmark-resources-uc2-kstreams
+        configMap:
+          name: benchmark-resources-uc2-kstreams
+          optional: true
+      - name: benchmark-resources-uc3-kstreams
+        configMap:
+          name: benchmark-resources-uc3-kstreams
+          optional: true
+      - name: benchmark-resources-uc4-kstreams
+        configMap:
+          name: benchmark-resources-uc4-kstreams
+          optional: true
+      - name: benchmark-resources-uc1-flink
+        configMap:
+          name: benchmark-resources-uc1-flink
+          optional: true
+      - name: benchmark-resources-uc2-flink
+        configMap:
+          name: benchmark-resources-uc2-flink
+          optional: true
+      - name: benchmark-resources-uc3-flink
+        configMap:
+          name: benchmark-resources-uc3-flink
+          optional: true
+      - name: benchmark-resources-uc4-flink
+        configMap:
+          name: benchmark-resources-uc4-flink
+          optional: true
+      - name: benchmark-resources-custom
+        configMap:
+          name: benchmark-resources-custom
           optional: true
 {{- end }}
diff --git a/theodolite-benchmarks/definitions/install-configmaps.sh b/theodolite-benchmarks/definitions/install-configmaps.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7ddd606a162185993ce402ef4d3b84d8d00eb82c
--- /dev/null
+++ b/theodolite-benchmarks/definitions/install-configmaps.sh
@@ -0,0 +1,8 @@
+kubectl create configmap benchmark-resources-uc1-flink --from-file uc1-flink/resources
+kubectl create configmap benchmark-resources-uc2-flink --from-file uc2-flink/resources
+kubectl create configmap benchmark-resources-uc3-flink --from-file uc3-flink/resources
+kubectl create configmap benchmark-resources-uc4-flink --from-file uc4-flink/resources
+kubectl create configmap benchmark-resources-uc1-kstreams --from-file uc1-kstreams/resources
+kubectl create configmap benchmark-resources-uc2-kstreams --from-file uc2-kstreams/resources
+kubectl create configmap benchmark-resources-uc3-kstreams --from-file uc3-kstreams/resources
+kubectl create configmap benchmark-resources-uc4-kstreams --from-file uc4-kstreams/resources
\ No newline at end of file
diff --git a/theodolite-benchmarks/definitions/uc1-flink/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/flink-configuration-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/flink-configuration-configmap.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/flink-configuration-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/jobmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/jobmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/jobmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/jobmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/jobmanager-rest-service.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/jobmanager-rest-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/jobmanager-rest-service.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/jobmanager-rest-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/jobmanager-service.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/jobmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/jobmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/jobmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/service-monitor.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/taskmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/taskmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/taskmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/taskmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/taskmanager-service.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/taskmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-flink/taskmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc1-flink/resources/taskmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..30e2d6bcae0156d08aa71c428934f420b4085e38
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml
@@ -0,0 +1,47 @@
+apiVersion: theodolite.com/v1
+kind: benchmark
+metadata:
+  name: uc1-flink
+spec:
+  appResource:
+    - "uc1-flink/flink-configuration-configmap.yaml"
+    - "uc1-flink/taskmanager-deployment.yaml"
+    - "uc1-flink/taskmanager-service.yaml"
+    - "uc1-flink/service-monitor.yaml"
+    - "uc1-flink/jobmanager-service.yaml"
+    - "uc1-flink/jobmanager-deployment.yaml"
+    #- "uc1-flink/jobmanager-rest-service.yaml"
+  loadGenResource:
+    - "uc1-kstreams/uc1-load-generator-deployment.yaml"
+    - "uc1-kstreams/uc1-load-generator-service.yaml"
+  resourceTypes:
+    - typeName: "Instances"
+      patchers:
+        - type: "ReplicaPatcher"
+          resource: "uc1-flink/taskmanager-deployment.yaml"
+        - type: "EnvVarPatcher"
+          resource: "uc1-flink/jobmanager-deployment.yaml"
+          properties:
+            container: "jobmanager"
+            variableName: "PARALLELISM"
+        - type: "EnvVarPatcher" # required?
+          resource: "uc1-flink/taskmanager-deployment.yaml"
+          properties:
+            container: "taskmanager"
+            variableName: "PARALLELISM"
+  loadTypes:
+    - typeName: "NumSensors"
+      patchers:
+        - type: "EnvVarPatcher"
+          resource: "uc1-kstreams/uc1-load-generator-deployment.yaml"
+          properties:
+            container: "workload-generator"
+            variableName: "NUM_SENSORS"
+        - type: NumSensorsLoadGeneratorReplicaPatcher
+          resource: "uc1-kstreams/uc1-load-generator-deployment.yaml"
+  kafkaConfig:
+    bootstrapServer: "theodolite-cp-kafka:9092"
+    topics:
+      - name: "input"
+        numPartitions: 40
+        replicationFactor: 1
\ No newline at end of file
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-jmx-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-kstreams/uc1-jmx-configmap.yaml
rename to theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-jmx-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-kstreams-deployment.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-kstreams-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-kstreams/uc1-kstreams-deployment.yaml
rename to theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-kstreams-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-kstreams-service.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-kstreams-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-kstreams/uc1-kstreams-service.yaml
rename to theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-kstreams-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-load-generator-deployment.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-load-generator-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-kstreams/uc1-load-generator-deployment.yaml
rename to theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-load-generator-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-load-generator-service.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-load-generator-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-kstreams/uc1-load-generator-service.yaml
rename to theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-load-generator-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-service-monitor.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc1-kstreams/uc1-service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc1-kstreams/resources/uc1-service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml
index b80b572dfd30e9c056d3c01ba17cc662d70fc749..4ec3b08d8f20b6b4e4f108b43c9375179b7aee81 100644
--- a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml
@@ -4,28 +4,28 @@ metadata:
   name: uc1-kstreams
 spec:
   appResource:
-    - "uc1-kstreams-deployment.yaml"
-    - "uc1-kstreams-service.yaml"
-    - "uc1-jmx-configmap.yaml"
-    - "uc1-service-monitor.yaml"
+    - "uc1-kstreams/uc1-kstreams-deployment.yaml"
+    - "uc1-kstreams/uc1-kstreams-service.yaml"
+    - "uc1-kstreams/uc1-jmx-configmap.yaml"
+    - "uc1-kstreams/uc1-service-monitor.yaml"
   loadGenResource:
-    - "uc1-load-generator-deployment.yaml"
-    - "uc1-load-generator-service.yaml"
+    - "uc1-kstreams/uc1-load-generator-deployment.yaml"
+    - "uc1-kstreams/uc1-load-generator-service.yaml"
   resourceTypes:
     - typeName: "Instances"
       patchers:
         - type: "ReplicaPatcher"
-          resource: "uc1-kstreams-deployment.yaml"
+          resource: "uc1-kstreams/uc1-kstreams-deployment.yaml"
   loadTypes:
     - typeName: "NumSensors"
       patchers:
         - type: "EnvVarPatcher"
-          resource: "uc1-load-generator-deployment.yaml"
+          resource: "uc1-kstreams/uc1-load-generator-deployment.yaml"
           properties:
             container: "workload-generator"
             variableName: "NUM_SENSORS"
         - type: "NumSensorsLoadGeneratorReplicaPatcher"
-          resource: "uc1-load-generator-deployment.yaml"
+          resource: "uc1-kstreams/uc1-load-generator-deployment.yaml"
           properties:
             loadGenMaxRecords: "15000"
   kafkaConfig:
@@ -34,5 +34,3 @@ spec:
       - name: "input"
         numPartitions: 40
         replicationFactor: 1
-      - name: "theodolite-.*"
-        removeOnly: True
diff --git a/theodolite-benchmarks/definitions/uc2-flink/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/flink-configuration-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/flink-configuration-configmap.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/flink-configuration-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/jobmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/jobmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/jobmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/jobmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/jobmanager-rest-service.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/jobmanager-rest-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/jobmanager-rest-service.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/jobmanager-rest-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/jobmanager-service.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/jobmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/jobmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/jobmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/service-monitor.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/taskmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/taskmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/taskmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/taskmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/taskmanager-service.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/taskmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-flink/taskmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc2-flink/resources/taskmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4bc67808c5f4ba391650a2f9884444c2dca20cc6
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml
@@ -0,0 +1,52 @@
+apiVersion: theodolite.com/v1
+kind: benchmark
+metadata:
+  name: uc2-flink
+spec:
+  appResource:
+    - "uc2-flink/flink-configuration-configmap.yaml"
+    - "uc2-flink/taskmanager-deployment.yaml"
+    - "uc2-flink/taskmanager-service.yaml"
+    - "uc2-flink/service-monitor.yaml"
+    - "uc2-flink/jobmanager-service.yaml"
+    - "uc2-flink/jobmanager-deployment.yaml"
+    #- "uc2-flink/jobmanager-rest-service.yaml"
+  loadGenResource:
+    - "uc2-kstreams/uc2-load-generator-deployment.yaml"
+    - "uc2-kstreams/uc2-load-generator-service.yaml"
+  resourceTypes:
+    - typeName: "Instances"
+      patchers:
+        - type: "ReplicaPatcher"
+          resource: "uc2-flink/taskmanager-deployment.yaml"
+        - type: "EnvVarPatcher"
+          resource: "uc2-flink/jobmanager-deployment.yaml"
+          properties:
+            container: "jobmanager"
+            variableName: "PARALLELISM"
+        - type: "EnvVarPatcher" # required?
+          resource: "uc2-flink/taskmanager-deployment.yaml"
+          properties:
+            container: "taskmanager"
+            variableName: "PARALLELISM"
+  loadTypes:
+    - typeName: "NumSensors"
+      patchers:
+        - type: "EnvVarPatcher"
+          resource: "uc2-kstreams/uc2-load-generator-deployment.yaml"
+          properties:
+            container: "workload-generator"
+            variableName: "NUM_SENSORS"
+        - type: NumSensorsLoadGeneratorReplicaPatcher
+          resource: "uc2-kstreams/uc2-load-generator-deployment.yaml"
+  kafkaConfig:
+    bootstrapServer: "theodolite-cp-kafka:9092"
+    topics:
+      - name: "input"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "output"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "theodolite-.*"
+        removeOnly: True
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-jmx-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-kstreams/uc2-jmx-configmap.yaml
rename to theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-jmx-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-kstreams-deployment.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-kstreams-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-kstreams/uc2-kstreams-deployment.yaml
rename to theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-kstreams-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-kstreams-service.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-kstreams-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-kstreams/uc2-kstreams-service.yaml
rename to theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-kstreams-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-load-generator-deployment.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-load-generator-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-kstreams/uc2-load-generator-deployment.yaml
rename to theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-load-generator-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-load-generator-service.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-load-generator-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-kstreams/uc2-load-generator-service.yaml
rename to theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-load-generator-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-service-monitor.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc2-kstreams/uc2-service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc2-kstreams/resources/uc2-service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml
index b65bbdedb055c206c1ebcd7ab6a450318ee8c00f..aa25c53d793fd319ba16e15f8e8a152f177e799e 100644
--- a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml
@@ -1,31 +1,31 @@
 apiVersion: theodolite.com/v1
 kind: benchmark
+metadata:
+  name: uc2-kstreams
 spec:
-  metadata:
-    name: uc2-kstreams
   appResource:
-    - "uc2-kstreams-deployment.yaml"
-    - "uc2-kstreams-service.yaml"
-    - "uc2-jmx-configmap.yaml"
-    - "uc2-service-monitor.yaml"
+    - "uc2-kstreams/uc2-kstreams-deployment.yaml"
+    - "uc2-kstreams/uc2-kstreams-service.yaml"
+    - "uc2-kstreams/uc2-jmx-configmap.yaml"
+    - "uc2-kstreams/uc2-service-monitor.yaml"
   loadGenResource:
-    - "uc2-load-generator-deployment.yaml"
-    - "uc2-load-generator-service.yaml"
+    - "uc2-kstreams/uc2-load-generator-deployment.yaml"
+    - "uc2-kstreams/uc2-load-generator-service.yaml"
   resourceTypes:
     - typeName: "Instances"
       patchers:
         - type: "ReplicaPatcher"
-          resource: "uc2-kstreams-deployment.yaml"
+          resource: "uc2-kstreams/uc2-kstreams-deployment.yaml"
   loadTypes:
     - typeName: "NumSensors"
       patchers:
         - type: "EnvVarPatcher"
-          resource: "uc2-load-generator-deployment.yaml"
+          resource: "uc2-kstreams/uc2-load-generator-deployment.yaml"
           properties:
             container: "workload-generator"
             variableName: "NUM_SENSORS"
         - type: NumSensorsLoadGeneratorReplicaPatcher
-          resource: "uc2-load-generator-deployment.yaml"
+          resource: "uc2-kstreams/uc2-load-generator-deployment.yaml"
           properties:
             loadGenMaxRecords: "15000"
   kafkaConfig:
diff --git a/theodolite-benchmarks/definitions/uc3-flink/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/flink-configuration-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/flink-configuration-configmap.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/flink-configuration-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/jobmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/jobmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/jobmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/jobmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/jobmanager-rest-service.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/jobmanager-rest-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/jobmanager-rest-service.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/jobmanager-rest-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/jobmanager-service.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/jobmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/jobmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/jobmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/service-monitor.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/taskmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/taskmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/taskmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/taskmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/taskmanager-service.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/taskmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-flink/taskmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc3-flink/resources/taskmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f7a05c1371089126d5e39b91f48ac9df42ef05e1
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml
@@ -0,0 +1,52 @@
+apiVersion: theodolite.com/v1
+kind: benchmark
+metadata:
+  name: uc3-flink
+spec:
+  appResource:
+    - "uc3-flink/flink-configuration-configmap.yaml"
+    - "uc3-flink/taskmanager-deployment.yaml"
+    - "uc3-flink/taskmanager-service.yaml"
+    - "uc3-flink/service-monitor.yaml"
+    - "uc3-flink/jobmanager-service.yaml"
+    - "uc3-flink/jobmanager-deployment.yaml"
+    #- "uc3-flink/jobmanager-rest-service.yaml"
+  loadGenResource:
+    - "uc3-kstreams/uc3-load-generator-deployment.yaml"
+    - "uc3-kstreams/uc3-load-generator-service.yaml"
+  resourceTypes:
+    - typeName: "Instances"
+      patchers:
+        - type: "ReplicaPatcher"
+          resource: "uc3-flink/taskmanager-deployment.yaml"
+        - type: "EnvVarPatcher"
+          resource: "uc3-flink/jobmanager-deployment.yaml"
+          properties:
+            container: "jobmanager"
+            variableName: "PARALLELISM"
+        - type: "EnvVarPatcher" # required?
+          resource: "uc3-flink/taskmanager-deployment.yaml"
+          properties:
+            container: "taskmanager"
+            variableName: "PARALLELISM"
+  loadTypes:
+    - typeName: "NumSensors"
+      patchers:
+        - type: "EnvVarPatcher"
+          resource: "uc3-kstreams/uc3-load-generator-deployment.yaml"
+          properties:
+            container: "workload-generator"
+            variableName: "NUM_SENSORS"
+        - type: NumSensorsLoadGeneratorReplicaPatcher
+          resource: "uc3-kstreams/uc3-load-generator-deployment.yaml"
+  kafkaConfig:
+    bootstrapServer: "theodolite-cp-kafka:9092"
+    topics:
+      - name: "input"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "output"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "theodolite-.*"
+        removeOnly: True
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-jmx-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-kstreams/uc3-jmx-configmap.yaml
rename to theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-jmx-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-kstreams-deployment.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-kstreams-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-kstreams/uc3-kstreams-deployment.yaml
rename to theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-kstreams-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-kstreams-service.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-kstreams-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-kstreams/uc3-kstreams-service.yaml
rename to theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-kstreams-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-load-generator-deployment.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-load-generator-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-kstreams/uc3-load-generator-deployment.yaml
rename to theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-load-generator-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-load-generator-service.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-load-generator-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-kstreams/uc3-load-generator-service.yaml
rename to theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-load-generator-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-service-monitor.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc3-kstreams/uc3-service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc3-kstreams/resources/uc3-service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml
index bfbd7191c5f4a315db29100bcc05341f88cffec2..e2679ed864d4b8673bf0d44a96683ccb86f44090 100644
--- a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml
@@ -1,31 +1,31 @@
 apiVersion: theodolite.com/v1
 kind: benchmark
+metadata:
+  name: uc3-kstreams
 spec:
-  metadata:
-    name: uc3-kstreams
   appResource:
-    - "uc3-kstreams-deployment.yaml"
-    - "uc3-kstreams-service.yaml"
-    - "uc3-jmx-configmap.yaml"
-    - "uc3-service-monitor.yaml"
+    - "uc3-kstreams/uc3-kstreams-deployment.yaml"
+    - "uc3-kstreams/uc3-kstreams-service.yaml"
+    - "uc3-kstreams/uc3-jmx-configmap.yaml"
+    - "uc3-kstreams/uc3-service-monitor.yaml"
   loadGenResource:
-    - "uc3-load-generator-deployment.yaml"
-    - "uc3-load-generator-service.yaml"
+    - "uc3-kstreams/uc3-load-generator-deployment.yaml"
+    - "uc3-kstreams/uc3-load-generator-service.yaml"
   resourceTypes:
     - typeName: "Instances"
       patchers:
         - type: "ReplicaPatcher"
-          resource: "uc3-kstreams-deployment.yaml"
+          resource: "uc3-kstreams/uc3-kstreams-deployment.yaml"
   loadTypes:
     - typeName: "NumSensors"
       patchers:
         - type: "EnvVarPatcher"
-          resource: "uc3-load-generator-deployment.yaml"
+          resource: "uc3-kstreams/uc3-load-generator-deployment.yaml"
           properties:
             container: "workload-generator"
             variableName: "NUM_SENSORS"
         - type: NumSensorsLoadGeneratorReplicaPatcher
-          resource: "uc3-load-generator-deployment.yaml"
+          resource: "uc3-kstreams/uc3-load-generator-deployment.yaml"
           properties:
             loadGenMaxRecords: "15000"
   kafkaConfig:
diff --git a/theodolite-benchmarks/definitions/uc4-flink/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/flink-configuration-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/flink-configuration-configmap.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/flink-configuration-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/jobmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/jobmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/jobmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/jobmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/jobmanager-rest-service.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/jobmanager-rest-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/jobmanager-rest-service.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/jobmanager-rest-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/jobmanager-service.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/jobmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/jobmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/jobmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/service-monitor.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/taskmanager-deployment.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/taskmanager-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/taskmanager-deployment.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/taskmanager-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/taskmanager-service.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/taskmanager-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-flink/taskmanager-service.yaml
rename to theodolite-benchmarks/definitions/uc4-flink/resources/taskmanager-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..523167286f04e3ec0a66a43eabda618908ae3f11
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml
@@ -0,0 +1,58 @@
+apiVersion: theodolite.com/v1
+kind: benchmark
+metadata:
+  name: uc4-flink
+spec:
+  appResource:
+    - "uc4-flink/flink-configuration-configmap.yaml"
+    - "uc4-flink/taskmanager-deployment.yaml"
+    - "uc4-flink/taskmanager-service.yaml"
+    - "uc4-flink/service-monitor.yaml"
+    - "uc4-flink/jobmanager-service.yaml"
+    - "uc4-flink/jobmanager-deployment.yaml"
+    #- "uc4-flink/jobmanager-rest-service.yaml"
+  loadGenResource:
+    - "uc4-kstreams/uc4-load-generator-deployment.yaml"
+    - "uc4-kstreams/uc4-load-generator-service.yaml"
+  resourceTypes:
+    - typeName: "Instances"
+      patchers:
+        - type: "ReplicaPatcher"
+          resource: "uc4-flink/taskmanager-deployment.yaml"
+        - type: "EnvVarPatcher"
+          resource: "uc4-flink/jobmanager-deployment.yaml"
+          properties:
+            container: "jobmanager"
+            variableName: "PARALLELISM"
+        - type: "EnvVarPatcher" # required?
+          resource: "uc4-flink/taskmanager-deployment.yaml"
+          properties:
+            container: "taskmanager"
+            variableName: "PARALLELISM"
+  loadTypes:
+    - typeName: "NumNestedGroups"
+      patchers:
+        - type: "EnvVarPatcher"
+          resource: "uc4-kstreams/uc4-load-generator-deployment.yaml"
+          properties:
+            container: "workload-generator"
+            variableName: "NUM_NESTED_GROUPS"
+        - type: "NumNestedGroupsLoadGeneratorReplicaPatcher"
+          resource: "uc4-kstreams/uc4-load-generator-deployment.yaml"
+  kafkaConfig:
+    bootstrapServer: "theodolite-cp-kafka:9092"
+    topics:
+      - name: "input"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "output"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "configuration"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "aggregation-feedback"
+        numPartitions: 40
+        replicationFactor: 1
+      - name: "theodolite-.*"
+        removeOnly: True
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-jmx-configmap.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-jmx-configmap.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-kstreams/uc4-jmx-configmap.yaml
rename to theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-jmx-configmap.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-kstreams-deployment.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-kstreams-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-kstreams/uc4-kstreams-deployment.yaml
rename to theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-kstreams-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-kstreams-service.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-kstreams-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-kstreams/uc4-kstreams-service.yaml
rename to theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-kstreams-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-load-generator-deployment.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-load-generator-deployment.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-kstreams/uc4-load-generator-deployment.yaml
rename to theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-load-generator-deployment.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-load-generator-service.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-load-generator-service.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-kstreams/uc4-load-generator-service.yaml
rename to theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-load-generator-service.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-service-monitor.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-service-monitor.yaml
similarity index 100%
rename from theodolite-benchmarks/definitions/uc4-kstreams/uc4-service-monitor.yaml
rename to theodolite-benchmarks/definitions/uc4-kstreams/resources/uc4-service-monitor.yaml
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml
index 0ed48c9afd0d8d02493f7afc2df3e440d0ffabdd..3e10fd1aebf071e854cb31501030a50c11eab01d 100644
--- a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml
@@ -1,31 +1,31 @@
 apiVersion: theodolite.com/v1
 kind: benchmark
+metadata:
+  name: uc4-kstreams
 spec:
-  metadata:
-    name: uc4-kstreams
   appResource:
-    - "uc4-kstreams-deployment.yaml"
-    - "uc4-kstreams-service.yaml"
-    - "uc4-jmx-configmap.yaml"
-    - "uc4-service-monitor.yaml"
+    - "uc4-kstreams/uc4-kstreams-deployment.yaml"
+    - "uc4-kstreams/uc4-kstreams-service.yaml"
+    - "uc4-kstreams/uc4-jmx-configmap.yaml"
+    - "uc4-kstreams/uc4-service-monitor.yaml"
   loadGenResource:
-    - "uc4-load-generator-deployment.yaml"
-    - "uc4-load-generator-service.yaml"
+    - "uc4-kstreams/uc4-load-generator-deployment.yaml"
+    - "uc4-kstreams/uc4-load-generator-service.yaml"
   resourceTypes:
     - typeName: "Instances"
       patchers:
         - type: "ReplicaPatcher"
-          resource: "uc4-kstreams-deployment.yaml"
+          resource: "uc4-kstreams/uc4-kstreams-deployment.yaml"
   loadTypes:
     - typeName: "NumNestedGroups"
       patchers:
         - type: "EnvVarPatcher"
-          resource: "uc4-load-generator-deployment.yaml"
+          resource: "uc4-kstreams/uc4-load-generator-deployment.yaml"
           properties:
             container: "workload-generator"
             variableName: "NUM_SENSORS"
         - type: NumNestedGroupsLoadGeneratorReplicaPatcher
-          resource: "uc4-load-generator-deployment.yaml"
+          resource: "uc4-kstreams/uc4-load-generator-deployment.yaml"
           properties:
             loadGenMaxRecords: "15000"
             numSensors: "4.0"
diff --git a/theodolite/config/example-execution-yaml-resource.yaml b/theodolite/config/example-execution-yaml-resource.yaml
deleted file mode 100644
index e46a6cf417442b851650fe9699f73e1367dcc794..0000000000000000000000000000000000000000
--- a/theodolite/config/example-execution-yaml-resource.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: example-execution
-benchmark: "uc1-kstreams"
-load:
-  loadType: "NumSensors"
-  loadValues: [25000, 50000, 75000, 100000, 125000, 150000]
-resources:
-  resourceType: "Instances"
-  resourceValues: [1, 2, 3, 4, 5]
-slos:
-  - sloType: "lag trend"
-    threshold: 2000
-    prometheusUrl: "http://prometheus-operated:9090"
-    externalSloUrl: "http://localhost:80/evaluate-slope"
-    offset: 0
-    warmup: 60 # in seconds
-execution:
-  strategy: "LinearSearch"
-  duration: 300 # in seconds
-  repetitions: 1
-  loadGenerationDelay: 30 # in seconds, optional field, default is 0 seconds
-  restrictions:
-    - "LowerBound"
-configOverrides:
-  - patcher:
-      type: "NodeSelectorPatcher"
-      resource: "uc1-load-generator-deployment.yaml"
-      properties:
-        variableName: "env"
-    value: "prod"
-  - patcher:
-      type: "NodeSelectorPatcher"
-      resource: "uc1-kstreams-deployment.yaml"
-      properties:
-        variableName: "env"
-    value: "prod"
-  - patcher:
-      type: "ResourceLimitPatcher"
-      resource: "uc1-kstreams-deployment.yaml"
-      properties:
-        container: "uc-application"
-        limitedResource: "cpu"
-    value: "1000m"
-  - patcher:
-      type: "ResourceLimitPatcher"
-      resource: "uc1-kstreams-deployment.yaml"
-      properties:
-        container: "uc-application"
-        limitedResource: "memory"
-    value: "2Gi"
-#  - patcher:
-#      type: "SchedulerNamePatcher"
-#      resource: "uc1-kstreams-deployment.yaml"
-#    value: "random-scheduler"
diff --git a/theodolite/config/example-operator-execution.yaml b/theodolite/config/example-operator-execution.yaml
deleted file mode 100644
index 9b2a1facbd8be3411407dfcf3cad39fd9f3de6b6..0000000000000000000000000000000000000000
--- a/theodolite/config/example-operator-execution.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-apiVersion: theodolite.com/v1
-kind: execution
-metadata:
-  name: example-execution
-spec:
-  benchmark: "uc1-kstreams"
-  load:
-    loadType: "NumSensors"
-    loadValues: [25000, 50000, 75000, 100000, 125000, 150000]
-  resources:
-    resourceType: "Instances"
-    resourceValues: [1, 2, 3, 4, 5]
-  slos:
-    - sloType: "lag trend"
-      threshold: 2000
-      prometheusUrl: "http://prometheus-operated:9090"
-      externalSloUrl: "http://localhost:80/evaluate-slope"
-      offset: 0
-      warmup: 60 # in seconds
-  execution:
-    strategy: "LinearSearch"
-    duration: 300 # in seconds
-    repetitions: 1
-    loadGenerationDelay: 30 # in seconds
-    restrictions:
-      - "LowerBound"
-  configOverrides:
-    # - patcher:
-    #     type: "NodeSelectorPatcher"
-    #     resource: "uc1-load-generator-deployment.yaml"
-    #     properties:
-    #       variableName: "env"
-    #     value: "prod"
-    # - patcher:
-    #     type: "NodeSelectorPatcher"
-    #     resource: "uc1-kstreams-deployment.yaml"
-    #     properties:
-    #       variableName: "env"
-    #   value: "prod"
-    # - patcher:
-    #     type: "ResourceLimitPatcher"
-    #     resource: "uc1-kstreams-deployment.yaml"
-    #     properties:
-    #       container: "uc-application"
-    #       limitedResource: "cpu"
-    #   value: "1000m"
-    # - patcher:
-    #     type: "ResourceLimitPatcher"
-    #     resource: "uc1-kstreams-deployment.yaml"
-    #     properties:
-    #       container: "uc-application"
-    #       limitedResource: "memory"
-    #   value: "2Gi"
-    #  - patcher:
-    #      type: "SchedulerNamePatcher"
-    #      resource: "uc1-kstreams-deployment.yaml"
-    #    value: "random-scheduler"
diff --git a/theodolite/crd/crd-benchmark.yaml b/theodolite/crd/crd-benchmark.yaml
index 0457e041d7874912ac7d19edb9b372d4580228a5..9de29fc031e26b9e4e16517492740b0805fd4af9 100644
--- a/theodolite/crd/crd-benchmark.yaml
+++ b/theodolite/crd/crd-benchmark.yaml
@@ -23,89 +23,117 @@ spec:
             required: ["appResource", "loadGenResource", "resourceTypes", "loadTypes", "kafkaConfig"]
             properties:
               name:
+                description: This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.
                 type: string
               appResource:
+                description: A list of file names that reference Kubernetes resources that are deployed on the cluster for the system under test (SUT).
                 type: array
                 minItems: 1
                 items:
                   type: string
               loadGenResource:
+                description:  A list of file names that reference Kubernetes resources that are deployed on the cluster for the load generator.
                 type: array
                 minItems: 1
                 items:
                   type: string
               resourceTypes:
+                description: A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object.
                 type: array
                 minItems: 1
                 items:
                   type: object
+                  required: ["typeName", "patchers"]
                   properties:
                     typeName:
+                      description: Name of the resource type.
                       type: string
                     patchers:
+                      description: List of patchers used to scale this resource type.
+                      examples: test test test
                       type: array
                       minItems: 1
                       items:
                         type: object
+                        required: ["type", "resource"]
                         properties:
                           type:
+                            description: Type of the patcher.
                             type: string
                             default: ""
                           resource:
+                            description: Specifies the Kubernetes resource to be patched.
                             type: string
                             default: ""
                           properties:
+                            description: (Optional) Patcher specific additional arguments.
                             type: object
                             additionalProperties: true
                             x-kubernetes-map-type: "granular"
                             default: {}
               loadTypes:
+                description: A list of load types that can be scaled for this benchmark. For each load type the concrete values are defined in the execution object.
                 type: array
                 minItems: 1
                 items:
                   type: object
+                  required: ["typeName","patchers"]
                   properties:
                     typeName:
+                      description: Name of the load type.
                       type: string
                     patchers:
+                      description: List of patchers used to scale this resource type.
                       type: array
                       minItems: 1
                       items:
                         type: object
+                        required: ["type", "resource"]
                         properties:
                           type:
+                            description: Type of the Patcher.
                             type: string
                             default: ""
                           resource:
+                            description: Specifies the Kubernetes resource to be patched.
                             type: string
                             default: ""
                           properties:
+                            description: (Optional) Patcher specific additional arguments.
                             type: object
                             additionalProperties: true
                             x-kubernetes-map-type: "granular"
                             default: {}
               kafkaConfig:
+                description: Contains the Kafka configuration.
                 type: object
+                required: ["bootstrapServer", "topics"]
                 properties:
                   bootstrapServer:
+                    description: The bootstrap servers connection string.
                     type: string
                   topics:
+                    description: List of topics to be created for each experiment. Alternative theodolite offers the possibility to remove certain topics after each experiment.
                     type: array
                     minItems: 1
                     items:
                       type: object
-                      required: []
+                      required: ["name", "numPartitions", "replicationFactor"]
                       properties:
                         name:
+                          description: The name of the topic.
                           type: string
                           default: ""
                         numPartitions:
+                          description: The number of partitions of the topic.
                           type: integer
                           default: 0
                         replicationFactor:
+                          description: The replication factor of the topic.
                           type: integer
                           default: 0
                         removeOnly:
+                          description: Determines if this topic should only be deleted after each experiement. For removeOnly topics the name can be a RegEx describing the topic.
                           type: boolean
                           default: false
     additionalPrinterColumns:
diff --git a/theodolite/crd/crd-execution.yaml b/theodolite/crd/crd-execution.yaml
index b984f3ebe5ca7c8868adb9d3593e5d87d73fc2bd..f0588ecf98d40aadc10c1804f32d4bce72d22b03 100644
--- a/theodolite/crd/crd-execution.yaml
+++ b/theodolite/crd/crd-execution.yaml
@@ -23,79 +23,106 @@ spec:
             required: ["benchmark", "load", "resources", "slos", "execution", "configOverrides"]
             properties:
               name:
+                description: This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.
                 type: string
                 default: ""
               benchmark:
+                description: The name of the benchmark this execution is referring to.
                 type: string
               load: # definition of the load dimension
+                description: Specifies the load values that are benchmarked.
                 type: object
                 required: ["loadType", "loadValues"]
                 properties:
                   loadType:
-                   type: string
+                    description: The type of the load. It must match one of the load types specified in the referenced benchmark.
+                    type: string
                   loadValues:
+                    description: List of load values for the specified load type.
                     type: array
                     items:
                       type: integer
               resources: # definition of the resource dimension
+                description: Specifies the scaling resource that is benchmarked.
                 type: object
                 required: ["resourceType", "resourceValues"]
                 properties:
                   resourceType:
+                    description: The type of the resource. It must match one of the resource types specified in the referenced benchmark.
                     type: string
                   resourceValues:
+                    descriptoin:  List of resource values for the specified resource type.
                     type: array
                     items:
                       type: integer
               slos: # def of service level objectives
+                description:  List of resource values for the specified resource type.
                 type: array
                 items:
                   type: object
                   required: ["sloType", "threshold", "prometheusUrl", "externalSloUrl", "offset", "warmup"]
                   properties:
                     sloType:
+                      description: The type of the SLO. It must match 'lag trend'.
                       type: string
                     threshold:
+                      description: The threshold the SUT should meet for a sucessful experiment.
                       type: integer
                     prometheusUrl:
+                      description: Connection string for Promehteus.
                       type: string
                     externalSloUrl:
+                      description: Connection string for a external slo analysis.
                       type: string
                     offset:
+                      description: Hours by which the start and end timestamp will be shifted (for different timezones).
                       type: integer
                     warmup:
+                      description:  Seconds of time that are ignored in the analysis.
                       type: integer
               execution: # def execution config
+                description: Defines the overall parameter for the execution.
                 type: object
                 required: ["strategy", "duration", "repetitions", "restrictions"]
                 properties:
                   strategy:
+                    description: Defines the used strategy for the execution, either 'LinearSearch' or 'BinarySearch'
                     type: string
                   duration:
+                    description: Defines the duration of each experiment in seconds.
                     type: integer
                   repetitions:
+                    description: Numper of repititions for each experiments.
                     type: integer
                   loadGenerationDelay:
+                    description: Seconds to wait between the start of the SUT and the load generator.
                     type: integer
                   restrictions:
+                    description: List of restriction strategys used to delimit the search space.
                     type: array
                     items:
                       type: string
               configOverrides:
+                description:  List of patchers that are used to override existing configurations.
                 type: array
                 items:
                   type: object
                   properties:
                     patcher:
+                      description: Patcher used to patch a resource
                       type: object
+                      required: ["type", "resource"]
                       properties:
                         type:
+                          description: Type of the Patcher.
                           type: string
                           default: ""
                         resource:
+                          description: Specifies the Kubernetes resource to be patched.
                           type: string
                           default: ""
                         properties:
+                          description: (Optional) Patcher specific additional arguments.
                           type: object
                           additionalProperties: true
                           x-kubernetes-map-type: "granular"