diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java
index ba260d2..9646848 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java
@@ -103,6 +103,13 @@
 		return outputFolder;
 	}
 
+	public String getFileExtension(String type) {
+		TypedBuffer typedBuffer = filetypeToBufferMap.get(type);
+		if (typedBuffer == null)
+			return null;
+
+		return typedBuffer.getFileExtension();
+	}
 	/**
 	 * @return: true if buffer has already been created
 	 */
@@ -161,6 +168,9 @@
 			return isNewBuffer;
 		}
 
+		public String getFileExtension() {
+			return fileExtension;
+		}
 	}
 
 }
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseSettings.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseSettings.java
index aa8fd76..4fa10d2 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseSettings.java
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseSettings.java
@@ -25,7 +25,7 @@
 	}
 
 	public static final String SRC_TYPE = "SRC";
-	public static final String SRC_EXT = ".c";
+	public static final String SRC_EXT = ".cpp";
 	public static final String SRC_FOLDER = "/_src/";
 
 	public static final String INC_TYPE = "INC";
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseTransformer.java
index d5334a4..dc6cda1 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseTransformer.java
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/SLGBaseTransformer.java
@@ -15,10 +15,8 @@
 
 package org.eclipse.app4mc.slg.commons.m2t.transformers;
 
-import static org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseSettings.INC_EXT;
 import static org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseSettings.INC_FOLDER;
 import static org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseSettings.INC_TYPE;
-import static org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseSettings.SRC_EXT;
 import static org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseSettings.SRC_FOLDER;
 import static org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseSettings.SRC_TYPE;
 
@@ -59,11 +57,13 @@
 	public String getIncModulePath(SLGTranslationUnit tu) { return tu.getModulePath() + INC_FOLDER + tu.getModuleName(); }
 	public String getSrcModulePath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + tu.getModuleName(); }
 
-	public String getSrcFile(SLGTranslationUnit tu) { return tu.getModuleName() + SRC_EXT; }
-	public String getIncFile(SLGTranslationUnit tu) { return tu.getModuleName() + INC_EXT; }
-
-	public String getSrcPath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + getSrcFile(tu); }
 	public String getIncPath(SLGTranslationUnit tu) { return tu.getModulePath() + INC_FOLDER + getIncFile(tu); }
+	public String getSrcPath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + getSrcFile(tu); }
+
+	// Attributes derived from translation unit and output buffer (!)
+
+	public String getIncFile(SLGTranslationUnit tu) { return tu.getModuleName() + outputBuffer.getFileExtension(INC_TYPE); }
+	public String getSrcFile(SLGTranslationUnit tu) { return tu.getModuleName() + outputBuffer.getFileExtension(SRC_TYPE); }
 
 	// Generic cache handling
 
@@ -80,8 +80,7 @@
 		return Collections.emptyMap();
 	}
 
-
-	// still necessary ???
+	// Property access
 
 	@Inject Properties properties;
 
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 7e689b6..7915d2f 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
@@ -15,10 +15,8 @@
 
 package org.eclipse.app4mc.slg.linux.transformers;
 
-import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.INC_EXT;
 import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.INC_FOLDER;
 import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.INC_TYPE;
-import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.SRC_EXT;
 import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.SRC_FOLDER;
 import static org.eclipse.app4mc.slg.linux.transformers.LinuxBaseSettings.SRC_TYPE;
 
@@ -59,11 +57,13 @@
 	public String getIncModulePath(SLGTranslationUnit tu) { return tu.getModulePath() + INC_FOLDER + tu.getModuleName(); }
 	public String getSrcModulePath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + tu.getModuleName(); }
 
-	public String getSrcFile(SLGTranslationUnit tu) { return tu.getModuleName() + SRC_EXT; }
-	public String getIncFile(SLGTranslationUnit tu) { return tu.getModuleName() + INC_EXT; }
-
-	public String getSrcPath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + getSrcFile(tu); }
 	public String getIncPath(SLGTranslationUnit tu) { return tu.getModulePath() + INC_FOLDER + getIncFile(tu); }
+	public String getSrcPath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + getSrcFile(tu); }
+
+	// Attributes derived from translation unit and output buffer (!)
+
+	public String getIncFile(SLGTranslationUnit tu) { return tu.getModuleName() + outputBuffer.getFileExtension(INC_TYPE); }
+	public String getSrcFile(SLGTranslationUnit tu) { return tu.getModuleName() + outputBuffer.getFileExtension(SRC_TYPE); }
 
 	// Generic cache handling
 
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosBaseTransformer.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosBaseTransformer.java
index 50eae90..6b67319 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosBaseTransformer.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/RosBaseTransformer.java
@@ -15,10 +15,8 @@
 
 package org.eclipse.app4mc.slg.ros2.transformers;
 
-import static org.eclipse.app4mc.slg.ros2.transformers.RosBaseSettings.INC_EXT;
 import static org.eclipse.app4mc.slg.ros2.transformers.RosBaseSettings.INC_FOLDER;
 import static org.eclipse.app4mc.slg.ros2.transformers.RosBaseSettings.INC_TYPE;
-import static org.eclipse.app4mc.slg.ros2.transformers.RosBaseSettings.SRC_EXT;
 import static org.eclipse.app4mc.slg.ros2.transformers.RosBaseSettings.SRC_FOLDER;
 import static org.eclipse.app4mc.slg.ros2.transformers.RosBaseSettings.SRC_TYPE;
 
@@ -59,11 +57,13 @@
 	public String getIncModulePath(SLGTranslationUnit tu) { return tu.getModulePath() + INC_FOLDER + tu.getModuleName(); }
 	public String getSrcModulePath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + tu.getModuleName(); }
 
-	public String getSrcFile(SLGTranslationUnit tu) { return tu.getModuleName() + SRC_EXT; }
-	public String getIncFile(SLGTranslationUnit tu) { return tu.getModuleName() + INC_EXT; }
-
-	public String getSrcPath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + getSrcFile(tu); }
 	public String getIncPath(SLGTranslationUnit tu) { return tu.getModulePath() + INC_FOLDER + getIncFile(tu); }
+	public String getSrcPath(SLGTranslationUnit tu) { return tu.getModulePath() + SRC_FOLDER + getSrcFile(tu); }
+
+	// Attributes derived from translation unit and output buffer (!)
+
+	public String getIncFile(SLGTranslationUnit tu) { return tu.getModuleName() + outputBuffer.getFileExtension(INC_TYPE); }
+	public String getSrcFile(SLGTranslationUnit tu) { return tu.getModuleName() + outputBuffer.getFileExtension(SRC_TYPE); }
 
 	// Generic cache handling
 
