Renamed packages, code cleanup
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
index c3c7e51..21dbc8c 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
@@ -10,8 +10,8 @@
  org.eclipse.app4mc.amalthea.model;visibility:=reexport
 Automatic-Module-Name: org.eclipse.app4mc.slg.commons.m2t.transformers.m2t
 Export-Package: org.eclipse.app4mc.slg.commons.m2t;version="0.1.0",
- org.eclipse.app4mc.slg.commons.m2t.transformers;version="0.1.0",
- org.eclipse.app4mc.slg.commons.m2t.translationUnits;version="0.1.0"
+ org.eclipse.app4mc.slg.commons.m2t.generators;version="0.1.0",
+ org.eclipse.app4mc.slg.commons.m2t.transformers;version="0.1.0"
 Import-Package: javax.inject;version="1.0.0",
  org.eclipse.app4mc.slg.config,
  org.eclipse.app4mc.slg.config.util,
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelAccessTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelAccessTranslationUnit.java
new file mode 100644
index 0000000..069d8ab
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelAccessTranslationUnit.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.model.LabelAccess;
+import org.eclipse.app4mc.amalthea.model.LabelAccessEnum;
+import org.eclipse.app4mc.amalthea.model.LabelAccessStatistic;
+import org.eclipse.app4mc.amalthea.model.MinAvgMaxStatistic;
+import org.eclipse.app4mc.amalthea.model.NumericStatistic;
+import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+
+public class LabelAccessTranslationUnit extends TranslationUnit {
+	public String getBasePath() {
+		return this.tuLabel.getBasePath();
+	}
+
+	public String getModuleName() {
+		return this.tuLabel.getModuleName();
+	}
+
+	public String getIncFile() {
+		return this.tuLabel.getIncFile();
+	}
+
+	@Override
+	public String getCall() {
+		String _xblockexpression = null;
+		{
+			String statString = "1";
+			LabelAccessStatistic _statistic = null;
+			if (this.labelAccess != null) {
+				_statistic = this.labelAccess.getStatistic();
+			}
+			NumericStatistic _value = null;
+			if (_statistic != null) {
+				_value = _statistic.getValue();
+			}
+			final NumericStatistic stat = _value;
+			if ((stat != null)) {
+				LabelAccessStatistic _statistic_1 = null;
+				if (this.labelAccess != null) {
+					_statistic_1 = this.labelAccess.getStatistic();
+				}
+				NumericStatistic _value_1 = null;
+				if (_statistic_1 != null) {
+					_value_1 = _statistic_1.getValue();
+				}
+				statString = LabelAccessTranslationUnit.getNumericStatistic(_value_1);
+			}
+			String _switchResult = null;
+			LabelAccessEnum _access = this.labelAccess.getAccess();
+			if (_access != null) {
+				switch (_access) {
+				case READ:
+					_switchResult = this.tuLabel.readCall(statString);
+					break;
+				case WRITE:
+					_switchResult = this.tuLabel.writeCall(statString);
+					break;
+				default:
+					String _name = this.labelAccess.getData().getName();
+					String _plus = ("/*underspecified access to label" + _name);
+					_switchResult = (_plus + "*/");
+					break;
+				}
+			} else {
+				String _name = this.labelAccess.getData().getName();
+				String _plus = ("/*underspecified access to label" + _name);
+				_switchResult = (_plus + "*/");
+			}
+			_xblockexpression = _switchResult;
+		}
+		return _xblockexpression;
+	}
+
+	public String getModulePath() {
+		return getBasePath() + "/" + getModuleName();
+	}
+
+	private OutputBuffer outputBuffer;
+
+	@Override
+	public String getSrcFile() {
+		return getModuleName() + ".cpp";
+	}
+
+	public String getIncPath() {
+		return getModulePath() + "/_inc/" + getIncFile();
+	}
+
+	public String getSrcPath() {
+		return getModulePath() + "/_src/" + getSrcFile();
+	}
+
+	public boolean isIncFileEmpty() {
+		return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+	}
+
+	public boolean isSrcFileEmpty() {
+		return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+	}
+
+	public boolean incAppend(final String str) {
+		return outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+	}
+
+	public boolean srcAppend(final String str) {
+		return outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+	}
+
+	private final LabelTranslationUnit tuLabel;
+
+	private final LabelAccess labelAccess;
+
+	public LabelAccessTranslationUnit(final OutputBuffer outputBuffer, final LabelTranslationUnit tuLabel,
+			final LabelAccess labelAccess) {
+		super();
+		this.tuLabel = tuLabel;
+		this.labelAccess = labelAccess;
+		this.outputBuffer = outputBuffer;
+	}
+
+	protected static String _getNumericStatistic(final MinAvgMaxStatistic stat) {
+		String _string = Integer.valueOf(Double.valueOf(Math.ceil(stat.getAvg())).intValue()).toString();
+		return (_string + "/*MinAvgMaxStatistic not supported yet*/");
+	}
+
+	protected static String _getNumericStatistic(final SingleValueStatistic stat) {
+		return Integer.valueOf(Double.valueOf(Math.ceil(stat.getValue())).intValue()).toString();
+	}
+
+	public static String getNumericStatistic(final NumericStatistic stat) {
+		if (stat instanceof MinAvgMaxStatistic) {
+			return _getNumericStatistic((MinAvgMaxStatistic) stat);
+		} else if (stat instanceof SingleValueStatistic) {
+			return _getNumericStatistic((SingleValueStatistic) stat);
+		} else {
+			throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(stat).toString());
+		}
+	}
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelTranslationUnit.java
new file mode 100644
index 0000000..d0f5389
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/LabelTranslationUnit.java
@@ -0,0 +1,523 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+import org.eclipse.app4mc.amalthea.model.DataSize;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.slg.commons.m2t.AmaltheaModelUtils;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+public class LabelTranslationUnit extends TranslationUnit {
+	public static String getModulePathStatic() {
+		return "synthetic_gen" + "/" + getModuleNameStatic();
+	}
+
+	public static String getMakeFilePathStatic() {
+		return getModulePathStatic() + "/" + "CMakeLists.txt";
+	}
+
+	public static String getModuleNameStatic() {
+		return "labels";
+	}
+
+	public static String getLibName() {
+		return "LABELS_LIB";
+	}
+
+	public String getModuleName() {
+		return LabelTranslationUnit.getModuleNameStatic();
+	}
+
+	protected String getName() {
+		return this.label.getName();
+	}
+
+	public String getInitCall() {
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("initialize_");
+		builder.append(getName());
+		builder.append("()");
+		return builder.toString();
+	}
+
+	public String readCall(final String param) {
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("read_");
+		builder.append(getName());
+		builder.append("(");
+		builder.append(param);
+		builder.append(")");
+		return builder.toString();
+	}
+
+	public String writeCall(final String param) {
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("write_");
+		builder.append(getName());
+		builder.append("(");
+		builder.append(param);
+		builder.append(")");
+		return builder.toString();
+	}
+
+	public String getIncFile() {
+		return getModuleName() + ".h";
+	}
+
+	private final Label label;
+	private OutputBuffer outputBuffer;
+
+	public LabelTranslationUnit(final OutputBuffer outputBuffer, final Label label) {
+		super();
+		this.label = label;
+		this.outputBuffer = outputBuffer;
+		this.genFiles();
+	}
+
+	public void genFiles() {
+		if (isSrcFileEmpty()) {
+			srcAppend("#include \"" + getIncFile() + "\"\n\n");
+		}
+		incAppend(this.toH());
+		srcAppend(this.toCpp());
+	}
+
+	private String toH() {
+		StringConcatenation _builder = new StringConcatenation();
+		{
+			boolean _isIncFileEmpty = this.isIncFileEmpty();
+			if (_isIncFileEmpty) {
+				String _xblockexpression = null;
+				{
+					this.incAppend("#include <stdbool.h>\n\n");
+					_xblockexpression = "";
+				}
+				_builder.append(_xblockexpression);
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.append("void ");
+		String _initCall = this.getInitCall();
+		_builder.append(_initCall);
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.append("void ");
+		String _readCall = this.readCall("int labelAccessStatistics");
+		_builder.append(_readCall);
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.append("void ");
+		String _writeCall = this.writeCall("int labelAccessStatistics");
+		_builder.append(_writeCall);
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String toCpp() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("int ");
+		String _name = this.getName();
+		_builder.append(_name);
+		_builder.append("[");
+		long _labelArraySize = AmaltheaModelUtils.getLabelArraySize(this.label);
+		_builder.append(_labelArraySize);
+		_builder.append("];\t");
+		_builder.newLineIfNotEmpty();
+		_builder.newLine();
+		_builder.append("static bool isIinitialized_");
+		String _name_1 = this.getName();
+		_builder.append(_name_1);
+		_builder.append(" = false;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("void ");
+		String _initCall = this.getInitCall();
+		_builder.append(_initCall);
+		_builder.append(" {");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.append("if (!isIinitialized_");
+		String _name_2 = this.getName();
+		_builder.append(_name_2, "\t");
+		_builder.append("){");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("for (int i=0; i < ");
+		long _labelArraySize_1 = AmaltheaModelUtils.getLabelArraySize(this.label);
+		_builder.append(_labelArraySize_1, "\t\t");
+		_builder.append("; i++){");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_3 = this.getName();
+		_builder.append(_name_3, "\t\t\t");
+		_builder.append("[i] = i+1;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("isIinitialized_");
+		String _name_4 = this.getName();
+		_builder.append(_name_4, "\t\t");
+		_builder.append(" = true;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("}");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("void ");
+		String _readCall = this.readCall("int labelAccessStatistics");
+		_builder.append(_readCall);
+		_builder.append(" {");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.append("int numberOfBytes = ");
+		Label _label = null;
+		if (this != null) {
+			_label = this.label;
+		}
+		DataSize _size = null;
+		if (_label != null) {
+			_size = _label.getSize();
+		}
+		long _numberBytes = 0l;
+		if (_size != null) {
+			_numberBytes = _size.getNumberBytes();
+		}
+		_builder.append(_numberBytes, "\t");
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("if(numberOfBytes < 4){");
+		_builder.newLine();
+		_builder.append("\t\t\t");
+		_builder.append("numberOfBytes = 4;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int arraysize = sizeof(");
+		String _name_5 = this.getName();
+		_builder.append(_name_5, "\t\t");
+		_builder.append(") / 4;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("//printf(\"number of bytes:%d\\n\",arraysize);");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int leftOverElements=arraysize%10;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int i = 0;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int a = 0;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {           //iteration with 10 reads");
+		_builder.newLine();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_6 = this.getName();
+		_builder.append(_name_6, "\t\t\t");
+		_builder.append("[i];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_7 = this.getName();
+		_builder.append(_name_7, "\t\t\t");
+		_builder.append("[i+1];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_8 = this.getName();
+		_builder.append(_name_8, "\t\t\t");
+		_builder.append("[i+2];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_9 = this.getName();
+		_builder.append(_name_9, "\t\t\t");
+		_builder.append("[i+3];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_10 = this.getName();
+		_builder.append(_name_10, "\t\t\t");
+		_builder.append("[i+4];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_11 = this.getName();
+		_builder.append(_name_11, "\t\t\t");
+		_builder.append("[i+5];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_12 = this.getName();
+		_builder.append(_name_12, "\t\t\t");
+		_builder.append("[i+6];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_13 = this.getName();
+		_builder.append(_name_13, "\t\t\t");
+		_builder.append("[i+7];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_14 = this.getName();
+		_builder.append(_name_14, "\t\t\t");
+		_builder.append("[i+8];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_15 = this.getName();
+		_builder.append(_name_15, "\t\t\t");
+		_builder.append("[i+9];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("for(;i<arraysize;i++){");
+		_builder.newLine();
+		_builder.append("\t\t\t");
+		_builder.append("a = ");
+		String _name_16 = this.getName();
+		_builder.append(_name_16, "\t\t\t");
+		_builder.append("[i];");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("}");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("void ");
+		String _writeCall = this.writeCall("int labelAccessStatistics");
+		_builder.append(_writeCall);
+		_builder.append(" {");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.append("int numberOfBytes = ");
+		Label _label_1 = null;
+		if (this != null) {
+			_label_1 = this.label;
+		}
+		DataSize _size_1 = null;
+		if (_label_1 != null) {
+			_size_1 = _label_1.getSize();
+		}
+		long _numberBytes_1 = 0l;
+		if (_size_1 != null) {
+			_numberBytes_1 = _size_1.getNumberBytes();
+		}
+		_builder.append(_numberBytes_1, "\t");
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("if(numberOfBytes < 4){");
+		_builder.newLine();
+		_builder.append("\t\t\t");
+		_builder.append("numberOfBytes = 4;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int arraysize = sizeof(");
+		String _name_17 = this.getName();
+		_builder.append(_name_17, "\t\t");
+		_builder.append(") / 4;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("int leftOverElements=arraysize%10;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int i = 0;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {");
+		_builder.newLine();
+		_builder.append("\t\t\t");
+		String _name_18 = this.getName();
+		_builder.append(_name_18, "\t\t\t");
+		_builder.append("[i]   = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_19 = this.getName();
+		_builder.append(_name_19, "\t\t\t");
+		_builder.append("[i+1] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_20 = this.getName();
+		_builder.append(_name_20, "\t\t\t");
+		_builder.append("[i+2] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_21 = this.getName();
+		_builder.append(_name_21, "\t\t\t");
+		_builder.append("[i+3] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_22 = this.getName();
+		_builder.append(_name_22, "\t\t\t");
+		_builder.append("[i+4] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_23 = this.getName();
+		_builder.append(_name_23, "\t\t\t");
+		_builder.append("[i+5] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_24 = this.getName();
+		_builder.append(_name_24, "\t\t\t");
+		_builder.append("[i+6] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_25 = this.getName();
+		_builder.append(_name_25, "\t\t\t");
+		_builder.append("[i+7] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_26 = this.getName();
+		_builder.append(_name_26, "\t\t\t");
+		_builder.append("[i+8] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t\t");
+		String _name_27 = this.getName();
+		_builder.append(_name_27, "\t\t\t");
+		_builder.append("[i+9] = 0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("for(;i<arraysize;i++){");
+		_builder.newLine();
+		_builder.append("\t\t\t\t");
+		String _name_28 = this.getName();
+		_builder.append(_name_28, "\t\t\t\t");
+		_builder.append("[i]=0xAFFE;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("}");
+		_builder.newLine();
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	protected long getSize() {
+		return this.label.getSize().getNumberBytes();
+	}
+
+	public String getBasePath() {
+		return "synthetic_gen";
+	}
+
+	public String getModulePath() {
+		String _basePath = this.getBasePath();
+		String _plus = (_basePath + "/");
+		String _moduleName = this.getModuleName();
+		return (_plus + _moduleName);
+	}
+
+	@Override
+	public String getSrcFile() {
+		String _moduleName = this.getModuleName();
+		return (_moduleName + ".cpp");
+	}
+
+	public String getIncPath() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _incFile = this.getIncFile();
+		return (_plus + _incFile);
+	}
+
+	public String getSrcPath() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _srcFile = this.getSrcFile();
+		return (_plus + _srcFile);
+	}
+
+	public boolean isIncFileEmpty() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
+		return (!_bufferExists);
+	}
+
+	public boolean isSrcFileEmpty() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
+		return (!_bufferExists);
+	}
+
+	public boolean incAppend(final String str) {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		return this.outputBuffer.appendTo("H", _plus_1, str);
+	}
+
+	public boolean srcAppend(final String str) {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		return this.outputBuffer.appendTo("C", _plus_1, str);
+	}
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/RunnableTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/RunnableTranslationUnit.java
new file mode 100644
index 0000000..406bc1a
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/RunnableTranslationUnit.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+public class RunnableTranslationUnit extends TranslationUnit {
+	public static String getModulePathStatic() {
+		return "synthetic_gen" + "/" + getModuleNameStatic();
+	}
+
+	public static String getMakeFilePathStatic() {
+		return getModulePathStatic() + "/" + "CMakeLists.txt";
+	}
+
+	public static String getModuleNameStatic() {
+		return "runnables";
+	}
+
+	public static String getLibName() {
+		return "RUNNABLES_LIB";
+	}
+
+	public String getModuleName() {
+		return RunnableTranslationUnit.getModuleNameStatic();
+	}
+
+	@Override
+	public String getCall() {
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("run_");
+		builder.append(this.runnable.getName());
+		builder.append("()");
+		return builder.toString();
+	}
+
+	@Override
+	public String getIncFile() {
+		return getModuleName() + ".h";
+	}
+
+	public ActivityGraphItemTransformer callGraphItemTransformer;
+
+	public org.eclipse.app4mc.amalthea.model.Runnable runnable;
+
+	private OutputBuffer outputBuffer;
+
+	public RunnableTranslationUnit(final OutputBuffer outputBuffer,
+			final ActivityGraphItemTransformer callGraphItemTransformer,
+			final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+		super();
+		this.callGraphItemTransformer = callGraphItemTransformer;
+		this.runnable = runnable;
+		this.outputBuffer = outputBuffer;
+
+		this.genFiles();
+	}
+
+	public void genFiles() {
+		if (isSrcFileEmpty()) {
+			srcAppend("#include \"" + getIncFile() + "\"\n");
+		}
+		final LinkedHashSet<String> includes = new LinkedHashSet<>();
+		final ArrayList<String> calls = new ArrayList<>();
+		ActivityGraph _activityGraph = null;
+		if (this.runnable != null) {
+			_activityGraph = this.runnable.getActivityGraph();
+		}
+		EList<ActivityGraphItem> _items = null;
+		if (_activityGraph != null) {
+			_items = _activityGraph.getItems();
+		}
+		final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
+			@Override
+			public void accept(final ActivityGraphItem item) {
+				final TranslationUnit tmp = RunnableTranslationUnit.this.callGraphItemTransformer.transform(item);
+				if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile()))
+						&& (!RunnableTranslationUnit.this.getIncFile().equals(tmp.getIncFile())))) {
+					includes.add(tmp.getIncFile());
+				}
+				final String call = tmp.getCall();
+				if (!StringExtensions.isNullOrEmpty(call)) {
+					calls.add(call);
+				}
+			}
+		};
+		_items.forEach(_function);
+
+		incAppend("\n//Runnable " + runnable.getName() + "----\n");
+		toH(includes);
+		
+		srcAppend("\n//Runnable " + runnable.getName() + "----\n");
+		toCpp(includes, calls);
+	}
+
+	public void toH(final LinkedHashSet<String> includes) {
+		final Consumer<String> _function = new Consumer<String>() {
+			@Override
+			public void accept(final String include) {
+				RunnableTranslationUnit.this.incAppend((("#include \"" + include) + "\"\n"));
+			}
+		};
+		includes.forEach(_function);
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("void ");
+		builder.append(this.getCall());
+		builder.append(";");
+		builder.newLineIfNotEmpty();
+		this.incAppend(builder.toString());
+	}
+
+	public void toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
+		srcAppend("void " + getCall() + "{\n");
+
+		final Consumer<String> _function = new Consumer<String>() {
+			@Override
+			public void accept(final String call) {
+				RunnableTranslationUnit.this.srcAppend((("\t" + call) + ";\n"));
+			}
+		};
+		calls.forEach(_function);
+
+		srcAppend("}\n\n");
+	}
+
+	public String getBasePath() {
+		return "synthetic_gen";
+	}
+
+	public String getModulePath() {
+		return getBasePath() + "/" + getModuleName();
+	}
+
+	@Override
+	public String getSrcFile() {
+		return getModuleName() + ".cpp";
+	}
+
+	public String getIncPath() {
+		return getModulePath() + "/_inc/" + getIncFile();
+	}
+
+	public String getSrcPath() {
+		return getModulePath() + "/_src/" + getSrcFile();
+	}
+
+	public boolean isIncFileEmpty() {
+		return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+	}
+
+	public boolean isSrcFileEmpty() {
+		return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+	}
+
+	public void incAppend(final String str) {
+		outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+	}
+
+	public void srcAppend(final String str) {
+		outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+	}
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TaskTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TaskTranslationUnit.java
new file mode 100644
index 0000000..b51b65c
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TaskTranslationUnit.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.Component;
+import org.eclipse.app4mc.amalthea.model.RunnableCall;
+import org.eclipse.app4mc.amalthea.model.Tag;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.LabelTransformer;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+public class TaskTranslationUnit extends TranslationUnit {
+	public RunnableTransformer runnableTransformer;
+
+	public LabelTransformer labelTransformer;
+
+	public String getBasePath() {
+		return "";
+	}
+
+	public String getModuleName() {
+		return this.task.getName();
+	}
+
+	public String getInitCall() {
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("initialize_task_");
+		builder.append(this.getModuleName());
+		builder.append("()");
+		return builder.toString();
+	}
+
+	public String stepCall() {
+		StringConcatenation builder = new StringConcatenation();
+		builder.append("step_task_");
+		builder.append(this.getModuleName());
+		builder.append("()");
+		return builder.toString();
+	}
+
+	private final Task task;
+
+	private final Component component;
+
+	private OutputBuffer outputBuffer;
+
+	public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer,
+			final LabelTransformer labelTransformer, final Task task, final Component component) {
+		super();
+		this.runnableTransformer = runnableTransformer;
+		this.labelTransformer = labelTransformer;
+		this.task = task;
+		this.component = component;
+		this.outputBuffer = outputBuffer;
+		this.genFiles();
+	}
+
+	public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer,
+			final LabelTransformer labelTransformer, final Task task) {
+		super();
+		this.task = task;
+		this.component = null;
+		this.runnableTransformer = runnableTransformer;
+		this.labelTransformer = labelTransformer;
+		this.outputBuffer = outputBuffer;
+	}
+
+	public boolean genFiles() {
+		boolean _xblockexpression = false;
+		{
+			final LinkedHashSet<String> includes = new LinkedHashSet<String>();
+			final LinkedList<String> initCalls = new LinkedList<String>();
+			final LinkedList<String> stepCalls = new LinkedList<String>();
+			ActivityGraph _activityGraph = null;
+			if (this.task != null) {
+				_activityGraph = this.task.getActivityGraph();
+			}
+			EList<ActivityGraphItem> _items = null;
+			if (_activityGraph != null) {
+				_items = _activityGraph.getItems();
+			}
+			final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
+				@Override
+				public void accept(final ActivityGraphItem item) {
+					if ((item instanceof RunnableCall)) {
+						final org.eclipse.app4mc.amalthea.model.Runnable runnable = ((RunnableCall) item).getRunnable();
+						final RunnableTranslationUnit tu = TaskTranslationUnit.this.runnableTransformer
+								.transform(((org.eclipse.app4mc.amalthea.model.Runnable) runnable));
+						includes.add(tu.getIncFile());
+						final Function1<Tag, Boolean> _function = new Function1<Tag, Boolean>() {
+							@Override
+							public Boolean apply(final Tag tag) {
+								return Boolean.valueOf("initialize".equals(tag.getName()));
+							}
+						};
+						boolean _isEmpty = IterableExtensions
+								.isEmpty(IterableExtensions.<Tag>filter(((RunnableCall) item).getTags(), _function));
+						boolean _not = (!_isEmpty);
+						if (_not) {
+							initCalls.add(tu.getCall());
+						} else {
+							stepCalls.add(tu.getCall());
+						}
+					}
+				}
+			};
+			_items.forEach(_function);
+			final BiConsumer<ArrayList<?>, LabelTranslationUnit> _function_1 = new BiConsumer<ArrayList<?>, LabelTranslationUnit>() {
+				@Override
+				public void accept(final ArrayList<?> label, final LabelTranslationUnit tu) {
+					includes.add(tu.getIncFile());
+					initCalls.add(tu.getInitCall());
+				}
+			};
+			this.labelTransformer.getCache().forEach(_function_1);
+			this.incAppend(this.toH());
+			_xblockexpression = this.srcAppend(this.toCpp(includes, initCalls, stepCalls));
+		}
+		return _xblockexpression;
+	}
+
+	private String toH() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.newLine();
+		_builder.append("//Header of Task ");
+		String _moduleName = this.getModuleName();
+		_builder.append(_moduleName);
+		_builder.newLineIfNotEmpty();
+		_builder.append("#include <stdint.h>");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("class ");
+		String _moduleName_1 = this.getModuleName();
+		_builder.append(_moduleName_1);
+		_builder.append(" {");
+		_builder.newLineIfNotEmpty();
+		_builder.newLine();
+		_builder.append("public:");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("    ");
+		_builder.append("//constructor");
+		_builder.newLine();
+		_builder.append("\t");
+		String _moduleName_2 = this.getModuleName();
+		_builder.append(_moduleName_2, "\t");
+		_builder.append("(void);");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("// destructor");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("virtual ~");
+		String _moduleName_3 = this.getModuleName();
+		_builder.append(_moduleName_3, "\t");
+		_builder.append("() =default;");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("void ");
+		String _initCall = this.getInitCall();
+		_builder.append(_initCall, "\t");
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("void ");
+		String _stepCall = this.stepCall();
+		_builder.append(_stepCall, "\t");
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		_builder.newLine();
+		_builder.append(" ");
+		_builder.append("};");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String toCpp(final LinkedHashSet<String> includes, final LinkedList<String> initCalls,
+			final LinkedList<String> stepCalls) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("#include \"");
+		String _incFile = this.getIncFile();
+		_builder.append(_incFile);
+		_builder.append("\"");
+		_builder.newLineIfNotEmpty();
+		{
+			for (final String include : includes) {
+				_builder.append("#include \"");
+				_builder.append(include);
+				_builder.append("\"");
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.newLine();
+		String _moduleName = this.getModuleName();
+		_builder.append(_moduleName);
+		_builder.append("::");
+		String _moduleName_1 = this.getModuleName();
+		_builder.append(_moduleName_1);
+		_builder.append("(){");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t");
+		_builder.append("//default constructor");
+		_builder.newLine();
+		_builder.append("}");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("void ");
+		String _moduleName_2 = this.getModuleName();
+		_builder.append(_moduleName_2);
+		_builder.append("::");
+		String _initCall = this.getInitCall();
+		_builder.append(_initCall);
+		_builder.append(" {");
+		_builder.newLineIfNotEmpty();
+		{
+			for (final String call : initCalls) {
+				_builder.append("       ");
+				_builder.append(call, "       ");
+				_builder.append(";");
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.append("} ");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("void ");
+		String _moduleName_3 = this.getModuleName();
+		_builder.append(_moduleName_3);
+		_builder.append("::");
+		String _stepCall = this.stepCall();
+		_builder.append(_stepCall);
+		_builder.append(" {");
+		_builder.newLineIfNotEmpty();
+		{
+			for (final String call_1 : stepCalls) {
+				_builder.append("       ");
+				_builder.append(call_1, "       ");
+				_builder.append(";");
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.append("}");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	public String getModulePath() {
+		String _basePath = this.getBasePath();
+		String _plus = (_basePath + "/");
+		String _moduleName = this.getModuleName();
+		return (_plus + _moduleName);
+	}
+
+	@Override
+	public String getIncFile() {
+		String _moduleName = this.getModuleName();
+		return (_moduleName + ".hpp");
+	}
+
+	@Override
+	public String getSrcFile() {
+		String _moduleName = this.getModuleName();
+		return (_moduleName + ".cpp");
+	}
+
+	public String getIncPath() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _incFile = this.getIncFile();
+		return (_plus + _incFile);
+	}
+
+	public String getSrcPath() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _srcFile = this.getSrcFile();
+		return (_plus + _srcFile);
+	}
+
+	public boolean isIncFileEmpty() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
+		return (!_bufferExists);
+	}
+
+	public boolean isSrcFileEmpty() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
+		return (!_bufferExists);
+	}
+
+	public boolean incAppend(final String str) {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		return this.outputBuffer.appendTo("H", _plus_1, str);
+	}
+
+	public boolean srcAppend(final String str) {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		return this.outputBuffer.appendTo("C", _plus_1, str);
+	}
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksTranslationUnit.java
new file mode 100644
index 0000000..8f9ea52
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksTranslationUnit.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+import java.util.Arrays;
+
+import org.eclipse.app4mc.amalthea.model.DiscreteValueBetaDistribution;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueBoundaries;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueConstant;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueGaussDistribution;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueHistogram;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueStatistics;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueUniformDistribution;
+import org.eclipse.app4mc.amalthea.model.DiscreteValueWeibullEstimatorsDistribution;
+import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
+import org.eclipse.app4mc.amalthea.model.Ticks;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TicksTranslationUnit extends TranslationUnit {
+	private static final Logger LOG = LoggerFactory.getLogger(TicksTranslationUnit.class);
+
+	public String getBasePath() {
+		return this.tuTicksUtils.getBasePath();
+	}
+
+	public String getModuleName() {
+		return this.tuTicksUtils.getModuleName();
+	}
+
+	@Override
+	public String getCall() {
+		if (((this.ticksValue != null) && ((this.ticksValue instanceof DiscreteValueStatistics)
+				|| (this.ticksValue instanceof DiscreteValueConstant)))) {
+			return this.tuTicksUtils.getExecCall(this.getParameters(this.ticksValue)).toString();
+		}
+		TicksTranslationUnit.LOG.error("Unsupported element for Ticks : " + this.ticksValue.eClass().getName());
+		return "";
+	}
+
+	private final TicksUtilsTranslationUnit tuTicksUtils;
+	private final Ticks ticks;
+	private String puName;
+	private IDiscreteValueDeviation ticksValue;
+
+	private OutputBuffer outputBuffer;
+
+	public TicksTranslationUnit(final OutputBuffer outputBuffer, final TicksUtilsTranslationUnit tuTicksUtils,
+			final Ticks ticks, final String puName, final IDiscreteValueDeviation ticksValue) {
+		super();
+		this.tuTicksUtils = tuTicksUtils;
+		this.ticks = ticks;
+		this.puName = puName;
+		this.ticksValue = ticksValue;
+		this.outputBuffer = outputBuffer;
+	}
+
+	public String getPuName() {
+		return this.puName;
+	}
+
+	public String getIncFile() {
+		return this.getModuleName() + ".h";
+	}
+
+	private String _getParameters(final IDiscreteValueDeviation value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED\t\t");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueBetaDistribution value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueBoundaries value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueConstant value) {
+		StringConcatenation _builder = new StringConcatenation();
+		long _value = value.getValue();
+		_builder.append(_value);
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueGaussDistribution value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueHistogram value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueStatistics value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append(value.getAverage());
+		_builder.append(", ");
+		_builder.append(value.getLowerBound());
+		_builder.append(", ");
+		_builder.append(value.getUpperBound());
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueUniformDistribution value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	private String _getParameters(final DiscreteValueWeibullEstimatorsDistribution value) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
+		return _builder.toString();
+	}
+
+	private String getParameters(final IDiscreteValueDeviation value) {
+		if (value instanceof DiscreteValueBetaDistribution) {
+			return _getParameters((DiscreteValueBetaDistribution) value);
+		} else if (value instanceof DiscreteValueBoundaries) {
+			return _getParameters((DiscreteValueBoundaries) value);
+		} else if (value instanceof DiscreteValueGaussDistribution) {
+			return _getParameters((DiscreteValueGaussDistribution) value);
+		} else if (value instanceof DiscreteValueStatistics) {
+			return _getParameters((DiscreteValueStatistics) value);
+		} else if (value instanceof DiscreteValueUniformDistribution) {
+			return _getParameters((DiscreteValueUniformDistribution) value);
+		} else if (value instanceof DiscreteValueWeibullEstimatorsDistribution) {
+			return _getParameters((DiscreteValueWeibullEstimatorsDistribution) value);
+		} else if (value instanceof DiscreteValueConstant) {
+			return _getParameters((DiscreteValueConstant) value);
+		} else if (value instanceof DiscreteValueHistogram) {
+			return _getParameters((DiscreteValueHistogram) value);
+		} else if (value != null) {
+			return _getParameters(value);
+		} else {
+			throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(value).toString());
+		}
+	}
+
+	public String getModulePath() {
+		return getBasePath() + "/" + getModuleName();
+	}
+
+	@Override
+	public String getSrcFile() {
+		return getModuleName() + ".cpp";
+	}
+
+	public String getIncPath() {
+		return getModulePath() + "/_inc/" + getIncFile();
+	}
+
+	public String getSrcPath() {
+		return getModulePath() + "/_src/" + getSrcFile();
+	}
+
+	public boolean isIncFileEmpty() {
+		return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+	}
+
+	public boolean isSrcFileEmpty() {
+		return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+	}
+
+	public boolean incAppend(final String str) {
+		return outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+	}
+
+	public boolean srcAppend(final String str) {
+		return outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+	}
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksUtilsTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksUtilsTranslationUnit.java
new file mode 100644
index 0000000..9fda5d0
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TicksUtilsTranslationUnit.java
@@ -0,0 +1,416 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueConstantImpl;
+import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueStatisticsImpl;
+import org.eclipse.app4mc.slg.config.ConfigModel;
+import org.eclipse.app4mc.slg.config.TickType;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IntegerRange;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Objects;
+
+public class TicksUtilsTranslationUnit extends TranslationUnit {
+	private static final Logger LOG = LoggerFactory.getLogger(TicksUtilsTranslationUnit.class);
+
+	public static String getModulePathStatic() {
+		return "synthetic_gen" + "/" + getModuleNameStatic();
+	}
+
+	public static String getMakeFilePathStatic() {
+		return getModulePathStatic() + "/" + "CMakeLists.txt";
+	}
+
+	public static String getModuleNameStatic() {
+		return "ticksUtils";
+	}
+
+	public static String getLibName() {
+		return "TICKS_UTILS";
+	}
+
+	public String getModuleName() {
+		return TicksUtilsTranslationUnit.getModuleNameStatic();
+	}
+
+	public CharSequence getExecCall(final String params) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("executeTicks_");
+		String _last = IterableExtensions
+				.<String>last(((Iterable<String>) Conversions.doWrapArray(this.valueClass.toString().split("\\."))));
+		_builder.append(_last);
+		_builder.append("(");
+		_builder.append(params);
+		_builder.append(")");
+		return _builder;
+	}
+
+	public String getIncFile() {
+		return this.getModuleName() + ".h";
+	}
+
+	private final ConfigModel configModel;
+
+	private final Object valueClass;
+
+	private OutputBuffer outputBuffer;
+
+	public TicksUtilsTranslationUnit(final OutputBuffer outputBuffer, final ConfigModel configModel,
+			final Object valueClass) {
+		super();
+		this.configModel = configModel;
+		this.valueClass = valueClass;
+		this.outputBuffer = outputBuffer;
+		this.genFiles();
+	}
+
+	public boolean genFiles() {
+		boolean _xblockexpression = false;
+		{
+			boolean _isIncFileEmpty = this.isIncFileEmpty();
+			if (_isIncFileEmpty) {
+				this.toH();
+			}
+			boolean _isSrcFileEmpty = this.isSrcFileEmpty();
+			if (_isSrcFileEmpty) {
+				this.toCPP();
+			}
+			this.srcAppend(this.generateTicks(this.valueClass));
+			_xblockexpression = this.incAppend(this.generateTicksDecleration(this.valueClass));
+		}
+		return _xblockexpression;
+	}
+
+	private boolean toCPP() {
+		boolean _xblockexpression = false;
+		{
+			String _incFile = this.getIncFile();
+			String _plus = ("#include \"" + _incFile);
+			String _plus_1 = (_plus + "\"\n");
+			this.srcAppend(_plus_1);
+			final String ticksCodeSnippet = this.configModel.getCustomTickImpl().getValue();
+			String _xifexpression = null;
+			boolean _isEnable = this.configModel.getCustomTickImpl().isEnable();
+			if (_isEnable) {
+				_xifexpression = ticksCodeSnippet;
+			} else {
+				_xifexpression = this.burnTicksDefault().toString();
+			}
+			final String burnTicksBody = _xifexpression;
+			this.srcAppend(this.burnTicks(burnTicksBody).toString());
+			_xblockexpression = this.srcAppend(this.burnTicksStatistics(this.configModel).toString());
+		}
+		return _xblockexpression;
+	}
+
+	private boolean toH() {
+		boolean _xblockexpression = false;
+		{
+			this.incAppend(this.burnTicksDecleration().toString());
+			_xblockexpression = this.incAppend(this.burnTicksStatisticsDecleration().toString());
+		}
+		return _xblockexpression;
+	}
+
+	private String generateTicks(final Object valueClass) {
+		String _switchResult = null;
+		boolean _matched = false;
+		if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
+			_matched = true;
+			StringConcatenation _builder = new StringConcatenation();
+			_builder.append("void ");
+			CharSequence _execCall = this.getExecCall("int ticks");
+			_builder.append(_execCall);
+			_builder.append(" {");
+			_builder.newLineIfNotEmpty();
+			_builder.append("\t");
+			_builder.append("burnTicks(ticks);");
+			_builder.newLine();
+			_builder.append("}");
+			_builder.newLine();
+			_builder.newLine();
+			_switchResult = _builder.toString();
+		}
+		if (!_matched) {
+			if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
+				_matched = true;
+				StringConcatenation _builder_1 = new StringConcatenation();
+				_builder_1.append("void ");
+				CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
+				_builder_1.append(_execCall_1);
+				_builder_1.append(" {");
+				_builder_1.newLineIfNotEmpty();
+				_builder_1.append("\t");
+				_builder_1.append("burnTicksStatistics(average, lowerBound, upperBound);");
+				_builder_1.newLine();
+				_builder_1.append("}");
+				_builder_1.newLine();
+				_builder_1.newLine();
+				_switchResult = _builder_1.toString();
+			}
+		}
+		if (!_matched) {
+			String _xblockexpression = null;
+			{
+				String _string = valueClass.toString();
+				String _plus = ("Unsupported ticks type is used : " + _string);
+				TicksUtilsTranslationUnit.LOG.error(_plus);
+				_xblockexpression = "";
+			}
+			_switchResult = _xblockexpression;
+		}
+		return _switchResult;
+	}
+
+	private CharSequence burnTicks(final String burnTicksBody) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("void burnTicks(int ticks) {");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append(burnTicksBody, "\t");
+		_builder.newLineIfNotEmpty();
+		_builder.append("}");
+		_builder.newLine();
+		_builder.newLine();
+		return _builder;
+	}
+
+	private String chooseTicks(final ConfigModel configModel) {
+		String _switchResult = null;
+		TickType _defaultTickType = configModel.getDefaultTickType();
+		if (_defaultTickType != null) {
+			switch (_defaultTickType) {
+			case MINIMUM:
+				_switchResult = "lowerBound";
+				break;
+			case MAXIMUM:
+				_switchResult = "upperBound";
+				break;
+			case AVERAGE:
+				_switchResult = "(int)average";
+				break;
+			default:
+				_switchResult = "(int)average";
+				break;
+			}
+		} else {
+			_switchResult = "(int)average";
+		}
+		return _switchResult;
+	}
+
+	private CharSequence burnTicksStatistics(final ConfigModel configModel) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound) {");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("burnTicks(");
+		String _chooseTicks = this.chooseTicks(configModel);
+		_builder.append(_chooseTicks, "\t");
+		_builder.append(");");
+		_builder.newLineIfNotEmpty();
+		_builder.append("}");
+		_builder.newLine();
+		_builder.newLine();
+		return _builder;
+	}
+
+	private CharSequence burnTicksDefault() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("\t");
+		_builder.append("// default implementation of tick burning");
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("int numLoops = ticks / 400; ");
+		_builder.newLine();
+		_builder.append("#\tif defined (__x86_64__)");
+		_builder.newLine();
+		_builder.append(" \t");
+		_builder.append("for (int i = 0; i < numLoops; i++) {");
+		_builder.newLine();
+		{
+			IntegerRange _upTo = new IntegerRange(1, 400);
+			for (final Integer i : _upTo) {
+				_builder.append(" \t\t");
+				_builder.append("__asm volatile(\"nop\");");
+				_builder.newLine();
+			}
+		}
+		_builder.append(" \t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("#\telif defined (__x86_32__) \t\t");
+		_builder.newLine();
+		_builder.append(" \t\t");
+		_builder.append("for (int i = 0; i < numLoops; i++) {");
+		_builder.newLine();
+		{
+			IntegerRange _upTo_1 = new IntegerRange(1, 400);
+			for (final Integer i_1 : _upTo_1) {
+				_builder.append(" \t\t\t \t");
+				_builder.append("__asm volatile(\"mov r0, r0\");");
+				_builder.newLine();
+			}
+		}
+		_builder.append(" \t\t\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("#\telif defined (__aarch64__) \t\t");
+		_builder.newLine();
+		_builder.append(" \t");
+		_builder.append("for (int i = 0; i < numLoops; i++) {");
+		_builder.newLine();
+		{
+			IntegerRange _upTo_2 = new IntegerRange(1, 400);
+			for (final Integer i_2 : _upTo_2) {
+				_builder.append(" \t");
+				_builder.append("__asm volatile(\"mov x0, x0\");");
+				_builder.newLine();
+			}
+		}
+		_builder.append("\t");
+		_builder.append("}");
+		_builder.newLine();
+		_builder.append("#\tendif");
+		_builder.newLine();
+		return _builder;
+	}
+
+	private CharSequence burnTicksDecleration() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("void burnTicks(int ticks);");
+		_builder.newLine();
+		_builder.newLine();
+		return _builder;
+	}
+
+	private CharSequence burnTicksStatisticsDecleration() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound);");
+		_builder.newLine();
+		_builder.newLine();
+		return _builder;
+	}
+
+	private String generateTicksDecleration(final Object valueClass) {
+		String _switchResult = null;
+		boolean _matched = false;
+		if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
+			_matched = true;
+			StringConcatenation _builder = new StringConcatenation();
+			_builder.append("void ");
+			CharSequence _execCall = this.getExecCall("int ticks");
+			_builder.append(_execCall);
+			_builder.append(";");
+			_builder.newLineIfNotEmpty();
+			_builder.newLine();
+			_switchResult = _builder.toString();
+		}
+		if (!_matched) {
+			if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
+				_matched = true;
+				StringConcatenation _builder_1 = new StringConcatenation();
+				_builder_1.append("void ");
+				CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
+				_builder_1.append(_execCall_1);
+				_builder_1.append(";");
+				_builder_1.newLineIfNotEmpty();
+				_builder_1.newLine();
+				_switchResult = _builder_1.toString();
+			}
+		}
+		if (!_matched) {
+			String _xblockexpression = null;
+			{
+				String _string = valueClass.toString();
+				String _plus = ("Unsupported ticks type is used : " + _string);
+				TicksUtilsTranslationUnit.LOG.error(_plus);
+				_xblockexpression = "";
+			}
+			_switchResult = _xblockexpression;
+		}
+		return _switchResult;
+	}
+
+	public String getBasePath() {
+		return "synthetic_gen";
+	}
+
+	public String getModulePath() {
+		String _basePath = this.getBasePath();
+		String _plus = (_basePath + "/");
+		String _moduleName = this.getModuleName();
+		return (_plus + _moduleName);
+	}
+
+	@Override
+	public String getSrcFile() {
+		String _moduleName = this.getModuleName();
+		return (_moduleName + ".cpp");
+	}
+
+	public String getIncPath() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _incFile = this.getIncFile();
+		return (_plus + _incFile);
+	}
+
+	public String getSrcPath() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _srcFile = this.getSrcFile();
+		return (_plus + _srcFile);
+	}
+
+	public boolean isIncFileEmpty() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
+		return (!_bufferExists);
+	}
+
+	public boolean isSrcFileEmpty() {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
+		return (!_bufferExists);
+	}
+
+	public boolean incAppend(final String str) {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_inc/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		return this.outputBuffer.appendTo("H", _plus_1, str);
+	}
+
+	public boolean srcAppend(final String str) {
+		String _modulePath = this.getModulePath();
+		String _plus = (_modulePath + "/_src/");
+		String _moduleName = this.getModuleName();
+		String _plus_1 = (_plus + _moduleName);
+		return this.outputBuffer.appendTo("C", _plus_1, str);
+	}
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TranslationUnit.java
new file mode 100644
index 0000000..6251446
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/generators/TranslationUnit.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 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.slg.commons.m2t.generators;
+
+public class TranslationUnit {
+	private String path;
+	private String call;
+	private String incFile;
+	private String srcFile;
+
+	public TranslationUnit(final String path, final String call, final String incFile, final String srcFile) {
+		this.path = path;
+		this.call = call;
+		this.incFile = incFile;
+		this.srcFile = srcFile;
+	}
+
+	public TranslationUnit() {
+		this("MODULE_PATH", "CALL", "MODULE.H", "MODULE.CPP"); // dummy values for unused data
+	}
+
+	public String getCall() {
+		return this.call;
+	}
+
+	public void setCall(final String _call) {
+		this.call = _call;
+	}
+
+	public String getPath() {
+		return this.path;
+	}
+
+	public void setPath(final String _path) {
+		this.path = _path;
+	}
+
+	public String getSrcFile() {
+		return this.srcFile;
+	}
+
+	public String getIncFile() {
+		return this.incFile;
+	}
+
+	public String getExtendedIncPath() {
+		return ((this.path + "/_inc/") + this.incFile);
+	}
+
+	public String getExtendedSrcPath() {
+		return ((this.path + "/_src/") + this.srcFile);
+	}
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend
index f7550d4..165fb9f 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/ActivityGraphItemTransformer.xtend
@@ -25,8 +25,8 @@
 import org.eclipse.app4mc.amalthea.model.RunnableCall
 import org.eclipse.app4mc.amalthea.model.Ticks
 import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksTranslationUnit
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend
index 403c5f6..c9ddf2b 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/BaseTransformer.xtend
@@ -19,7 +19,7 @@
 import java.util.HashMap
 import java.util.HashSet
 import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
 
 abstract class BaseTransformer extends AbstractSLGTransformer {
 
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend
index 94cf5ce..a5dd80f 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupHeaderTransformer.xtend
@@ -20,7 +20,7 @@
 import java.util.LinkedHashSet
 import org.eclipse.app4mc.amalthea.model.Component
 import org.eclipse.app4mc.amalthea.model.Group
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend
index bd525c2..c9c6641 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/GroupSourceTransformer.xtend
@@ -20,7 +20,7 @@
 import java.util.LinkedList
 import org.eclipse.app4mc.amalthea.model.Component
 import org.eclipse.app4mc.amalthea.model.Group
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
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 8f1be77..0ebc5cb 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
@@ -18,7 +18,7 @@
 import com.google.inject.Inject
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.LabelAccess
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelAccessTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelAccessTranslationUnit
 import org.eclipse.app4mc.transformation.templates.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend
index 17516ac..12dac4b 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/LabelTransformer.xtend
@@ -20,7 +20,7 @@
 import java.util.ArrayList
 import java.util.HashMap
 import org.eclipse.app4mc.amalthea.model.Label
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend
index df12e15..4a5c5f6 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/RunnableTransformer.xtend
@@ -18,7 +18,7 @@
 import com.google.inject.Inject
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.Runnable
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend
index d295754..fd2d623 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SynteticTransformer.xtend
@@ -15,7 +15,7 @@
 
 package org.eclipse.app4mc.slg.commons.m2t.transformers
 
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
 
 abstract class SynteticTransformer<T extends TranslationUnit> extends BaseTransformer {
 }
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend
index 84df901..d778a19 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TaskTransformer.xtend
@@ -19,7 +19,7 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.Component
 import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TaskTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
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 4c2f53b..ba103cc 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
@@ -20,7 +20,7 @@
 import java.util.ArrayList
 import java.util.List
 import org.eclipse.app4mc.amalthea.model.Ticks
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
 import org.eclipse.app4mc.transformation.templates.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend
index 9af256d..92831f6 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/TicksUtilsTransformer.xtend
@@ -20,7 +20,7 @@
 import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation
 import org.eclipse.app4mc.slg.config.ConfigModel
 import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksUtilsTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelAccessTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelAccessTranslationUnit.java
deleted file mode 100644
index 69d9583..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelAccessTranslationUnit.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-import java.util.Arrays;
-
-import org.eclipse.app4mc.amalthea.model.LabelAccess;
-import org.eclipse.app4mc.amalthea.model.LabelAccessEnum;
-import org.eclipse.app4mc.amalthea.model.LabelAccessStatistic;
-import org.eclipse.app4mc.amalthea.model.MinAvgMaxStatistic;
-import org.eclipse.app4mc.amalthea.model.NumericStatistic;
-import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-
-public class LabelAccessTranslationUnit extends TranslationUnit {
-  public String getBasePath() {
-    return this.tuLabel.getBasePath();
-  }
-  
-  public String getModuleName() {
-    return this.tuLabel.getModuleName();
-  }
-  
-  public String getIncFile() {
-    return this.tuLabel.getIncFile();
-  }
-  
-  @Override
-  public String getCall() {
-    String _xblockexpression = null;
-    {
-      String statString = "1";
-      LabelAccessStatistic _statistic = null;
-      if (this.labelAccess!=null) {
-        _statistic=this.labelAccess.getStatistic();
-      }
-      NumericStatistic _value = null;
-      if (_statistic!=null) {
-        _value=_statistic.getValue();
-      }
-      final NumericStatistic stat = _value;
-      if ((stat != null)) {
-        LabelAccessStatistic _statistic_1 = null;
-        if (this.labelAccess!=null) {
-          _statistic_1=this.labelAccess.getStatistic();
-        }
-        NumericStatistic _value_1 = null;
-        if (_statistic_1!=null) {
-          _value_1=_statistic_1.getValue();
-        }
-        statString = LabelAccessTranslationUnit.getNumericStatistic(_value_1);
-      }
-      String _switchResult = null;
-      LabelAccessEnum _access = this.labelAccess.getAccess();
-      if (_access != null) {
-        switch (_access) {
-          case READ:
-            _switchResult = this.tuLabel.readCall(statString);
-            break;
-          case WRITE:
-            _switchResult = this.tuLabel.writeCall(statString);
-            break;
-          default:
-            String _name = this.labelAccess.getData().getName();
-            String _plus = ("/*underspecified access to label" + _name);
-            _switchResult = (_plus + "*/");
-            break;
-        }
-      } else {
-        String _name = this.labelAccess.getData().getName();
-        String _plus = ("/*underspecified access to label" + _name);
-        _switchResult = (_plus + "*/");
-      }
-      _xblockexpression = _switchResult;
-    }
-    return _xblockexpression;
-  }
-  
-  public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-private OutputBuffer outputBuffer;
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-
-private final LabelTranslationUnit tuLabel;
-  
-  private final LabelAccess labelAccess;
-  
-  public LabelAccessTranslationUnit(final OutputBuffer outputBuffer, final LabelTranslationUnit tuLabel, final LabelAccess labelAccess) {
-    super();
-    this.tuLabel = tuLabel;
-    this.labelAccess = labelAccess;
-    this.outputBuffer = outputBuffer;
-  }
-  
-  protected static String _getNumericStatistic(final MinAvgMaxStatistic stat) {
-    String _string = Integer.valueOf(Double.valueOf(Math.ceil(stat.getAvg())).intValue()).toString();
-    return (_string + "/*MinAvgMaxStatistic not supported yet*/");
-  }
-  
-  protected static String _getNumericStatistic(final SingleValueStatistic stat) {
-    return Integer.valueOf(Double.valueOf(Math.ceil(stat.getValue())).intValue()).toString();
-  }
-  
-  public static String getNumericStatistic(final NumericStatistic stat) {
-    if (stat instanceof MinAvgMaxStatistic) {
-      return _getNumericStatistic((MinAvgMaxStatistic)stat);
-    } else if (stat instanceof SingleValueStatistic) {
-      return _getNumericStatistic((SingleValueStatistic)stat);
-    } else {
-      throw new IllegalArgumentException("Unhandled parameter types: " +
-        Arrays.<Object>asList(stat).toString());
-    }
-  }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelTranslationUnit.java
deleted file mode 100644
index 2fd39bb..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/LabelTranslationUnit.java
+++ /dev/null
@@ -1,542 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-import org.eclipse.app4mc.amalthea.model.DataSize;
-import org.eclipse.app4mc.amalthea.model.Label;
-import org.eclipse.app4mc.slg.commons.m2t.AmaltheaModelUtils;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("NULL-SAFE")
-public class LabelTranslationUnit extends TranslationUnit {
-  public static String getModulePathStatic() {
-    String _basePathStatic = "synthetic_gen";
-    String _plus = (_basePathStatic + "/");
-    String _moduleNameStatic = LabelTranslationUnit.getModuleNameStatic();
-    return (_plus + _moduleNameStatic);
-  }
-  
-  public static String getMakeFilePathStatic() {
-    String _modulePathStatic = LabelTranslationUnit.getModulePathStatic();
-    String _plus = (_modulePathStatic + "/");
-    String _makeFileName = "CMakeLists.txt";
-    return (_plus + _makeFileName);
-  }
-  
-  public static String getModuleNameStatic() {
-    return "labels";
-  }
-  
-  public static String getLibName() {
-    return "LABELS_LIB";
-  }
-  
-  public String getModuleName() {
-    return LabelTranslationUnit.getModuleNameStatic();
-  }
-  
-  protected String getName() {
-    return this.label.getName();
-  }
-  
-  public String getInitCall() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("initialize_");
-    String _name = this.getName();
-    _builder.append(_name);
-    _builder.append("()");
-    return _builder.toString();
-  }
-  
-  public String readCall(final String param) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("read_");
-    String _name = this.getName();
-    _builder.append(_name);
-    _builder.append("(");
-    _builder.append(param);
-    _builder.append(")");
-    return _builder.toString();
-  }
-  
-  public String writeCall(final String param) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("write_");
-    String _name = this.getName();
-    _builder.append(_name);
-    _builder.append("(");
-    _builder.append(param);
-    _builder.append(")");
-    return _builder.toString();
-  }
-  
-  public String getIncFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".h");
-  }
-  
-  private final Label label;
-private OutputBuffer outputBuffer;
-  
-  public LabelTranslationUnit(final OutputBuffer outputBuffer, final Label label) {
-    super();
-    this.label = label;
-    this.outputBuffer = outputBuffer;
-    this.genFiles();
-  }
-  
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      boolean _isSrcFileEmpty = this.isSrcFileEmpty();
-      if (_isSrcFileEmpty) {
-        String _incFile = this.getIncFile();
-        String _plus = ("#include \"" + _incFile);
-        String _plus_1 = (_plus + "\"\n\n");
-        this.srcAppend(_plus_1);
-      }
-      this.incAppend(this.toH());
-      _xblockexpression = this.srcAppend(this.toCpp());
-    }
-    return _xblockexpression;
-  }
-  
-  private String toH() {
-    StringConcatenation _builder = new StringConcatenation();
-    {
-      boolean _isIncFileEmpty = this.isIncFileEmpty();
-      if (_isIncFileEmpty) {
-        String _xblockexpression = null;
-        {
-          this.incAppend("#include <stdbool.h>\n\n");
-          _xblockexpression = "";
-        }
-        _builder.append(_xblockexpression);
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.append("void ");
-    String _initCall = this.getInitCall();
-    _builder.append(_initCall);
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.append("void ");
-    String _readCall = this.readCall("int labelAccessStatistics");
-    _builder.append(_readCall);
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.append("void ");
-    String _writeCall = this.writeCall("int labelAccessStatistics");
-    _builder.append(_writeCall);
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String toCpp() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("int ");
-    String _name = this.getName();
-    _builder.append(_name);
-    _builder.append("[");
-    long _labelArraySize = AmaltheaModelUtils.getLabelArraySize(this.label);
-    _builder.append(_labelArraySize);
-    _builder.append("];\t");
-    _builder.newLineIfNotEmpty();
-    _builder.newLine();
-    _builder.append("static bool isIinitialized_");
-    String _name_1 = this.getName();
-    _builder.append(_name_1);
-    _builder.append(" = false;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("void ");
-    String _initCall = this.getInitCall();
-    _builder.append(_initCall);
-    _builder.append(" {");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("if (!isIinitialized_");
-    String _name_2 = this.getName();
-    _builder.append(_name_2, "\t");
-    _builder.append("){");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("for (int i=0; i < ");
-    long _labelArraySize_1 = AmaltheaModelUtils.getLabelArraySize(this.label);
-    _builder.append(_labelArraySize_1, "\t\t");
-    _builder.append("; i++){");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_3 = this.getName();
-    _builder.append(_name_3, "\t\t\t");
-    _builder.append("[i] = i+1;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("isIinitialized_");
-    String _name_4 = this.getName();
-    _builder.append(_name_4, "\t\t");
-    _builder.append(" = true;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("void ");
-    String _readCall = this.readCall("int labelAccessStatistics");
-    _builder.append(_readCall);
-    _builder.append(" {");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("int numberOfBytes = ");
-    Label _label = null;
-    if (this!=null) {
-      _label=this.label;
-    }
-    DataSize _size = null;
-    if (_label!=null) {
-      _size=_label.getSize();
-    }
-    long _numberBytes = 0l;
-    if (_size!=null) {
-      _numberBytes=_size.getNumberBytes();
-    }
-    _builder.append(_numberBytes, "\t");
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("if(numberOfBytes < 4){");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("numberOfBytes = 4;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int arraysize = sizeof(");
-    String _name_5 = this.getName();
-    _builder.append(_name_5, "\t\t");
-    _builder.append(") / 4;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("//printf(\"number of bytes:%d\\n\",arraysize);");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int leftOverElements=arraysize%10;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int i = 0;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int a = 0;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {           //iteration with 10 reads");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_6 = this.getName();
-    _builder.append(_name_6, "\t\t\t");
-    _builder.append("[i];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_7 = this.getName();
-    _builder.append(_name_7, "\t\t\t");
-    _builder.append("[i+1];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_8 = this.getName();
-    _builder.append(_name_8, "\t\t\t");
-    _builder.append("[i+2];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_9 = this.getName();
-    _builder.append(_name_9, "\t\t\t");
-    _builder.append("[i+3];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_10 = this.getName();
-    _builder.append(_name_10, "\t\t\t");
-    _builder.append("[i+4];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_11 = this.getName();
-    _builder.append(_name_11, "\t\t\t");
-    _builder.append("[i+5];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_12 = this.getName();
-    _builder.append(_name_12, "\t\t\t");
-    _builder.append("[i+6];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_13 = this.getName();
-    _builder.append(_name_13, "\t\t\t");
-    _builder.append("[i+7];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_14 = this.getName();
-    _builder.append(_name_14, "\t\t\t");
-    _builder.append("[i+8];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_15 = this.getName();
-    _builder.append(_name_15, "\t\t\t");
-    _builder.append("[i+9];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("for(;i<arraysize;i++){");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("a = ");
-    String _name_16 = this.getName();
-    _builder.append(_name_16, "\t\t\t");
-    _builder.append("[i];");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("void ");
-    String _writeCall = this.writeCall("int labelAccessStatistics");
-    _builder.append(_writeCall);
-    _builder.append(" {");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("int numberOfBytes = ");
-    Label _label_1 = null;
-    if (this!=null) {
-      _label_1=this.label;
-    }
-    DataSize _size_1 = null;
-    if (_label_1!=null) {
-      _size_1=_label_1.getSize();
-    }
-    long _numberBytes_1 = 0l;
-    if (_size_1!=null) {
-      _numberBytes_1=_size_1.getNumberBytes();
-    }
-    _builder.append(_numberBytes_1, "\t");
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("for (int repeat = 0 ; repeat < labelAccessStatistics; repeat++){");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("if(numberOfBytes < 4){");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("numberOfBytes = 4;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int arraysize = sizeof(");
-    String _name_17 = this.getName();
-    _builder.append(_name_17, "\t\t");
-    _builder.append(") / 4;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("int leftOverElements=arraysize%10;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int arraySizeWith10Multiples=arraysize-leftOverElements;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int i = 0;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("for (i = 0; i < arraySizeWith10Multiples; i = i + 10) {");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    String _name_18 = this.getName();
-    _builder.append(_name_18, "\t\t\t");
-    _builder.append("[i]   = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_19 = this.getName();
-    _builder.append(_name_19, "\t\t\t");
-    _builder.append("[i+1] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_20 = this.getName();
-    _builder.append(_name_20, "\t\t\t");
-    _builder.append("[i+2] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_21 = this.getName();
-    _builder.append(_name_21, "\t\t\t");
-    _builder.append("[i+3] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_22 = this.getName();
-    _builder.append(_name_22, "\t\t\t");
-    _builder.append("[i+4] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_23 = this.getName();
-    _builder.append(_name_23, "\t\t\t");
-    _builder.append("[i+5] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_24 = this.getName();
-    _builder.append(_name_24, "\t\t\t");
-    _builder.append("[i+6] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_25 = this.getName();
-    _builder.append(_name_25, "\t\t\t");
-    _builder.append("[i+7] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_26 = this.getName();
-    _builder.append(_name_26, "\t\t\t");
-    _builder.append("[i+8] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t");
-    String _name_27 = this.getName();
-    _builder.append(_name_27, "\t\t\t");
-    _builder.append("[i+9] = 0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("for(;i<arraysize;i++){");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    String _name_28 = this.getName();
-    _builder.append(_name_28, "\t\t\t\t");
-    _builder.append("[i]=0xAFFE;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  protected long getSize() {
-    return this.label.getSize().getNumberBytes();
-  }
-
-public String getBasePath() {
-    return "synthetic_gen";
-  }
-
-public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/RunnableTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/RunnableTranslationUnit.java
deleted file mode 100644
index 177b67e..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/RunnableTranslationUnit.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.function.Consumer;
-
-import org.eclipse.app4mc.amalthea.model.ActivityGraph;
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-public class RunnableTranslationUnit extends TranslationUnit {
-  public static String getModulePathStatic() {
-    String _basePathStatic = "synthetic_gen";
-    String _plus = (_basePathStatic + "/");
-    String _moduleNameStatic = RunnableTranslationUnit.getModuleNameStatic();
-    return (_plus + _moduleNameStatic);
-  }
-  
-  public static String getMakeFilePathStatic() {
-    String _modulePathStatic = RunnableTranslationUnit.getModulePathStatic();
-    String _plus = (_modulePathStatic + "/");
-    String _makeFileName = "CMakeLists.txt";
-    return (_plus + _makeFileName);
-  }
-  
-  public static String getModuleNameStatic() {
-    return "runnables";
-  }
-  
-  public static String getLibName() {
-    return "RUNNABLES_LIB";
-  }
-  
-  public String getModuleName() {
-    return RunnableTranslationUnit.getModuleNameStatic();
-  }
-  
-  @Override
-  public String getCall() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("run_");
-    String _name = this.runnable.getName();
-    _builder.append(_name);
-    _builder.append("()");
-    return _builder.toString();
-  }
-  
-  public String getIncFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".h");
-  }
-  
-  public ActivityGraphItemTransformer callGraphItemTransformer;
-  
-  public org.eclipse.app4mc.amalthea.model.Runnable runnable;
-
-private OutputBuffer outputBuffer;
-  
-  public RunnableTranslationUnit(final OutputBuffer outputBuffer, final ActivityGraphItemTransformer callGraphItemTransformer, final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
-    super();
-    this.callGraphItemTransformer = callGraphItemTransformer;
-    this.runnable = runnable;
-    this.outputBuffer = outputBuffer;
-    this.genFiles();
-  }
-  
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      boolean _isSrcFileEmpty = this.isSrcFileEmpty();
-      if (_isSrcFileEmpty) {
-        String _incFile = this.getIncFile();
-        String _plus = ("#include \"" + _incFile);
-        String _plus_1 = (_plus + "\"\n");
-        this.srcAppend(_plus_1);
-      }
-      final LinkedHashSet<String> includes = new LinkedHashSet<String>();
-      final ArrayList<String> calls = new ArrayList<String>();
-      ActivityGraph _activityGraph = null;
-      if (this.runnable!=null) {
-        _activityGraph=this.runnable.getActivityGraph();
-      }
-      EList<ActivityGraphItem> _items = null;
-      if (_activityGraph!=null) {
-        _items=_activityGraph.getItems();
-      }
-      final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
-        @Override
-        public void accept(final ActivityGraphItem item) {
-          final TranslationUnit tmp = RunnableTranslationUnit.this.callGraphItemTransformer.transform(item);
-          if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile())) && (!RunnableTranslationUnit.this.getIncFile().equals(tmp.getIncFile())))) {
-            includes.add(tmp.getIncFile());
-          }
-          final String call = tmp.getCall();
-          boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(call);
-          boolean _not = (!_isNullOrEmpty);
-          if (_not) {
-            calls.add(call);
-          }
-        }
-      };
-      _items.forEach(_function);
-      String _name = this.runnable.getName();
-      String _plus_2 = ("\n//Runnable " + _name);
-      String _plus_3 = (_plus_2 + "----\n");
-      this.incAppend(_plus_3);
-      this.toH(includes);
-      String _name_1 = this.runnable.getName();
-      String _plus_4 = ("\n//Runnable " + _name_1);
-      String _plus_5 = (_plus_4 + "----\n");
-      this.srcAppend(_plus_5);
-      _xblockexpression = this.toCpp(includes, calls);
-    }
-    return _xblockexpression;
-  }
-  
-  public boolean toH(final LinkedHashSet<String> includes) {
-    boolean _xblockexpression = false;
-    {
-      final Consumer<String> _function = new Consumer<String>() {
-        @Override
-        public void accept(final String include) {
-          RunnableTranslationUnit.this.incAppend((("#include \"" + include) + "\"\n"));
-        }
-      };
-      includes.forEach(_function);
-      StringConcatenation _builder = new StringConcatenation();
-      _builder.append("void ");
-      String _call = this.getCall();
-      _builder.append(_call);
-      _builder.append(";");
-      _builder.newLineIfNotEmpty();
-      _xblockexpression = this.incAppend(_builder.toString());
-    }
-    return _xblockexpression;
-  }
-  
-  public boolean toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
-    boolean _xblockexpression = false;
-    {
-      String _call = this.getCall();
-      String _plus = ("void " + _call);
-      String _plus_1 = (_plus + "{\n");
-      this.srcAppend(_plus_1);
-      final Consumer<String> _function = new Consumer<String>() {
-        @Override
-        public void accept(final String call) {
-          RunnableTranslationUnit.this.srcAppend((("\t" + call) + ";\n"));
-        }
-      };
-      calls.forEach(_function);
-      _xblockexpression = this.srcAppend("}\n\n");
-    }
-    return _xblockexpression;
-  }
-
-public String getBasePath() {
-    return "synthetic_gen";
-  }
-
-public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TaskTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TaskTranslationUnit.java
deleted file mode 100644
index c20570e..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TaskTranslationUnit.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
-
-import org.eclipse.app4mc.amalthea.model.ActivityGraph;
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
-import org.eclipse.app4mc.amalthea.model.Component;
-import org.eclipse.app4mc.amalthea.model.RunnableCall;
-import org.eclipse.app4mc.amalthea.model.Tag;
-import org.eclipse.app4mc.amalthea.model.Task;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.LabelTransformer;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@SuppressWarnings("unused")
-public class TaskTranslationUnit extends TranslationUnit {
-  public RunnableTransformer runnableTransformer;
-  
-  public LabelTransformer labelTransformer;
-  
-  public String getBasePath() {
-    return "";
-  }
-  
-  public String getModuleName() {
-    return this.task.getName();
-  }
-  
-  public String getInitCall() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("initialize_task_");
-    String _moduleName = this.getModuleName();
-    _builder.append(_moduleName);
-    _builder.append("()");
-    return _builder.toString();
-  }
-  
-  public String stepCall() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("step_task_");
-    String _moduleName = this.getModuleName();
-    _builder.append(_moduleName);
-    _builder.append("()");
-    return _builder.toString();
-  }
-  
-  private final Task task;
-  
-  private final Component component;
-
-private OutputBuffer outputBuffer;
-  
-  public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer, final LabelTransformer labelTransformer, final Task task, final Component component) {
-    super();
-    this.runnableTransformer = runnableTransformer;
-    this.labelTransformer = labelTransformer;
-    this.task = task;
-    this.component = component;
-    this.outputBuffer = outputBuffer;
-    this.genFiles();
-  }
-  
-  public TaskTranslationUnit(final OutputBuffer outputBuffer, final RunnableTransformer runnableTransformer, final LabelTransformer labelTransformer, final Task task) {
-    super();
-    this.task = task;
-    this.component = null;
-    this.runnableTransformer = runnableTransformer;
-    this.labelTransformer = labelTransformer;
-    this.outputBuffer = outputBuffer;
-  }
-  
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      final LinkedHashSet<String> includes = new LinkedHashSet<String>();
-      final LinkedList<String> initCalls = new LinkedList<String>();
-      final LinkedList<String> stepCalls = new LinkedList<String>();
-      ActivityGraph _activityGraph = null;
-      if (this.task!=null) {
-        _activityGraph=this.task.getActivityGraph();
-      }
-      EList<ActivityGraphItem> _items = null;
-      if (_activityGraph!=null) {
-        _items=_activityGraph.getItems();
-      }
-      final Consumer<ActivityGraphItem> _function = new Consumer<ActivityGraphItem>() {
-        @Override
-        public void accept(final ActivityGraphItem item) {
-          if ((item instanceof RunnableCall)) {
-            final org.eclipse.app4mc.amalthea.model.Runnable runnable = ((RunnableCall) item).getRunnable();
-            final RunnableTranslationUnit tu = TaskTranslationUnit.this.runnableTransformer.transform(((org.eclipse.app4mc.amalthea.model.Runnable) runnable));
-            includes.add(tu.getIncFile());
-            final Function1<Tag, Boolean> _function = new Function1<Tag, Boolean>() {
-              @Override
-              public Boolean apply(final Tag tag) {
-                return Boolean.valueOf("initialize".equals(tag.getName()));
-              }
-            };
-            boolean _isEmpty = IterableExtensions.isEmpty(IterableExtensions.<Tag>filter(((RunnableCall)item).getTags(), _function));
-            boolean _not = (!_isEmpty);
-            if (_not) {
-              initCalls.add(tu.getCall());
-            } else {
-              stepCalls.add(tu.getCall());
-            }
-          }
-        }
-      };
-      _items.forEach(_function);
-      final BiConsumer<ArrayList<?>, LabelTranslationUnit> _function_1 = new BiConsumer<ArrayList<?>, LabelTranslationUnit>() {
-        @Override
-        public void accept(final ArrayList<?> label, final LabelTranslationUnit tu) {
-          includes.add(tu.getIncFile());
-          initCalls.add(tu.getInitCall());
-        }
-      };
-      this.labelTransformer.getCache().forEach(_function_1);
-      this.incAppend(this.toH());
-      _xblockexpression = this.srcAppend(this.toCpp(includes, initCalls, stepCalls));
-    }
-    return _xblockexpression;
-  }
-  
-  private String toH() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.newLine();
-    _builder.append("//Header of Task ");
-    String _moduleName = this.getModuleName();
-    _builder.append(_moduleName);
-    _builder.newLineIfNotEmpty();
-    _builder.append("#include <stdint.h>");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("class ");
-    String _moduleName_1 = this.getModuleName();
-    _builder.append(_moduleName_1);
-    _builder.append(" {");
-    _builder.newLineIfNotEmpty();
-    _builder.newLine();
-    _builder.append("public:");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("    ");
-    _builder.append("//constructor");
-    _builder.newLine();
-    _builder.append("\t");
-    String _moduleName_2 = this.getModuleName();
-    _builder.append(_moduleName_2, "\t");
-    _builder.append("(void);");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("// destructor");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("virtual ~");
-    String _moduleName_3 = this.getModuleName();
-    _builder.append(_moduleName_3, "\t");
-    _builder.append("() =default;");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("void ");
-    String _initCall = this.getInitCall();
-    _builder.append(_initCall, "\t");
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("void ");
-    String _stepCall = this.stepCall();
-    _builder.append(_stepCall, "\t");
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    _builder.newLine();
-    _builder.append(" ");
-    _builder.append("};");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String toCpp(final LinkedHashSet<String> includes, final LinkedList<String> initCalls, final LinkedList<String> stepCalls) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("#include \"");
-    String _incFile = this.getIncFile();
-    _builder.append(_incFile);
-    _builder.append("\"");
-    _builder.newLineIfNotEmpty();
-    {
-      for(final String include : includes) {
-        _builder.append("#include \"");
-        _builder.append(include);
-        _builder.append("\"");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.newLine();
-    String _moduleName = this.getModuleName();
-    _builder.append(_moduleName);
-    _builder.append("::");
-    String _moduleName_1 = this.getModuleName();
-    _builder.append(_moduleName_1);
-    _builder.append("(){");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("//default constructor");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("void ");
-    String _moduleName_2 = this.getModuleName();
-    _builder.append(_moduleName_2);
-    _builder.append("::");
-    String _initCall = this.getInitCall();
-    _builder.append(_initCall);
-    _builder.append(" {");
-    _builder.newLineIfNotEmpty();
-    {
-      for(final String call : initCalls) {
-        _builder.append("       ");
-        _builder.append(call, "       ");
-        _builder.append(";");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.append("} ");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("void ");
-    String _moduleName_3 = this.getModuleName();
-    _builder.append(_moduleName_3);
-    _builder.append("::");
-    String _stepCall = this.stepCall();
-    _builder.append(_stepCall);
-    _builder.append(" {");
-    _builder.newLineIfNotEmpty();
-    {
-      for(final String call_1 : stepCalls) {
-        _builder.append("       ");
-        _builder.append(call_1, "       ");
-        _builder.append(";");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.append("}");
-    _builder.newLine();
-    return _builder.toString();
-  }
-
-public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-@Override
-public String getIncFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".hpp");
-  }
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksTranslationUnit.java
deleted file mode 100644
index d38c0d5..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksTranslationUnit.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-import java.util.Arrays;
-
-import org.eclipse.app4mc.amalthea.model.DiscreteValueBetaDistribution;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueBoundaries;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueConstant;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueGaussDistribution;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueHistogram;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueStatistics;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueUniformDistribution;
-import org.eclipse.app4mc.amalthea.model.DiscreteValueWeibullEstimatorsDistribution;
-import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
-import org.eclipse.app4mc.amalthea.model.Ticks;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings("all")
-public class TicksTranslationUnit extends TranslationUnit {
-  private static final Logger LOG = LoggerFactory.getLogger(TicksTranslationUnit.class);
-  
-  public String getBasePath() {
-    return this.tuTicksUtils.getBasePath();
-  }
-  
-  public String getModuleName() {
-    return this.tuTicksUtils.getModuleName();
-  }
-  
-  @Override
-  public String getCall() {
-    if (((this.ticksValue != null) && ((this.ticksValue instanceof DiscreteValueStatistics) || (this.ticksValue instanceof DiscreteValueConstant)))) {
-      return this.tuTicksUtils.getExecCall(this.getParameters(this.ticksValue)).toString();
-    }
-    String _name = this.ticksValue.eClass().getName();
-    String _plus = ("Unsupported element for Ticks : " + _name);
-    TicksTranslationUnit.LOG.error(_plus);
-    return "";
-  }
-  
-  private final TicksUtilsTranslationUnit tuTicksUtils;
-  
-  private final Ticks ticks;
-  
-  private String puName;
-  
-  private IDiscreteValueDeviation ticksValue;
-
-private OutputBuffer outputBuffer;
-  
-  public TicksTranslationUnit(final OutputBuffer outputBuffer, final TicksUtilsTranslationUnit tuTicksUtils, final Ticks ticks, final String puName, final IDiscreteValueDeviation ticksValue) {
-    super();
-    this.tuTicksUtils = tuTicksUtils;
-    this.ticks = ticks;
-    this.puName = puName;
-    this.ticksValue = ticksValue;
-    this.outputBuffer = outputBuffer;
-  }
-  
-  public String getPuName() {
-    return this.puName;
-  }
-  
-  public String getIncFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".h");
-  }
-  
-  private String _getParameters(final IDiscreteValueDeviation value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED\t\t");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueBetaDistribution value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueBoundaries value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueConstant value) {
-    StringConcatenation _builder = new StringConcatenation();
-    long _value = value.getValue();
-    _builder.append(_value);
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueGaussDistribution value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueHistogram value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueStatistics value) {
-    StringConcatenation _builder = new StringConcatenation();
-    Double _average = value.getAverage();
-    _builder.append(_average);
-    _builder.append(", ");
-    Long _lowerBound = value.getLowerBound();
-    _builder.append(_lowerBound);
-    _builder.append(", ");
-    Long _upperBound = value.getUpperBound();
-    _builder.append(_upperBound);
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueUniformDistribution value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
-    _builder.newLine();
-    return _builder.toString();
-  }
-  
-  private String _getParameters(final DiscreteValueWeibullEstimatorsDistribution value) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("WARNING:VALUE_FORMAT_NOT_SUPPORTED");
-    return _builder.toString();
-  }
-  
-  private String getParameters(final IDiscreteValueDeviation value) {
-    if (value instanceof DiscreteValueBetaDistribution) {
-      return _getParameters((DiscreteValueBetaDistribution)value);
-    } else if (value instanceof DiscreteValueBoundaries) {
-      return _getParameters((DiscreteValueBoundaries)value);
-    } else if (value instanceof DiscreteValueGaussDistribution) {
-      return _getParameters((DiscreteValueGaussDistribution)value);
-    } else if (value instanceof DiscreteValueStatistics) {
-      return _getParameters((DiscreteValueStatistics)value);
-    } else if (value instanceof DiscreteValueUniformDistribution) {
-      return _getParameters((DiscreteValueUniformDistribution)value);
-    } else if (value instanceof DiscreteValueWeibullEstimatorsDistribution) {
-      return _getParameters((DiscreteValueWeibullEstimatorsDistribution)value);
-    } else if (value instanceof DiscreteValueConstant) {
-      return _getParameters((DiscreteValueConstant)value);
-    } else if (value instanceof DiscreteValueHistogram) {
-      return _getParameters((DiscreteValueHistogram)value);
-    } else if (value != null) {
-      return _getParameters(value);
-    } else {
-      throw new IllegalArgumentException("Unhandled parameter types: " +
-        Arrays.<Object>asList(value).toString());
-    }
-  }
-
-public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksUtilsTranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksUtilsTranslationUnit.java
deleted file mode 100644
index f428eb6..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TicksUtilsTranslationUnit.java
+++ /dev/null
@@ -1,421 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueConstantImpl;
-import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueStatisticsImpl;
-import org.eclipse.app4mc.slg.config.ConfigModel;
-import org.eclipse.app4mc.slg.config.TickType;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Conversions;
-import org.eclipse.xtext.xbase.lib.IntegerRange;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Objects;
-
-@SuppressWarnings("all")
-public class TicksUtilsTranslationUnit extends TranslationUnit {
-  private static final Logger LOG = LoggerFactory.getLogger(TicksUtilsTranslationUnit.class);
-  
-  public static String getModulePathStatic() {
-    String _basePathStatic = "synthetic_gen";
-    String _plus = (_basePathStatic + "/");
-    String _moduleNameStatic = TicksUtilsTranslationUnit.getModuleNameStatic();
-    return (_plus + _moduleNameStatic);
-  }
-  
-  public static String getMakeFilePathStatic() {
-    String _modulePathStatic = TicksUtilsTranslationUnit.getModulePathStatic();
-    String _plus = (_modulePathStatic + "/");
-    String _makeFileName = "CMakeLists.txt";
-    return (_plus + _makeFileName);
-  }
-  
-  public static String getModuleNameStatic() {
-    return "ticksUtils";
-  }
-  
-  public static String getLibName() {
-    return "TICKS_UTILS";
-  }
-  
-  public String getModuleName() {
-    return TicksUtilsTranslationUnit.getModuleNameStatic();
-  }
-  
-  public CharSequence getExecCall(final String params) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("executeTicks_");
-    String _last = IterableExtensions.<String>last(((Iterable<String>)Conversions.doWrapArray(this.valueClass.toString().split("\\."))));
-    _builder.append(_last);
-    _builder.append("(");
-    _builder.append(params);
-    _builder.append(")");
-    return _builder;
-  }
-  
-  public String getIncFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".h");
-  }
-  
-  private final ConfigModel configModel;
-  
-  private final Object valueClass;
-
-private OutputBuffer outputBuffer;
-  
-  public TicksUtilsTranslationUnit(final OutputBuffer outputBuffer, final ConfigModel configModel, final Object valueClass) {
-    super();
-    this.configModel = configModel;
-    this.valueClass = valueClass;
-    this.outputBuffer = outputBuffer;
-    this.genFiles();
-  }
-  
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      boolean _isIncFileEmpty = this.isIncFileEmpty();
-      if (_isIncFileEmpty) {
-        this.toH();
-      }
-      boolean _isSrcFileEmpty = this.isSrcFileEmpty();
-      if (_isSrcFileEmpty) {
-        this.toCPP();
-      }
-      this.srcAppend(this.generateTicks(this.valueClass));
-      _xblockexpression = this.incAppend(this.generateTicksDecleration(this.valueClass));
-    }
-    return _xblockexpression;
-  }
-  
-  private boolean toCPP() {
-    boolean _xblockexpression = false;
-    {
-      String _incFile = this.getIncFile();
-      String _plus = ("#include \"" + _incFile);
-      String _plus_1 = (_plus + "\"\n");
-      this.srcAppend(_plus_1);
-      final String ticksCodeSnippet = this.configModel.getCustomTickImpl().getValue();
-      String _xifexpression = null;
-      boolean _isEnable = this.configModel.getCustomTickImpl().isEnable();
-      if (_isEnable) {
-        _xifexpression = ticksCodeSnippet;
-      } else {
-        _xifexpression = this.burnTicksDefault().toString();
-      }
-      final String burnTicksBody = _xifexpression;
-      this.srcAppend(this.burnTicks(burnTicksBody).toString());
-      _xblockexpression = this.srcAppend(this.burnTicksStatistics(this.configModel).toString());
-    }
-    return _xblockexpression;
-  }
-  
-  private boolean toH() {
-    boolean _xblockexpression = false;
-    {
-      this.incAppend(this.burnTicksDecleration().toString());
-      _xblockexpression = this.incAppend(this.burnTicksStatisticsDecleration().toString());
-    }
-    return _xblockexpression;
-  }
-  
-  private String generateTicks(final Object valueClass) {
-    String _switchResult = null;
-    boolean _matched = false;
-    if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
-      _matched=true;
-      StringConcatenation _builder = new StringConcatenation();
-      _builder.append("void ");
-      CharSequence _execCall = this.getExecCall("int ticks");
-      _builder.append(_execCall);
-      _builder.append(" {");
-      _builder.newLineIfNotEmpty();
-      _builder.append("\t");
-      _builder.append("burnTicks(ticks);");
-      _builder.newLine();
-      _builder.append("}");
-      _builder.newLine();
-      _builder.newLine();
-      _switchResult = _builder.toString();
-    }
-    if (!_matched) {
-      if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
-        _matched=true;
-        StringConcatenation _builder_1 = new StringConcatenation();
-        _builder_1.append("void ");
-        CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
-        _builder_1.append(_execCall_1);
-        _builder_1.append(" {");
-        _builder_1.newLineIfNotEmpty();
-        _builder_1.append("\t");
-        _builder_1.append("burnTicksStatistics(average, lowerBound, upperBound);");
-        _builder_1.newLine();
-        _builder_1.append("}");
-        _builder_1.newLine();
-        _builder_1.newLine();
-        _switchResult = _builder_1.toString();
-      }
-    }
-    if (!_matched) {
-      String _xblockexpression = null;
-      {
-        String _string = valueClass.toString();
-        String _plus = ("Unsupported ticks type is used : " + _string);
-        TicksUtilsTranslationUnit.LOG.error(_plus);
-        _xblockexpression = "";
-      }
-      _switchResult = _xblockexpression;
-    }
-    return _switchResult;
-  }
-  
-  private CharSequence burnTicks(final String burnTicksBody) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("void burnTicks(int ticks) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append(burnTicksBody, "\t");
-    _builder.newLineIfNotEmpty();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.newLine();
-    return _builder;
-  }
-  
-  private String chooseTicks(final ConfigModel configModel) {
-    String _switchResult = null;
-    TickType _defaultTickType = configModel.getDefaultTickType();
-    if (_defaultTickType != null) {
-      switch (_defaultTickType) {
-        case MINIMUM:
-          _switchResult = "lowerBound";
-          break;
-        case MAXIMUM:
-          _switchResult = "upperBound";
-          break;
-        case AVERAGE:
-          _switchResult = "(int)average";
-          break;
-        default:
-          _switchResult = "(int)average";
-          break;
-      }
-    } else {
-      _switchResult = "(int)average";
-    }
-    return _switchResult;
-  }
-  
-  private CharSequence burnTicksStatistics(final ConfigModel configModel) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("burnTicks(");
-    String _chooseTicks = this.chooseTicks(configModel);
-    _builder.append(_chooseTicks, "\t");
-    _builder.append(");");
-    _builder.newLineIfNotEmpty();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.newLine();
-    return _builder;
-  }
-  
-  private CharSequence burnTicksDefault() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("\t");
-    _builder.append("// default implementation of tick burning");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("int numLoops = ticks / 400; ");
-    _builder.newLine();
-    _builder.append("#\tif defined (__x86_64__)");
-    _builder.newLine();
-    _builder.append(" \t");
-    _builder.append("for (int i = 0; i < numLoops; i++) {");
-    _builder.newLine();
-    {
-      IntegerRange _upTo = new IntegerRange(1, 400);
-      for(final Integer i : _upTo) {
-        _builder.append(" \t\t");
-        _builder.append("__asm volatile(\"nop\");");
-        _builder.newLine();
-      }
-    }
-    _builder.append(" \t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("#\telif defined (__x86_32__) \t\t");
-    _builder.newLine();
-    _builder.append(" \t\t");
-    _builder.append("for (int i = 0; i < numLoops; i++) {");
-    _builder.newLine();
-    {
-      IntegerRange _upTo_1 = new IntegerRange(1, 400);
-      for(final Integer i_1 : _upTo_1) {
-        _builder.append(" \t\t\t \t");
-        _builder.append("__asm volatile(\"mov r0, r0\");");
-        _builder.newLine();
-      }
-    }
-    _builder.append(" \t\t\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("#\telif defined (__aarch64__) \t\t");
-    _builder.newLine();
-    _builder.append(" \t");
-    _builder.append("for (int i = 0; i < numLoops; i++) {");
-    _builder.newLine();
-    {
-      IntegerRange _upTo_2 = new IntegerRange(1, 400);
-      for(final Integer i_2 : _upTo_2) {
-        _builder.append(" \t");
-        _builder.append("__asm volatile(\"mov x0, x0\");");
-        _builder.newLine();
-      }
-    }
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("#\tendif");
-    _builder.newLine();
-    return _builder;
-  }
-  
-  private CharSequence burnTicksDecleration() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("void burnTicks(int ticks);");
-    _builder.newLine();
-    _builder.newLine();
-    return _builder;
-  }
-  
-  private CharSequence burnTicksStatisticsDecleration() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("void burnTicksStatistics(double average, int lowerBound, int upperBound);");
-    _builder.newLine();
-    _builder.newLine();
-    return _builder;
-  }
-  
-  private String generateTicksDecleration(final Object valueClass) {
-    String _switchResult = null;
-    boolean _matched = false;
-    if (Objects.equal(valueClass, DiscreteValueConstantImpl.class)) {
-      _matched=true;
-      StringConcatenation _builder = new StringConcatenation();
-      _builder.append("void ");
-      CharSequence _execCall = this.getExecCall("int ticks");
-      _builder.append(_execCall);
-      _builder.append(";");
-      _builder.newLineIfNotEmpty();
-      _builder.newLine();
-      _switchResult = _builder.toString();
-    }
-    if (!_matched) {
-      if (Objects.equal(valueClass, DiscreteValueStatisticsImpl.class)) {
-        _matched=true;
-        StringConcatenation _builder_1 = new StringConcatenation();
-        _builder_1.append("void ");
-        CharSequence _execCall_1 = this.getExecCall("double average, int lowerBound, int upperBound");
-        _builder_1.append(_execCall_1);
-        _builder_1.append(";");
-        _builder_1.newLineIfNotEmpty();
-        _builder_1.newLine();
-        _switchResult = _builder_1.toString();
-      }
-    }
-    if (!_matched) {
-      String _xblockexpression = null;
-      {
-        String _string = valueClass.toString();
-        String _plus = ("Unsupported ticks type is used : " + _string);
-        TicksUtilsTranslationUnit.LOG.error(_plus);
-        _xblockexpression = "";
-      }
-      _switchResult = _xblockexpression;
-    }
-    return _switchResult;
-  }
-
-public String getBasePath() {
-    return "synthetic_gen";
-  }
-
-public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TranslationUnit.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TranslationUnit.java
deleted file mode 100644
index 68aa172..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/translationUnits/TranslationUnit.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright (c) 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.slg.commons.m2t.translationUnits;
-
-@SuppressWarnings("all")
-public class TranslationUnit {
-  private String path;
-  private String call;
-  private String incFile;
-  private String srcFile;
-
-  public TranslationUnit(final String path, final String call, final String incFile, final String srcFile) {
-    this.path = path;
-    this.call = call;
-    this.incFile = incFile;
-    this.srcFile = srcFile;
-  }
-  
-  public TranslationUnit() {
-	  this("MODULE_PATH", "CALL", "MODULE.H", "MODULE.CPP");    // dummy values for unused data
-  }
-  
-  public String getCall() {
-    return this.call;
-  }
-  
-  public String setCall(final String _call) {
-    return this.call = _call;
-  }
-  
-  public String getPath() {
-    return this.path;
-  }
-  
-  public String setPath(final String _path) {
-    return this.path = _path;
-  }
-  
-  public String getSrcFile() {
-    return this.srcFile;
-  }
-  
-  public String getIncFile() {
-    return this.incFile;
-  }
-  
-  public String getExtendedIncPath() {
-    return ((this.path + "/_inc/") + this.incFile);
-  }
-  
-  public String getExtendedSrcPath() {
-    return ((this.path + "/_src/") + this.srcFile);
-  }
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend
index e3ce4d9..8c9002c 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/customization/CustomRunnableTranslationUnit.xtend
@@ -25,8 +25,8 @@
 import org.eclipse.app4mc.amalthea.model.Task
 import org.eclipse.app4mc.amalthea.model.Ticks
 import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TicksTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 class CustomRunnableTranslationUnit extends RunnableTranslationUnit {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/CodeSnippet.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/CodeSnippet.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/CodeSnippet.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/CodeSnippet.java
index 99afb05..722bb21 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/CodeSnippet.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/CodeSnippet.java
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 public class CodeSnippet {
 	public final int ticks;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxBaseTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxBaseTranslationUnit.java
similarity index 93%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxBaseTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxBaseTranslationUnit.java
index 28b5161..3f75c23 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxBaseTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxBaseTranslationUnit.java
@@ -13,9 +13,9 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 public abstract class LinuxBaseTranslationUnit extends TranslationUnit {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelAccessTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelAccessTranslationUnit.java
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelAccessTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelAccessTranslationUnit.java
index 5a06d27..96975c1 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelAccessTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelAccessTranslationUnit.java
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import static org.eclipse.app4mc.amalthea.model.LabelAccessEnum._UNDEFINED_;
 
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
similarity index 98%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
index 9fe8072..d430437 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelGenerator.xtend
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import org.eclipse.app4mc.amalthea.model.Label
 import org.eclipse.app4mc.slg.commons.m2t.AmaltheaModelUtils
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelTranslationUnit.java
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelTranslationUnit.java
index eab8d23..cbc1731 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxLabelTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxLabelTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import org.eclipse.app4mc.amalthea.model.Label;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticGenerator.xtend
similarity index 99%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticGenerator.xtend
index a26cf1b..fc58e9b 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticGenerator.xtend
@@ -13,7 +13,7 @@
  * *******************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import com.google.inject.Singleton
 import java.util.ArrayList
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticTranslationUnit.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticTranslationUnit.java
index d92518d..0a62c3a 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRealisiticSyntheticTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRealisiticSyntheticTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import org.eclipse.app4mc.slg.config.ConfigModel;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableGenerator.xtend
similarity index 99%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableGenerator.xtend
index 6ca0cb7..b0da85c 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableGenerator.xtend
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import java.util.HashMap
 import org.eclipse.app4mc.amalthea.model.Runnable
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableTranslationUnit.java
similarity index 96%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableTranslationUnit.java
index 50308be..f053775 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxRunnableTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxRunnableTranslationUnit.java
@@ -10,7 +10,7 @@
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
  */
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import java.util.Properties;
 import java.util.Set;
@@ -25,8 +25,8 @@
 import org.eclipse.app4mc.amalthea.model.Runnable;
 import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
 import org.eclipse.app4mc.amalthea.model.Ticks;
+import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableGenerator.Calculation;
 import org.eclipse.app4mc.slg.linux.transformers.LinuxActivityGraphItemTransformer;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxRunnableGenerator.Calculation;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 public class LinuxRunnableTranslationUnit extends LinuxSyntheticTranslationUnit {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusGenerator.xtend
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusGenerator.xtend
index 55847ea..caa544b 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusGenerator.xtend
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import java.util.List
 import org.eclipse.app4mc.amalthea.model.PeriodicStimulus
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusTranslationUnit.java
similarity index 94%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusTranslationUnit.java
index 072f0da..6e80e42 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxStimulusTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxStimulusTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -54,7 +54,7 @@
 		Stimulus lastStimulus = stimuli.isEmpty() ? null : stimuli.get(stimuli.size() - 1);
 		boolean enableInstrumentation = Boolean.parseBoolean(properties.getProperty("enableInstrumentation"));
 
-		srcAppend(LinuxStimulusGenerator.toSrc(stimuli, lastStimulus, enableInstrumentation).toString());
+		srcAppend(LinuxStimulusGenerator.toSrc(stimuli, lastStimulus, enableInstrumentation));
 	}
 
 }
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxSyntheticTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxSyntheticTranslationUnit.java
similarity index 94%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxSyntheticTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxSyntheticTranslationUnit.java
index 53ecc50..12ea3dd 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxSyntheticTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxSyntheticTranslationUnit.java
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskGenerator.xtend
similarity index 96%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskGenerator.xtend
index 0d93a16..1a49478 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskGenerator.xtend
@@ -13,7 +13,7 @@
  * *******************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import java.util.List
 import org.eclipse.app4mc.amalthea.model.Process
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskTranslationUnit.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskTranslationUnit.java
index 83de2af..f66de2f 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTaskTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTaskTranslationUnit.java
@@ -10,7 +10,7 @@
  * Contributors:
  *     Robert Bosch GmbH - initial API and implementation
  */
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -22,17 +22,14 @@
 import org.eclipse.app4mc.amalthea.model.Group;
 import org.eclipse.app4mc.amalthea.model.InterProcessStimulus;
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
+import org.eclipse.app4mc.amalthea.model.Process;
 import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
 import org.eclipse.app4mc.amalthea.model.ProcessingUnitDefinition;
 import org.eclipse.app4mc.amalthea.model.Runnable;
-import org.eclipse.app4mc.amalthea.model.Process;
 import org.eclipse.app4mc.amalthea.model.RunnableCall;
-import org.eclipse.app4mc.amalthea.model.Stimulus;
 import org.eclipse.app4mc.amalthea.model.Task;
 import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
 
 public class LinuxTaskTranslationUnit extends LinuxSyntheticTranslationUnit {
 	public static String getModulePathStatic() {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksGenerator.xtend
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksGenerator.xtend
index 907bf36..68b836e 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksGenerator.xtend
@@ -13,7 +13,7 @@
  * *******************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import org.eclipse.app4mc.amalthea.model.DiscreteValueBetaDistribution
 import org.eclipse.app4mc.amalthea.model.DiscreteValueBoundaries
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksTranslationUnit.java
similarity index 95%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksTranslationUnit.java
index e97adb4..e931082 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import org.eclipse.app4mc.amalthea.model.Ticks;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsGenerator.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsGenerator.xtend
similarity index 98%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsGenerator.xtend
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsGenerator.xtend
index cabdf5c..70dfdf9 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsGenerator.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsGenerator.xtend
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits
+package org.eclipse.app4mc.slg.linux.generators
 
 import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueConstantImpl
 import org.eclipse.app4mc.amalthea.model.impl.DiscreteValueStatisticsImpl
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsTranslationUnit.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
similarity index 97%
rename from load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsTranslationUnit.java
rename to load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
index 314f38b..f740a96 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/translationUnits/LinuxTicksUtilsTranslationUnit.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/generators/LinuxTicksUtilsTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.linux.translationUnits;
+package org.eclipse.app4mc.slg.linux.generators;
 
 import org.eclipse.app4mc.slg.config.ConfigModel;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java
index 1e18490..665df56 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxActivityGraphItemTransformer.java
@@ -21,7 +21,7 @@
 import org.eclipse.app4mc.amalthea.model.LabelAccess;
 import org.eclipse.app4mc.amalthea.model.Ticks;
 import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 
 import com.google.inject.Inject;
 
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java
index cb481d9..5716b86 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxBaseTransformer.java
@@ -16,7 +16,7 @@
 package org.eclipse.app4mc.slg.linux.transformers;
 
 import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxBaseTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxBaseTranslationUnit;
 
 public class LinuxBaseTransformer<T extends LinuxBaseTranslationUnit> extends AbstractSLGTransformer {
 
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java
index d7c969f..5619c49 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelAccessTransformer.java
@@ -17,8 +17,8 @@
 
 import org.eclipse.app4mc.amalthea.model.LabelAccess;
 import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxLabelAccessTranslationUnit;
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxLabelTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelAccessTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 import com.google.inject.Inject;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
index ee9aa7a..813df19 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxLabelTransformer.xtend
@@ -17,7 +17,7 @@
 
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.Label
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxLabelTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxLabelTranslationUnit
 
 @Singleton
 class LinuxLabelTransformer extends LinuxSyntheticTransformer<LinuxLabelTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
index 0053584..204de07 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRealisticCodeTransformer.xtend
@@ -19,7 +19,7 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.slg.config.ConfigModel
 import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxRealisiticSyntheticTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxRealisiticSyntheticTranslationUnit
 
 @Singleton
 class LinuxRealisticCodeTransformer extends LinuxSyntheticTransformer<LinuxRealisiticSyntheticTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
index c817680..2a12cda 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxRunnableTransformer.xtend
@@ -19,8 +19,8 @@
 import com.google.inject.Singleton
 import java.util.Properties
 import org.eclipse.app4mc.amalthea.model.Runnable
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxRunnableTranslationUnit
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxSyntheticTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxSyntheticTranslationUnit
 
 @Singleton
 class LinuxRunnableTransformer extends LinuxSyntheticTransformer<LinuxSyntheticTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
index e869e59..3661863 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxStimulusTransformer.xtend
@@ -18,8 +18,8 @@
 import com.google.inject.Singleton
 import java.util.List
 import org.eclipse.app4mc.amalthea.model.Stimulus
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxStimulusTranslationUnit
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxSyntheticTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxStimulusTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxSyntheticTranslationUnit
 
 @Singleton
 class LinuxStimulusTransformer extends LinuxSyntheticTransformer<LinuxSyntheticTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java
index 67efbd6..d9063b5 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxSyntheticTransformer.java
@@ -17,7 +17,7 @@
 
 import java.util.Properties;
 
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxBaseTranslationUnit;
+import org.eclipse.app4mc.slg.linux.generators.LinuxBaseTranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 import com.google.inject.Inject;
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
index e745b91..344e300 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTaskTransformer.xtend
@@ -17,7 +17,7 @@
 
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxTaskTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxTaskTranslationUnit
 
 @Singleton
 class LinuxTaskTransformer extends LinuxSyntheticTransformer<LinuxTaskTranslationUnit> {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend
index 35b19e9..b7b001d 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksTransformer.xtend
@@ -19,7 +19,7 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.Ticks
 import org.eclipse.app4mc.slg.commons.m2t.AbstractSLGTransformer
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxTicksTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxTicksTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
index d1a4798..f7e7dff 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxTicksUtilsTransformer.xtend
@@ -20,7 +20,7 @@
 import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation
 import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
 import org.eclipse.app4mc.slg.config.ConfigModel
-import org.eclipse.app4mc.slg.linux.translationUnits.LinuxTicksUtilsTranslationUnit
+import org.eclipse.app4mc.slg.linux.generators.LinuxTicksUtilsTranslationUnit
 
 @Singleton
 class LinuxTicksUtilsTransformer extends LinuxSyntheticTransformer<LinuxTicksUtilsTranslationUnit> {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendTranslationUnit.java
similarity index 95%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendTranslationUnit.java
index 09993c0..6e15662 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendTranslationUnit.java
@@ -11,10 +11,10 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import org.eclipse.app4mc.amalthea.model.ChannelSend;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 public class RosChannelSendTranslationUnit extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendUtilsTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendUtilsTranslationUnit.java
similarity index 97%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendUtilsTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendUtilsTranslationUnit.java
index 30160f3..19dfb15 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosChannelSendUtilsTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosChannelSendUtilsTranslationUnit.java
@@ -11,13 +11,13 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.app4mc.amalthea.model.ChannelSend;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.slg.ros2.transformers.RosChannelSendUtilsGenerator;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerTranslationUnit.java
similarity index 95%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerTranslationUnit.java
index 4cde311..357d340 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerTranslationUnit.java
@@ -11,10 +11,10 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 public class RosInterProcessTriggerTranslationUnit extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerUtilsTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerUtilsTranslationUnit.java
similarity index 98%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerUtilsTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerUtilsTranslationUnit.java
index 4fa6032..51322ec 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosInterProcessTriggerUtilsTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosInterProcessTriggerUtilsTranslationUnit.java
@@ -11,10 +11,10 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosIpStimulusTranslationunit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosIpStimulusTranslationunit.java
similarity index 96%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosIpStimulusTranslationunit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosIpStimulusTranslationunit.java
index e4239af..55c79a9 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosIpStimulusTranslationunit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosIpStimulusTranslationunit.java
@@ -11,10 +11,10 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import org.eclipse.app4mc.amalthea.model.InterProcessStimulus;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 import org.eclipse.xtend2.lib.StringConcatenation;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelAccessTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelAccessTranslationUnit.java
similarity index 97%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelAccessTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelAccessTranslationUnit.java
index 53ab6d3..b958fdd 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelAccessTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelAccessTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import java.util.Arrays;
 
@@ -21,7 +21,7 @@
 import org.eclipse.app4mc.amalthea.model.MinAvgMaxStatistic;
 import org.eclipse.app4mc.amalthea.model.NumericStatistic;
 import org.eclipse.app4mc.amalthea.model.SingleValueStatistic;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 
 public class RosLabelAccessTranslationUnit extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelTranslationUnit.java
similarity index 95%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelTranslationUnit.java
index bbe78e9..16c78dd 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosLabelTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosLabelTranslationUnit.java
@@ -11,10 +11,10 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import org.eclipse.app4mc.amalthea.model.Label;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit;
 import org.eclipse.app4mc.transformation.util.OutputBuffer;
 import org.eclipse.xtend2.lib.StringConcatenation;
 
@@ -54,17 +54,14 @@
   }
   
   @Override
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      if (this.isSrcFileEmpty()) {
-        this.srcAppend("#include \"" + this.getIncFile() + "\"\n\n");
-        this.srcAppend("#include <stdlib.h>\n");
+  public void genFiles() {
+      if (isSrcFileEmpty()) {
+        srcAppend("#include \"" + getIncFile() + "\"\n\n");
+        srcAppend("#include <stdlib.h>\n");
       }
-      this.incAppend(this.toH());
-      _xblockexpression = this.srcAppend(this.toCpp());
-    }
-    return _xblockexpression;
+      incAppend(this.toH());
+      srcAppend(this.toCpp());
+
   }
   
   private String toH() {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosRunnableTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosRunnableTranslationUnit.java
new file mode 100644
index 0000000..df00a59
--- /dev/null
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosRunnableTranslationUnit.java
@@ -0,0 +1,300 @@
+/**
+ * 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.slg.ros2.generators;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.function.Consumer;
+import org.eclipse.app4mc.amalthea.model.ActivityGraph;
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.BooleanObject;
+import org.eclipse.app4mc.amalthea.model.ChannelSend;
+import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
+import org.eclipse.app4mc.amalthea.model.Value;
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
+import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+public class RosRunnableTranslationUnit extends RunnableTranslationUnit {
+	private String param;
+
+	private String nodeParam;
+
+	private boolean measure_performance;
+
+	private ArrayList<String> publishers;
+
+	private ArrayList<String> client_declarations;
+
+	private ArrayList<String> client_inits;
+
+	public RosRunnableTranslationUnit(final OutputBuffer outputBuffer, final ActivityGraphItemTransformer transformer,
+			final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+		super(outputBuffer, transformer, runnable);
+	}
+
+	@Override
+	public String getCall() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("run_");
+		String _name = this.runnable.getName();
+		_builder.append(_name);
+		_builder.append("(");
+		_builder.append(this.param);
+		_builder.append(")");
+		return _builder.toString();
+	}
+
+	public String getNodeCall() {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("run_");
+		String _name = this.runnable.getName();
+		_builder.append(_name);
+		_builder.append("(");
+		_builder.append(this.nodeParam);
+		_builder.append(")");
+		return _builder.toString();
+	}
+
+	public ArrayList<String> getPublishers() {
+		return this.publishers;
+	}
+
+	public ArrayList<String> getClientDeclarations() {
+		return this.client_declarations;
+	}
+
+	public ArrayList<String> getClientInits() {
+		return this.client_inits;
+	}
+
+	@Override
+	public void genFiles() {
+		this.param = "";
+		this.nodeParam = "";
+		ArrayList<String> _arrayList = new ArrayList<String>();
+		this.publishers = _arrayList;
+		ArrayList<String> _arrayList_1 = new ArrayList<String>();
+		this.client_declarations = _arrayList_1;
+		ArrayList<String> _arrayList_2 = new ArrayList<String>();
+		this.client_inits = _arrayList_2;
+		boolean _isSrcFileEmpty = this.isSrcFileEmpty();
+		if (_isSrcFileEmpty) {
+			String _incFile = this.getIncFile();
+			String _plus = ("#include \"" + _incFile);
+			String _plus_1 = (_plus + "\"\n");
+			this.srcAppend(_plus_1);
+		}
+		final LinkedHashSet<String> includes = new LinkedHashSet<String>();
+		final ArrayList<String> calls = new ArrayList<String>();
+		EMap<String, Value> _customProperties = null;
+		if (this.runnable != null) {
+			_customProperties = this.runnable.getCustomProperties();
+		}
+		Value _get = null;
+		if (_customProperties != null) {
+			_get = _customProperties.get("measure_performance");
+		}
+		boolean _isValue = false;
+		if (((BooleanObject) _get) != null) {
+			_isValue = ((BooleanObject) _get).isValue();
+		}
+		if (_isValue) {
+			includes.add("aml.h");
+			this.measure_performance = true;
+		}
+		ActivityGraph _activityGraph = null;
+		if (this.runnable != null) {
+			_activityGraph = this.runnable.getActivityGraph();
+		}
+		EList<ActivityGraphItem> _items = null;
+		if (_activityGraph != null) {
+			_items = _activityGraph.getItems();
+		}
+		final Consumer<ActivityGraphItem> _function = (ActivityGraphItem item) -> {
+			final TranslationUnit tmp = this.callGraphItemTransformer.transform(((ActivityGraphItem) item));
+			if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile()))
+					&& (!this.getIncFile().equals(tmp.getIncFile())))) {
+				includes.add(tmp.getIncFile());
+			}
+			if ((item instanceof ChannelSend)) {
+				String _name = ((ChannelSend) item).getData().getName();
+				String _plus_2 = (_name + "_publisher");
+				this.publishers.add(_plus_2);
+				String _nodeParam = this.nodeParam;
+				String _xifexpression = null;
+				boolean _equals = this.nodeParam.equals("");
+				if (_equals) {
+					_xifexpression = "";
+				} else {
+					_xifexpression = ";";
+				}
+				String _name_1 = ((ChannelSend) item).getData().getName();
+				String _plus_3 = (_xifexpression + _name_1);
+				String _plus_4 = (_plus_3 + "_publisher");
+				this.nodeParam = (_nodeParam + _plus_4);
+				String _xifexpression_1 = null;
+				boolean _equals_1 = this.param.equals("");
+				if (_equals_1) {
+					_xifexpression_1 = "";
+				} else {
+					_xifexpression_1 = ";";
+				}
+				String _plus_5 = (_xifexpression_1 + "rclcpp::Publisher<std_msgs::msg::String>::SharedPtr& ");
+				String _name_2 = ((ChannelSend) item).getData().getName();
+				String _plus_6 = (_plus_5 + _name_2);
+				String _plus_7 = (_plus_6 + "_publisher");
+				this.param = _plus_7;
+			}
+			if ((item instanceof InterProcessTrigger)) {
+				String _name_3 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_8 = (_name_3 + "_service/srv/");
+				String _name_4 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_9 = (_plus_8 + _name_4);
+				String _plus_10 = (_plus_9 + "_service");
+				String _plus_11 = (_plus_10 + ".hpp");
+				includes.add(_plus_11);
+				String _name_5 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_12 = ("rclcpp::Client<" + _name_5);
+				String _plus_13 = (_plus_12 + "_service::srv::");
+				String _name_6 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_14 = (_name_6 + "_service");
+				String _idlCompliantName = Utils.toIdlCompliantName(_plus_14);
+				String _plus_15 = (_plus_13 + _idlCompliantName);
+				String _plus_16 = (_plus_15 + ">::SharedPtr ");
+				String _name_7 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_17 = (_plus_16 + _name_7);
+				String _plus_18 = (_plus_17 + "_client");
+				this.client_declarations.add(_plus_18);
+				String _name_8 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_19 = (_name_8 + "_client =  this->create_client<");
+				String _name_9 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_20 = (_plus_19 + _name_9);
+				String _plus_21 = (_plus_20 + "_service::srv::");
+				String _name_10 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_22 = (_name_10 + "_service");
+				String _idlCompliantName_1 = Utils.toIdlCompliantName(_plus_22);
+				String _plus_23 = (_plus_21 + _idlCompliantName_1);
+				String _plus_24 = (_plus_23 + ">");
+				String _plus_25 = (_plus_24 + "(\"");
+				String _name_11 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_26 = (_plus_25 + _name_11);
+				String _plus_27 = (_plus_26 + "_service\")");
+				this.client_inits.add(_plus_27);
+				String _nodeParam_1 = this.nodeParam;
+				String _xifexpression_2 = null;
+				boolean _equals_2 = this.nodeParam.equals("");
+				if (_equals_2) {
+					_xifexpression_2 = "";
+				} else {
+					_xifexpression_2 = ";";
+				}
+				String _name_12 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_28 = (_xifexpression_2 + _name_12);
+				String _plus_29 = (_plus_28 + "_client");
+				this.nodeParam = (_nodeParam_1 + _plus_29);
+				String _xifexpression_3 = null;
+				boolean _equals_3 = this.param.equals("");
+				if (_equals_3) {
+					_xifexpression_3 = "";
+				} else {
+					_xifexpression_3 = ";";
+				}
+				String _plus_30 = (_xifexpression_3 + "rclcpp::Client<");
+				String _name_13 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_31 = (_plus_30 + _name_13);
+				String _plus_32 = (_plus_31 + "_service::srv::");
+				String _name_14 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_33 = (_name_14 + "_service");
+				String _idlCompliantName_2 = Utils.toIdlCompliantName(_plus_33);
+				String _plus_34 = (_plus_32 + _idlCompliantName_2);
+				String _plus_35 = (_plus_34 + ">::SharedPtr& ");
+				String _name_15 = ((InterProcessTrigger) item).getStimulus().getName();
+				String _plus_36 = (_plus_35 + _name_15);
+				String _plus_37 = (_plus_36 + "_client");
+				this.param = _plus_37;
+			}
+			final String call = tmp.getCall();
+			boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(call);
+			boolean _not = (!_isNullOrEmpty);
+			if (_not) {
+				calls.add(call);
+			}
+		};
+		_items.forEach(_function);
+		String _name = this.runnable.getName();
+		String _plus_2 = ("\n//Runnable " + _name);
+		String _plus_3 = (_plus_2 + "----\n");
+		this.incAppend(_plus_3);
+		this.toH(includes);
+		String _name_1 = this.runnable.getName();
+		String _plus_4 = ("\n//Runnable " + _name_1);
+		String _plus_5 = (_plus_4 + "----\n");
+		this.srcAppend(_plus_5);
+		this.toCpp(includes, calls);
+	}
+
+	@Override
+	public void toH(final LinkedHashSet<String> includes) {
+		final Consumer<String> _function = (String include) -> {
+			this.incAppend((("#include \"" + include) + "\"\n"));
+		};
+		includes.forEach(_function);
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("void ");
+		String _call = this.getCall();
+		_builder.append(_call);
+		_builder.append(";");
+		_builder.newLineIfNotEmpty();
+		this.incAppend(_builder.toString());
+	}
+
+	@Override
+	public void toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
+		String _call = this.getCall();
+		String _plus = ("void " + _call);
+		String _plus_1 = (_plus + "{\n");
+		this.srcAppend(_plus_1);
+		if (this.measure_performance) {
+			StringConcatenation _builder = new StringConcatenation();
+			_builder.append("uint64_t event_list[] = {0x11, 0x13, 0x17}; //CPU CYCLES, MEM ACCESS, L2 Cache Refill");
+			_builder.newLine();
+			_builder.append("int total_events =  sizeof(event_list)/sizeof(event_list[0]);");
+			_builder.newLine();
+			_builder.append("int fd = instrument_start(0,event_list, total_events);");
+			_builder.newLine();
+			this.srcAppend(_builder.toString());
+		}
+		final Consumer<String> _function = (String call) -> {
+			this.srcAppend((("\t" + call) + ";\n"));
+		};
+		calls.forEach(_function);
+		if (this.measure_performance) {
+			StringConcatenation _builder_1 = new StringConcatenation();
+			_builder_1.append("instrument_stop(fd, \"");
+			String _name = this.runnable.getName();
+			_builder_1.append(_name);
+			_builder_1.append(".log\");");
+			_builder_1.newLineIfNotEmpty();
+			this.srcAppend(_builder_1.toString());
+		}
+		this.srcAppend("}\n\n");
+	}
+}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTagTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTagTranslationUnit.java
new file mode 100644
index 0000000..f271d4c
--- /dev/null
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTagTranslationUnit.java
@@ -0,0 +1,298 @@
+/**
+ * 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.slg.ros2.generators;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.SWModel;
+import org.eclipse.app4mc.amalthea.model.StringObject;
+import org.eclipse.app4mc.amalthea.model.Tag;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Value;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.ros2.transformers.RosTaskTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+public class RosTagTranslationUnit extends TranslationUnit {
+	private RosTaskTransformer rosTransformerTask;
+
+	private Tag tag;
+
+	private Amalthea model;
+
+	private HashSet<String> header = new HashSet<>();
+
+	private LinkedList<String> declaration = new LinkedList<>();
+
+	private LinkedList<String> initialization = new LinkedList<>();
+
+	private LinkedList<String> calls = new LinkedList<>();
+
+	private LinkedList<String> serviceCallbacks = new LinkedList<>();
+
+	private OutputBuffer outputBuffer;
+
+	public RosTagTranslationUnit(final OutputBuffer outputBuffer, final RosTaskTransformer rosTransformerTask,
+			final Tag tag, final Amalthea model) {
+		super();
+		this.tag = tag;
+		this.model = model;
+		this.rosTransformerTask = rosTransformerTask;
+		this.outputBuffer = outputBuffer;
+		this.genFiles();
+	}
+
+	public boolean genFiles() {
+		boolean _xblockexpression = false;
+		{
+			SWModel _swModel = null;
+			if (this.model != null) {
+				_swModel = this.model.getSwModel();
+			}
+			EList<Task> _tasks = null;
+			if (_swModel != null) {
+				_tasks = _swModel.getTasks();
+			}
+			final Consumer<Task> _function = (Task task) -> {
+				boolean _contains = task.getTags().contains(this.tag);
+				if (_contains) {
+					TaskTranslationUnit _transform = this.rosTransformerTask.transform(task, null);
+					final RosTaskTranslationUnit tu = ((RosTaskTranslationUnit) _transform);
+					this.header.add(tu.getHeaders().toString());
+					this.declaration.add(tu.getDeclaration().toString());
+					this.initialization.add(tu.getInitialisation(this.getModuleName()).toString());
+					this.calls.add(tu.getCallback().toString());
+					this.serviceCallbacks.add(tu.getServiceCallback().toString());
+				}
+			};
+			_tasks.forEach(_function);
+			_xblockexpression = this.srcAppend(
+					this.toCpp(this.header, this.declaration, this.initialization, this.calls, this.serviceCallbacks));
+		}
+		return _xblockexpression;
+	}
+
+	public String getBasePath() {
+		return "";
+	}
+
+	public String getModuleName() {
+		return this.tag.getName();
+	}
+
+	private String toCpp(final HashSet<String> headers, final LinkedList<String> declarations,
+			final LinkedList<String> inits, final LinkedList<String> calls, final LinkedList<String> serviceCallbacks) {
+		StringConcatenation _builder = new StringConcatenation();
+		_builder.append("#include <chrono>");
+		_builder.newLine();
+		_builder.append("#include <memory>");
+		_builder.newLine();
+		_builder.newLine();
+		_builder.append("#include \"rclcpp/rclcpp.hpp\"");
+		_builder.newLine();
+		_builder.append("#include \"std_msgs/msg/string.hpp\"");
+		_builder.newLine();
+		_builder.append("\t\t\t\t\t\t\t  ");
+		_builder.newLine();
+		{
+			for (final String header : headers) {
+				_builder.append(header);
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.newLine();
+		_builder.append("using namespace std::chrono_literals;");
+		_builder.newLine();
+		_builder.append("using std::placeholders::_1;");
+		_builder.newLine();
+		_builder.newLine();
+		{
+			for (final String serviceCallback : serviceCallbacks) {
+				_builder.append(serviceCallback);
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.newLine();
+		_builder.append("class ");
+		String _moduleName = this.getModuleName();
+		_builder.append(_moduleName);
+		_builder.append(" : public rclcpp::Node");
+		_builder.newLineIfNotEmpty();
+		_builder.append("{");
+		_builder.newLine();
+		_builder.append("private:");
+		_builder.newLine();
+		{
+			for (final String declaration : declarations) {
+				_builder.append("  ");
+				_builder.append(declaration, "  ");
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.newLine();
+		_builder.append("\t");
+		_builder.append("public:");
+		_builder.newLine();
+		_builder.append("\t  ");
+		String _moduleName_1 = this.getModuleName();
+		_builder.append(_moduleName_1, "\t  ");
+		_builder.append("()");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t  ");
+		_builder.append(": Node(\"");
+		String _lowerCase = this.getModuleName().toLowerCase();
+		_builder.append(_lowerCase, "\t  ");
+		_builder.append("\")");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t  ");
+		_builder.append("{");
+		_builder.newLine();
+		{
+			for (final String init : inits) {
+				_builder.append("\t  \t");
+				_builder.append(init, "\t  \t");
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.append("\t  \t");
+		_builder.newLine();
+		_builder.append("\t  \t");
+		_builder.append("}");
+		_builder.newLine();
+		{
+			for (final String call : calls) {
+				_builder.append("\t  \t");
+				_builder.append(call, "\t  \t");
+				_builder.newLineIfNotEmpty();
+			}
+		}
+		_builder.append("\t  \t");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("};");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("int main(int argc, char * argv[])");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("{\t\t  ");
+		_builder.newLine();
+		_builder.append("\t\t  ");
+		_builder.append("setvbuf(stdout, NULL, _IONBF, BUFSIZ);");
+		_builder.newLine();
+		_builder.append("\t\t   ");
+		_builder.append("rclcpp::init(argc, argv);");
+		_builder.newLine();
+		{
+			Value _get = this.tag.getCustomProperties().get("executor_type");
+			boolean _tripleNotEquals = (_get != null);
+			if (_tripleNotEquals) {
+				{
+					Value _get_1 = this.tag.getCustomProperties().get("executor_type");
+					boolean _equals = ((StringObject) _get_1).getValue().equals("single_thread");
+					if (_equals) {
+						_builder.append("\t\t   ");
+						_builder.append("rclcpp::executors::SingleThreadedExecutor executor;");
+						_builder.newLine();
+					} else {
+						_builder.append("\t\t   ");
+						_builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
+						_builder.newLine();
+					}
+				}
+			} else {
+				_builder.append("\t\t   ");
+				_builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
+				_builder.newLine();
+			}
+		}
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t  ");
+		_builder.append("auto node = std::make_shared<");
+		String _moduleName_2 = this.getModuleName();
+		_builder.append(_moduleName_2, "\t\t  ");
+		_builder.append(">();");
+		_builder.newLineIfNotEmpty();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t  ");
+		_builder.append("executor.add_node(node);");
+		_builder.newLine();
+		_builder.append("\t\t  ");
+		_builder.append("executor.spin();");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t  ");
+		_builder.append("rclcpp::shutdown();");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.newLine();
+		_builder.append("\t\t  ");
+		_builder.append("return 0;");
+		_builder.newLine();
+		_builder.append("\t\t");
+		_builder.append("}");
+		_builder.newLine();
+		return _builder.toString();
+	}
+
+	public String getModulePath() {
+		return getBasePath() + "/" + getModuleName();
+	}
+
+	@Override
+	public String getIncFile() {
+		return getModuleName() + ".hpp";
+	}
+
+	@Override
+	public String getSrcFile() {
+		return getModuleName() + ".cpp";
+	}
+
+	public String getIncPath() {
+		return getModulePath() + "/_inc/" + getIncFile();
+	}
+
+	public String getSrcPath() {
+		return getModulePath() + "/_src/" + getSrcFile();
+	}
+
+	public boolean isIncFileEmpty() {
+		return !outputBuffer.bufferExists("H", getModulePath() + "/_inc/" + getModuleName());
+	}
+
+	public boolean isSrcFileEmpty() {
+		return !outputBuffer.bufferExists("C", getModulePath() + "/_src/" + getModuleName());
+	}
+
+	public boolean incAppend(final String str) {
+		return outputBuffer.appendTo("H", getModulePath() + "/_inc/" + getModuleName(), str);
+	}
+
+	public boolean srcAppend(final String str) {
+		return outputBuffer.appendTo("C", getModulePath() + "/_src/" + getModuleName(), str);
+	}
+
+}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTaskTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTaskTranslationUnit.java
similarity index 97%
rename from load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTaskTranslationUnit.java
rename to load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTaskTranslationUnit.java
index 48eba8c..3ff80ce 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTaskTranslationUnit.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/generators/RosTaskTranslationUnit.java
@@ -11,7 +11,7 @@
  *     Robert Bosch GmbH - initial API and implementation
  */
 
-package org.eclipse.app4mc.slg.ros2.translationUnits;
+package org.eclipse.app4mc.slg.ros2.generators;
 
 import java.math.BigInteger;
 import java.util.ArrayList;
@@ -32,9 +32,9 @@
 import org.eclipse.app4mc.amalthea.model.Tag;
 import org.eclipse.app4mc.amalthea.model.Task;
 import org.eclipse.app4mc.amalthea.model.TimeUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.LabelTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TaskTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit;
 import org.eclipse.app4mc.slg.ros2.transformers.RosInterProcessStimulusTransformer;
 import org.eclipse.app4mc.slg.ros2.transformers.RosLabelTransformer;
 import org.eclipse.app4mc.slg.ros2.transformers.RosRunnableTransformer;
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend
index 26b4850..f3db0fc 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosActivityGraphItemTransformer.xtend
@@ -19,7 +19,7 @@
 import org.eclipse.app4mc.amalthea.model.ChannelSend
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
 import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
 
 @Singleton
 class RosActivityGraphItemTransformer extends ActivityGraphItemTransformer {
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 f5913ca..9d9e964 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
@@ -16,7 +16,7 @@
 import com.google.inject.Inject
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.ChannelSend
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosChannelSendTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosChannelSendTranslationUnit
 import org.eclipse.app4mc.transformation.templates.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend
index bbbd8d9..482b413 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosChannelSendUtilsTransformer.xtend
@@ -17,7 +17,7 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.ChannelSend
 import org.eclipse.app4mc.slg.commons.m2t.transformers.SynteticTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosChannelSendUtilsTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosChannelSendUtilsTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend
index 1bf1ec9..9f81595 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessStimulusTransformer.xtend
@@ -17,7 +17,7 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.InterProcessStimulus
 import org.eclipse.app4mc.slg.commons.m2t.transformers.SynteticTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosIpStimulusTranslationunit
+import org.eclipse.app4mc.slg.ros2.generators.RosIpStimulusTranslationunit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
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 30a308e..7432b8f 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
@@ -16,7 +16,7 @@
 import com.google.inject.Inject
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosInterProcessTriggerTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosInterProcessTriggerTranslationUnit
 import org.eclipse.app4mc.transformation.templates.AbstractTransformer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend
index ddb5924..f6a9bfe 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosInterProcessTriggerUtilsTransformer.xtend
@@ -17,7 +17,7 @@
 import com.google.inject.Singleton
 import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
 import org.eclipse.app4mc.slg.commons.m2t.transformers.SynteticTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosInterProcessTriggerUtilsTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosInterProcessTriggerUtilsTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend
index 09e5213..6ad0d0b 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosLabelTransformer.xtend
@@ -16,7 +16,7 @@
 import com.google.inject.Inject
 import org.eclipse.app4mc.amalthea.model.Label
 import org.eclipse.app4mc.slg.commons.m2t.transformers.LabelTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosLabelTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosLabelTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 class RosLabelTransformer extends LabelTransformer {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend
index f278a90..a096e98 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosRunnableTransformer.xtend
@@ -16,7 +16,7 @@
 import com.google.inject.Inject
 import org.eclipse.app4mc.amalthea.model.Runnable
 import org.eclipse.app4mc.slg.commons.m2t.transformers.RunnableTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosRunnableTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosRunnableTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 class RosRunnableTransformer extends RunnableTransformer {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend
index c795101..f2673dc 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTagTransformer.xtend
@@ -18,7 +18,7 @@
 import org.eclipse.app4mc.amalthea.model.Amalthea
 import org.eclipse.app4mc.amalthea.model.Tag
 import org.eclipse.app4mc.slg.commons.m2t.transformers.BaseTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosTagTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosTagTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend
index 21658d6..96cbddf 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosTaskTransformer.xtend
@@ -18,7 +18,7 @@
 import org.eclipse.app4mc.amalthea.model.Component
 import org.eclipse.app4mc.amalthea.model.Task
 import org.eclipse.app4mc.slg.commons.m2t.transformers.TaskTransformer
-import org.eclipse.app4mc.slg.ros2.translationUnits.RosTaskTranslationUnit
+import org.eclipse.app4mc.slg.ros2.generators.RosTaskTranslationUnit
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java
index 6fe1cbe..753fe8b 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/RosAmlWriter.java
@@ -12,7 +12,7 @@
  */
 package org.eclipse.app4mc.slg.ros2.transformers.utils;
 
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
 import org.eclipse.xtend2.lib.StringConcatenation;
 
 public class RosAmlWriter extends TranslationUnit {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosRunnableTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosRunnableTranslationUnit.java
deleted file mode 100644
index 362dd25..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosRunnableTranslationUnit.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/**
- * 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.slg.ros2.translationUnits;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.function.Consumer;
-import org.eclipse.app4mc.amalthea.model.ActivityGraph;
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
-import org.eclipse.app4mc.amalthea.model.BooleanObject;
-import org.eclipse.app4mc.amalthea.model.ChannelSend;
-import org.eclipse.app4mc.amalthea.model.InterProcessTrigger;
-import org.eclipse.app4mc.amalthea.model.Value;
-import org.eclipse.app4mc.slg.commons.m2t.transformers.ActivityGraphItemTransformer;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.RunnableTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
-import org.eclipse.app4mc.slg.ros2.transformers.utils.Utils;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.EMap;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-public class RosRunnableTranslationUnit extends RunnableTranslationUnit {
-  private String param;
-  
-  private String nodeParam;
-  
-  private boolean measure_performance;
-  
-  private ArrayList<String> publishers;
-  
-  private ArrayList<String> client_declarations;
-  
-  private ArrayList<String> client_inits;
-  
-  public RosRunnableTranslationUnit(final OutputBuffer outputBuffer, final ActivityGraphItemTransformer transformer, final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
-    super(outputBuffer, transformer, runnable);
-  }
-  
-  @Override
-  public String getCall() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("run_");
-    String _name = this.runnable.getName();
-    _builder.append(_name);
-    _builder.append("(");
-    _builder.append(this.param);
-    _builder.append(")");
-    return _builder.toString();
-  }
-  
-  public String getNodeCall() {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("run_");
-    String _name = this.runnable.getName();
-    _builder.append(_name);
-    _builder.append("(");
-    _builder.append(this.nodeParam);
-    _builder.append(")");
-    return _builder.toString();
-  }
-  
-  public ArrayList<String> getPublishers() {
-    return this.publishers;
-  }
-  
-  public ArrayList<String> getClientDeclarations() {
-    return this.client_declarations;
-  }
-  
-  public ArrayList<String> getClientInits() {
-    return this.client_inits;
-  }
-  
-  @Override
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      this.param = "";
-      this.nodeParam = "";
-      ArrayList<String> _arrayList = new ArrayList<String>();
-      this.publishers = _arrayList;
-      ArrayList<String> _arrayList_1 = new ArrayList<String>();
-      this.client_declarations = _arrayList_1;
-      ArrayList<String> _arrayList_2 = new ArrayList<String>();
-      this.client_inits = _arrayList_2;
-      boolean _isSrcFileEmpty = this.isSrcFileEmpty();
-      if (_isSrcFileEmpty) {
-        String _incFile = this.getIncFile();
-        String _plus = ("#include \"" + _incFile);
-        String _plus_1 = (_plus + "\"\n");
-        this.srcAppend(_plus_1);
-      }
-      final LinkedHashSet<String> includes = new LinkedHashSet<String>();
-      final ArrayList<String> calls = new ArrayList<String>();
-      EMap<String, Value> _customProperties = null;
-      if (this.runnable!=null) {
-        _customProperties=this.runnable.getCustomProperties();
-      }
-      Value _get = null;
-      if (_customProperties!=null) {
-        _get=_customProperties.get("measure_performance");
-      }
-      boolean _isValue = false;
-      if (((BooleanObject) _get)!=null) {
-        _isValue=((BooleanObject) _get).isValue();
-      }
-      if (_isValue) {
-        includes.add("aml.h");
-        this.measure_performance = true;
-      }
-      ActivityGraph _activityGraph = null;
-      if (this.runnable!=null) {
-        _activityGraph=this.runnable.getActivityGraph();
-      }
-      EList<ActivityGraphItem> _items = null;
-      if (_activityGraph!=null) {
-        _items=_activityGraph.getItems();
-      }
-      final Consumer<ActivityGraphItem> _function = (ActivityGraphItem item) -> {
-        final TranslationUnit tmp = this.callGraphItemTransformer.transform(((ActivityGraphItem) item));
-        if (((!StringExtensions.isNullOrEmpty(tmp.getIncFile())) && (!this.getIncFile().equals(tmp.getIncFile())))) {
-          includes.add(tmp.getIncFile());
-        }
-        if ((item instanceof ChannelSend)) {
-          String _name = ((ChannelSend) item).getData().getName();
-          String _plus_2 = (_name + "_publisher");
-          this.publishers.add(_plus_2);
-          String _nodeParam = this.nodeParam;
-          String _xifexpression = null;
-          boolean _equals = this.nodeParam.equals("");
-          if (_equals) {
-            _xifexpression = "";
-          } else {
-            _xifexpression = ";";
-          }
-          String _name_1 = ((ChannelSend) item).getData().getName();
-          String _plus_3 = (_xifexpression + _name_1);
-          String _plus_4 = (_plus_3 + "_publisher");
-          this.nodeParam = (_nodeParam + _plus_4);
-          String _xifexpression_1 = null;
-          boolean _equals_1 = this.param.equals("");
-          if (_equals_1) {
-            _xifexpression_1 = "";
-          } else {
-            _xifexpression_1 = ";";
-          }
-          String _plus_5 = (_xifexpression_1 + "rclcpp::Publisher<std_msgs::msg::String>::SharedPtr& ");
-          String _name_2 = ((ChannelSend) item).getData().getName();
-          String _plus_6 = (_plus_5 + _name_2);
-          String _plus_7 = (_plus_6 + "_publisher");
-          this.param = _plus_7;
-        }
-        if ((item instanceof InterProcessTrigger)) {
-          String _name_3 = ((InterProcessTrigger)item).getStimulus().getName();
-          String _plus_8 = (_name_3 + "_service/srv/");
-          String _name_4 = ((InterProcessTrigger)item).getStimulus().getName();
-          String _plus_9 = (_plus_8 + _name_4);
-          String _plus_10 = (_plus_9 + "_service");
-          String _plus_11 = (_plus_10 + ".hpp");
-          includes.add(_plus_11);
-          String _name_5 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_12 = ("rclcpp::Client<" + _name_5);
-          String _plus_13 = (_plus_12 + "_service::srv::");
-          String _name_6 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_14 = (_name_6 + "_service");
-          String _idlCompliantName = Utils.toIdlCompliantName(_plus_14);
-          String _plus_15 = (_plus_13 + _idlCompliantName);
-          String _plus_16 = (_plus_15 + 
-            ">::SharedPtr ");
-          String _name_7 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_17 = (_plus_16 + _name_7);
-          String _plus_18 = (_plus_17 + "_client");
-          this.client_declarations.add(_plus_18);
-          String _name_8 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_19 = (_name_8 + "_client =  this->create_client<");
-          String _name_9 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_20 = (_plus_19 + _name_9);
-          String _plus_21 = (_plus_20 + "_service::srv::");
-          String _name_10 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_22 = (_name_10 + "_service");
-          String _idlCompliantName_1 = Utils.toIdlCompliantName(_plus_22);
-          String _plus_23 = (_plus_21 + _idlCompliantName_1);
-          String _plus_24 = (_plus_23 + ">");
-          String _plus_25 = (_plus_24 + 
-            "(\"");
-          String _name_11 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_26 = (_plus_25 + _name_11);
-          String _plus_27 = (_plus_26 + "_service\")");
-          this.client_inits.add(_plus_27);
-          String _nodeParam_1 = this.nodeParam;
-          String _xifexpression_2 = null;
-          boolean _equals_2 = this.nodeParam.equals("");
-          if (_equals_2) {
-            _xifexpression_2 = "";
-          } else {
-            _xifexpression_2 = ";";
-          }
-          String _name_12 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_28 = (_xifexpression_2 + _name_12);
-          String _plus_29 = (_plus_28 + "_client");
-          this.nodeParam = (_nodeParam_1 + _plus_29);
-          String _xifexpression_3 = null;
-          boolean _equals_3 = this.param.equals("");
-          if (_equals_3) {
-            _xifexpression_3 = "";
-          } else {
-            _xifexpression_3 = ";";
-          }
-          String _plus_30 = (_xifexpression_3 + "rclcpp::Client<");
-          String _name_13 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_31 = (_plus_30 + _name_13);
-          String _plus_32 = (_plus_31 + "_service::srv::");
-          String _name_14 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_33 = (_name_14 + "_service");
-          String _idlCompliantName_2 = Utils.toIdlCompliantName(_plus_33);
-          String _plus_34 = (_plus_32 + _idlCompliantName_2);
-          String _plus_35 = (_plus_34 + 
-            ">::SharedPtr& ");
-          String _name_15 = ((InterProcessTrigger) item).getStimulus().getName();
-          String _plus_36 = (_plus_35 + _name_15);
-          String _plus_37 = (_plus_36 + "_client");
-          this.param = _plus_37;
-        }
-        final String call = tmp.getCall();
-        boolean _isNullOrEmpty = StringExtensions.isNullOrEmpty(call);
-        boolean _not = (!_isNullOrEmpty);
-        if (_not) {
-          calls.add(call);
-        }
-      };
-      _items.forEach(_function);
-      String _name = this.runnable.getName();
-      String _plus_2 = ("\n//Runnable " + _name);
-      String _plus_3 = (_plus_2 + "----\n");
-      this.incAppend(_plus_3);
-      this.toH(includes);
-      String _name_1 = this.runnable.getName();
-      String _plus_4 = ("\n//Runnable " + _name_1);
-      String _plus_5 = (_plus_4 + "----\n");
-      this.srcAppend(_plus_5);
-      _xblockexpression = this.toCpp(includes, calls);
-    }
-    return _xblockexpression;
-  }
-  
-  @Override
-  public boolean toH(final LinkedHashSet<String> includes) {
-    boolean _xblockexpression = false;
-    {
-      final Consumer<String> _function = (String include) -> {
-        this.incAppend((("#include \"" + include) + "\"\n"));
-      };
-      includes.forEach(_function);
-      StringConcatenation _builder = new StringConcatenation();
-      _builder.append("void ");
-      String _call = this.getCall();
-      _builder.append(_call);
-      _builder.append(";");
-      _builder.newLineIfNotEmpty();
-      _xblockexpression = this.incAppend(_builder.toString());
-    }
-    return _xblockexpression;
-  }
-  
-  @Override
-  public boolean toCpp(final LinkedHashSet<String> includes, final ArrayList<String> calls) {
-    boolean _xblockexpression = false;
-    {
-      String _call = this.getCall();
-      String _plus = ("void " + _call);
-      String _plus_1 = (_plus + "{\n");
-      this.srcAppend(_plus_1);
-      if (this.measure_performance) {
-        StringConcatenation _builder = new StringConcatenation();
-        _builder.append("uint64_t event_list[] = {0x11, 0x13, 0x17}; //CPU CYCLES, MEM ACCESS, L2 Cache Refill");
-        _builder.newLine();
-        _builder.append("int total_events =  sizeof(event_list)/sizeof(event_list[0]);");
-        _builder.newLine();
-        _builder.append("int fd = instrument_start(0,event_list, total_events);");
-        _builder.newLine();
-        this.srcAppend(_builder.toString());
-      }
-      final Consumer<String> _function = (String call) -> {
-        this.srcAppend((("\t" + call) + ";\n"));
-      };
-      calls.forEach(_function);
-      if (this.measure_performance) {
-        StringConcatenation _builder_1 = new StringConcatenation();
-        _builder_1.append("instrument_stop(fd, \"");
-        String _name = this.runnable.getName();
-        _builder_1.append(_name);
-        _builder_1.append(".log\");");
-        _builder_1.newLineIfNotEmpty();
-        this.srcAppend(_builder_1.toString());
-      }
-      _xblockexpression = this.srcAppend("}\n\n");
-    }
-    return _xblockexpression;
-  }
-}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTagTranslationUnit.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTagTranslationUnit.java
deleted file mode 100644
index a72ab13..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/translationUnits/RosTagTranslationUnit.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/**
- * 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.slg.ros2.translationUnits;
-
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.function.Consumer;
-
-import org.eclipse.app4mc.amalthea.model.Amalthea;
-import org.eclipse.app4mc.amalthea.model.SWModel;
-import org.eclipse.app4mc.amalthea.model.StringObject;
-import org.eclipse.app4mc.amalthea.model.Tag;
-import org.eclipse.app4mc.amalthea.model.Task;
-import org.eclipse.app4mc.amalthea.model.Value;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TaskTranslationUnit;
-import org.eclipse.app4mc.slg.commons.m2t.translationUnits.TranslationUnit;
-import org.eclipse.app4mc.slg.ros2.transformers.RosTaskTransformer;
-import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.xtend2.lib.StringConcatenation;
-
-public class RosTagTranslationUnit extends TranslationUnit {
-  private RosTaskTransformer rosTransformerTask;
-  
-  private Tag tag;
-  
-  private Amalthea model;
-  
-  private HashSet<String> header = new HashSet<>();
-  
-  private LinkedList<String> declaration = new LinkedList<>();
-  
-  private LinkedList<String> initialization = new LinkedList<>();
-  
-  private LinkedList<String> calls = new LinkedList<>();
-  
-  private LinkedList<String> serviceCallbacks = new LinkedList<>();
-
-private OutputBuffer outputBuffer;
-  
-  public RosTagTranslationUnit(final OutputBuffer outputBuffer, final RosTaskTransformer rosTransformerTask, final Tag tag, final Amalthea model) {
-    super();
-    this.tag = tag;
-    this.model = model;
-    this.rosTransformerTask = rosTransformerTask;
-    this.outputBuffer = outputBuffer;
-    this.genFiles();
-  }
-  
-  public boolean genFiles() {
-    boolean _xblockexpression = false;
-    {
-      SWModel _swModel = null;
-      if (this.model!=null) {
-        _swModel=this.model.getSwModel();
-      }
-      EList<Task> _tasks = null;
-      if (_swModel!=null) {
-        _tasks=_swModel.getTasks();
-      }
-      final Consumer<Task> _function = (Task task) -> {
-        boolean _contains = task.getTags().contains(this.tag);
-        if (_contains) {
-          TaskTranslationUnit _transform = this.rosTransformerTask.transform(task, null);
-          final RosTaskTranslationUnit tu = ((RosTaskTranslationUnit) _transform);
-          this.header.add(tu.getHeaders().toString());
-          this.declaration.add(tu.getDeclaration().toString());
-          this.initialization.add(tu.getInitialisation(this.getModuleName()).toString());
-          this.calls.add(tu.getCallback().toString());
-          this.serviceCallbacks.add(tu.getServiceCallback().toString());
-        }
-      };
-      _tasks.forEach(_function);
-      _xblockexpression = this.srcAppend(this.toCpp(this.header, this.declaration, this.initialization, this.calls, this.serviceCallbacks));
-    }
-    return _xblockexpression;
-  }
-  
-  public String getBasePath() {
-    return "";
-  }
-  
-  public String getModuleName() {
-    return this.tag.getName();
-  }
-  
-  private String toCpp(final HashSet<String> headers, final LinkedList<String> declarations, final LinkedList<String> inits, final LinkedList<String> calls, final LinkedList<String> serviceCallbacks) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("#include <chrono>");
-    _builder.newLine();
-    _builder.append("#include <memory>");
-    _builder.newLine();
-    _builder.newLine();
-    _builder.append("#include \"rclcpp/rclcpp.hpp\"");
-    _builder.newLine();
-    _builder.append("#include \"std_msgs/msg/string.hpp\"");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t\t\t  ");
-    _builder.newLine();
-    {
-      for(final String header : headers) {
-        _builder.append(header);
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.newLine();
-    _builder.append("using namespace std::chrono_literals;");
-    _builder.newLine();
-    _builder.append("using std::placeholders::_1;");
-    _builder.newLine();
-    _builder.newLine();
-    {
-      for(final String serviceCallback : serviceCallbacks) {
-        _builder.append(serviceCallback);
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.newLine();
-    _builder.append("class ");
-    String _moduleName = this.getModuleName();
-    _builder.append(_moduleName);
-    _builder.append(" : public rclcpp::Node");
-    _builder.newLineIfNotEmpty();
-    _builder.append("{");
-    _builder.newLine();
-    _builder.append("private:");
-    _builder.newLine();
-    {
-      for(final String declaration : declarations) {
-        _builder.append("  ");
-        _builder.append(declaration, "  ");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("public:");
-    _builder.newLine();
-    _builder.append("\t  ");
-    String _moduleName_1 = this.getModuleName();
-    _builder.append(_moduleName_1, "\t  ");
-    _builder.append("()");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t  ");
-    _builder.append(": Node(\"");
-    String _lowerCase = this.getModuleName().toLowerCase();
-    _builder.append(_lowerCase, "\t  ");
-    _builder.append("\")");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t  ");
-    _builder.append("{");
-    _builder.newLine();
-    {
-      for(final String init : inits) {
-        _builder.append("\t  \t");
-        _builder.append(init, "\t  \t");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.append("\t  \t");
-    _builder.newLine();
-    _builder.append("\t  \t");
-    _builder.append("}");
-    _builder.newLine();
-    {
-      for(final String call : calls) {
-        _builder.append("\t  \t");
-        _builder.append(call, "\t  \t");
-        _builder.newLineIfNotEmpty();
-      }
-    }
-    _builder.append("\t  \t");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("};");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("int main(int argc, char * argv[])");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("{\t\t  ");
-    _builder.newLine();
-    _builder.append("\t\t  ");
-    _builder.append("setvbuf(stdout, NULL, _IONBF, BUFSIZ);");
-    _builder.newLine();
-    _builder.append("\t\t   ");
-    _builder.append("rclcpp::init(argc, argv);");
-    _builder.newLine();
-    {
-      Value _get = this.tag.getCustomProperties().get("executor_type");
-      boolean _tripleNotEquals = (_get != null);
-      if (_tripleNotEquals) {
-        {
-          Value _get_1 = this.tag.getCustomProperties().get("executor_type");
-          boolean _equals = ((StringObject) _get_1).getValue().equals("single_thread");
-          if (_equals) {
-            _builder.append("\t\t   ");
-            _builder.append("rclcpp::executors::SingleThreadedExecutor executor;");
-            _builder.newLine();
-          } else {
-            _builder.append("\t\t   ");
-            _builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
-            _builder.newLine();
-          }
-        }
-      } else {
-        _builder.append("\t\t   ");
-        _builder.append("rclcpp::executors::MultiThreadedExecutor executor;");
-        _builder.newLine();
-      }
-    }
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t  ");
-    _builder.append("auto node = std::make_shared<");
-    String _moduleName_2 = this.getModuleName();
-    _builder.append(_moduleName_2, "\t\t  ");
-    _builder.append(">();");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t  ");
-    _builder.append("executor.add_node(node);");
-    _builder.newLine();
-    _builder.append("\t\t  ");
-    _builder.append("executor.spin();");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t  ");
-    _builder.append("rclcpp::shutdown();");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.newLine();
-    _builder.append("\t\t  ");
-    _builder.append("return 0;");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    return _builder.toString();
-  }
-
-public String getModulePath() {
-    String _basePath = this.getBasePath();
-    String _plus = (_basePath + "/");
-    String _moduleName = this.getModuleName();
-    return (_plus + _moduleName);
-  }
-
-@Override
-public String getIncFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".hpp");
-  }
-
-@Override
-public String getSrcFile() {
-    String _moduleName = this.getModuleName();
-    return (_moduleName + ".cpp");
-  }
-
-public String getIncPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _incFile = this.getIncFile();
-    return (_plus + _incFile);
-  }
-
-public String getSrcPath() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _srcFile = this.getSrcFile();
-    return (_plus + _srcFile);
-  }
-
-public boolean isIncFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("H", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean isSrcFileEmpty() {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    boolean _bufferExists = this.outputBuffer.bufferExists("C", _plus_1);
-    return (!_bufferExists);
-  }
-
-public boolean incAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_inc/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("H", _plus_1, str);
-  }
-
-public boolean srcAppend(final String str) {
-    String _modulePath = this.getModulePath();
-    String _plus = (_modulePath + "/_src/");
-    String _moduleName = this.getModuleName();
-    String _plus_1 = (_plus + _moduleName);
-    return this.outputBuffer.appendTo("C", _plus_1, str);
-  }
-}