diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimulusBaseTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimulusBaseTransformer.xtend
index e08c0ac..bcd5021 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimulusBaseTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimulusBaseTransformer.xtend
@@ -22,16 +22,16 @@
 abstract class StimulusBaseTransformer extends BaseTransformer {
 	
 	
-	def getName(Stimulus stimulus){
-		return stimulus.name
+	def getName(Stimulus stim){
+		return stim.name
 	}
 
-	def getModulePath(Stimulus stimulus) {
-		return AmaltheaTransformer.getModulePath() + "/stimuliModel/" + getName(stimulus)
+	def getModulePath(Stimulus stim) {
+		return AmaltheaTransformer.getModulePath() + "/stimuliModel/" + getName(stim)
 	}
 
-	def getFunctionDef(Stimulus stimulus) {
-		return "get_" + stimulus.name + "()"
+	def getFunctionDef(Stimulus stim) {
+		return "get_" + stim.name + "()"
 	}
 		
 
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/IActivityGraphItemContainerTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/IActivityGraphItemContainerTransformer.xtend
index ff20768..0fdc9bc 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/IActivityGraphItemContainerTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/IActivityGraphItemContainerTransformer.xtend
@@ -61,8 +61,10 @@
 		}
 		
 		def addAll(ModeConditionBuffer other){
-			activityItemIncludes.addAll(other.includes)
-			activityItemCalls.addAll(other.conditions)
+			if (other !== null){
+				activityItemIncludes.addAll(other.includes)
+				activityItemCalls.addAll(0, other.conditions) //prepend conditions for readability
+			}
 		}
 		
 		def LinkedHashSet<String> getIncludes(){
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/ModeSwitchEntryTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/ModeSwitchEntryTransformer.xtend
index 8402106..16c378f 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/ModeSwitchEntryTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/ModeSwitchEntryTransformer.xtend
@@ -15,8 +15,10 @@
 
 package org.eclipse.app4mc.amlt2systemc.m2t.transformers.sw
 
+import com.google.inject.Inject
 import org.eclipse.app4mc.amalthea.model.ModeSwitchDefault
 import org.eclipse.app4mc.amalthea.model.ModeSwitchEntry
+import org.eclipse.app4mc.amlt2systemc.m2t.transformers.common.ModeConditionTransformer
 
 /** Target code example
  * 
@@ -36,6 +38,8 @@
 
 class ModeSwitchEntryTransformer extends IActivityGraphItemContainerTransformer {
 	
+	@Inject ModeConditionTransformer modeConditionTransformer
+	
 	static var modeDefaultCnt = 0;
 	
 	private static def getName(ModeSwitchEntry modeSwitchEntry){
@@ -48,8 +52,10 @@
 
 	def void transform(ModeSwitchEntry modeSwitchEntry, ActivityGraphBuffer content) {
 		val name =  getName(modeSwitchEntry)
-		content.addBody("ModeSwitchEntry " + name + "(\"" + name + "\");\n")	
+		content.addBody("ModeSwitchEntry " + name + "(\"" + name + "\");\n")
+		val modeConditioContents = modeConditionTransformer.transformCondition(modeSwitchEntry.condition, name, false);
 		val activityGraphContents = transformItems( modeSwitchEntry, name, content.module, content.parentIsPointer)
+		activityGraphContents.addAll(modeConditioContents) //merge condition and activity graph content before adding
 		content.getIncludes().addAll(activityGraphContents.getIncludes())
 		content.getSource().addAll(activityGraphContents.getSource())
 		content.addBody(content.instanceName + ".addEntry(" + name  + ");")
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/RunnableTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/RunnableTransformer.xtend
index 9ca7827..5f283f6 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/RunnableTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/RunnableTransformer.xtend
@@ -20,7 +20,6 @@
 import org.eclipse.app4mc.amalthea.model.Runnable
 import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
 import org.eclipse.app4mc.amlt2systemc.m2t.transformers.common.ModeConditionTransformer
-import org.eclipse.app4mc.amlt2systemc.m2t.transformers.common.ModeConditionTransformer.ModeConditionBuffer
 import org.eclipse.app4mc.transformation.util.OutputBuffer
 
 @Singleton
@@ -50,7 +49,11 @@
 		// write header file
 		outputBuffer.appendTo("INC", it.module, toH(runnable))
 		// write implementation file
-		outputBuffer.appendTo("SRC", it.module, toCpp(runnable))
+		val graphContent = transformItems(runnable.activityGraph, getName(runnable), getModuleName(runnable), true)
+		val conditionContent = 
+			modeConditionTransformer.transformCondition(runnable.executionCondition, getName(runnable), true)
+		graphContent.addAll(conditionContent)
+		outputBuffer.appendTo("SRC", it.module, toCpp(runnable, graphContent))
 	}
 
 	private def String toH(Runnable runnable) '''
@@ -58,13 +61,7 @@
 		std::shared_ptr<Runnable> «getFunctionDef(runnable)»;
 	'''
 
-	private def String toCpp(Runnable runnable) '''
-		«val runnableName = getName(runnable)»
-		«val graphContent = transformItems(runnable.activityGraph, runnableName, getModuleName(runnable), true)»
-		«val conditionContent = 
-			modeConditionTransformer.transformCondition(runnable.executionCondition, getName(runnable), true)»
-		«val tmp = graphContent.includes.addAll(conditionContent.includes)»
-	
+	private def String toCpp(Runnable runnable, ActivityGraphBuffer graphContent) '''
 		#include <systemc>
 		#include "APP4MCsim.h"
 		#include "«getModuleName(runnable)».h"	
@@ -72,19 +69,18 @@
 			«include»
 		«ENDFOR»
 		
-		std::shared_ptr<Runnable> «runnableName» = nullptr;
+		std::shared_ptr<Runnable> «getName(runnable)» = nullptr;
 		
 		std::shared_ptr<Runnable>  «getFunctionDef(runnable)» {
 		
-			if («runnableName» == nullptr) {
+			if («getName(runnable)» == nullptr) {
 				//initialize
-				«runnableName» = std::make_shared<Runnable>("«runnableName»");
-				«ModeConditionBuffer.getConditionSource(conditionContent)»
+				«getName(runnable)» = std::make_shared<Runnable>("«getName(runnable)»");
 				«FOR source : graphContent.getSource()»
 					«source»
 				«ENDFOR»
 			}
-			return «runnableName»;
+			return «getName(runnable)»;
 		}
 		
 	'''
