From 529715f506b5434f7a6e190e8246d51aff55d4c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de>
Date: Thu, 28 May 2020 15:04:25 +0200
Subject: [PATCH] Merge branch 'separate-analysis' into 'master'

Separate analysis scripts from execution framework

See merge request she/theodolite!9
---
 .settings/qa.eclipse.plugin.checkstyle.prefs  |   2 +-
 .settings/qa.eclipse.plugin.pmd.prefs         |   2 +-
 analysis/README.md                            |  22 ++++
 {execution => analysis}/lag-trend-graph.ipynb |  21 +---
 analysis/requirements.txt                     |   4 +
 .../scalability-graph.ipynb                   |  11 +-
 .../kafkastreams/KafkaStreamsBuilder.java     |   2 +-
 .../src/test/java/.gitkeep                    |   0
 execution/README.md                           |  39 ++++---
 execution/lag_analysis.py                     |   2 +-
 execution/requirements.txt                    |  60 +---------
 execution/scalability-graph-finish.ipynb      | 104 ------------------
 uc1-application/build.gradle                  |   2 +-
 .../uc1/application/ConfigurationKeys.java    |   2 +-
 .../uc1/application/HistoryService.java       |   4 +-
 .../uc1/streamprocessing/TopologyBuilder.java |   2 +-
 .../Uc1KafkaStreamsBuilder.java               |   4 +-
 uc1-workload-generator/build.gradle           |   2 +-
 .../kafkasender/KafkaRecordSender.java        |   2 +-
 .../uc1/workloadgenerator/LoadGenerator.java  |   4 +-
 uc2-application/build.gradle                  |   2 +-
 .../uc2/application/AggregationService.java   |   4 +-
 .../uc2/application/ConfigurationKeys.java    |   2 +-
 .../ChildParentsTransformer.java              |   2 +-
 .../ChildParentsTransformerFactory.java       |   2 +-
 .../JointFlatTransformer.java                 |   2 +-
 .../JointFlatTransformerFactory.java          |   2 +-
 .../streamprocessing/JointRecordParents.java  |   2 +-
 .../OptionalParentsSerde.java                 |   2 +-
 .../uc2/streamprocessing/ParentsSerde.java    |   2 +-
 .../streamprocessing/RecordAggregator.java    |   2 +-
 .../uc2/streamprocessing/SensorParentKey.java |   2 +-
 .../SensorParentKeySerde.java                 |   2 +-
 .../uc2/streamprocessing/TopologyBuilder.java |   2 +-
 .../Uc2KafkaStreamsBuilder.java               |   4 +-
 .../OptionalParentsSerdeTest.java             |   4 +-
 .../streamprocessing/ParentsSerdeTest.java    |   4 +-
 .../SensorParentKeySerdeTest.java             |   6 +-
 .../uc2/streamprocessing/SerdeTester.java     |   2 +-
 .../streamprocessing/SerdeTesterFactory.java  |   2 +-
 uc2-workload-generator/build.gradle           |   2 +-
 .../kafkasender/KafkaRecordSender.java        |   2 +-
 .../workloadgenerator/ConfigPublisher.java    |   2 +-
 .../uc2/workloadgenerator/LoadGenerator.java  |   4 +-
 .../LoadGeneratorExtrem.java                  |   4 +-
 uc3-application/build.gradle                  |   2 +-
 .../uc3/application/ConfigurationKeys.java    |   2 +-
 .../uc3/application/HistoryService.java       |   4 +-
 .../uc3/streamprocessing/TopologyBuilder.java |   4 +-
 .../Uc3KafkaStreamsBuilder.java               |   4 +-
 .../streamprocessing/util/StatsFactory.java   |   2 +-
 uc3-workload-generator/build.gradle           |   2 +-
 .../kafkasender/KafkaRecordSender.java        |   2 +-
 .../uc3/workloadgenerator/LoadGenerator.java  |   4 +-
 uc4-application/build.gradle                  |   2 +-
 .../uc4/application/ConfigurationKeys.java    |   2 +-
 .../uc4/application/HistoryService.java       |   4 +-
 .../uc4/streamprocessing/HourOfDayKey.java    |   2 +-
 .../streamprocessing/HourOfDayKeyFactory.java |   2 +-
 .../streamprocessing/HourOfDayKeySerde.java   |   2 +-
 .../HourOfDayRecordFactory.java               |   2 +-
 .../RecordDatabaseAdapter.java                |   2 +-
 .../uc4/streamprocessing/StatsKeyFactory.java |   2 +-
 .../streamprocessing/StatsRecordFactory.java  |   2 +-
 .../uc4/streamprocessing/TopologyBuilder.java |   4 +-
 .../Uc4KafkaStreamsBuilder.java               |   4 +-
 .../streamprocessing/util/StatsFactory.java   |   2 +-
 uc4-workload-generator/build.gradle           |   2 +-
 .../kafkasender/KafkaRecordSender.java        |   2 +-
 .../uc4/workloadgenerator/LoadGenerator.java  |   4 +-
 70 files changed, 140 insertions(+), 283 deletions(-)
 create mode 100644 analysis/README.md
 rename {execution => analysis}/lag-trend-graph.ipynb (91%)
 create mode 100644 analysis/requirements.txt
 rename {execution => analysis}/scalability-graph.ipynb (95%)
 rename application-kafkastreams-commons/src/main/java/{spesb => theodolite}/commons/kafkastreams/KafkaStreamsBuilder.java (99%)
 create mode 100644 application-kafkastreams-commons/src/test/java/.gitkeep
 delete mode 100644 execution/scalability-graph-finish.ipynb
 rename uc1-application/src/main/java/{spesb => theodolite}/uc1/application/ConfigurationKeys.java (94%)
 rename uc1-application/src/main/java/{spesb => theodolite}/uc1/application/HistoryService.java (94%)
 rename uc1-application/src/main/java/{spesb => theodolite}/uc1/streamprocessing/TopologyBuilder.java (96%)
 rename uc1-application/src/main/java/{spesb => theodolite}/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java (84%)
 rename {uc2-workload-generator/src/main/java/spesb => uc1-workload-generator/src/main/java/theodolite}/kafkasender/KafkaRecordSender.java (98%)
 rename uc1-workload-generator/src/main/java/{spesb => theodolite}/uc1/workloadgenerator/LoadGenerator.java (97%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/application/AggregationService.java (95%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/application/ConfigurationKeys.java (95%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/ChildParentsTransformer.java (99%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/ChildParentsTransformerFactory.java (97%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/JointFlatTransformer.java (98%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/JointFlatTransformerFactory.java (97%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/JointRecordParents.java (93%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/OptionalParentsSerde.java (97%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/ParentsSerde.java (96%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/RecordAggregator.java (97%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/SensorParentKey.java (94%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/SensorParentKeySerde.java (95%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/TopologyBuilder.java (99%)
 rename uc2-application/src/main/java/{spesb => theodolite}/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java (95%)
 rename uc2-application/src/test/java/{spesb => theodolite}/uc2/streamprocessing/OptionalParentsSerdeTest.java (88%)
 rename uc2-application/src/test/java/{spesb => theodolite}/uc2/streamprocessing/ParentsSerdeTest.java (81%)
 rename uc2-application/src/test/java/{spesb => theodolite}/uc2/streamprocessing/SensorParentKeySerdeTest.java (75%)
 rename uc2-application/src/test/java/{spesb => theodolite}/uc2/streamprocessing/SerdeTester.java (94%)
 rename uc2-application/src/test/java/{spesb => theodolite}/uc2/streamprocessing/SerdeTesterFactory.java (94%)
 rename {uc1-workload-generator/src/main/java/spesb => uc2-workload-generator/src/main/java/theodolite}/kafkasender/KafkaRecordSender.java (98%)
 rename uc2-workload-generator/src/main/java/{spesb => theodolite}/uc2/workloadgenerator/ConfigPublisher.java (97%)
 rename uc2-workload-generator/src/main/java/{spesb => theodolite}/uc2/workloadgenerator/LoadGenerator.java (98%)
 rename uc2-workload-generator/src/main/java/{spesb => theodolite}/uc2/workloadgenerator/LoadGeneratorExtrem.java (98%)
 rename uc3-application/src/main/java/{spesb => theodolite}/uc3/application/ConfigurationKeys.java (94%)
 rename uc3-application/src/main/java/{spesb => theodolite}/uc3/application/HistoryService.java (95%)
 rename uc3-application/src/main/java/{spesb => theodolite}/uc3/streamprocessing/TopologyBuilder.java (96%)
 rename uc3-application/src/main/java/{spesb => theodolite}/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java (92%)
 rename {uc4-application/src/main/java/spesb/uc4 => uc3-application/src/main/java/theodolite/uc3}/streamprocessing/util/StatsFactory.java (91%)
 rename {uc4-workload-generator/src/main/java/spesb => uc3-workload-generator/src/main/java/theodolite}/kafkasender/KafkaRecordSender.java (98%)
 rename uc3-workload-generator/src/main/java/{spesb => theodolite}/uc3/workloadgenerator/LoadGenerator.java (97%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/application/ConfigurationKeys.java (95%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/application/HistoryService.java (95%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/HourOfDayKey.java (92%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/HourOfDayKeyFactory.java (92%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/HourOfDayKeySerde.java (96%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/HourOfDayRecordFactory.java (95%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/RecordDatabaseAdapter.java (98%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/StatsKeyFactory.java (88%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/StatsRecordFactory.java (94%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/TopologyBuilder.java (97%)
 rename uc4-application/src/main/java/{spesb => theodolite}/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java (94%)
 rename {uc3-application/src/main/java/spesb/uc3 => uc4-application/src/main/java/theodolite/uc4}/streamprocessing/util/StatsFactory.java (91%)
 rename {uc3-workload-generator/src/main/java/spesb => uc4-workload-generator/src/main/java/theodolite}/kafkasender/KafkaRecordSender.java (98%)
 rename uc4-workload-generator/src/main/java/{spesb => theodolite}/uc4/workloadgenerator/LoadGenerator.java (97%)

diff --git a/.settings/qa.eclipse.plugin.checkstyle.prefs b/.settings/qa.eclipse.plugin.checkstyle.prefs
index 64a0564d5..2e24669b8 100644
--- a/.settings/qa.eclipse.plugin.checkstyle.prefs
+++ b/.settings/qa.eclipse.plugin.checkstyle.prefs
@@ -1,4 +1,4 @@
 configFilePath=config/checkstyle.xml
 customModulesJarPaths=
 eclipse.preferences.version=1
-enabled=true
+enabled=false
diff --git a/.settings/qa.eclipse.plugin.pmd.prefs b/.settings/qa.eclipse.plugin.pmd.prefs
index 04ac39484..a8950d58c 100644
--- a/.settings/qa.eclipse.plugin.pmd.prefs
+++ b/.settings/qa.eclipse.plugin.pmd.prefs
@@ -1,4 +1,4 @@
 customRulesJars=
 eclipse.preferences.version=1
-enabled=true
+enabled=false
 ruleSetFilePath=config/pmd.xml
diff --git a/analysis/README.md b/analysis/README.md
new file mode 100644
index 000000000..531842582
--- /dev/null
+++ b/analysis/README.md
@@ -0,0 +1,22 @@
+# Theodolite Analysis
+
+This directory contains Jupyter notebooks for analyzing and visualizing
+benchmark execution results and plotting. The following notebooks are provided:
+
+* [scalability-graph.ipynb](scalability-graph.ipynb): Creates a scalability graph for a certain benchmark execution.
+* [scalability-graph-final.ipynb](scalability-graph-final.ipynb): Combines the scalability graphs of multiple benchmarks executions (e.g. for comparing different configuration).
+* [lag-trend-graph.ipynb](lag-trend-graph.ipynb): Visualizes the consumer lag evaluation over time along with the computed trend.
+
+## Usage
+
+For executing benchmarks and analyzing their results, a **Python 3.7**
+installation is required (e.g., in a virtual environment). Our notebooks require some
+Python libraries, which can be installed via:
+
+```sh
+pip install -r requirements.txt 
+```
+
+ We have tested these
+notebooks with [Visual Studio Code](https://code.visualstudio.com/docs/python/jupyter-support),
+however, every other server should be fine as well.
diff --git a/execution/lag-trend-graph.ipynb b/analysis/lag-trend-graph.ipynb
similarity index 91%
rename from execution/lag-trend-graph.ipynb
rename to analysis/lag-trend-graph.ipynb
index 71cd54cee..4e574ceb6 100644
--- a/execution/lag-trend-graph.ipynb
+++ b/analysis/lag-trend-graph.ipynb
@@ -20,8 +20,9 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "directory = ''\n",
-    "filename = 'xxx_totallag.csv'\n",
+    "directory = '<path-to>/results'\n",
+    "#filename = 'exp1002_uc3_75000_1_totallag.csv'\n",
+    "filename = 'exp1002_uc3_50000_2_totallag.csv'\n",
     "warmup_sec = 60\n",
     "threshold = 2000 #slope"
    ]
@@ -105,20 +106,6 @@
     "\n",
     "plt.savefig(\"plot.pdf\", bbox_inches='tight')\n"
    ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
   }
  ],
  "metadata": {
@@ -138,7 +125,7 @@
   "pygments_lexer": "ipython3",
   "version": 3,
   "kernelspec": {
-   "name": "python37064bitvenvvenv469ea2e0a7854dc7b367eee45386afee",
+   "name": "python37064bitvenvvenv21b61136d7f443749f2918b47e00d223",
    "display_name": "Python 3.7.0 64-bit ('.venv': venv)"
   }
  },
diff --git a/analysis/requirements.txt b/analysis/requirements.txt
new file mode 100644
index 000000000..c97a86262
--- /dev/null
+++ b/analysis/requirements.txt
@@ -0,0 +1,4 @@
+jupyter==1.0.0
+matplotlib==3.2.0
+pandas==1.0.1
+scikit-learn==0.22.2.post1
\ No newline at end of file
diff --git a/execution/scalability-graph.ipynb b/analysis/scalability-graph.ipynb
similarity index 95%
rename from execution/scalability-graph.ipynb
rename to analysis/scalability-graph.ipynb
index 752c0bebc..868f950df 100644
--- a/execution/scalability-graph.ipynb
+++ b/analysis/scalability-graph.ipynb
@@ -16,7 +16,6 @@
    "outputs": [],
    "source": [
     "import os\n",
-    "import requests\n",
     "from datetime import datetime, timedelta, timezone\n",
     "import pandas as pd\n",
     "from sklearn.linear_model import LinearRegression\n",
@@ -38,11 +37,13 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "exp_id = 1003\n",
+    "exp_id = 2012\n",
     "warmup_sec = 60\n",
     "warmup_partitions_sec = 120\n",
     "threshold = 2000 #slope\n",
-    "directory = '../results'\n"
+    "#directory = '../results'\n",
+    "directory = '<path-to>/results'\n",
+    "directory_out = '<path-to>/results-inst'\n"
    ]
   },
   {
@@ -244,7 +245,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "min_suitable_instances.to_csv(f'../results-inst/exp{exp_id}_min-suitable-instances.csv', index=False)"
+    "min_suitable_instances.to_csv(os.path.join(directory_out, f'../results-inst/exp{exp_id}_min-suitable-instances.csv'), index=False)"
    ]
   },
   {
@@ -284,7 +285,7 @@
   "pygments_lexer": "ipython3",
   "version": 3,
   "kernelspec": {
-   "name": "python37064bitvenvvenv469ea2e0a7854dc7b367eee45386afee",
+   "name": "python37064bitvenvvenv6c432ee1239d4f3cb23f871068b0267d",
    "display_name": "Python 3.7.0 64-bit ('.venv': venv)"
   }
  },
diff --git a/application-kafkastreams-commons/src/main/java/spesb/commons/kafkastreams/KafkaStreamsBuilder.java b/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java
similarity index 99%
rename from application-kafkastreams-commons/src/main/java/spesb/commons/kafkastreams/KafkaStreamsBuilder.java
rename to application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java
index 3101225d9..ae2a6dafa 100644
--- a/application-kafkastreams-commons/src/main/java/spesb/commons/kafkastreams/KafkaStreamsBuilder.java
+++ b/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java
@@ -1,4 +1,4 @@
-package spesb.commons.kafkastreams;
+package theodolite.commons.kafkastreams;
 
 import java.util.Objects;
 import java.util.Properties;
diff --git a/application-kafkastreams-commons/src/test/java/.gitkeep b/application-kafkastreams-commons/src/test/java/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/execution/README.md b/execution/README.md
index f7df1a32a..42fe9647d 100644
--- a/execution/README.md
+++ b/execution/README.md
@@ -1,13 +1,20 @@
-# Requirements
+# Theodolite Execution Framework
 
+This directory contains the Theodolite framework for executing scalability
+benchmarks in a Kubernetes cluster. As Theodolite aims for executing benchmarks
+in realistic execution environments,, some third-party components are [required](#requirements).
+After everything is installed and configured, you can move on the [execution of
+benchmarks](#execution).
 
-## Kubernetes Cluster
+## Requirements
+
+### Kubernetes Cluster
 
 For executing benchmarks, access to Kubernetes cluster is required. We suggest
 to create a dedicated namespace for executing our benchmarks. The following
 services need to be available as well.
 
-### Prometheus
+#### Prometheus
 
 We suggest to use the [Prometheus Operator](https://github.com/coreos/prometheus-operator)
 and create a dedicated Prometheus instance for these benchmarks.
@@ -34,7 +41,7 @@ depending on your cluster's security policies.
 For the individual benchmarking components to be monitored, [ServiceMonitors](https://github.com/coreos/prometheus-operator#customresourcedefinitions)
 are used. See the corresponding sections below for how to install them.
 
-### Grafana
+#### Grafana
 
 As with Prometheus, we suggest to create a dedicated Grafana instance. Grafana
 with our default configuration can be installed with Helm:
@@ -60,7 +67,7 @@ Create the Configmap for the data source:
 kubectl apply -f infrastructure/grafana/prometheus-datasource-config-map.yaml
 ```
 
-### A Kafka cluster
+#### A Kafka cluster
 
 One possible way to set up a Kafka cluster is via [Confluent's Helm Charts](https://github.com/confluentinc/cp-helm-charts).
 For using these Helm charts and conjuction with the Prometheus Operator (see
@@ -68,7 +75,7 @@ below), we provide a [patch](https://github.com/SoerenHenning/cp-helm-charts)
 for these helm charts. Note that this patch is only required for observation and
 not for the actual benchmark execution and evaluation.
 
-#### Our patched Confluent Helm Charts
+##### Our patched Confluent Helm Charts
 
 To use our patched Confluent Helm Charts clone the
 [chart's repsoitory](https://github.com/SoerenHenning/cp-helm-charts). We also
@@ -86,11 +93,11 @@ To let Prometheus scrape Kafka metrics, deploy a ServiceMonitor:
 kubectl apply -f infrastructure/kafka/service-monitor.yaml
 ```
 
-#### Other options for Kafka
+##### Other options for Kafka
 
 Other Kafka deployments, for example, using Strimzi, should work in similiar way.
 
-### The Kafka Lag Exporter
+#### The Kafka Lag Exporter
 
 [Lightbend's Kafka Lag Exporter](https://github.com/lightbend/kafka-lag-exporter)
 can be installed via Helm. We also provide a [default configuration](infrastructure/kafka-lag-exporter/values.yaml).
@@ -107,21 +114,19 @@ kubectl apply -f infrastructure/kafka-lag-exporter/service-monitor.yaml
 ```
 
 
-## Python 3.7
-
-For executing benchmarks and analyzing their results, a **Python 3.7** installation
-is required. We suggest to use a virtual environment placed in the `.venv` directory.
+### Python 3.7
 
-As set of requirements is needed for the analysis Jupyter notebooks and the
-execution tool. You can install them with the following command (make sure to
-be in your virtual environment if you use one):
+For executing benchmarks, a **Python 3.7** installation is required. We suggest
+to use a virtual environment placed in the `.venv` directory (in the Theodolite
+root directory). As set of requirements is needed. You can install them with the following
+command (make sure to be in your virtual environment if you use one):
 
 ```sh
 pip install -r requirements.txt 
 ```
 
 
-## Required Manual Adjustments
+### Required Manual Adjustments
 
 Depending on your setup, some additional adjustments may be necessary:
 
@@ -133,7 +138,7 @@ Depending on your setup, some additional adjustments may be necessary:
 
 
 
-# Execution
+## Execution
 
 The `./run_loop.sh` is the entrypoint for all benchmark executions. Is has to be called as follows:
 
diff --git a/execution/lag_analysis.py b/execution/lag_analysis.py
index a722edeef..23e3d5f6c 100644
--- a/execution/lag_analysis.py
+++ b/execution/lag_analysis.py
@@ -11,7 +11,7 @@ exp_id =  sys.argv[1]
 benchmark = sys.argv[2]
 dim_value = sys.argv[3]
 instances = sys.argv[4]
-execution_minutes = sys.argv[5]
+execution_minutes = int(sys.argv[5])
 time_diff_ms = int(os.getenv('CLOCK_DIFF_MS', 0))
 
 #http://localhost:9090/api/v1/query_range?query=sum%20by(job,topic)(kafka_consumer_consumer_fetch_manager_metrics_records_lag)&start=2015-07-01T20:10:30.781Z&end=2020-07-01T20:11:00.781Z&step=15s
diff --git a/execution/requirements.txt b/execution/requirements.txt
index 17f29b0b1..7224efe80 100644
--- a/execution/requirements.txt
+++ b/execution/requirements.txt
@@ -1,62 +1,4 @@
-attrs==19.3.0
-backcall==0.1.0
-bleach==3.1.1
-certifi==2019.11.28
-chardet==3.0.4
-cycler==0.10.0
-decorator==4.4.2
-defusedxml==0.6.0
-entrypoints==0.3
-idna==2.9
-importlib-metadata==1.5.0
-ipykernel==5.1.4
-ipython==7.13.0
-ipython-genutils==0.2.0
-ipywidgets==7.5.1
-jedi==0.16.0
-Jinja2==2.11.1
-joblib==0.14.1
-jsonschema==3.2.0
-jupyter==1.0.0
-jupyter-client==6.0.0
-jupyter-console==6.1.0
-jupyter-core==4.6.3
-kiwisolver==1.1.0
-MarkupSafe==1.1.1
 matplotlib==3.2.0
-mistune==0.8.4
-nbconvert==5.6.1
-nbformat==5.0.4
-notebook==6.0.3
-numpy==1.18.1
 pandas==1.0.1
-pandocfilters==1.4.2
-parso==0.6.2
-pexpect==4.8.0
-pickleshare==0.7.5
-prometheus-client==0.7.1
-prompt-toolkit==3.0.4
-ptyprocess==0.6.0
-Pygments==2.6.1
-pyparsing==2.4.6
-pyrsistent==0.15.7
-python-dateutil==2.8.1
-pytz==2019.3
-pyzmq==19.0.0
-qtconsole==4.7.1
-QtPy==1.9.0
 requests==2.23.0
-scikit-learn==0.22.2.post1
-scipy==1.4.1
-Send2Trash==1.5.0
-six==1.14.0
-sklearn==0.0
-terminado==0.8.3
-testpath==0.4.4
-tornado==6.0.4
-traitlets==4.3.3
-urllib3==1.25.8
-wcwidth==0.1.8
-webencodings==0.5.1
-widgetsnbextension==3.5.1
-zipp==3.1.0
+scikit-learn==0.22.2.post1
\ No newline at end of file
diff --git a/execution/scalability-graph-finish.ipynb b/execution/scalability-graph-finish.ipynb
deleted file mode 100644
index ffcf33b6b..000000000
--- a/execution/scalability-graph-finish.ipynb
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import os\n",
-    "import pandas as pd\n",
-    "from functools import reduce\n",
-    "import matplotlib.pyplot as plt"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "directory = '../results-inst'\n",
-    "\n",
-    "experiments = {\n",
-    "    'exp1003': 'exp1003',\n",
-    "    'exp1025': 'exp1025',\n",
-    "}\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "dataframes = [pd.read_csv(os.path.join(directory, f'{v}_min-suitable-instances.csv')).set_index('dim_value').rename(columns={\"instances\": k}) for k, v in experiments.items()]\n",
-    "\n",
-    "df = reduce(lambda df1,df2: df1.join(df2,how='outer'), dataframes)\n",
-    "\n",
-    "df"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "plt.style.use('ggplot')\n",
-    "plt.rcParams['axes.facecolor']='w'\n",
-    "plt.rcParams['axes.edgecolor']='555555'\n",
-    "#plt.rcParams['ytick.color']='black'\n",
-    "plt.rcParams['grid.color']='dddddd'\n",
-    "plt.rcParams['axes.spines.top']='false'\n",
-    "plt.rcParams['axes.spines.right']='false'\n",
-    "plt.rcParams['legend.frameon']='true'\n",
-    "plt.rcParams['legend.framealpha']='1'\n",
-    "plt.rcParams['legend.edgecolor']='1'\n",
-    "plt.rcParams['legend.borderpad']='1'\n",
-    "\n",
-    "\n",
-    "\n",
-    "\n",
-    "\n",
-    "plt.figure() \n",
-    "ax = df.plot(kind='line', marker='o')\n",
-    "#ax = df.plot(kind='line',x='dim_value', legend=False, use_index=True)\n",
-    "ax.set_ylabel('instances')\n",
-    "ax.set_xlabel('data sources')\n",
-    "ax.set_ylim(ymin=0)\n",
-    "#ax.set_xlim(xmin=0)\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "language_info": {
-   "name": "python",
-   "codemirror_mode": {
-    "name": "ipython",
-    "version": 3
-   },
-   "version": "3.7.0-final"
-  },
-  "orig_nbformat": 2,
-  "file_extension": ".py",
-  "mimetype": "text/x-python",
-  "name": "python",
-  "npconvert_exporter": "python",
-  "pygments_lexer": "ipython3",
-  "version": 3,
-  "kernelspec": {
-   "name": "python37064bitvenvvenv469ea2e0a7854dc7b367eee45386afee",
-   "display_name": "Python 3.7.0 64-bit ('.venv': venv)"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
\ No newline at end of file
diff --git a/uc1-application/build.gradle b/uc1-application/build.gradle
index ec18bbebf..3b197e851 100644
--- a/uc1-application/build.gradle
+++ b/uc1-application/build.gradle
@@ -1 +1 @@
-mainClassName = "spesb.uc1.application.HistoryService"
+mainClassName = "theodolite.uc1.application.HistoryService"
diff --git a/uc1-application/src/main/java/spesb/uc1/application/ConfigurationKeys.java b/uc1-application/src/main/java/theodolite/uc1/application/ConfigurationKeys.java
similarity index 94%
rename from uc1-application/src/main/java/spesb/uc1/application/ConfigurationKeys.java
rename to uc1-application/src/main/java/theodolite/uc1/application/ConfigurationKeys.java
index f74ce3187..ee4113c30 100644
--- a/uc1-application/src/main/java/spesb/uc1/application/ConfigurationKeys.java
+++ b/uc1-application/src/main/java/theodolite/uc1/application/ConfigurationKeys.java
@@ -1,4 +1,4 @@
-package spesb.uc1.application;
+package theodolite.uc1.application;
 
 /**
  * Keys to access configuration parameters.
diff --git a/uc1-application/src/main/java/spesb/uc1/application/HistoryService.java b/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java
similarity index 94%
rename from uc1-application/src/main/java/spesb/uc1/application/HistoryService.java
rename to uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java
index 70bd6d5fd..b551fb7f8 100644
--- a/uc1-application/src/main/java/spesb/uc1/application/HistoryService.java
+++ b/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java
@@ -1,9 +1,9 @@
-package spesb.uc1.application;
+package theodolite.uc1.application;
 
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
-import spesb.uc1.streamprocessing.Uc1KafkaStreamsBuilder;
+import theodolite.uc1.streamprocessing.Uc1KafkaStreamsBuilder;
 import titan.ccp.common.configuration.Configurations;
 
 /**
diff --git a/uc1-application/src/main/java/spesb/uc1/streamprocessing/TopologyBuilder.java b/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java
similarity index 96%
rename from uc1-application/src/main/java/spesb/uc1/streamprocessing/TopologyBuilder.java
rename to uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java
index 1705e3d81..824a8dadd 100644
--- a/uc1-application/src/main/java/spesb/uc1/streamprocessing/TopologyBuilder.java
+++ b/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package spesb.uc1.streamprocessing;
+package theodolite.uc1.streamprocessing;
 
 import com.google.gson.Gson;
 import org.apache.kafka.common.serialization.Serdes;
diff --git a/uc1-application/src/main/java/spesb/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java b/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
similarity index 84%
rename from uc1-application/src/main/java/spesb/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
rename to uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
index 7283b39e2..4af3f1303 100644
--- a/uc1-application/src/main/java/spesb/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
+++ b/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java
@@ -1,8 +1,8 @@
-package spesb.uc1.streamprocessing;
+package theodolite.uc1.streamprocessing;
 
 import java.util.Objects;
 import org.apache.kafka.streams.Topology;
-import spesb.commons.kafkastreams.KafkaStreamsBuilder;
+import theodolite.commons.kafkastreams.KafkaStreamsBuilder;
 
 /**
  * Builder for the Kafka Streams configuration.
diff --git a/uc1-workload-generator/build.gradle b/uc1-workload-generator/build.gradle
index d934bd09d..9cc0bdbf0 100644
--- a/uc1-workload-generator/build.gradle
+++ b/uc1-workload-generator/build.gradle
@@ -1 +1 @@
-mainClassName = "spesb.uc1.workloadgenerator.LoadGenerator"
+mainClassName = "theodolite.uc1.workloadgenerator.LoadGenerator"
diff --git a/uc2-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java b/uc1-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
similarity index 98%
rename from uc2-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
rename to uc1-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
index 034201411..bf562d86a 100644
--- a/uc2-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
+++ b/uc1-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
@@ -1,4 +1,4 @@
-package spesb.kafkasender;
+package theodolite.kafkasender;
 
 import java.util.Properties;
 import java.util.function.Function;
diff --git a/uc1-workload-generator/src/main/java/spesb/uc1/workloadgenerator/LoadGenerator.java b/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java
similarity index 97%
rename from uc1-workload-generator/src/main/java/spesb/uc1/workloadgenerator/LoadGenerator.java
rename to uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java
index 9eb95f0c1..bcff74b9a 100644
--- a/uc1-workload-generator/src/main/java/spesb/uc1/workloadgenerator/LoadGenerator.java
+++ b/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java
@@ -1,4 +1,4 @@
-package spesb.uc1.workloadgenerator;
+package theodolite.uc1.workloadgenerator;
 
 import java.io.IOException;
 import java.util.List;
@@ -14,7 +14,7 @@ import java.util.stream.IntStream;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import spesb.kafkasender.KafkaRecordSender;
+import theodolite.kafkasender.KafkaRecordSender;
 import titan.ccp.models.records.ActivePowerRecord;
 
 public class LoadGenerator {
diff --git a/uc2-application/build.gradle b/uc2-application/build.gradle
index 90f54fc61..ea3d8779a 100644
--- a/uc2-application/build.gradle
+++ b/uc2-application/build.gradle
@@ -1 +1 @@
-mainClassName = "spesb.uc2.application.AggregationService"
+mainClassName = "theodolite.uc2.application.AggregationService"
diff --git a/uc2-application/src/main/java/spesb/uc2/application/AggregationService.java b/uc2-application/src/main/java/theodolite/uc2/application/AggregationService.java
similarity index 95%
rename from uc2-application/src/main/java/spesb/uc2/application/AggregationService.java
rename to uc2-application/src/main/java/theodolite/uc2/application/AggregationService.java
index bc6fdc067..2f37bf757 100644
--- a/uc2-application/src/main/java/spesb/uc2/application/AggregationService.java
+++ b/uc2-application/src/main/java/theodolite/uc2/application/AggregationService.java
@@ -1,10 +1,10 @@
-package spesb.uc2.application;
+package theodolite.uc2.application;
 
 import java.time.Duration;
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
-import spesb.uc2.streamprocessing.Uc2KafkaStreamsBuilder;
+import theodolite.uc2.streamprocessing.Uc2KafkaStreamsBuilder;
 import titan.ccp.common.configuration.Configurations;
 
 /**
diff --git a/uc2-application/src/main/java/spesb/uc2/application/ConfigurationKeys.java b/uc2-application/src/main/java/theodolite/uc2/application/ConfigurationKeys.java
similarity index 95%
rename from uc2-application/src/main/java/spesb/uc2/application/ConfigurationKeys.java
rename to uc2-application/src/main/java/theodolite/uc2/application/ConfigurationKeys.java
index ec3bb14be..b57f5c38e 100644
--- a/uc2-application/src/main/java/spesb/uc2/application/ConfigurationKeys.java
+++ b/uc2-application/src/main/java/theodolite/uc2/application/ConfigurationKeys.java
@@ -1,4 +1,4 @@
-package spesb.uc2.application;
+package theodolite.uc2.application;
 
 /**
  * Keys to access configuration parameters.
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/ChildParentsTransformer.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformer.java
similarity index 99%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/ChildParentsTransformer.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformer.java
index 82217b30a..d4f9097ad 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/ChildParentsTransformer.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformer.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.Map;
 import java.util.Optional;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/ChildParentsTransformerFactory.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformerFactory.java
similarity index 97%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/ChildParentsTransformerFactory.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformerFactory.java
index 6cf2d2c6f..3060fdaaf 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/ChildParentsTransformerFactory.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ChildParentsTransformerFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.Map;
 import java.util.Optional;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/JointFlatTransformer.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformer.java
similarity index 98%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/JointFlatTransformer.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformer.java
index 27857fa45..0555df96c 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/JointFlatTransformer.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformer.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import com.google.common.base.MoreObjects;
 import java.util.ArrayList;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/JointFlatTransformerFactory.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformerFactory.java
similarity index 97%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/JointFlatTransformerFactory.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformerFactory.java
index 44c99b1f5..b78eec51e 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/JointFlatTransformerFactory.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointFlatTransformerFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.Map;
 import java.util.Set;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/JointRecordParents.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointRecordParents.java
similarity index 93%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/JointRecordParents.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointRecordParents.java
index 64de26d99..02b731858 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/JointRecordParents.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/JointRecordParents.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.Set;
 import titan.ccp.models.records.ActivePowerRecord;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/OptionalParentsSerde.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/OptionalParentsSerde.java
similarity index 97%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/OptionalParentsSerde.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/OptionalParentsSerde.java
index 5e31a5540..5cb8f1ed8 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/OptionalParentsSerde.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/OptionalParentsSerde.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.HashSet;
 import java.util.Optional;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/ParentsSerde.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ParentsSerde.java
similarity index 96%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/ParentsSerde.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/ParentsSerde.java
index 4385d3bfb..266eaad01 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/ParentsSerde.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/ParentsSerde.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.HashSet;
 import java.util.Set;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/RecordAggregator.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/RecordAggregator.java
similarity index 97%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/RecordAggregator.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/RecordAggregator.java
index 6951d49c9..10fb98c9c 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/RecordAggregator.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/RecordAggregator.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import org.apache.kafka.streams.kstream.Windowed;
 import titan.ccp.models.records.ActivePowerRecord;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/SensorParentKey.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKey.java
similarity index 94%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/SensorParentKey.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKey.java
index 390ecf0e3..d65c93034 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/SensorParentKey.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKey.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 /**
  * A key consisting of the identifier of a sensor and an identifier of parent sensor.
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/SensorParentKeySerde.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKeySerde.java
similarity index 95%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/SensorParentKeySerde.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKeySerde.java
index 7021c0832..d6773c615 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/SensorParentKeySerde.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/SensorParentKeySerde.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import org.apache.kafka.common.serialization.Serde;
 import titan.ccp.common.kafka.simpleserdes.BufferSerde;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/TopologyBuilder.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
similarity index 99%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/TopologyBuilder.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
index c83de4efd..b6c46fa3a 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/TopologyBuilder.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import com.google.common.math.StatsAccumulator;
 import java.time.Duration;
diff --git a/uc2-application/src/main/java/spesb/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
similarity index 95%
rename from uc2-application/src/main/java/spesb/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
rename to uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
index 875a45ee9..ce7d5e90b 100644
--- a/uc2-application/src/main/java/spesb/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
+++ b/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java
@@ -1,9 +1,9 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.time.Duration;
 import java.util.Objects;
 import org.apache.kafka.streams.Topology;
-import spesb.commons.kafkastreams.KafkaStreamsBuilder;
+import theodolite.commons.kafkastreams.KafkaStreamsBuilder;
 
 /**
  * Builder for the Kafka Streams configuration.
diff --git a/uc2-application/src/test/java/spesb/uc2/streamprocessing/OptionalParentsSerdeTest.java b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/OptionalParentsSerdeTest.java
similarity index 88%
rename from uc2-application/src/test/java/spesb/uc2/streamprocessing/OptionalParentsSerdeTest.java
rename to uc2-application/src/test/java/theodolite/uc2/streamprocessing/OptionalParentsSerdeTest.java
index dc9f7e20e..49ed674bc 100644
--- a/uc2-application/src/test/java/spesb/uc2/streamprocessing/OptionalParentsSerdeTest.java
+++ b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/OptionalParentsSerdeTest.java
@@ -1,9 +1,9 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.Optional;
 import java.util.Set;
 import org.junit.Test;
-import spesb.uc2.streamprocessing.OptionalParentsSerde;
+import theodolite.uc2.streamprocessing.OptionalParentsSerde;
 
 public class OptionalParentsSerdeTest {
 
diff --git a/uc2-application/src/test/java/spesb/uc2/streamprocessing/ParentsSerdeTest.java b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/ParentsSerdeTest.java
similarity index 81%
rename from uc2-application/src/test/java/spesb/uc2/streamprocessing/ParentsSerdeTest.java
rename to uc2-application/src/test/java/theodolite/uc2/streamprocessing/ParentsSerdeTest.java
index 7f166669b..158727986 100644
--- a/uc2-application/src/test/java/spesb/uc2/streamprocessing/ParentsSerdeTest.java
+++ b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/ParentsSerdeTest.java
@@ -1,8 +1,8 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import java.util.Set;
 import org.junit.Test;
-import spesb.uc2.streamprocessing.ParentsSerde;
+import theodolite.uc2.streamprocessing.ParentsSerde;
 
 public class ParentsSerdeTest {
 
diff --git a/uc2-application/src/test/java/spesb/uc2/streamprocessing/SensorParentKeySerdeTest.java b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SensorParentKeySerdeTest.java
similarity index 75%
rename from uc2-application/src/test/java/spesb/uc2/streamprocessing/SensorParentKeySerdeTest.java
rename to uc2-application/src/test/java/theodolite/uc2/streamprocessing/SensorParentKeySerdeTest.java
index 5e0495f85..7d9fe3a6e 100644
--- a/uc2-application/src/test/java/spesb/uc2/streamprocessing/SensorParentKeySerdeTest.java
+++ b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SensorParentKeySerdeTest.java
@@ -1,8 +1,8 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import org.junit.Test;
-import spesb.uc2.streamprocessing.SensorParentKey;
-import spesb.uc2.streamprocessing.SensorParentKeySerde;
+import theodolite.uc2.streamprocessing.SensorParentKey;
+import theodolite.uc2.streamprocessing.SensorParentKeySerde;
 
 public class SensorParentKeySerdeTest {
 
diff --git a/uc2-application/src/test/java/spesb/uc2/streamprocessing/SerdeTester.java b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTester.java
similarity index 94%
rename from uc2-application/src/test/java/spesb/uc2/streamprocessing/SerdeTester.java
rename to uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTester.java
index 443d8b845..8e9f5a360 100644
--- a/uc2-application/src/test/java/spesb/uc2/streamprocessing/SerdeTester.java
+++ b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTester.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import static org.junit.Assert.assertEquals;
 import java.util.function.Function;
diff --git a/uc2-application/src/test/java/spesb/uc2/streamprocessing/SerdeTesterFactory.java b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTesterFactory.java
similarity index 94%
rename from uc2-application/src/test/java/spesb/uc2/streamprocessing/SerdeTesterFactory.java
rename to uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTesterFactory.java
index 9e5549fc1..5cdbfc605 100644
--- a/uc2-application/src/test/java/spesb/uc2/streamprocessing/SerdeTesterFactory.java
+++ b/uc2-application/src/test/java/theodolite/uc2/streamprocessing/SerdeTesterFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc2.streamprocessing;
+package theodolite.uc2.streamprocessing;
 
 import org.apache.kafka.common.serialization.Serde;
 
diff --git a/uc2-workload-generator/build.gradle b/uc2-workload-generator/build.gradle
index d165ab24e..f2c3e5d2e 100644
--- a/uc2-workload-generator/build.gradle
+++ b/uc2-workload-generator/build.gradle
@@ -1 +1 @@
-mainClassName = "spesb.uc2.workloadgenerator.LoadGenerator"
+mainClassName = "theodolite.uc2.workloadgenerator.LoadGenerator"
diff --git a/uc1-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java b/uc2-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
similarity index 98%
rename from uc1-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
rename to uc2-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
index 034201411..bf562d86a 100644
--- a/uc1-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
+++ b/uc2-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
@@ -1,4 +1,4 @@
-package spesb.kafkasender;
+package theodolite.kafkasender;
 
 import java.util.Properties;
 import java.util.function.Function;
diff --git a/uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/ConfigPublisher.java b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/ConfigPublisher.java
similarity index 97%
rename from uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/ConfigPublisher.java
rename to uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/ConfigPublisher.java
index 8cc3095ff..c8b3a1846 100644
--- a/uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/ConfigPublisher.java
+++ b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/ConfigPublisher.java
@@ -1,4 +1,4 @@
-package spesb.uc2.workloadgenerator;
+package theodolite.uc2.workloadgenerator;
 
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
diff --git a/uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/LoadGenerator.java b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
similarity index 98%
rename from uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/LoadGenerator.java
rename to uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
index c2b05be3f..823f4f276 100644
--- a/uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/LoadGenerator.java
+++ b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java
@@ -1,4 +1,4 @@
-package spesb.uc2.workloadgenerator;
+package theodolite.uc2.workloadgenerator;
 
 import java.io.IOException;
 import java.util.List;
@@ -12,7 +12,7 @@ import java.util.stream.Collectors;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import spesb.kafkasender.KafkaRecordSender;
+import theodolite.kafkasender.KafkaRecordSender;
 import titan.ccp.configuration.events.Event;
 import titan.ccp.model.sensorregistry.MutableAggregatedSensor;
 import titan.ccp.model.sensorregistry.MutableSensorRegistry;
diff --git a/uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/LoadGeneratorExtrem.java b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGeneratorExtrem.java
similarity index 98%
rename from uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/LoadGeneratorExtrem.java
rename to uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGeneratorExtrem.java
index c78647edb..1e5854175 100644
--- a/uc2-workload-generator/src/main/java/spesb/uc2/workloadgenerator/LoadGeneratorExtrem.java
+++ b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGeneratorExtrem.java
@@ -1,4 +1,4 @@
-package spesb.uc2.workloadgenerator;
+package theodolite.uc2.workloadgenerator;
 
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
@@ -10,7 +10,7 @@ import java.util.Properties;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import org.apache.kafka.clients.producer.ProducerConfig;
-import spesb.kafkasender.KafkaRecordSender;
+import theodolite.kafkasender.KafkaRecordSender;
 import titan.ccp.configuration.events.Event;
 import titan.ccp.model.sensorregistry.MutableAggregatedSensor;
 import titan.ccp.model.sensorregistry.MutableSensorRegistry;
diff --git a/uc3-application/build.gradle b/uc3-application/build.gradle
index 89d122ba6..82df66fae 100644
--- a/uc3-application/build.gradle
+++ b/uc3-application/build.gradle
@@ -10,4 +10,4 @@ dependencies {
     compile('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT')
 }
 
-mainClassName = "spesb.uc3.application.HistoryService"
+mainClassName = "theodolite.uc3.application.HistoryService"
diff --git a/uc3-application/src/main/java/spesb/uc3/application/ConfigurationKeys.java b/uc3-application/src/main/java/theodolite/uc3/application/ConfigurationKeys.java
similarity index 94%
rename from uc3-application/src/main/java/spesb/uc3/application/ConfigurationKeys.java
rename to uc3-application/src/main/java/theodolite/uc3/application/ConfigurationKeys.java
index df51385a6..d95d245e0 100644
--- a/uc3-application/src/main/java/spesb/uc3/application/ConfigurationKeys.java
+++ b/uc3-application/src/main/java/theodolite/uc3/application/ConfigurationKeys.java
@@ -1,4 +1,4 @@
-package spesb.uc3.application;
+package theodolite.uc3.application;
 
 /**
  * Keys to access configuration parameters.
diff --git a/uc3-application/src/main/java/spesb/uc3/application/HistoryService.java b/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
similarity index 95%
rename from uc3-application/src/main/java/spesb/uc3/application/HistoryService.java
rename to uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
index 90f5a828e..916d64f01 100644
--- a/uc3-application/src/main/java/spesb/uc3/application/HistoryService.java
+++ b/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java
@@ -1,11 +1,11 @@
-package spesb.uc3.application;
+package theodolite.uc3.application;
 
 import java.time.Duration;
 import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
-import spesb.uc3.streamprocessing.Uc3KafkaStreamsBuilder;
+import theodolite.uc3.streamprocessing.Uc3KafkaStreamsBuilder;
 import titan.ccp.common.configuration.Configurations;
 
 /**
diff --git a/uc3-application/src/main/java/spesb/uc3/streamprocessing/TopologyBuilder.java b/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
similarity index 96%
rename from uc3-application/src/main/java/spesb/uc3/streamprocessing/TopologyBuilder.java
rename to uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
index d79451088..0ad1845f6 100644
--- a/uc3-application/src/main/java/spesb/uc3/streamprocessing/TopologyBuilder.java
+++ b/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package spesb.uc3.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import com.google.common.math.Stats;
 import java.time.Duration;
@@ -12,7 +12,7 @@ import org.apache.kafka.streams.kstream.Produced;
 import org.apache.kafka.streams.kstream.TimeWindows;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import spesb.uc3.streamprocessing.util.StatsFactory;
+import theodolite.uc3.streamprocessing.util.StatsFactory;
 import titan.ccp.common.kafka.GenericSerde;
 import titan.ccp.common.kieker.kafka.IMonitoringRecordSerde;
 import titan.ccp.models.records.ActivePowerRecordFactory;
diff --git a/uc3-application/src/main/java/spesb/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java b/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
similarity index 92%
rename from uc3-application/src/main/java/spesb/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
rename to uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
index b7f5d517c..63841361b 100644
--- a/uc3-application/src/main/java/spesb/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
+++ b/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java
@@ -1,9 +1,9 @@
-package spesb.uc3.streamprocessing;
+package theodolite.uc3.streamprocessing;
 
 import java.time.Duration;
 import java.util.Objects;
 import org.apache.kafka.streams.Topology;
-import spesb.commons.kafkastreams.KafkaStreamsBuilder;
+import theodolite.commons.kafkastreams.KafkaStreamsBuilder;
 
 /**
  * Builder for the Kafka Streams configuration.
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/util/StatsFactory.java b/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java
similarity index 91%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/util/StatsFactory.java
rename to uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java
index 39fe57344..8099c85d6 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/util/StatsFactory.java
+++ b/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing.util;
+package theodolite.uc3.streamprocessing.util;
 
 import com.google.common.math.Stats;
 import com.google.common.math.StatsAccumulator;
diff --git a/uc3-workload-generator/build.gradle b/uc3-workload-generator/build.gradle
index e27cf26d2..c3ca94290 100644
--- a/uc3-workload-generator/build.gradle
+++ b/uc3-workload-generator/build.gradle
@@ -1 +1 @@
-mainClassName = "spesb.uc3.workloadgenerator.LoadGenerator"
+mainClassName = "theodolite.uc3.workloadgenerator.LoadGenerator"
diff --git a/uc4-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java b/uc3-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
similarity index 98%
rename from uc4-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
rename to uc3-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
index 034201411..bf562d86a 100644
--- a/uc4-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
+++ b/uc3-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
@@ -1,4 +1,4 @@
-package spesb.kafkasender;
+package theodolite.kafkasender;
 
 import java.util.Properties;
 import java.util.function.Function;
diff --git a/uc3-workload-generator/src/main/java/spesb/uc3/workloadgenerator/LoadGenerator.java b/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java
similarity index 97%
rename from uc3-workload-generator/src/main/java/spesb/uc3/workloadgenerator/LoadGenerator.java
rename to uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java
index 9ab8a5530..a063ea359 100644
--- a/uc3-workload-generator/src/main/java/spesb/uc3/workloadgenerator/LoadGenerator.java
+++ b/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java
@@ -1,4 +1,4 @@
-package spesb.uc3.workloadgenerator;
+package theodolite.uc3.workloadgenerator;
 
 import java.io.IOException;
 import java.util.List;
@@ -14,7 +14,7 @@ import java.util.stream.IntStream;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import spesb.kafkasender.KafkaRecordSender;
+import theodolite.kafkasender.KafkaRecordSender;
 import titan.ccp.models.records.ActivePowerRecord;
 
 public class LoadGenerator {
diff --git a/uc4-application/build.gradle b/uc4-application/build.gradle
index c89b18b1b..c5891b2bf 100644
--- a/uc4-application/build.gradle
+++ b/uc4-application/build.gradle
@@ -10,4 +10,4 @@ dependencies {
     compile('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT')
 }
 
-mainClassName = "spesb.uc4.application.HistoryService"
+mainClassName = "theodolite.uc4.application.HistoryService"
diff --git a/uc4-application/src/main/java/spesb/uc4/application/ConfigurationKeys.java b/uc4-application/src/main/java/theodolite/uc4/application/ConfigurationKeys.java
similarity index 95%
rename from uc4-application/src/main/java/spesb/uc4/application/ConfigurationKeys.java
rename to uc4-application/src/main/java/theodolite/uc4/application/ConfigurationKeys.java
index 236601a46..aa74e1552 100644
--- a/uc4-application/src/main/java/spesb/uc4/application/ConfigurationKeys.java
+++ b/uc4-application/src/main/java/theodolite/uc4/application/ConfigurationKeys.java
@@ -1,4 +1,4 @@
-package spesb.uc4.application;
+package theodolite.uc4.application;
 
 /**
  * Keys to access configuration parameters.
diff --git a/uc4-application/src/main/java/spesb/uc4/application/HistoryService.java b/uc4-application/src/main/java/theodolite/uc4/application/HistoryService.java
similarity index 95%
rename from uc4-application/src/main/java/spesb/uc4/application/HistoryService.java
rename to uc4-application/src/main/java/theodolite/uc4/application/HistoryService.java
index 56275d594..4d686d8f7 100644
--- a/uc4-application/src/main/java/spesb/uc4/application/HistoryService.java
+++ b/uc4-application/src/main/java/theodolite/uc4/application/HistoryService.java
@@ -1,10 +1,10 @@
-package spesb.uc4.application;
+package theodolite.uc4.application;
 
 import java.time.Duration;
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.configuration2.Configuration;
 import org.apache.kafka.streams.KafkaStreams;
-import spesb.uc4.streamprocessing.Uc4KafkaStreamsBuilder;
+import theodolite.uc4.streamprocessing.Uc4KafkaStreamsBuilder;
 import titan.ccp.common.configuration.Configurations;
 
 /**
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKey.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKey.java
similarity index 92%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKey.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKey.java
index b07a54d6f..214be2dd0 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKey.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKey.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 /**
  * Composed key of an hour of the day and a sensor id.
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKeyFactory.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeyFactory.java
similarity index 92%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKeyFactory.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeyFactory.java
index a13de1422..edb9ad2b2 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKeyFactory.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeyFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.time.LocalDateTime;
 
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKeySerde.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeySerde.java
similarity index 96%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKeySerde.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeySerde.java
index a938813c6..ff404ab12 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayKeySerde.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayKeySerde.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import org.apache.kafka.common.serialization.Serde;
 import titan.ccp.common.kafka.simpleserdes.BufferSerde;
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayRecordFactory.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayRecordFactory.java
similarity index 95%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayRecordFactory.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayRecordFactory.java
index 25fb9193d..7249309ce 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/HourOfDayRecordFactory.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/HourOfDayRecordFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import com.google.common.math.Stats;
 import org.apache.kafka.streams.kstream.Windowed;
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/RecordDatabaseAdapter.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordDatabaseAdapter.java
similarity index 98%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/RecordDatabaseAdapter.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordDatabaseAdapter.java
index 9c286cb49..8f693d5d3 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/RecordDatabaseAdapter.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordDatabaseAdapter.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/StatsKeyFactory.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsKeyFactory.java
similarity index 88%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/StatsKeyFactory.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsKeyFactory.java
index 7e4ac46e4..cf67efbd3 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/StatsKeyFactory.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsKeyFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.time.LocalDateTime;
 
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/StatsRecordFactory.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsRecordFactory.java
similarity index 94%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/StatsRecordFactory.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsRecordFactory.java
index 045b512d0..79eb4b9f7 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/StatsRecordFactory.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/StatsRecordFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import com.google.common.math.Stats;
 import org.apache.avro.specific.SpecificRecord;
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/TopologyBuilder.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
similarity index 97%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/TopologyBuilder.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
index c2489a9ae..b4632aaf1 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/TopologyBuilder.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java
@@ -1,4 +1,4 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import com.google.common.math.Stats;
 import java.time.Duration;
@@ -15,7 +15,7 @@ import org.apache.kafka.streams.kstream.Grouped;
 import org.apache.kafka.streams.kstream.Materialized;
 import org.apache.kafka.streams.kstream.Produced;
 import org.apache.kafka.streams.kstream.TimeWindows;
-import spesb.uc4.streamprocessing.util.StatsFactory;
+import theodolite.uc4.streamprocessing.util.StatsFactory;
 import titan.ccp.common.kafka.GenericSerde;
 import titan.ccp.common.kieker.kafka.IMonitoringRecordSerde;
 import titan.ccp.models.records.ActivePowerRecordFactory;
diff --git a/uc4-application/src/main/java/spesb/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
similarity index 94%
rename from uc4-application/src/main/java/spesb/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
index d248c0215..8220f4cd3 100644
--- a/uc4-application/src/main/java/spesb/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java
@@ -1,9 +1,9 @@
-package spesb.uc4.streamprocessing;
+package theodolite.uc4.streamprocessing;
 
 import java.time.Duration;
 import java.util.Objects;
 import org.apache.kafka.streams.Topology;
-import spesb.commons.kafkastreams.KafkaStreamsBuilder;
+import theodolite.commons.kafkastreams.KafkaStreamsBuilder;
 
 /**
  * Builder for the Kafka Streams configuration.
diff --git a/uc3-application/src/main/java/spesb/uc3/streamprocessing/util/StatsFactory.java b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/util/StatsFactory.java
similarity index 91%
rename from uc3-application/src/main/java/spesb/uc3/streamprocessing/util/StatsFactory.java
rename to uc4-application/src/main/java/theodolite/uc4/streamprocessing/util/StatsFactory.java
index 964199c00..e97fbcd21 100644
--- a/uc3-application/src/main/java/spesb/uc3/streamprocessing/util/StatsFactory.java
+++ b/uc4-application/src/main/java/theodolite/uc4/streamprocessing/util/StatsFactory.java
@@ -1,4 +1,4 @@
-package spesb.uc3.streamprocessing.util;
+package theodolite.uc4.streamprocessing.util;
 
 import com.google.common.math.Stats;
 import com.google.common.math.StatsAccumulator;
diff --git a/uc4-workload-generator/build.gradle b/uc4-workload-generator/build.gradle
index 8bbdedf4f..76bbce013 100644
--- a/uc4-workload-generator/build.gradle
+++ b/uc4-workload-generator/build.gradle
@@ -1 +1 @@
-mainClassName = "spesb.uc4.workloadgenerator.LoadGenerator"
+mainClassName = "theodolite.uc4.workloadgenerator.LoadGenerator"
diff --git a/uc3-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java b/uc4-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
similarity index 98%
rename from uc3-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
rename to uc4-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
index 034201411..bf562d86a 100644
--- a/uc3-workload-generator/src/main/java/spesb/kafkasender/KafkaRecordSender.java
+++ b/uc4-workload-generator/src/main/java/theodolite/kafkasender/KafkaRecordSender.java
@@ -1,4 +1,4 @@
-package spesb.kafkasender;
+package theodolite.kafkasender;
 
 import java.util.Properties;
 import java.util.function.Function;
diff --git a/uc4-workload-generator/src/main/java/spesb/uc4/workloadgenerator/LoadGenerator.java b/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
similarity index 97%
rename from uc4-workload-generator/src/main/java/spesb/uc4/workloadgenerator/LoadGenerator.java
rename to uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
index bcf4f6d2c..90d28aafb 100644
--- a/uc4-workload-generator/src/main/java/spesb/uc4/workloadgenerator/LoadGenerator.java
+++ b/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java
@@ -1,4 +1,4 @@
-package spesb.uc4.workloadgenerator;
+package theodolite.uc4.workloadgenerator;
 
 import java.io.IOException;
 import java.util.List;
@@ -13,7 +13,7 @@ import java.util.stream.IntStream;
 import org.apache.kafka.clients.producer.ProducerConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import spesb.kafkasender.KafkaRecordSender;
+import theodolite.kafkasender.KafkaRecordSender;
 import titan.ccp.models.records.ActivePowerRecord;
 
 public class LoadGenerator {
-- 
GitLab