diff --git a/theodolite-benchmarks/definitions/uc1-flink/resources/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc1-flink/resources/flink-configuration-configmap.yaml
index ecda4025087f103613b9700ca733962709c48836..625d8eb9aeebf5bb55f079ebe290460191965cec 100644
--- a/theodolite-benchmarks/definitions/uc1-flink/resources/flink-configuration-configmap.yaml
+++ b/theodolite-benchmarks/definitions/uc1-flink/resources/flink-configuration-configmap.yaml
@@ -16,12 +16,12 @@ data:
     metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
     metrics.reporter.prom.interval: 10 SECONDS
     # gives metrics about inbound/outbound network queue lengths
-    taskmanager.network.detailed-metrics: true
+    #taskmanager.network.detailed-metrics: true
   log4j-console.properties: |+
     # This affects logging for both user code and Flink
     rootLogger.level = INFO
     rootLogger.appenderRef.console.ref = ConsoleAppender
-    rootLogger.appenderRef.rolling.ref = RollingFileAppender
+    #rootLogger.appenderRef.rolling.ref = RollingFileAppender
 
     # Uncomment this if you want to _only_ change Flink's logging
     #logger.flink.name = org.apache.flink
@@ -46,18 +46,18 @@ data:
     appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
 
     # Log all infos in the given rolling file
-    appender.rolling.name = RollingFileAppender
-    appender.rolling.type = RollingFile
-    appender.rolling.append = false
-    appender.rolling.fileName = ${sys:log.file}
-    appender.rolling.filePattern = ${sys:log.file}.%i
-    appender.rolling.layout.type = PatternLayout
-    appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
-    appender.rolling.policies.type = Policies
-    appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
-    appender.rolling.policies.size.size=100MB
-    appender.rolling.strategy.type = DefaultRolloverStrategy
-    appender.rolling.strategy.max = 10
+    #appender.rolling.name = RollingFileAppender
+    #appender.rolling.type = RollingFile
+    #appender.rolling.append = false
+    #appender.rolling.fileName = ${sys:log.file}
+    #appender.rolling.filePattern = ${sys:log.file}.%i
+    #appender.rolling.layout.type = PatternLayout
+    #appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
+    #appender.rolling.policies.type = Policies
+    #appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
+    #appender.rolling.policies.size.size=100MB
+    #appender.rolling.strategy.type = DefaultRolloverStrategy
+    #appender.rolling.strategy.max = 10
 
     # Suppress the irrelevant (wrong) warnings from the Netty channel handler
     logger.netty.name = org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline
diff --git a/theodolite-benchmarks/definitions/uc2-flink/resources/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc2-flink/resources/flink-configuration-configmap.yaml
index ecda4025087f103613b9700ca733962709c48836..625d8eb9aeebf5bb55f079ebe290460191965cec 100644
--- a/theodolite-benchmarks/definitions/uc2-flink/resources/flink-configuration-configmap.yaml
+++ b/theodolite-benchmarks/definitions/uc2-flink/resources/flink-configuration-configmap.yaml
@@ -16,12 +16,12 @@ data:
     metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
     metrics.reporter.prom.interval: 10 SECONDS
     # gives metrics about inbound/outbound network queue lengths
-    taskmanager.network.detailed-metrics: true
+    #taskmanager.network.detailed-metrics: true
   log4j-console.properties: |+
     # This affects logging for both user code and Flink
     rootLogger.level = INFO
     rootLogger.appenderRef.console.ref = ConsoleAppender
-    rootLogger.appenderRef.rolling.ref = RollingFileAppender
+    #rootLogger.appenderRef.rolling.ref = RollingFileAppender
 
     # Uncomment this if you want to _only_ change Flink's logging
     #logger.flink.name = org.apache.flink
@@ -46,18 +46,18 @@ data:
     appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
 
     # Log all infos in the given rolling file
-    appender.rolling.name = RollingFileAppender
-    appender.rolling.type = RollingFile
-    appender.rolling.append = false
-    appender.rolling.fileName = ${sys:log.file}
-    appender.rolling.filePattern = ${sys:log.file}.%i
-    appender.rolling.layout.type = PatternLayout
-    appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
-    appender.rolling.policies.type = Policies
-    appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
-    appender.rolling.policies.size.size=100MB
-    appender.rolling.strategy.type = DefaultRolloverStrategy
-    appender.rolling.strategy.max = 10
+    #appender.rolling.name = RollingFileAppender
+    #appender.rolling.type = RollingFile
+    #appender.rolling.append = false
+    #appender.rolling.fileName = ${sys:log.file}
+    #appender.rolling.filePattern = ${sys:log.file}.%i
+    #appender.rolling.layout.type = PatternLayout
+    #appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
+    #appender.rolling.policies.type = Policies
+    #appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
+    #appender.rolling.policies.size.size=100MB
+    #appender.rolling.strategy.type = DefaultRolloverStrategy
+    #appender.rolling.strategy.max = 10
 
     # Suppress the irrelevant (wrong) warnings from the Netty channel handler
     logger.netty.name = org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline
diff --git a/theodolite-benchmarks/definitions/uc3-flink/resources/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc3-flink/resources/flink-configuration-configmap.yaml
index ecda4025087f103613b9700ca733962709c48836..625d8eb9aeebf5bb55f079ebe290460191965cec 100644
--- a/theodolite-benchmarks/definitions/uc3-flink/resources/flink-configuration-configmap.yaml
+++ b/theodolite-benchmarks/definitions/uc3-flink/resources/flink-configuration-configmap.yaml
@@ -16,12 +16,12 @@ data:
     metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
     metrics.reporter.prom.interval: 10 SECONDS
     # gives metrics about inbound/outbound network queue lengths
-    taskmanager.network.detailed-metrics: true
+    #taskmanager.network.detailed-metrics: true
   log4j-console.properties: |+
     # This affects logging for both user code and Flink
     rootLogger.level = INFO
     rootLogger.appenderRef.console.ref = ConsoleAppender
-    rootLogger.appenderRef.rolling.ref = RollingFileAppender
+    #rootLogger.appenderRef.rolling.ref = RollingFileAppender
 
     # Uncomment this if you want to _only_ change Flink's logging
     #logger.flink.name = org.apache.flink
@@ -46,18 +46,18 @@ data:
     appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
 
     # Log all infos in the given rolling file
-    appender.rolling.name = RollingFileAppender
-    appender.rolling.type = RollingFile
-    appender.rolling.append = false
-    appender.rolling.fileName = ${sys:log.file}
-    appender.rolling.filePattern = ${sys:log.file}.%i
-    appender.rolling.layout.type = PatternLayout
-    appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
-    appender.rolling.policies.type = Policies
-    appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
-    appender.rolling.policies.size.size=100MB
-    appender.rolling.strategy.type = DefaultRolloverStrategy
-    appender.rolling.strategy.max = 10
+    #appender.rolling.name = RollingFileAppender
+    #appender.rolling.type = RollingFile
+    #appender.rolling.append = false
+    #appender.rolling.fileName = ${sys:log.file}
+    #appender.rolling.filePattern = ${sys:log.file}.%i
+    #appender.rolling.layout.type = PatternLayout
+    #appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
+    #appender.rolling.policies.type = Policies
+    #appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
+    #appender.rolling.policies.size.size=100MB
+    #appender.rolling.strategy.type = DefaultRolloverStrategy
+    #appender.rolling.strategy.max = 10
 
     # Suppress the irrelevant (wrong) warnings from the Netty channel handler
     logger.netty.name = org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline
diff --git a/theodolite-benchmarks/definitions/uc4-flink/resources/flink-configuration-configmap.yaml b/theodolite-benchmarks/definitions/uc4-flink/resources/flink-configuration-configmap.yaml
index ecda4025087f103613b9700ca733962709c48836..625d8eb9aeebf5bb55f079ebe290460191965cec 100644
--- a/theodolite-benchmarks/definitions/uc4-flink/resources/flink-configuration-configmap.yaml
+++ b/theodolite-benchmarks/definitions/uc4-flink/resources/flink-configuration-configmap.yaml
@@ -16,12 +16,12 @@ data:
     metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
     metrics.reporter.prom.interval: 10 SECONDS
     # gives metrics about inbound/outbound network queue lengths
-    taskmanager.network.detailed-metrics: true
+    #taskmanager.network.detailed-metrics: true
   log4j-console.properties: |+
     # This affects logging for both user code and Flink
     rootLogger.level = INFO
     rootLogger.appenderRef.console.ref = ConsoleAppender
-    rootLogger.appenderRef.rolling.ref = RollingFileAppender
+    #rootLogger.appenderRef.rolling.ref = RollingFileAppender
 
     # Uncomment this if you want to _only_ change Flink's logging
     #logger.flink.name = org.apache.flink
@@ -46,18 +46,18 @@ data:
     appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
 
     # Log all infos in the given rolling file
-    appender.rolling.name = RollingFileAppender
-    appender.rolling.type = RollingFile
-    appender.rolling.append = false
-    appender.rolling.fileName = ${sys:log.file}
-    appender.rolling.filePattern = ${sys:log.file}.%i
-    appender.rolling.layout.type = PatternLayout
-    appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
-    appender.rolling.policies.type = Policies
-    appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
-    appender.rolling.policies.size.size=100MB
-    appender.rolling.strategy.type = DefaultRolloverStrategy
-    appender.rolling.strategy.max = 10
+    #appender.rolling.name = RollingFileAppender
+    #appender.rolling.type = RollingFile
+    #appender.rolling.append = false
+    #appender.rolling.fileName = ${sys:log.file}
+    #appender.rolling.filePattern = ${sys:log.file}.%i
+    #appender.rolling.layout.type = PatternLayout
+    #appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
+    #appender.rolling.policies.type = Policies
+    #appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
+    #appender.rolling.policies.size.size=100MB
+    #appender.rolling.strategy.type = DefaultRolloverStrategy
+    #appender.rolling.strategy.max = 10
 
     # Suppress the irrelevant (wrong) warnings from the Netty channel handler
     logger.netty.name = org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractIntPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractIntPatcher.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d78f801fcbdb0dbf23a6913ed165d41ba74bd613
--- /dev/null
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractIntPatcher.kt
@@ -0,0 +1,19 @@
+package rocks.theodolite.kubernetes.patcher
+
+import io.fabric8.kubernetes.api.model.HasMetadata
+import io.fabric8.kubernetes.client.utils.Serialization
+
+/**
+ * A Patcher is able to modify values of a Kubernetes resource, see [Patcher].
+ */
+abstract class AbstractIntPatcher : Patcher {
+
+    final override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> {
+        return resources
+            .map { Serialization.clone(it)}
+            .map { patchSingleResource(it, value.toInt()) }
+    }
+
+    abstract fun patchSingleResource(resource: HasMetadata, value: Int): HasMetadata
+
+}
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractPatcher.kt
deleted file mode 100644
index 0ed2a5e5a8c96761074f998721489f0ddd2db1ac..0000000000000000000000000000000000000000
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractPatcher.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package rocks.theodolite.kubernetes.patcher
-
-import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.client.utils.Serialization
-
-/**
- * A Patcher is able to modify values of a Kubernetes resource, see [Patcher].
- *
- * An AbstractPatcher is created with up to three parameters.
- *
- *
- *
- * **For example** to patch the load dimension of a load generator, the patcher should be created as follow:
- *
- * k8sResource: `uc-1-workload-generator.yaml`
- * container: `workload`
- * variableName: `NUM_SENSORS`
- *
- */
-abstract class AbstractPatcher : Patcher {
-
-    override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> {
-        return resources
-            .map { Serialization.clone(it)}
-            .map { patchSingleResource(it, value) }
-    }
-
-    abstract fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata
-
-}
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractResourcePatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractResourcePatcher.kt
index adb5c1468130069524221de25354787e045c9b9e..5da1dea79bb2161ed2f81a823f3a00f3c5d49288 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractResourcePatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractResourcePatcher.kt
@@ -22,9 +22,9 @@ abstract class AbstractResourcePatcher(
     protected val requiredResource: String,
     private val format: String? = null,
     private val factor: Int? = null
-) : AbstractPatcher() {
+) : AbstractStringPatcher() {
 
-    override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
+    final override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         when (resource) {
             is Deployment -> {
                 resource.spec.template.spec.containers.filter { it.name == container }.forEach {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractStringPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractStringPatcher.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7048a78eebb161505223b6e9e0f6d66a318d03fd
--- /dev/null
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/AbstractStringPatcher.kt
@@ -0,0 +1,22 @@
+package rocks.theodolite.kubernetes.patcher
+
+import io.fabric8.kubernetes.api.model.HasMetadata
+import io.fabric8.kubernetes.client.utils.Serialization
+
+/**
+ * A Patcher is able to modify values of a Kubernetes resource, see [Patcher].
+ */
+abstract class AbstractStringPatcher(
+    val prefix: String = "",
+    val suffix: String = ""
+) : Patcher {
+
+    final override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> {
+        return resources
+            .map { Serialization.clone(it)}
+            .map { patchSingleResource(it, prefix + value) }
+    }
+
+    abstract fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata
+
+}
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ConfigMapYamlPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ConfigMapYamlPatcher.kt
index 272e3785e274eecbb85e3618113ae5137d5314bc..3c495331fd0b0df61a6b56eb58a02ac8506860e3 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ConfigMapYamlPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ConfigMapYamlPatcher.kt
@@ -13,8 +13,8 @@ import org.yaml.snakeyaml.Yaml
  */
 class ConfigMapYamlPatcher(
     private val fileName: String,
-    private val variableName: String
-) : AbstractPatcher() {
+    private val variableName: String,
+) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         if (resource is ConfigMap) {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt
index 2979d06268d4b363ba2c4de35242bd45fa52f423..bfc40a4a5dfb181543b9979dbc2ef495c5f1b4af 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DataVolumeLoadGeneratorReplicaPatcher.kt
@@ -16,22 +16,22 @@ import io.fabric8.kubernetes.api.model.HasMetadata
  */
 class DataVolumeLoadGeneratorReplicaPatcher(
     private val maxVolume: Int,
-    private val container: String,
-    private val variableName: String
-) : Patcher {
+    val container: String,
+    val variableName: String
+) : AbstractStringPatcher() {
 
-    override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> {
-        return resources.flatMap { patchSingeResource(it, value)}
-    }
+    private val envVarPatcher = EnvVarPatcher(container, variableName)
+    private val replicaPatcher = ReplicaPatcher()
 
-    private fun patchSingeResource(k8sResource: HasMetadata, value: String): List<HasMetadata> {
+    override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         // calculate number of load generator instances and load per instance
         val load = Integer.parseInt(value)
         val loadGenInstances = (load + maxVolume - 1) / maxVolume
         val loadPerInstance = load / loadGenInstances
 
         // Patch instance values and load value of generators
-        val resourceList = ReplicaPatcher().patch(listOf(k8sResource), loadGenInstances.toString())
-        return EnvVarPatcher(this.container, this.variableName).patch(resourceList, loadPerInstance.toString())
+        return this.envVarPatcher.patchSingleResource(
+            replicaPatcher.patchSingleResource(resource, loadGenInstances),
+            loadPerInstance.toString())
     }
 }
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DecoratingPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DecoratingPatcher.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2cd2265b74a5b977e7f778bdc366a708b3427471
--- /dev/null
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/DecoratingPatcher.kt
@@ -0,0 +1,35 @@
+package rocks.theodolite.kubernetes.patcher
+
+import io.fabric8.kubernetes.api.model.HasMetadata
+import mu.KotlinLogging
+
+private val logger = KotlinLogging.logger {}
+
+/**
+ * A decorating [Patcher] to modifies a value by a factor, a prefix and a suffix. All modifications are optional. The
+ * factor only has an effect if the supplied value is an integer.
+ */
+class DecoratingPatcher(
+    private val innerPatcher: Patcher,
+    private val prefix: String?,
+    private val suffix: String?,
+    private val factor: Int?
+) : Patcher {
+
+    override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> {
+        return this.innerPatcher.patch(resources, (prefix ?: "") + multiply(value) + (suffix ?: ""))
+    }
+
+    private fun multiply(value: String): String {
+        if (this.factor == null) {
+            return value
+        }
+        val valueAsInt = value.toIntOrNull()
+        if (valueAsInt == null) {
+            logger.warn { "Patcher value cannot be parsed as Int. Ignoring factor." }
+            return value
+        }
+        return valueAsInt.times(factor).toString()
+    }
+
+}
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/EnvVarPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/EnvVarPatcher.kt
index 33d6c8d9b6f5f82a49e7cd414e4b273708c0e68a..58bb51276acb5f6ebe0edab624d5e45b43c69260 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/EnvVarPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/EnvVarPatcher.kt
@@ -14,7 +14,7 @@ import io.fabric8.kubernetes.api.model.apps.Deployment
 class EnvVarPatcher(
     private val container: String,
     private val variableName: String
-) : AbstractPatcher() {
+) : AbstractStringPatcher() {
 
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt
index 7f54416501bc742499a958566a179b7fad320318..00909fb741f53e9f2b9f50896bb58ea5dc945677 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ImagePatcher.kt
@@ -3,22 +3,13 @@ package rocks.theodolite.kubernetes.patcher
 import io.fabric8.kubernetes.api.model.HasMetadata
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.api.model.apps.StatefulSet
-import io.fabric8.kubernetes.client.utils.Serialization
 
 /**
  * The Image patcher allows to change the image of a container.
  *
  * @param container Container to be patched.
  */
-class ImagePatcher(
-    private val container: String) :
-    AbstractPatcher() {
-
-    override fun patch(resources: List<HasMetadata>, value: String) : List<HasMetadata> {
-        return resources
-            .map { Serialization.clone(it) }
-            .map { patchSingleResource(it, value as kotlin.String) }
-    }
+class ImagePatcher(private val container: String) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         if (resource is Deployment) {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/LabelPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/LabelPatcher.kt
index 8bb5be97e780479884e6cb8e551c03340b04f8e6..86d78176c36dcddf56fbeb0301912cfa45f62eb2 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/LabelPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/LabelPatcher.kt
@@ -1,50 +1,16 @@
 package rocks.theodolite.kubernetes.patcher
 
-import io.fabric8.kubernetes.api.model.ConfigMap
-import io.fabric8.kubernetes.api.model.GenericKubernetesResource
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.Service
-import io.fabric8.kubernetes.api.model.apps.Deployment
-import io.fabric8.kubernetes.api.model.apps.StatefulSet
 
 class LabelPatcher(
     val variableName: String) :
-    AbstractPatcher() {
+    AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
-        when (resource) {
-            is Deployment -> {
-                if (resource.metadata.labels == null) {
-                    resource.metadata.labels = mutableMapOf()
-                }
-                resource.metadata.labels[this.variableName] = value
-            }
-            is StatefulSet -> {
-                if (resource.metadata.labels == null) {
-                    resource.metadata.labels = mutableMapOf()
-                }
-                resource.metadata.labels[this.variableName] = value
-            }
-            is Service -> {
-                if (resource.metadata.labels == null) {
-                    resource.metadata.labels = mutableMapOf()
-                }
-                resource.metadata.labels[this.variableName] = value
-
-            }
-            is ConfigMap -> {
-                if (resource.metadata.labels == null) {
-                    resource.metadata.labels = mutableMapOf()
-                }
-                resource.metadata.labels[this.variableName] = value
-            }
-            is GenericKubernetesResource -> {
-                if (resource.metadata.labels == null) {
-                    resource.metadata.labels = mutableMapOf()
-                }
-                resource.metadata.labels[this.variableName] = value
-            }
+        if (resource.metadata.labels == null) {
+            resource.metadata.labels = mutableMapOf()
         }
+        resource.metadata.labels[this.variableName] = value
         return resource
     }
 }
\ No newline at end of file
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/MatchLabelPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/MatchLabelPatcher.kt
index 725c9cf8a6a87c23119812c0a5d5ad3280a42e3c..2cb70842add05aff5a0238d2b52a642c838c6820 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/MatchLabelPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/MatchLabelPatcher.kt
@@ -9,9 +9,7 @@ import io.fabric8.kubernetes.api.model.apps.StatefulSet
  *
  * @property variableName The matchLabel which should be set
  */
-class MatchLabelPatcher(
-    val variableName: String) :
-    AbstractPatcher() {
+class MatchLabelPatcher(val variableName: String) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         when (resource) {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NamePatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NamePatcher.kt
index a6416a7e77841fa869de7ce2c248882fb486572c..9a39a5b285ff69b4dea88f089432f420a6cd5df3 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NamePatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NamePatcher.kt
@@ -1,35 +1,11 @@
 package rocks.theodolite.kubernetes.patcher
 
-import io.fabric8.kubernetes.api.model.ConfigMap
-import io.fabric8.kubernetes.api.model.GenericKubernetesResource
 import io.fabric8.kubernetes.api.model.HasMetadata
-import io.fabric8.kubernetes.api.model.Service
-import io.fabric8.kubernetes.api.model.apps.Deployment
-import io.fabric8.kubernetes.api.model.apps.StatefulSet
 
-class NamePatcher : AbstractPatcher() {
+class NamePatcher : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
-        when (resource) {
-            is Deployment -> {
-                resource.metadata.name = value
-            }
-            is StatefulSet -> {
-                resource.metadata.name = value
-            }
-            is Service -> {
-                resource.metadata.name = value
-            }
-            is ConfigMap -> {
-                resource.metadata.name = value
-            }
-            is io.fabric8.kubernetes.api.model.networking.v1.Ingress -> {
-                resource.metadata.name = value
-            }
-            is GenericKubernetesResource -> {
-                resource.metadata.name = value
-            }
-        }
+        resource.metadata.name = value
         return resource
     }
 }
\ No newline at end of file
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt
index c3b5ba1a07afa41dd604f2335baf6b58e362f293..a145c26285b3ccefc74b9a83cf80156e049c143f 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NodeSelectorPatcher.kt
@@ -8,10 +8,7 @@ import io.fabric8.kubernetes.api.model.apps.Deployment
  *
  * @param variableName The `label-key` of the node for which the `label-value` is to be patched.
  */
-class NodeSelectorPatcher(
-    private val variableName: String) :
-    AbstractPatcher() {
-
+class NodeSelectorPatcher(private val variableName: String) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         if (resource is Deployment) {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt
index e3b0105768ec339758fd89233a09da233145d641..c9301463564777c15590ff6929fb4f3d7f41af59 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcher.kt
@@ -5,13 +5,13 @@ import io.fabric8.kubernetes.api.model.apps.Deployment
 import kotlin.math.pow
 
 class NumNestedGroupsLoadGeneratorReplicaPatcher(
-    private val numSensors: String,
-    private val loadGenMaxRecords: String,
-) : AbstractPatcher() {
+    private val numSensors: Int,
+    private val loadGenMaxRecords: Int,
+) : AbstractIntPatcher() {
 
-    override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
+    override fun patchSingleResource(resource: HasMetadata, value: Int): HasMetadata {
         if (resource is Deployment) {
-            val approxNumSensors = numSensors.toDouble().pow(Integer.parseInt(value).toDouble())
+            val approxNumSensors = numSensors.toDouble().pow(value.toDouble())
             val loadGenInstances =
                 (approxNumSensors + loadGenMaxRecords.toDouble() - 1) / loadGenMaxRecords.toDouble()
             resource.spec.replicas = loadGenInstances.toInt()
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt
index 6bb2750bb1ca923aa05022884ef7054772a987c6..088f9854b253a9f4c25ab07b49fbabfe38a4f37d 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcher.kt
@@ -5,14 +5,12 @@ import io.fabric8.kubernetes.api.model.apps.Deployment
 
 
 class NumSensorsLoadGeneratorReplicaPatcher(
-    private val loadGenMaxRecords: String,
-) : AbstractPatcher() {
+    private val loadGenMaxRecords: Int
+) : AbstractIntPatcher() {
 
-    override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
+    override fun patchSingleResource(resource: HasMetadata, value: Int): HasMetadata {
         if (resource is Deployment) {
-            val loadGenInstances =
-                (Integer.parseInt(value) + loadGenMaxRecords.toInt() - 1) / loadGenMaxRecords.toInt()
-            resource.spec.replicas = loadGenInstances
+            resource.spec.replicas = (value + loadGenMaxRecords - 1) / loadGenMaxRecords
 
         }
         return resource
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt
index 92b1e52ba7492181b5f3b06080efe01aae6cf66b..9740952d8a7a4aa016ff3928f344098c65c85088 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatchHandler.kt
@@ -5,7 +5,7 @@ class PatchHandler {
     companion object {
         private fun getResourcesToPatch(resources: Map<String, List<HasMetadata>>, patcherDefinition: PatcherDefinition): List<HasMetadata> {
             return resources[patcherDefinition.resource]
-                ?: throw InvalidPatcherConfigurationException("Could not find resource ${patcherDefinition.resource}")
+                ?: throw InvalidPatcherConfigurationException("Could not find resource ${patcherDefinition.resource}.")
 
         }
         fun patchResource(
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatcherFactory.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatcherFactory.kt
index 26e76ccfabbb773e45bf80fd09612473c246c5e4..4b75999e70197f775e7fa610eeb6700545bf6869 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatcherFactory.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/PatcherFactory.kt
@@ -21,20 +21,25 @@ class PatcherFactory {
                     "ReplicaPatcher" -> ReplicaPatcher(
                     )
                     "NumNestedGroupsLoadGeneratorReplicaPatcher" -> NumNestedGroupsLoadGeneratorReplicaPatcher(
-                        loadGenMaxRecords = patcher.properties["loadGenMaxRecords"] ?: throwInvalid(patcher),
-                        numSensors = patcher.properties["numSensors"] ?: throwInvalid(patcher)
+                        loadGenMaxRecords = (patcher.properties["loadGenMaxRecords"] ?: throwInvalid(patcher)).toInt(),
+                        numSensors = (patcher.properties["numSensors"] ?: throwInvalid(patcher)).toInt()
                     )
                     "NumSensorsLoadGeneratorReplicaPatcher" -> NumSensorsLoadGeneratorReplicaPatcher(
-                        loadGenMaxRecords = patcher.properties["loadGenMaxRecords"] ?: throwInvalid(patcher)
+                        loadGenMaxRecords = (patcher.properties["loadGenMaxRecords"] ?: throwInvalid(patcher)).toInt()
                     )
                     "DataVolumeLoadGeneratorReplicaPatcher" -> DataVolumeLoadGeneratorReplicaPatcher(
                         maxVolume = (patcher.properties["maxVolume"] ?: throwInvalid(patcher)).toInt(),
                         container = patcher.properties["container"] ?: throwInvalid(patcher),
                         variableName = patcher.properties["variableName"] ?: throwInvalid(patcher)
                     )
-                    "EnvVarPatcher" -> EnvVarPatcher(
-                        container = patcher.properties["container"] ?: throwInvalid(patcher),
-                        variableName = patcher.properties["variableName"] ?: throwInvalid(patcher)
+                    "EnvVarPatcher" -> DecoratingPatcher(
+                        EnvVarPatcher(
+                            container = patcher.properties["container"] ?: throwInvalid(patcher),
+                            variableName = patcher.properties["variableName"] ?: throwInvalid(patcher)
+                        ),
+                        prefix = patcher.properties["prefix"],
+                        suffix = patcher.properties["suffix"],
+                        factor = patcher.properties["factor"]?.toInt(),
                     )
                     "NodeSelectorPatcher" -> NodeSelectorPatcher(
                         variableName = patcher.properties["variableName"] ?: throwInvalid(patcher)
@@ -64,9 +69,14 @@ class PatcherFactory {
                     "ImagePatcher" -> ImagePatcher(
                         container = patcher.properties["container"] ?: throwInvalid(patcher)
                     )
-                    "ConfigMapYamlPatcher" -> ConfigMapYamlPatcher(
-                        fileName = patcher.properties["fileName"] ?: throwInvalid(patcher),
-                        variableName = patcher.properties["variableName"] ?: throwInvalid(patcher)
+                    "ConfigMapYamlPatcher" -> DecoratingPatcher(
+                            ConfigMapYamlPatcher(
+                            fileName = patcher.properties["fileName"] ?: throwInvalid(patcher),
+                            variableName = patcher.properties["variableName"] ?: throwInvalid(patcher)
+                        ),
+                        prefix = patcher.properties["prefix"],
+                        suffix = patcher.properties["suffix"],
+                        factor = patcher.properties["factor"]?.toInt(),
                     )
                     "NamePatcher" -> NamePatcher()
                     "ServiceSelectorPatcher" -> ServiceSelectorPatcher(
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ReplicaPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ReplicaPatcher.kt
index 8637b1299e878c4424e7fcaf4eac3bc901428541..5c5fe6d1352081ea5ea56c6f4005e7ba05bacd6f 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ReplicaPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ReplicaPatcher.kt
@@ -7,11 +7,11 @@ import io.fabric8.kubernetes.api.model.apps.Deployment
  * The Replica [Patcher] modifies the number of replicas for the given Kubernetes deployment.
  *
  */
-class ReplicaPatcher : AbstractPatcher() {
+class ReplicaPatcher : AbstractIntPatcher() {
 
-    override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
+    override fun patchSingleResource(resource: HasMetadata, value: Int): HasMetadata {
         if (resource is Deployment) {
-            resource.spec.replicas = Integer.parseInt(value)
+            resource.spec.replicas = value
         }
         return resource
     }
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt
index c5ac16cdfe25f6b2fd2e4d0a2fb27000f885ffe7..5df0a10c97bd8d16b268ce847c3696c82081b9f2 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/SchedulerNamePatcher.kt
@@ -6,9 +6,8 @@ import io.fabric8.kubernetes.api.model.apps.Deployment
 /**
  * The Scheduler name [Patcher] make it possible to set the scheduler which should
  * be used to deploy the given deployment.
- * @param k8sResource Kubernetes resource to be patched.
  */
-class SchedulerNamePatcher : AbstractPatcher() {
+class SchedulerNamePatcher : AbstractStringPatcher() {
 
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt
index b38ae4108748f85e7ac60f3ee3aa8c5d28281432..70b61b0cea7043f645be522f3dc706509c812b06 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/ServiceSelectorPatcher.kt
@@ -3,9 +3,7 @@ package rocks.theodolite.kubernetes.patcher
 import io.fabric8.kubernetes.api.model.HasMetadata
 import io.fabric8.kubernetes.api.model.Service
 
-class ServiceSelectorPatcher(
-    private var variableName: String
-    ) : AbstractPatcher() {
+class ServiceSelectorPatcher(private var variableName: String) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         if (resource is Service) {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt
index e1c1bc3a15b8a9035bcaaa513f040aff9982e7ab..45dc30530e20950c5a2fb3d15e9203109c4c845d 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/TemplateLabelPatcher.kt
@@ -9,9 +9,7 @@ import io.fabric8.kubernetes.api.model.apps.StatefulSet
  *
  * @property variableName The label which should be set
  */
-class TemplateLabelPatcher(
-    val variableName: String) :
-    AbstractPatcher() {
+class TemplateLabelPatcher(val variableName: String) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         when (resource) {
diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt
index 54a459a19b35e74839de647761e8ac22f839ca2d..54ac12be7629da792cbb72b2f1d409ba0f4ba93c 100644
--- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt
+++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcher.kt
@@ -4,8 +4,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata
 import io.fabric8.kubernetes.api.model.apps.Deployment
 import io.fabric8.kubernetes.api.model.apps.StatefulSet
 
-class VolumesConfigMapPatcher(private var volumeName: String
-) : AbstractPatcher() {
+class VolumesConfigMapPatcher(private var volumeName: String) : AbstractStringPatcher() {
 
     override fun patchSingleResource(resource: HasMetadata, value: String): HasMetadata {
         if (resource is Deployment) {
diff --git a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/ResourceSetsTest.kt b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/ResourceSetsTest.kt
index f0a6c120ca6c3397e8d41cd9f42b536b3e053caf..103d8e4c8498ebe2f27bf06b907557ece6cbefaa 100644
--- a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/ResourceSetsTest.kt
+++ b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/ResourceSetsTest.kt
@@ -118,7 +118,6 @@ internal class ResourceSetsTest {
 
         val fileSystem = resourcesSet.loadResourceSet(server.client)
         assertEquals(fileSystem.size, 1)
-        assertTrue(fileSystem.elementAt(0).second is HasMetadata)
     }
 
     @Test
diff --git a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcherTest.kt b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcherTest.kt
index 8940e288fae79f10e5dcd728121a2dbbf0aaa180..e8fbd43f50731b3ab0a2c4edd76e0dddd9829d2e 100644
--- a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcherTest.kt
+++ b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumNestedGroupsLoadGeneratorReplicaPatcherTest.kt
@@ -14,7 +14,7 @@ internal class NumNestedGroupsLoadGeneratorReplicaPatcherTest : AbstractPatcherT
     @BeforeEach
     fun setUp() {
         resource = listOf(createDeployment())
-        patcher = NumNestedGroupsLoadGeneratorReplicaPatcher("10", "500")
+        patcher = NumNestedGroupsLoadGeneratorReplicaPatcher(10, 500)
         value = "2"
     }
 
diff --git a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcherTest.kt b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcherTest.kt
index e3bb6ffff4938bcaeb4a0db6487bd4741da75850..f561b8f773b562d7855a670e99c3eec2486ab121 100644
--- a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcherTest.kt
+++ b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/NumSensorsLoadGeneratorReplicaPatcherTest.kt
@@ -14,7 +14,7 @@ internal class NumSensorsLoadGeneratorReplicaPatcherTest: AbstractPatcherTest()
     @BeforeEach
     fun setUp() {
         resource = listOf(createDeployment())
-        patcher = NumSensorsLoadGeneratorReplicaPatcher("10")
+        patcher = NumSensorsLoadGeneratorReplicaPatcher(10)
         value = "2"
     }
 
diff --git a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcherTest.kt b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcherTest.kt
index db3fc812e426c0f74cf68d35a158f32a3ec0bc3f..82f12d7379bd47dd5d5032f2ae0bbf7dcb252a98 100644
--- a/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcherTest.kt
+++ b/theodolite/src/test/kotlin/rocks/theodolite/kubernetes/patcher/VolumesConfigMapPatcherTest.kt
@@ -26,8 +26,9 @@ internal class VolumesConfigMapPatcherTest: AbstractPatcherTest() {
     override fun validate() {
         patch()
         resource.forEach {
-            println((it as Deployment).spec.template.spec.volumes[0].configMap.name)
-            assertTrue((it as Deployment).spec.template.spec.volumes[0].configMap.name == value)
+            it as Deployment
+            println(it.spec.template.spec.volumes[0].configMap.name)
+            assertTrue(it.spec.template.spec.volumes[0].configMap.name == value)
         }
     }
 }
\ No newline at end of file