diff --git a/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF b/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
index a0dfdd9..12616c2 100644
--- a/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
+++ b/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
@@ -14,6 +14,7 @@
  org.eclipse.app4mc.transformation.executiontype,
  org.eclipse.app4mc.transformation.starter,
  org.eclipse.app4mc.transformation.transformers,
+ org.eclipse.app4mc.transformation.util,
  org.osgi.service.component;version="1.4.0",
  org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
  org.slf4j;version="1.7.2"
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend
index 4e9b665..71bdfa8 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/AmaltheaModel2ModelTransformer.xtend
@@ -18,6 +18,7 @@
 import org.eclipse.app4mc.amalthea.model.HWModel
 import org.eclipse.app4mc.transformation.ServiceConstants
 import org.eclipse.app4mc.transformation.transformers.Model2ModelRootTransformer
+import org.eclipse.app4mc.transformation.util.PropertyUtil
 import org.eclipse.emf.common.util.URI
 import org.eclipse.emf.ecore.resource.ResourceSet
 import org.osgi.service.component.annotations.Activate
@@ -48,7 +49,7 @@
 	def package void activate(Map<String, ?> properties) {
 		LOG.debug("AmaltheaModel2ModelTransformer activated")
 		
-		outputFolder = getProperty("m2m_output_folder", properties)
+		outputFolder = PropertyUtil.getProperty("m2m_output_folder", properties)
 	}
 
 	override m2mTransformation(ResourceSet inputResourceSet, ResourceSet outputResourceSet) {
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend
index 0d43341..906462c 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/CacheTransformer.xtend
@@ -18,8 +18,8 @@
 import org.osgi.service.component.annotations.Activate
 import org.osgi.service.component.annotations.Component
 import org.osgi.service.component.annotations.ConfigurationPolicy
-import org.slf4j.LoggerFactory
 import org.slf4j.Logger
+import org.slf4j.LoggerFactory
 
 @Component(
 	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
diff --git a/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF b/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
index fb35013..2dd44d7 100644
--- a/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
+++ b/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
@@ -18,6 +18,7 @@
  org.eclipse.app4mc.transformation.executiontype,
  org.eclipse.app4mc.transformation.starter,
  org.eclipse.app4mc.transformation.transformers,
+ org.eclipse.app4mc.transformation.util,
  org.osgi.service.component;version="1.4.0",
  org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
  org.slf4j;version="1.7.2"
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend
index 4b80803..37f08a7 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/AmaltheaModel2TextTransformer.xtend
@@ -18,6 +18,7 @@
 import org.eclipse.app4mc.amalthea.model.Amalthea
 import org.eclipse.app4mc.transformation.ServiceConstants
 import org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer
+import org.eclipse.app4mc.transformation.util.PropertyUtil
 import org.eclipse.emf.ecore.resource.ResourceSet
 import org.osgi.service.component.annotations.Activate
 import org.osgi.service.component.annotations.Component
@@ -26,11 +27,12 @@
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
-@Component(configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
+@Component(
+	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
 	configurationPolicy = ConfigurationPolicy.REQUIRE,
-	property=#[
-	"transformation=Amalthea2Text"
-], service=Model2TextRootTransformer)
+	property = #[ "transformation=Amalthea2Text" ],
+	service = Model2TextRootTransformer)
+
 class AmaltheaModel2TextTransformer extends Model2TextRootTransformer {
 
 	static final Logger LOG = LoggerFactory.getLogger(typeof(AmaltheaModel2TextTransformer))
@@ -42,9 +44,9 @@
 
 	@Activate
 	def package void activate(Map<String, ?> properties) {
-		LOG.debug("AmaltheaModel2TextTransformer activated : "+this.hashCode) 
+		LOG.debug("AmaltheaModel2TextTransformer activated : " + this.hashCode)
 
-		outputFolder = getProperty("m2t_output_folder", properties)
+		outputFolder = PropertyUtil.getProperty("m2t_output_folder", properties)
 	}
 
 	override m2tTransformation(ResourceSet inputResourceSet) {
@@ -53,7 +55,7 @@
 			for (model : resource.contents) {
 				LOG.info("Processing file : " + resource.URI)
 
-				//val textGenerator = new M2T_Output_Transformer
+				// val textGenerator = new M2T_Output_Transformer
 				// ===== output 1 =====
 				var outputFile1 = new File(outputFolder, "1.txt")
 				outputFile1.parentFile.mkdirs
@@ -85,6 +87,6 @@
 				LOG.info("Script file generated at : " + outputFolder)
 			}
 		}
-
 	}
+
 }
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java b/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java
index f75c783..22b6a05 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java
@@ -71,7 +71,7 @@
 					Arrays.stream(environmentInfo.getNonFrameworkArgs()).anyMatch(arg -> "-product".equals(arg))
 					|| this.environmentInfo.getProperty("eclipse.product") != null;
 			
-			boolean ignoreApp = Boolean.valueOf(System.getProperty("eclipse.ignoreApp"));
+			boolean ignoreApp = Boolean.parseBoolean(System.getProperty("eclipse.ignoreApp"));
 			boolean isApplication = !ignoreApp &&
 					(Arrays.stream(environmentInfo.getNonFrameworkArgs()).anyMatch(arg -> "-application".equals(arg))
 					|| this.environmentInfo.getProperty("eclipse.application") != null);
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java
index e8c16cb..3a57839 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java
@@ -45,8 +45,9 @@
 import org.slf4j.LoggerFactory;
 
 @Component(
-		configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
-		configurationPolicy = ConfigurationPolicy.REQUIRE)
+	configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
+	configurationPolicy = ConfigurationPolicy.REQUIRE)
+
 public class TransformerRegistry {
 
 	private static final String LINE_SEPARATOR = System.getProperty("line.separator");
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/AbstractTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/AbstractTransformer.java
index 02461a8..716e614 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/AbstractTransformer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/AbstractTransformer.java
@@ -25,4 +25,5 @@
 		}
 		return value.toString();
 	}
+
 }
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/ISubTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/ISubTransformer.java
deleted file mode 100644
index bb463c8..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/ISubTransformer.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     Robert Bosch GmbH - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.app4mc.transformation.transformers;
-
-public interface ISubTransformer {
-
-}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java
index dbafe21..73d060a 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java
@@ -15,7 +15,7 @@
 
 import org.eclipse.emf.ecore.resource.ResourceSet;
 
-public abstract class Model2ModelRootTransformer extends AbstractTransformer implements IRootTransformer {
+public abstract class Model2ModelRootTransformer implements IRootTransformer {
 
 	public abstract void m2mTransformation(final ResourceSet inputResourceSet, final ResourceSet outputResourceSet);
 
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java
index d242473..cc9f4ad 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java
@@ -15,7 +15,7 @@
 
 import org.eclipse.emf.ecore.resource.ResourceSet;
 
-public abstract class Model2TextRootTransformer extends AbstractTransformer implements IRootTransformer {
+public abstract class Model2TextRootTransformer implements IRootTransformer {
 
 	public abstract void m2tTransformation(final ResourceSet inputResourceSet);
 
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java
new file mode 100644
index 0000000..9997357
--- /dev/null
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java
@@ -0,0 +1,36 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *     Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.transformation.util;
+
+import java.util.Map;
+
+public class PropertyUtil {
+
+	// Suppress default constructor
+	private PropertyUtil() {
+		throw new IllegalStateException("Utility class");
+	}
+
+	public static String getProperty(final String propKey, final Map<String, ?> properties) {
+		final Object value = properties.get(propKey);
+		if ((value == null)) {
+			throw new NullPointerException(
+					(("Request input key : \"" + propKey) + "\" not supplied in the input properties file"));
+		}
+		return value.toString();
+	}
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend
index 3d70bf5..0e3f821 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelAccessTransformer.xtend
@@ -19,11 +19,10 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.LabelAccess
 import org.eclipse.app4mc.slg.commons.m2t.generators.LabelAccessTranslationUnit
-import org.eclipse.app4mc.transformation.transformers.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
-class LabelAccessTransformer extends AbstractTransformer {
+class LabelAccessTransformer {
 
 	@Inject OutputBuffer outputBuffer
 	@Inject LabelTransformer labelTransformer
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend
index 9570de5..e5f7846 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksTransformer.xtend
@@ -21,11 +21,10 @@
 import java.util.List
 import org.eclipse.app4mc.amalthea.model.Ticks
 import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
-import org.eclipse.app4mc.transformation.transformers.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
-class TicksTransformer extends AbstractTransformer {
+class TicksTransformer {
 
 	@Inject OutputBuffer outputBuffer
 	@Inject TicksUtilsTransformer ticksUtilsTransformer
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer.xml b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer.xml
index 92cc83f..9f968ec 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer.xml
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer.xml
@@ -2,7 +2,7 @@
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer">
    <property name="transformation" value="LINUX_SLG"/>
    <service>
-      <provide interface="org.eclipse.app4mc.transformation.templates.Model2TextRootTransformer"/>
+      <provide interface="org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer"/>
    </service>
    <reference cardinality="1..1" field="moduleFactory" interface="org.eclipse.app4mc.slg.linux.artefacts.LinuxGoogleGuiceModuleFactory" name="moduleFactory"/>
    <implementation class="org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer"/>
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java
index e518500..686d052 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java
@@ -42,7 +42,7 @@
 public class LinuxRootTransformer extends Model2TextRootTransformer {
 
 	private static final Logger LOG = LoggerFactory.getLogger(LinuxRootTransformer.class);
-	
+
 	@Reference
 	private LinuxGoogleGuiceModuleFactory moduleFactory;
 
@@ -53,7 +53,6 @@
 		LOG.debug("LinuxRootTransformer activated : {}", this.hashCode());
 
 		this.properties = new Properties();
-
 		this.properties.putAll(properties);
 	}
 
@@ -83,7 +82,6 @@
 	private void harmonizeSLGParam(Properties props, String workingDirectoryKey, String param) {
 
 		String workingDirectory = (String) props.get(workingDirectoryKey);
-
 		String paramValue = (String) props.get(param);
 
 		if (paramValue != null && workingDirectory != null) {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java
index faed087..9e86fe0 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java
@@ -1,4 +1,5 @@
 /**
+ ********************************************************************************
  * Copyright (c) 2020-2021 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
@@ -9,6 +10,7 @@
  * 
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
  */
 
 package org.eclipse.app4mc.slg.ros2.artefacts;
@@ -36,7 +38,7 @@
 		configurationPolicy = ConfigurationPolicy.REQUIRE,
 		property = { "transformation=ROS2_SLG" },
 		service = Model2TextRootTransformer.class)
- 
+
 public class ROS2RootTransformer extends Model2TextRootTransformer {
 
 	private static final Logger LOG = LoggerFactory.getLogger(ROS2RootTransformer.class);
@@ -51,7 +53,6 @@
 		LOG.debug("LinuxRootTransformer activated : {}", this.hashCode());
 
 		this.properties = new Properties();
-
 		this.properties.putAll(properties);
 	}
 
@@ -79,6 +80,7 @@
 	}
 
 	private void harmonizeSLGParam(Properties props, String workingDirectoryKey, String param) {
+
 		String workingDirectory = (String) props.get(workingDirectoryKey);
 		String paramValue = (String) props.get(param);
 
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend
index f1ba4e9..8c8826a 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendTransformer.xtend
@@ -17,11 +17,10 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.ChannelSend
 import org.eclipse.app4mc.slg.ros2.generators.RosChannelSendTranslationUnit
-import org.eclipse.app4mc.transformation.transformers.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
-class RosChannelSendTransformer extends AbstractTransformer {
+class RosChannelSendTransformer {
 
 	@Inject OutputBuffer outputBuffer
 	@Inject RosChannelSendUtilsTransformer channelSendUtilTransformer
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend
index 78dc099..1d2726c 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerTransformer.xtend
@@ -17,11 +17,10 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
 import org.eclipse.app4mc.slg.ros2.generators.RosInterProcessTriggerTranslationUnit
-import org.eclipse.app4mc.transformation.transformers.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
-class RosInterProcessTriggerTransformer extends AbstractTransformer {
+class RosInterProcessTriggerTransformer {
 
 	@Inject OutputBuffer outputBuffer
 	@Inject RosInterProcessTriggerUtilsTransformer ipUtilTransformer
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java
index 1492d3b..b3d0d4c 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java
@@ -46,11 +46,11 @@
 
 	private static final Logger LOG = LoggerFactory.getLogger(SystemCRootTransformer.class);
 
-	Properties properties;
-
 	@Reference
 	SystemCGuiceModuleFactory factory;
 
+	Properties properties;
+
 	@Activate
 	void activate(Map<String, ?> properties) {
 		LOG.debug("SystemCRootTransformer activated : {}", this.hashCode());
@@ -83,7 +83,6 @@
 						devicePath.lastIndexOf("."));
 				fragment = fragment.replace(".", "_");
 				props.put(PropertyKeys.PROJECT_NAME, (Object) fragment);
-
 			}
 		}
 	}
