diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings
index f208d7d88821902bd3762ca21a3f1a0ac40f21c1..9cb0a1f3ed5e90ec0da7ae5d3fb405aaeb8579ed 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings
@@ -1,6 +1,6 @@
 CompositeExplorationSolution.java 528283a3dd57500539b2e11dd3d3eb35512de9b8 RED
-DSEFactory.java 98b9133b3f33fe8c2d61f8bdab8ac97508872a6e RED
+DSEFactory.java 0a2f2cc6a197e760c1f8223339ffa5f16856b184 RED
 Explorer.java 9e0020b6a55bb035a41fb1bf4a1b709a7d6353f6 RED
 ImplicitExplorationTargetFactory.java 0b10dc4e8385bbdee0217dac783203080eb723f0 RED
 SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED
-TaskMappingFactory.java 14671417668c58cbfd97bb1fcebf0874895314e8 RED
+TaskMappingFactory.java 5e41df9d45e338dbcfa95bc3818ca17774951893 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java
index 8712f4416d47f010b7348a293f8744ea97a29f00..ae8a0f876a1db3372d116066db10aa1e736980ab 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java
@@ -77,6 +77,9 @@ import org.jgrapht.experimental.dag.DirectedAcyclicGraph.CycleFoundException;
  * @author diewald
  */
 public class DSEFactory {
+	/**
+	 * References the currently valid {@link SystemModelAdapter} relevant for the current DSE run.
+	 */
 	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
 
 	/** The instance (singleton) of the {@link DSEFactory}. */
@@ -94,6 +97,7 @@ public class DSEFactory {
 		return InstanceHolder.INSTANCE;
 	}
 
+	/** Updates this Factory with a corresponding {@link SystemModelAdapter} of a DSE run. */
 	// FIXME: Remove this method: it violates the sigleton pattern.
 	public void init(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		this.systemModelAdapter = systemModelAdapter;
@@ -108,8 +112,6 @@ public class DSEFactory {
 	 *            problem.
 	 * @param dse
 	 *            The design space exploration description.
-	 * @param systemModelAdapter
-	 *            The adapter to model of the system on which the dse is executed.
 	 * @param execDepGraph
 	 *            Dependency graph defining the execution order.
 	 * @throws Exception
@@ -144,8 +146,6 @@ public class DSEFactory {
 	 * @param archExpProblemModule
 	 *            The {@link CompositeProblemModuleBase} declaring the architectural exploration
 	 *            problem.
-	 * @param systemModelAdapter
-	 *            The adapter to model of the system on which the dse is executed.
 	 * @param execDepGraph
 	 *            Dependency graph defining the execution order.
 	 * @throws Exception
@@ -162,7 +162,8 @@ public class DSEFactory {
 						execDepGraph);
 		@SuppressWarnings("rawtypes") SFEncodingDecoder sfEncodingDecoder =
 				new SFEncodingDecoder<>();
-		@SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder = new SFGraphDecoder();
+		@SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder =
+				new SFGraphDecoder(systemModelAdapter.getTaskGraphs());
 		@SuppressWarnings("rawtypes") SFMappingDecoder sfMappingDecoder = new SFMappingDecoder();
 		@SuppressWarnings("rawtypes") SFMappingConstraintDecoder sfMappingConstraintDecoder =
 				new SFMappingConstraintDecoder();
@@ -275,7 +276,7 @@ public class DSEFactory {
 				tmFactory.createAbstractTaskMappingCreator(dse, execDepGraph);
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> abstrTaskDecoders = new ArrayList<>();
 		AbstractTaskMappingDecoder<?, ?> atmDecoder =
-				tmFactory.createAbstractTaskMappingDecoder(systemModelAdapter, dse);
+				tmFactory.createAbstractTaskMappingDecoder(dse);
 		AbstractTaskMappingIdentityDecoder idtDecoder = new AbstractTaskMappingIdentityDecoder();
 		abstrTaskDecoders.add(atmDecoder);
 		abstrTaskDecoders.add(idtDecoder);
@@ -313,13 +314,12 @@ public class DSEFactory {
 					DecoderDependencyGraph execDepGraph) throws Exception {
 		// These suppress warnings are required since type erasure in Java does not allow to pass
 		// XY<Z>.class.
-		StrictTTDecoder<S, T> tmDecoder = tmFactory.createStrictTTDecoder(systemModelAdapter, dse);
+		StrictTTDecoder<S, T> tmDecoder = tmFactory.createStrictTTDecoder(dse);
 		InstantiatedTaskMappingDecoder<S, ?> tgDecoder =
-				tmFactory.createInstantiatedTaskMappingDecoder(systemModelAdapter);
+				tmFactory.createInstantiatedTaskMappingDecoder();
 		InstantiatedTaskMappingDecoderAcyclic<S, ?> acycTgDecoder =
-				tmFactory.createAbstractToAcyclicTaskGraphDecoder(systemModelAdapter);
-		@SuppressWarnings("rawtypes") MessageDecoder msgDecoder =
-				tmFactory.createMessageDecoder(systemModelAdapter);
+				tmFactory.createAbstractToAcyclicTaskGraphDecoder();
+		@SuppressWarnings("rawtypes") MessageDecoder msgDecoder = tmFactory.createMessageDecoder();
 		@SuppressWarnings("rawtypes") TaskMappingCreator tmCreator =
 				tmFactory.createTaskMappingCreator(dse, execDepGraph);
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> instTaskDecoders = new ArrayList<>();
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java
index ec27a950fe9120a27aa18721164bae268d6a03c0..47e6b1cd8e26a4a5e775beddff030dcf5df2e33d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.AbstractTaskMappingCreator;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.TaskMappingCreator;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.InstantiatedTaskGraphEncoding;
@@ -35,6 +37,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.comm.MessageDec
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.instantiatetaskgraph.InstantiatedTaskMappingDecoder;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.instantiatetaskgraph.InstantiatedTaskMappingDecoderAcyclic;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.taskmapping.instantiate.AbstractTaskMappingDecoder;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.IMessageRouter;
@@ -141,66 +144,60 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	/**
 	 * Creates an execution model specific {@link MutateAllocation} operator.
 	 * 
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
+	 * @param tasks
+	 *            {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s.
 	 * @return Mutation Operator for Allocations.
 	 */
 	public MutateAllocation<? extends TaskMappingEntry<?, ?>, ? extends TaskMappingEncoding<?, ?>>
-			createMutateAllocationOperator(
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+			createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
 	/**
 	 * Creates an execution model specific {@link MutateRedundancyDecrement} operator.
 	 * 
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
+	 * @param tasks
+	 *            {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s.
 	 * @return Mutation operator that decreases the redundant instances of tasks.
 	 */
-	public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MutateRedundancyDecrement<?, ?>
+			createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
 	/**
 	 * Creates an execution model specific {@link MutateRedundancyIncrement} operator.
 	 * 
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
+	 * @param tasks
+	 *            {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s.
 	 * @return Mutation operator that increases the redundant instances of tasks.
 	 */
-	public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MutateRedundancyIncrement<?, ?>
+			createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
 	/**
 	 * Creates an execution model specific {@link CrossoverRandManyAllocation} operator
 	 * 
-	 * @param systemModelAdapter
-	 *            The system model deduced from the logical and technical architecture.
 	 * @param rate
 	 *            The rate or probability of such that the the operator is applied.
 	 * @return Crossover operator that swaps randomly many allocations from one resource with
 	 *         another.
 	 */
-	public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
+	public CrossoverRandManyAllocation<?, ?>
+			createCrossoverRandManyAllocationOperator(double rate) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
 	/**
 	 * Creates an execution model specific {@link CrossoverRandManyAllocation} operator
 	 * 
-	 * @param systemModelAdapter
-	 *            The system model deduced from the logical and technical architecture.
 	 * @param rate
 	 *            The rate or probability of such that the the operator is applied.
 	 * @return Crossover operator that swaps a single allocation from one resource with another.
 	 */
-	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
+	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(double rate) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
@@ -211,33 +208,25 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * Decoder to instantiate an {@link AbstractTaskMappingEncoding} into an
 	 * {@link InstantiatedTaskMappingEncoding}.
 	 * 
-	 * @param systemModelAdapter
-	 *            The system model deduced from the logical and technical architecture.
 	 * @param explorationDefinition
 	 *            The model of the DSE; This information can be useful for the decoders to optimize
 	 *            the decoding strategy
 	 * @return instance of an {@link AbstractTaskMappingDecoder}.
 	 */
-	public AbstractTaskMappingDecoder<?, ?> createAbstractTaskMappingDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DseSpecification explorationDefinition) {
+	public AbstractTaskMappingDecoder<?, ?>
+			createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) {
 		throw new UnsupportedOperationException(
 				"The Decoder to instantiate an \"abstract\" Task Mapping has not been defined for current Execution Model.");
 	}
 
 	/**
 	 * Creates and returns a {@link InstantiatedTaskMappingDecoder}.
-	 * 
-	 * @param systemModelAdapter
-	 *            The system model deduced from the logical and technical architecture.
-	 * @return An instance of a {@link InstantiatedTaskMappingDecoder}.
 	 */
 	// TODO: remove these suppress warnings by propagating the generic C.
 	@SuppressWarnings({"rawtypes", "unchecked"})
 	public InstantiatedTaskMappingDecoder<S, InstantiatedTaskGraphEncoding>
-			createInstantiatedTaskMappingDecoder(
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new InstantiatedTaskMappingDecoder(systemModelAdapter);
+			createInstantiatedTaskMappingDecoder() {
+		return new InstantiatedTaskMappingDecoder();
 	}
 
 	/**
@@ -247,8 +236,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            The system model deduced from the logical and technical architecture.
 	 * @return An instance on an {@link InstantiatedTaskMappingDecoderAcyclic}.
 	 */
-	public InstantiatedTaskMappingDecoderAcyclic<S, ?> createAbstractToAcyclicTaskGraphDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public InstantiatedTaskMappingDecoderAcyclic<S, ?> createAbstractToAcyclicTaskGraphDecoder() {
 		throw new UnsupportedOperationException(
 				"The Decoder to instantiate an \"abstract\" and acyclic Task Graph has not been defined for current Execution Model.");
 	}
@@ -260,8 +248,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            The system model deduced from the logical and technical architecture.
 	 * @return An instance of a {@link MessageDecoder}.
 	 */
-	public MessageDecoder<S, T>
-			createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MessageDecoder<S, T> createMessageDecoder() {
 		throw new UnsupportedOperationException(
 				"The Decoder which generates messages from task mappings has not been defined for current Execution Model.");
 	}
@@ -277,9 +264,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            the decoding strategy.
 	 * @return instance of a {@link StrictTTDecoder}
 	 */
-	public StrictTTDecoder<S, T> createStrictTTDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DseSpecification explorationDefinition) {
+	public StrictTTDecoder<S, T> createStrictTTDecoder(DseSpecification explorationDefinition) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
@@ -288,24 +273,19 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * {@link ShortestPathRouter} to find the shortest communication path between two communicating
 	 * instantiations of an {@link ITaskAdapter} for a given platform.
 	 */
-	public IMessageRouter
-			createShortestPathRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new ShortestPathRouter(systemModelAdapter);
+	public IMessageRouter createShortestPathRouter() {
+		return new ShortestPathRouter();
 	}
 
 	/**
 	 * Creates an basic EDF scheduler that is used to decode task mappings into schedules for the
 	 * given execution model
 	 * 
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
 	 * @param expSpec
 	 *            DSE goal specification used within the exploration, useful for scheduling
 	 * @return instance of the EDF schedule decoder.
 	 */
-	public EDFSchedulerBase<?, ?> createEDFScheduler(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
+	public EDFSchedulerBase<?, ?> createEDFScheduler(ExplorationSpecification expSpec) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
index 0ceea9394dcfa6d70ec1fb909a51ee87d4fa6ab3..737d149fb043607126cb5dd1e315b6f15a1d6d97 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
@@ -1,3 +1,3 @@
 Opt4JExplorationSolutionSet.java fd1ca946198990604ea7a521e9d0335bef4ad8e1 RED
-Opt4JExplorerBackend.java 387e63ad7ae0f98836c2f6cfa5a89f63966619c0 RED
+Opt4JExplorerBackend.java 800ec79e421755b139b34b08198aeccb4909d3a1 RED
 Opt4JSingleExplorationSolution.java 5b9e6ccdb887605faaa4d2a8b17b8fa1350fbafd RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
index 3073d306a2437fac1e138843edf3871cf5e673f5..82dc6fc55129549319c297e68548dce891e3d5e2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
@@ -47,6 +47,8 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmap
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchitectureExplorationProblemModule;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.ArchitectureSolution;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IExplorationSolution;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.exploration.model.ExplorationConstraint;
@@ -117,6 +119,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 	}
 
 	/** {@inheritDoc} */
+	@SuppressWarnings("unchecked")
 	@Override
 	protected void init(EAOptimizer opt4JParameters) {
 		this.opt4JParameters = opt4JParameters;
@@ -142,8 +145,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 		// Nsga2Module nsga2Module = new Nsga2Module();
 		// modules.add(nsga2Module);
 
-		MatingCrossoverMutateRepairModule mating =
-				new MatingCrossoverMutateRepairModule(systemModelAdapter);
+		MatingCrossoverMutateRepairModule mating = new MatingCrossoverMutateRepairModule();
 		modules.add(mating);
 
 		// TODO: Replace {@link MultiEvaluator} with {@link ExplorationGoalPriorityMultiEvaluator}
@@ -165,7 +167,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 
 		// Configure operators
 		// 1. Crossover
-		modules.add(new CrossoverAbstractTaskMappingModule(systemModelAdapter, 0.3));
+		modules.add(new CrossoverAbstractTaskMappingModule(0.3));
 		modules.add(new NopCrossoverInstantiatedTaskMappingModule());
 		modules.add(new NopCrossoverSFArchModule());
 		modules.add(new NopCrossoverPartitionMappingModule());
@@ -178,7 +180,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 		// Safety functions (if the safety exploration module is enabled)
 		if(pickFirstInstanceOf(SafetyExploration.class, dse.getFeatures()) != null) {
 			MutateSafetyFunctionArchitectureModule sfArchModule =
-					new MutateSafetyFunctionArchitectureModule(systemModelAdapter);
+					new MutateSafetyFunctionArchitectureModule();
 			modules.add(sfArchModule);
 		}
 
@@ -186,16 +188,21 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 		modules.add(new NopPlatformCommGraphMutateModule());
 
 		// Partition Exploration
-		modules.add(new PartitionMappingModule(systemModelAdapter));
+		modules.add(new PartitionMappingModule(
+				(Collection<IExecutionUnitAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getDeploymentTargets()));
 
 		// Task instantiation
-		MutateTaskInstanceModule mutateInstanceModule =
-				new MutateTaskInstanceModule(systemModelAdapter);
+		MutateTaskInstanceModule mutateInstanceModule = new MutateTaskInstanceModule(
+				(Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getDeployableComponents());
 		// mutateInstanceModule.setMutationRateType(MutationRateType.ADAPTIVE);
 		modules.add(mutateInstanceModule);
 
 		// Task allocation
-		MutateTaskMappingModule mutateModule = new MutateTaskMappingModule(systemModelAdapter);
+		MutateTaskMappingModule mutateModule = new MutateTaskMappingModule(
+				(Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getDeployableComponents());
 		// mutateModule.setMutationRateType(MutationRateType.ADAPTIVE);
 		// mutateModule.setMutationRate(0.125);
 		modules.add(mutateModule);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings
index b4cea5d757fb8cdc91d11c623aabff492f5de198..e93a81d6b05684962e7d55ba554fdeca14200999 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings
@@ -1,2 +1,2 @@
 ArchitectureExplorationCreator.java d0a638d783ec90959bf1f95af42ea5a15606ebd2 RED
-InitialEncodingProvider.java a265e1b07f9f5e7dfb3a7dd808240c39ad25f4f9 RED
+InitialEncodingProvider.java 20e7cff927769c1911855e1549eca382be3effea RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java
index d19f0843418c111181d7f359559c23f4864c1e91..d378a0d5e952144ee93eff3557bd2253f84e62a9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java
@@ -19,7 +19,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.opt4j.core.Genotype;
 
@@ -51,13 +50,13 @@ public class InitialEncodingProvider {
 	}
 
 	/**
-	 * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@code this}
-	 * {@link SystemModelAdapter} by their corresponding types.
+	 * Maintains a map of {@link IExplorationEncoding}s that can be constructed from the input
+	 * models.
 	 */
 	private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings =
 			new HashMap<>();
 
-	/** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */
+	/** Registers a given input encoding that is constructed from the input models. */
 	public <T extends IExplorationEncoding> void registerInputEncoding(T encoding) {
 		@SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass();
 		assert (!inputEncodings.containsKey(
@@ -72,8 +71,8 @@ public class InitialEncodingProvider {
 	}
 
 	/**
-	 * Returns the collection of {@link IExplorationEncoding} types that are availably through
-	 * {@code this} {@link SystemModelAdapter}.
+	 * Returns the collection of {@link IExplorationEncoding} types constructed from the input
+	 * models.
 	 */
 	public Set<Class<? extends IExplorationEncoding>> getRegisteredEncodingTypes() {
 		return inputEncodings.keySet();
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings
index d5190aa79eabbd397dce962885f87a14fe02b356..eb0056ef8063511a18ebb671155eee1397afb8d6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings
@@ -1,5 +1,5 @@
-AbstractTaskGraphEncoding.java 40dfbbfac60f8c595e7e673e9e709736a1b9e091 RED
-InstantiatedAcyclicTaskGraphEncoding.java 4541bb1f0c79aafbc88b49c0cbbe7c973153e1af RED
-InstantiatedTaskGraphEncoding.java 01b03a6de225f5890a4a9764f127045c4748e14e RED
-SafeTaskGraphEncoding.java 03cb22320614f1ad4c16fbe68acbe045ca7e89ef RED
-TaskGraphEncoding.java be6960a7221e7383afc17be8734e982b1529db2f RED
+AbstractTaskGraphEncoding.java 1a6b9a31e85b0bba9ab59ef893558537ac6dfc7d RED
+InstantiatedAcyclicTaskGraphEncoding.java 03f8687d9f83bd48bd545856160d6a022ba58228 RED
+InstantiatedTaskGraphEncoding.java 18284256299c6ce54226254aab867e41a6530141 RED
+SafeTaskGraphEncoding.java 27f0d06ed34f1cd46dee7332f32fc13279d55cc9 RED
+TaskGraphEncoding.java 21b7be288439e4ee61d2726720a32fdcbfcfcbcf RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java
index 3d297b8c0af9ebe6127102b88d4fcaff286146dc..400f42884181e3b5179ee8d713a0761f92c6223c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java
@@ -19,7 +19,6 @@ import java.util.Collection;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 
@@ -32,9 +31,10 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C>
 		extends TaskGraphEncoding<G, C, DefaultTaskGraph<?>> {
 
-	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
-	public AbstractTaskGraphEncoding(Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) {
-		super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs);
+	/** Constructor. */
+	public AbstractTaskGraphEncoding(Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs,
+			Double hyperPeriod) {
+		super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs, hyperPeriod);
 	}
 
 	/** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java
index db1d1698e65c57928cbec26ce8f31855f636ab64..31bcc495e6056f79c2c533c3961968b48444cd10 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java
@@ -20,7 +20,6 @@ import java.util.Collection;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
@@ -34,12 +33,10 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  */
 public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C>
 		extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, AcyclicTaskGraph> {
-
-	/**
-	 * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}.
-	 */
-	public InstantiatedAcyclicTaskGraphEncoding(Collection<DefaultTaskGraph<?>> taskGraphs) {
-		super(AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs));
+	/** Constructor. */
+	public InstantiatedAcyclicTaskGraphEncoding(Collection<DefaultTaskGraph<?>> taskGraphs,
+			Double hyperPeriod) {
+		super(AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs), hyperPeriod);
 	}
 
 	/** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java
index 9b4f735d2e86a0e0c1991e4692c0d08a73763cc0..bb630ced27830595fad3582d2d834e71b09fc091 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java
@@ -20,7 +20,6 @@ import java.util.Collection;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 
@@ -31,13 +30,10 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  */
 public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C>
 		extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph<?>> {
-
-	/**
-	 * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}.
-	 */
-	public InstantiatedTaskGraphEncoding(
-			Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) {
-		super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs);
+	/** Constructor. */
+	public InstantiatedTaskGraphEncoding(Collection<DefaultTaskGraph<?>> originalTaskGraphs,
+			Double hyperPeriod) {
+		super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs, hyperPeriod);
 	}
 
 	/** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java
index 7a845dd47445c026c153c59df72b651ee3925181..68d4a0a8977ad2dc82260686f624e834a721b865 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java
@@ -20,7 +20,6 @@ import java.util.Collection;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 
@@ -35,9 +34,9 @@ public class SafeTaskGraphEncoding<C>
 	/** Collection of task graphs extracted from the input models. */
 	Collection<TaskGraph> originalTaskGraphs;
 
-	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
-	public SafeTaskGraphEncoding(Collection<TaskGraph> originalTaskGraphs) {
-		super((Collection<? extends DefaultTaskGraph<?>>)originalTaskGraphs);
+	/** Constructor. */
+	public SafeTaskGraphEncoding(Collection<TaskGraph> originalTaskGraphs, Double hyperPeriod) {
+		super((Collection<? extends DefaultTaskGraph<?>>)originalTaskGraphs, hyperPeriod);
 		this.originalTaskGraphs = originalTaskGraphs;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java
index cab6a9c268ff19a2efe4c165b5a56dc5e1623a49..ec7985e992fe5caee66356437c6a710a05301b51 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java
@@ -42,6 +42,9 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 	/** {@link TaskGraph} that represents the deployable components and their signals. */
 	protected Collection<T> taskGraphs;
 
+	/** The Hyperperiod of the application represented by task graphs. */
+	protected Double hyperPeriod;
+
 	/**
 	 * Collection of {@link ITaskAdapter}s that shall be mapped to deployment targets
 	 * ({@link IExecutionUnitAdapter}).
@@ -58,8 +61,9 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 	 * Constructor that initializes {@code this} encoding with the collection of
 	 * {@link ITaskAdapter}s as they are extracted from the input models.
 	 */
-	public TaskGraphEncoding(Collection<T> taskGraphs) {
+	public TaskGraphEncoding(Collection<T> taskGraphs, Double hyperPeriod) {
 		this.taskGraphs = taskGraphs;
+		this.hyperPeriod = hyperPeriod;
 
 		this.deployableComponents.clear();
 
@@ -75,6 +79,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 	 * generates an equivalent copy.
 	 */
 	public TaskGraphEncoding(TaskGraphEncoding<G, C, T> encoding) {
+		this.hyperPeriod = encoding.getHyperPeriod();
 		taskGraphs.addAll(encoding.getTaskGraphs());
 		deployableComponents.addAll(encoding.deployableComponents);
 		replicableComponents.addAll(encoding.replicableComponents);
@@ -267,6 +272,11 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 		return null;
 	}
 
+	/** Returns the hyper period of the application. */
+	public Double getHyperPeriod() {
+		return hyperPeriod;
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public Object clone() {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings
index 803c17bb29eabccce952d6a544cf39e716114987..44f4b2938617f647720d7175ce12c39aa5cb505c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings
@@ -1,2 +1,2 @@
-MatingCrossoverMutateRepair.java e5a96095b3139ec52cd38175020c272c8407d183 RED
-MatingCrossoverMutateRepairModule.java cbf79310c5c003908f057d842158b4f2b95456ca RED
+MatingCrossoverMutateRepair.java 375a1ad682cda5af5d01f118a1c6c75d26f0b0d2 RED
+MatingCrossoverMutateRepairModule.java 81eee7535b64c5547572349f1a4c70b2f35ec2bb RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java
index 92403b27c60f6978f522f31a32dc96ad8157399e..ea9784bc7846a4c5b35a533e45b821b24f436383 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java
@@ -23,7 +23,6 @@ import java.util.Queue;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 import org.fortiss.af3.exploration.alg.service.IExplorationRepairService;
 import org.fortiss.af3.exploration.alg.service.IRepairModule;
@@ -43,7 +42,6 @@ import org.opt4j.optimizers.ea.Mating;
 import org.opt4j.optimizers.ea.MatingCrossoverMutate;
 
 import com.google.inject.Inject;
-import com.google.inject.name.Named;
 
 /**
  * {@link Mating} module that extends {@link MatingCrossoverMutate} by providing an additional
@@ -52,12 +50,6 @@ import com.google.inject.name.Named;
  * @author diewald
  */
 public class MatingCrossoverMutateRepair extends MatingCrossoverMutate {
-
-	/** References the input model. */
-	@Inject
-	@Named("SystemModelAdapter")
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/**
 	 * Constructor for the {@link MatingCrossoverMutateRepair} module which extends
 	 * {@link MatingCrossoverMutate}.
@@ -111,7 +103,7 @@ public class MatingCrossoverMutateRepair extends MatingCrossoverMutate {
 		Genotype genotype = ind.getGenotype();
 
 		for(IRepairModule<?> repairModule : getService(IExplorationRepairService.class)
-				.getRepairFunctionsOf(genotype, systemModelAdapter)) {
+				.getRepairFunctionsOf(genotype)) {
 			if(repairModule.needsRepair(genotype, ind.getObjectives().getValues())) {
 				ComposableGenotype copiedGenotype = (ComposableGenotype)copy.copy(genotype);
 				repairModule.repairGenotype(copiedGenotype, ind.getObjectives().getValues());
@@ -126,7 +118,7 @@ public class MatingCrossoverMutateRepair extends MatingCrossoverMutate {
 				ComposableGenotype curGenotype = traversalQueue.poll();
 				List<IRepairModule<ComposableGenotype>> repairModules =
 						getService(IExplorationRepairService.class)
-								.getRepairFunctionsOf(curGenotype, systemModelAdapter);
+								.getRepairFunctionsOf(curGenotype);
 				for(IRepairModule<?> curRepairModule : repairModules) {
 					if(curRepairModule.needsRepair(curGenotype, ind.getObjectives().getValues())) {
 						ComposableGenotype copiedGenotype =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java
index 004d221f35cd73c5f64a62d485bf668858fd4e1e..ae5182b0db7401f2509dfe24ac3b85f42b00d5c1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java
@@ -15,45 +15,18 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.mating;
 
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.optimizers.ea.Mating;
 import org.opt4j.optimizers.ea.MatingModule;
 
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-import com.google.inject.name.Named;
-import com.google.inject.name.Names;
-
 /**
  * Guice module that binds the {@link MatingCrossoverMutateRepairModule} to Opt4J.
  * 
  * @author diewald
  */
 public class MatingCrossoverMutateRepairModule extends MatingModule {
-
-	/** References the input model adapter. */
-	private final SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
-	/** Constructor. */
-	public MatingCrossoverMutateRepairModule(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	protected void config() {
 		binder().bind(Mating.class).to(MatingCrossoverMutateRepair.class);
-
-		binder().bind(SystemModelAdapter.class).annotatedWith(Names.named("SystemModelAdapter"))
-				.toInstance(systemModelAdapter);
-	}
-
-	/** Returns the systemModelAdapter referenced by {@code this} module. */
-	@Provides
-	@Singleton
-	@Named("SystemModelAdapter")
-	public SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> getSystemModelAdapter() {
-		return systemModelAdapter;
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings
index 08cb6b2ccc492631b8827b57a3ed9078fee038fc..1241fd9c1fa0fbb9622699d164a4ff3fa2702ca7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings
@@ -1,8 +1,8 @@
-CrossoverAbstractTaskMappingModule.java 2378665cf352620597d819fbca37f1b6c60416d0 RED
-CrossoverAllocationBase.java 5ecd7b699a04fe129434ec12b35abdcecdc40ba2 RED
+CrossoverAbstractTaskMappingModule.java 4942a1dc7547a656b75cb899f06556f8dedd342e RED
+CrossoverAllocationBase.java a2d0db2e860103bad3d7f8af1982623182103a80 RED
 CrossoverOperatorModuleBase.java 03f237eba55f15043082bb1f5cc47f052cb24d33 RED
-CrossoverRandManyAllocation.java 6e198ea496ec0293db170e911ecdb77896a18213 RED
-CrossoverSingleAllocation.java 81ae86925841f41f0073613382d2cf8326385db6 RED
+CrossoverRandManyAllocation.java c6a1ec9d0975247bbfc32a114f814eb52568cdb0 RED
+CrossoverSingleAllocation.java 823db1f9c10e7ed4c7eb8212310a6d411526db88 RED
 NopCrossover.java 70500c9db651250298c97e261e4f8a0d8b6941e3 RED
 NopCrossoverInstantiatedTaskMappingModule.java 95156489b862633b428a87df2ae51aa304c7f6f1 RED
 NopCrossoverPartitionMappingModule.java ac1eb750baf51027e352f4b95e6145e914bc4d19 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java
index fbcc187a99213291616c2aa7aabcefe3aec1eb1e..04c64460b461c69b09fe66b3af2a9423906ffaa8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java
@@ -17,7 +17,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover;
 
 import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Crossover module selecting the {@link CrossoverRandManyAllocation} operator to be applied on
@@ -29,13 +28,8 @@ public class CrossoverAbstractTaskMappingModule extends CrossoverOperatorModuleB
 	/** Crossover rate */
 	private double rate;
 
-	/** References the {@link SystemModelAdapter} that handles the input models. */
-	SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Constructor where execution model and mutation rate has to be specified */
-	public CrossoverAbstractTaskMappingModule(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
-		this.systemModelAdapter = systemModelAdapter;
+	public CrossoverAbstractTaskMappingModule(double rate) {
 		this.rate = rate;
 	}
 
@@ -44,7 +38,7 @@ public class CrossoverAbstractTaskMappingModule extends CrossoverOperatorModuleB
 	public void config() {
 		super.config();
 
-		addOperatorInstance(AbstractTaskMappingEncoding.class, TaskMappingFactory.getInstance()
-				.createCrossoverRandManyAllocationOperator(systemModelAdapter, rate));
+		addOperatorInstance(AbstractTaskMappingEncoding.class,
+				TaskMappingFactory.getInstance().createCrossoverRandManyAllocationOperator(rate));
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java
index 42bff2bda3eb68878a264dfa7391141e91c3947d..d11fd0c9627fd8224d49ee7541b7640b7f164bbb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java
@@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration;
 import org.opt4j.operators.crossover.Crossover;
 
@@ -44,10 +43,6 @@ import com.google.common.collect.HashBiMap;
  */
 public abstract class CrossoverAllocationBase<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		implements Crossover<T> {
-
-	/** Reference to the {@link SystemModelAdapter} which handles the input models. */
-	SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Cross-over rate */
 	protected double rate;
 
@@ -55,9 +50,7 @@ public abstract class CrossoverAllocationBase<S extends TaskMappingEntry<ITaskAd
 	protected RandomExploration rand = RandomExploration.getInstance();
 
 	/** Constructor that allows to set the cross-over rate */
-	public CrossoverAllocationBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			double rate) {
-		this.systemModelAdapter = systemModelAdapter;
+	public CrossoverAllocationBase(double rate) {
 		this.rate = rate;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java
index 61b480416f3c502d6a0498b9660f9dddc15c70c2..961182441dfde02a76373791aec4db804fa2e675 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java
@@ -20,7 +20,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.operators.crossover.Pair;
 
 /**
@@ -33,11 +32,9 @@ import org.opt4j.operators.crossover.Pair;
  */
 public class CrossoverRandManyAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends CrossoverAllocationBase<S, T> {
-
 	/** Constructor that allows to set the cross-over rate */
-	public CrossoverRandManyAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			double rate) {
-		super(systemModelAdapter, rate);
+	public CrossoverRandManyAllocation(double rate) {
+		super(rate);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java
index b70541b3a522259404949c72753b533e0a54eedc..551f5c07151b80aac1e77e73d5c380474ef200c1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java
@@ -20,7 +20,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.operators.crossover.Pair;
 
 /**
@@ -32,11 +31,9 @@ import org.opt4j.operators.crossover.Pair;
  */
 public class CrossoverSingleAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends CrossoverAllocationBase<S, T> {
-
 	/** Constructor that allows to set the cross-over rate */
-	public CrossoverSingleAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			double rate) {
-		super(systemModelAdapter, rate);
+	public CrossoverSingleAllocation(double rate) {
+		super(rate);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings
index 0bf9bbd4da74b020f3c005b9f42cd5295f3ed180..d4a80ce885e906d1490d8e732107cd2527c6880e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings
@@ -1 +1 @@
-CrossoverAllocationFailSilent.java d5b9611669bc320448e984c3c7f1a7f319ccbf7b RED
+CrossoverAllocationFailSilent.java 668b310ffa5544d81938bb957eabd1034c899219 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java
index 6d0e7f9854a43126e3346541b135434d8a1ef710..a3ea300ed0460b6222eec4067b161845cb201018 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java
@@ -18,7 +18,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.fai
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FailSilentTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FailSilentTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.CrossoverRandManyAllocation;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Performs the {@link CrossoverRandManyAllocation} operation on
@@ -29,8 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 public class CrossoverAllocationFailSilent extends
 		CrossoverRandManyAllocation<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
 	/** Constructs a resource allocation crossover operator for fail-silent execution model */
-	public CrossoverAllocationFailSilent(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			double rate) {
-		super(systemModelAdapter, rate);
+	public CrossoverAllocationFailSilent(double rate) {
+		super(rate);
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings
index fe20f0fa50da5bee72e8e7945d1dc15026f3d609..f6c755ce0d18a70338969873e01f19c73fc9d199 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings
@@ -1 +1 @@
-CrossoverAllocationFaultDetectionVoting.java f40741b1440a3638808016bf8cabf4c6f6da80e2 RED
+CrossoverAllocationFaultDetectionVoting.java 7ad980120a322084cfc0085106c91e4722a37a72 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java
index f30d57ad784864830a35ba621f9e592cfe36f8fd..03955ce30ac9329bdf5fbf32765f4aaa829c5f0b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java
@@ -18,7 +18,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.fau
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FaultDetectionVotingTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FaultDetectionVotingTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.CrossoverRandManyAllocation;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Performs the {@link CrossoverRandManyAllocation} operation on
@@ -29,8 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 public class CrossoverAllocationFaultDetectionVoting extends
 		CrossoverRandManyAllocation<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> {
 	/** Constructs a resource allocation crossover operator for fail-silent execution model */
-	public CrossoverAllocationFaultDetectionVoting(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
-		super(systemModelAdapter, rate);
+	public CrossoverAllocationFaultDetectionVoting(double rate) {
+		super(rate);
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings
index 842f012aa415f2a59561dc16431bf1f512ba431b..2eb432b3eea16c225fb3b0438fcdd7ade627bc1a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings
@@ -1,3 +1,3 @@
-MutateBase.java 954077b22d74f84b13ba10afbf1e94661d9c0347 RED
+MutateBase.java 270e544e90864adfb4e92f369db369eaab4a0f17 RED
 MutateOperatorModuleBase.java b17ea95c0f3e8ccbdd9005c416c6d9aff54a5517 RED
 NopMutateOperator.java c016ee80e96392d663e59d151b16ea546111cecf RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java
index 977b70a984c8c215506e9fd063eebc015c7010ec..74235bf78f594b887cba7a5005443eda80fc94f7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java
@@ -15,26 +15,16 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate;
 
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration;
 import org.opt4j.core.Genotype;
 import org.opt4j.operators.mutate.Mutate;
 
 /**
- * Base class for {@link Mutate} operators that provides the {@link SystemModelAdapter} and a random
- * number generator.
+ * Base class for {@link Mutate} operators that provide a random number generator.
  * 
  * @author diewald
  */
 public abstract class MutateBase<T extends Genotype> implements Mutate<T> {
 	/** Random generator */
 	protected RandomExploration rand = RandomExploration.getInstance();
-
-	/** Representation of input system */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
-	/** Constructs a new mutation operator for a given exploration run */
-	protected MutateBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings
index 943b9bdceb69a2a35ee4aee4856d7b1052b9b376..c6d7a4689daa3f3eab3773468ac126618dba602a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings
@@ -1,4 +1,4 @@
-MutatePartitionBase.java 855767f50de089baa974214c3f209dbf643a7c23 RED
-MutatePartitionDecrement.java 0f5157c637b29dea2edd4d99f56ae3f83b25345e RED
-MutatePartitionIncrement.java cfefa5d913c40a4d5b66e1d2fb0efd70022f7978 RED
-PartitionMappingModule.java a0f0eac2bda10c15611015266648735d6e9ac5be RED
+MutatePartitionBase.java bb0c22283f538959a4896dd7cfc9ef3686df5eb9 RED
+MutatePartitionDecrement.java a502f96ffaf4510828cdfc67346185f9fffdfbce RED
+MutatePartitionIncrement.java 121c27c9e8bf3df7364a4245ef6f93300f221931 RED
+PartitionMappingModule.java c39d8441752a67ef10398de2b810d178452fd326 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java
index aaff7118e3ec2a0d293fb5a2157a4c5778148ffa..6cb254826ed2feb9a1609eb9208c8060868c5fe5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java
@@ -22,8 +22,8 @@ import java.util.function.Function;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateBase;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Base class for the mutation functions operating on the Partition to ExecutionUnit mapping, e.g.
@@ -39,10 +39,8 @@ public abstract class MutatePartitionBase extends MutateBase<PartitionMappingEnc
 	private double rate;
 
 	/** Constructor. */
-	public MutatePartitionBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-		// TODO: The statement below hard-wires the module.
-		this.allocationTargets.addAll(systemModelAdapter.getDeploymentTargets());
+	public MutatePartitionBase(Collection<IExecutionUnitAdapter<?>> executionUnits) {
+		this.allocationTargets.addAll(executionUnits);
 		this.rate = 1 / allocationTargets.size();
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java
index d0214e9aa516246e7aebd57ade85d7082ad2b0c6..aa364f0d6e970ecc7e5d004c5d132878465951c0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java
@@ -15,12 +15,13 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.partitionmapping;
 
+import java.util.Collection;
 import java.util.function.Consumer;
 import java.util.stream.Stream;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Mutation operator that randomly selects resources from which to remove a random partition. The
@@ -29,10 +30,9 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author diewald
  */
 public class MutatePartitionDecrement extends MutatePartitionBase {
-
 	/** Constructor. */
-	public MutatePartitionDecrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public MutatePartitionDecrement(Collection<IExecutionUnitAdapter<?>> executionUnits) {
+		super(executionUnits);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java
index 54ea1dffd07c6d5bdbe4a385e05ac81ecace7676..4b8e804d7b8e18bbd422cd74a204c7c5d458a31e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java
@@ -15,12 +15,13 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.partitionmapping;
 
+import java.util.Collection;
 import java.util.function.Consumer;
 import java.util.stream.Stream;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Mutation operator that randomly selects resources for which to create a partition. The
@@ -29,10 +30,9 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author diewald
  */
 public class MutatePartitionIncrement extends MutatePartitionBase {
-
 	/** Constructor. */
-	public MutatePartitionIncrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public MutatePartitionIncrement(Collection<IExecutionUnitAdapter<?>> executionUnits) {
+		super(executionUnits);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java
index 9a775f934fec0ba87e436a5ca065186c33318030..0eb2323ca27acf3ad32a973984a127a006e4f4aa 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java
@@ -15,21 +15,23 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.partitionmapping;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 
 /**
  * 
  * @author diewald
  */
 public class PartitionMappingModule extends MutateOperatorModuleBase {
-	/** Representation of input system */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
+	/** {@link IExecutionUnitAdapter}s available as allocation targets. */
+	Collection<IExecutionUnitAdapter<?>> executionUnits;
 
-	/** Constructor where the input system model has to be specified. */
-	public PartitionMappingModule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	/** Constructor. */
+	public PartitionMappingModule(Collection<IExecutionUnitAdapter<?>> executionUnits) {
+		this.executionUnits = executionUnits;
 	}
 
 	/** {@inheritDoc} */
@@ -38,8 +40,8 @@ public class PartitionMappingModule extends MutateOperatorModuleBase {
 		super.config();
 
 		addOperatorInstance(PartitionMappingEncoding.class,
-				new MutatePartitionDecrement(systemModelAdapter));
+				new MutatePartitionDecrement(executionUnits));
 		addOperatorInstance(PartitionMappingEncoding.class,
-				new MutatePartitionIncrement(systemModelAdapter));
+				new MutatePartitionIncrement(executionUnits));
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings
index c33bb16eeb399bf4e857e91adf0fc6dcae7c7040..fc52acc09f158e1bed58144091747b9af0b4f331 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings
@@ -1,5 +1,5 @@
-MutateChannelNumber.java 68458da7fddd5359d667916e865e07b2afabc963 RED
-MutateConnectedDiagnosisPresent.java d8484434cd4984fdb1d13ed6f786533e5e2c7b28 RED
-MutateSafetyArchBase.java 912851bc3df719910ffa1bc384ac4a457472da74 RED
-MutateSafetyFunctionArchitectureModule.java 543c5384f56e4b41da417af3e7067a29e477c2f1 RED
-MutateSafetyTriggerSignalNumber.java a77f526222524c855feb82197fdf7677abf956f0 RED
+MutateChannelNumber.java 3cc953a73ceeff9f4d78d6ceccd003310f71097a RED
+MutateConnectedDiagnosisPresent.java 2b6053d44d11bcab37ba7fa4b780c17538af5fbf RED
+MutateSafetyArchBase.java 940804b02cdf0f631b870a5458a7782835b2cdef RED
+MutateSafetyFunctionArchitectureModule.java f45953e9f11655d90295f9a25ce46889b5c7f14d RED
+MutateSafetyTriggerSignalNumber.java c883a170a4d9a6cc5a1b1ee86586dd79b44c2ab4 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java
index c0e6ad96838ee68053c6356c902868eb226a9ad5..2e49168b8d78cf98669babe400f47e6beb2fcfe5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java
@@ -19,7 +19,6 @@ import java.util.Collection;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEntry;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.operators.mutate.Mutate;
 
 /**
@@ -28,12 +27,6 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  */
 public class MutateChannelNumber<C> extends MutateSafetyArchBase<C> {
-
-	/** Constructor. */
-	protected MutateChannelNumber(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public void mutate(SafetyFunctionArchEncoding<C> genotype, double p) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java
index 14fa9a394fbed92a5063baf22dc3e1b111e59aab..9089e7c8c0fdf2f2b2fe3a91495090dcd840efab 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java
@@ -19,7 +19,6 @@ import java.util.Collection;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEntry;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.operators.mutate.Mutate;
 
 /**
@@ -29,13 +28,6 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  */
 public class MutateConnectedDiagnosisPresent<C> extends MutateSafetyArchBase<C> {
-
-	/** Constructor. */
-	protected MutateConnectedDiagnosisPresent(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public void mutate(SafetyFunctionArchEncoding<C> genotype, double p) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java
index 637de8cee1d3fa637fe82d956e37a0edec7b4cf0..572ca678c91ba6b7288ae672312c89d67e117bd9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java
@@ -21,7 +21,6 @@ import java.util.Collection;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateBase;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.operators.mutate.Mutate;
 
 /**
@@ -31,12 +30,6 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  */
 public abstract class MutateSafetyArchBase<C> extends MutateBase<SafetyFunctionArchEncoding<C>> {
-
-	/** Constructor. */
-	protected MutateSafetyArchBase(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-	}
-
 	/**
 	 * Selects a collection of {@link SafetyFunctionArchEntry}s from the given
 	 * {@link SafetyFunctionArchEncoding} whose element number depends on the given probability
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java
index afe8727137c6e0ad85b07a183435872a3cb8d212..005944541da58e07816b67cd7ab15872b7503dfc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java
@@ -17,7 +17,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.safety
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.core.Genotype;
 import org.opt4j.operators.mutate.Mutate;
 
@@ -30,26 +29,16 @@ import com.google.inject.Module;
  * @author diewald
  */
 public class MutateSafetyFunctionArchitectureModule extends MutateOperatorModuleBase {
-	/** Representation of input system */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
-	/** Constructor where the input system model has to be specified. */
-	public MutateSafetyFunctionArchitectureModule(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
-
 	/** {@inheritDoc} */
 	@SuppressWarnings({"rawtypes", "unchecked"})
 	@Override
 	public void config() {
 		super.config();
 
+		addOperatorInstance(SafetyFunctionArchEncoding.class, new MutateChannelNumber());
 		addOperatorInstance(SafetyFunctionArchEncoding.class,
-				new MutateChannelNumber(systemModelAdapter));
-		addOperatorInstance(SafetyFunctionArchEncoding.class,
-				new MutateSafetyTriggerSignalNumber(systemModelAdapter));
+				new MutateSafetyTriggerSignalNumber());
 		addOperatorInstance(SafetyFunctionArchEncoding.class,
-				new MutateConnectedDiagnosisPresent(systemModelAdapter));
+				new MutateConnectedDiagnosisPresent());
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java
index f6ebb9ce03c4ac30cf5fdf53aa56bba6159badbe..385efb314ad5faabc4a18f25d189a413b6c2ac64 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java
@@ -19,7 +19,6 @@ import java.util.Collection;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEntry;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.operators.mutate.Mutate;
 
 /**
@@ -29,13 +28,6 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  */
 public class MutateSafetyTriggerSignalNumber<C> extends MutateSafetyArchBase<C> {
-
-	/** Constructor. */
-	protected MutateSafetyTriggerSignalNumber(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public void mutate(SafetyFunctionArchEncoding<C> genotype, double p) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings
index 9f9030912734f220e223e43f9d10965f42eac849..495a3e3ef0c2b62ff5acec5fa6608517bb4d9961 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings
@@ -1,2 +1,2 @@
-MutateTaskInstance.java 770afdf378f8f753f4a5615f88ecf39a5d52777a RED
-MutateTaskInstanceModule.java 545184274a31861d51c915d787e9ae6b721daf4c RED
+MutateTaskInstance.java 7bb9d0cd22886796e77d7d2ba4b46323a88e4957 RED
+MutateTaskInstanceModule.java 2d1a1227e1f14028d00ec77a8b2d19bb1437cf5e RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java
index 880a43dc309228f76e3e7ef977206124facec75d..0c101e73c2605c3ce7338a4894ed7fc4b388e880 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java
@@ -23,7 +23,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.in
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping.MutateTasksBase;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 import org.opt4j.operators.mutate.Mutate;
 
@@ -47,13 +46,12 @@ public class MutateTaskInstance extends
 	private Collection<ITaskAdapter<?>> abstractComponents;
 
 	/** Constructor. */
-	public MutateTaskInstance(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public MutateTaskInstance(Collection<ITaskAdapter<?>> tasks) {
+		super(tasks);
 		abstractComponents = new HashSet<ITaskAdapter<?>>();
-
-		for(ITaskAdapter<?> deployableComponent : systemModelAdapter.getDeployableComponents()) {
-			if(deployableComponent.isInstantiationRequired()) {
-				abstractComponents.add(deployableComponent);
+		for(ITaskAdapter<?> curTask : tasks) {
+			if(curTask.isInstantiationRequired()) {
+				abstractComponents.add(curTask);
 			}
 		}
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java
index 29586e3bc65c270de19b88aac2b49c165ab43134..4ec43fc3539409b360dd3c4939d22cc1b487e6b5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java
@@ -15,10 +15,12 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskinstantiation;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping.MutateTaskMappingModule;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.opt4j.operators.mutate.Mutate;
 
 import com.google.inject.Module;
@@ -36,12 +38,12 @@ import com.google.inject.Module;
  */
 public class MutateTaskInstanceModule extends MutateOperatorModuleBase {
 
-	/** Representation of input system */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
+	/** Representation of the {@link ITaskAdapter}s to deploy. */
+	private Collection<ITaskAdapter<?>> tasks;
 
 	/** Constructor where the input system model has to be specified. */
-	public MutateTaskInstanceModule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public MutateTaskInstanceModule(Collection<ITaskAdapter<?>> tasks) {
+		this.tasks = tasks;
 	}
 
 	/** {@inheritDoc} */
@@ -49,7 +51,6 @@ public class MutateTaskInstanceModule extends MutateOperatorModuleBase {
 	public void config() {
 		super.config();
 
-		addOperatorInstance(InstantiatedTaskMappingEncoding.class,
-				new MutateTaskInstance(systemModelAdapter));
+		addOperatorInstance(InstantiatedTaskMappingEncoding.class, new MutateTaskInstance(tasks));
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings
index 2b396e582401fec112545cd14e27e94956a2656a..8cb12bd9d8d8049ceb407e00195aee77a2dcaf0e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings
@@ -1,6 +1,6 @@
-MutateAllocation.java 0994667e10022be731b4cb6c04a59d0b562eb575 RED
-MutateRedundancy.java 916b93f4ee2eb953033daa38273cc2360234c89e RED
-MutateRedundancyDecrement.java 38c930eb6d5648d58e31d5c0bb39f7edf50f9a87 RED
-MutateRedundancyIncrement.java 5256080dcaab5482c33915fd8c78e0bb3c3fbcd6 RED
-MutateTaskMappingModule.java 3af775566334bb030f5f54a98f746e59ebb4cac7 RED
-MutateTasksBase.java 0c2628eac42373cac6c69ec8a7ac8542a40d2a36 RED
+MutateAllocation.java 6de15219d302a04e89891372be98c54320d1a97e RED
+MutateRedundancy.java f8d8eb0b1404e211a3b4c46a22dd0f8b3557530e RED
+MutateRedundancyDecrement.java 087a249c93eb7f247b880bc82922337edb47c097 RED
+MutateRedundancyIncrement.java 3a7aa2fc44b81982a77ca4daff458cab2eed6454 RED
+MutateTaskMappingModule.java ac26c4c284593e2a326ff4ecb22d4282cab41ebf RED
+MutateTasksBase.java e1df983535ca07c9e90081fd64c4a605b178d033 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java
index 7694d58c2fffb29b1f3bd8189e7085142e47cd04..cee21301311e7e1bc1164f152e11760297bbd793 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java
@@ -24,9 +24,7 @@ import java.util.List;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 
 /**
@@ -37,10 +35,9 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
  */
 public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends MutateTasksBase<S, T> {
-
 	/** Constructs a new allocation mutation operator for a given exploration run */
-	public MutateAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public MutateAllocation(Collection<ITaskAdapter<?>> tasks) {
+		super(tasks);
 	}
 
 	/** Constant to enable / disable replication count check. */
@@ -75,7 +72,7 @@ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partit
 	/** Checks the replication count and prints a message in case of errors. */
 	private void checkReplicationCount(T encoding) {
 		if(CHECK_REPLICATION_COUNT) {
-			for(ITaskAdapter<?> currentComponent : systemModelAdapter.getDeployableComponents()) {
+			for(ITaskAdapter<?> currentComponent : tasks) {
 				if(encoding.getAllocatedResourcesFor(currentComponent).size() != 1) {
 					System.out.println("Encoding replications exceed the allowed amount");
 				}
@@ -115,9 +112,8 @@ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partit
 			int selExecU = max(0, rand.nextInt(targets.size()) - 1);
 			selectedEntry.resetTarget(targets.get(selExecU));
 		} else {
-			List<IExecutionUnitAdapter<?>> physExecUnits =
-					new ArrayList<>(systemModelAdapter.getDeploymentTargets());
-			List<Partition> targets = encoding.getAllowedPartitionTargets(physExecUnits);
+			List<Partition> targets = (List<Partition>)(Collection<?>)encoding
+					.getAllowedAllocations(deployableComponent);
 			int selExecU = max(0, rand.nextInt(targets.size()) - 1);
 			selectedEntry.resetTarget(targets.get(selExecU));
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java
index 4a6b67df2e2a99a6cc9b90feef437abfad0ebc9b..4b8f9ba0a9aa542bb4d3d168115f3fb01cd31829 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java
@@ -23,7 +23,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint.InternalReplicationConstraint;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 
 /**
@@ -33,10 +32,9 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
  */
 public abstract class MutateRedundancy<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends MutateTasksBase<S, T> {
-
 	/** Constructs a new redundancy mutation operator for a given exploration run */
-	MutateRedundancy(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	MutateRedundancy(Collection<ITaskAdapter<?>> tasks) {
+		super(tasks);
 	}
 
 	/** {@inheritDoc} */
@@ -47,8 +45,13 @@ public abstract class MutateRedundancy<S extends TaskMappingEntry<ITaskAdapter<?
 				// TODO: remove filter for fixed Deployment: It is not needed.
 				// No replication for Components with a fixed Deployment & Components which shall
 				// not be replicated (see the SystemModelAdapter).
-				if(!encoding.hasLimitedDeployment(deployableComponent) && systemModelAdapter
-						.getReplicableComponents().contains(deployableComponent)) {
+				// TODO(#3264)
+				if(!encoding
+						.hasLimitedDeployment(deployableComponent) /*
+																	 * && systemModelAdapter
+																	 * .getReplicableComponents().
+																	 * contains(deployableComponent)
+																	 */) {
 
 					// TODO: Model minimum and maximum replication count as constraint?
 					// Do the actual mutation of the allocation of the current request
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java
index 62001365d323bbcd20693228f7334e6161e2a5a2..d2b176412ccf746641e7f7ebeade83f94de5d3dc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java
@@ -15,13 +15,13 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Mutate operator that decreases the redundancy of allocations.
@@ -30,10 +30,9 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  */
 public class MutateRedundancyDecrement<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends MutateRedundancy<S, T> {
-
 	/** Constructs a new decrement redundancy mutation operator for a given exploration run */
-	public MutateRedundancyDecrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public MutateRedundancyDecrement(Collection<ITaskAdapter<?>> tasks) {
+		super(tasks);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java
index 9fd1c7a9410555ce5ffd7713569f7ba5876f85b7..6fb9e2312877fa57bb8970f167564f186008def8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java
@@ -22,7 +22,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmappi
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 
 /**
@@ -33,8 +32,8 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 public class MutateRedundancyIncrement<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends MutateRedundancy<S, T> {
 	/** Constructs a new increment redundancy mutation operator for a given exploration run */
-	public MutateRedundancyIncrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public MutateRedundancyIncrement(Collection<ITaskAdapter<?>> tasks) {
+		super(tasks);
 	}
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java
index 278e9df95b2f828b9dab69b28fba6e0c3704cead..4f2d680a94c6aadb99eb576b66dbd3c06f193d33 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java
@@ -15,12 +15,14 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.opt4j.operators.mutate.Mutate;
 
 import com.google.inject.Module;
@@ -33,11 +35,11 @@ import com.google.inject.Module;
  */
 public class MutateTaskMappingModule extends MutateOperatorModuleBase {
 	/** Representation of input system */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
+	private Collection<ITaskAdapter<?>> tasks;
 
 	/** Constructor where the input system model has to be specified. */
-	public MutateTaskMappingModule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public MutateTaskMappingModule(Collection<ITaskAdapter<?>> tasks) {
+		this.tasks = tasks;
 	}
 
 	/** {@inheritDoc} */
@@ -48,10 +50,10 @@ public class MutateTaskMappingModule extends MutateOperatorModuleBase {
 				TaskMappingFactory.getInstance();
 
 		addOperatorInstance(AbstractTaskMappingEncoding.class,
-				tmFactory.createMutateAllocationOperator(systemModelAdapter));
+				tmFactory.createMutateAllocationOperator(tasks));
 		addOperatorInstance(AbstractTaskMappingEncoding.class,
-				tmFactory.createMutateRedundancyDecrementOperator(systemModelAdapter));
+				tmFactory.createMutateRedundancyDecrementOperator(tasks));
 		addOperatorInstance(AbstractTaskMappingEncoding.class,
-				tmFactory.createMutateRedundancyIncrementOperator(systemModelAdapter));
+				tmFactory.createMutateRedundancyIncrementOperator(tasks));
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java
index 2173de78708d7ad3bfa940385d72a1c9e1eb7a89..237e281449ec0601623873db8d07ffe0c94f80bf 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java
@@ -15,12 +15,13 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateBase;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Base class for mutation operator defined for {@link TaskMappingEncoding}s.
@@ -29,9 +30,13 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  */
 public abstract class MutateTasksBase<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends MutateBase<T> {
+	/** {@link ITaskAdapter}s that shall be allocated. */
+	protected Collection<ITaskAdapter<?>> tasks;
 
 	/** Constructor. */
-	protected MutateTasksBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	protected MutateTasksBase(Collection<ITaskAdapter<?>> tasks) {
+		super();
+
+		this.tasks = tasks;
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings
index 5609b269b682993040ac6ee7e31e7e26af391024..d4bd2506a05caa5d50bebda161d4c9c9f24d54e7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings
@@ -1,8 +1,8 @@
 ArchExpSubDecoder.java b53315dae39fd6afdae22e2412af5cf9dff5e574 RED
 ArchitectureDecoder.java 9a002b7e7ecf05835276dd0302faf0bd7c3aa656 RED
 ArchitectureExplorationProblemModule.java 650201476e17b6c7df1b9844e69fe979d20f04f6 RED
-DseProblemModuleBase.java ad44baebb3c417c3778672f10ae4f3e61f1fa932 RED
+DseProblemModuleBase.java e088ed91aae6391bdec7ba93df65e677665f9596 RED
 EvaluatorWrapper.java 47ff0b2df7f75e232fa269b55750f0e2c408b08c RED
 ExplorationGoalPriorityMultiEvaluator.java 0f900f86c8adc14b69d95bb8eb3a34ea1ed2d41e RED
 ProblemModuleBase.java fb1401b846d001dfc78bbd8b8881929788b10d41 RED
-StrictTTDecoder.java 0f0719bb800da1a9308dd1049f2aeedf80efef4b RED
+StrictTTDecoder.java 293d4e08d0ad1474aaa9c234807d140291cf40ae RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java
index e8661b3e7f48aa5000403ee5571b9aa1daee9b47..77cd950ad2c716ff3fa212765ffb5a6bfb5cf583 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java
@@ -57,6 +57,7 @@ public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? e
 	protected DseSpecification dse;
 
 	/** Representation of input system */
+	// TODO(#3270)
 	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
 
 	/** Set of requested {@link ComposablePhenotype}s that form the solution set. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java
index 59d11e624c94125a9a432020a6359093b48e6a2c..d44d02b5f866717ebaa40a8a1a32225852e56af8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java
@@ -32,7 +32,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.comm.TDMABusScheduler;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.EDFSchedulerBase;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
@@ -47,10 +46,6 @@ import com.google.inject.Inject;
  */
 public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ComposableDecoderBase<T, StrictTTSchedule<S, T>> implements ArchExpSubDecoder {
-
-	/** Representation of input system model */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Underlying EDF task scheduler */
 	private EDFSchedulerBase<S, T> simpleEDFScheduler;
 
@@ -63,17 +58,14 @@ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends I
 	 */
 	@SuppressWarnings("unchecked")
 	@Inject
-	public StrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DseSpecification explorationDefinition) {
-		this.systemModelAdapter = systemModelAdapter;
+	public StrictTTDecoder(DseSpecification explorationDefinition) {
 
 		TaskMappingFactory<?, ?> tmFactory = TaskMappingFactory.getInstance();
 
-		simpleEDFScheduler =
-				(EDFSchedulerBase<S, T>)tmFactory.createEDFScheduler(systemModelAdapter,
-						explorationDefinition.getTargetSpecification());
-		simpleBusScheduler = new TDMABusScheduler<S, T>(systemModelAdapter,
-				explorationDefinition.getTargetSpecification());
+		simpleEDFScheduler = (EDFSchedulerBase<S, T>)tmFactory
+				.createEDFScheduler(explorationDefinition.getTargetSpecification());
+		simpleBusScheduler =
+				new TDMABusScheduler<S, T>(explorationDefinition.getTargetSpecification());
 	}
 
 	/** {@inheritDoc} */
@@ -94,7 +86,7 @@ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends I
 
 		// TODO: Externalize the validation such that the encoding is not required to be passed to
 		// the constructor (is there for validation purposes)
-		StrictTTSchedule<S, T> schedule = new StrictTTSchedule<S, T>(systemModelAdapter, genotype);
+		StrictTTSchedule<S, T> schedule = new StrictTTSchedule<S, T>(genotype);
 		simpleEDFScheduler.schedule(acycItgEnc, partEnc, genotype, schedule);
 
 		assert (schedule.validateSchedule(true));
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
index 568e28eaae419a81a36f3f09d01566cc97f1b99b..fef09303b7322b35a54115be91105ff982fb57d1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
@@ -1 +1 @@
-MessageDecoder.java 2785a0a781c6b6f49be33104599314c309fd1329 RED
+MessageDecoder.java 155958e769b3ddb18deac0d2ff595977f5252192 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
index fbace084d8111d8508f90a285dcf505d85fe3013..7ef5faf523fd3a8e496ce58043b830c1b7f041c7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
@@ -23,9 +23,11 @@ import java.util.Map;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.comm.MessageEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.AbstractTaskGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.InstantiatedTaskGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.ComposableDecoder;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.ComposableDecoderBase;
@@ -34,7 +36,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.MessageGenerator;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.IMessageRouter;
@@ -54,10 +55,6 @@ import com.google.inject.Inject;
  */
 public class MessageDecoder<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>>
 		extends ComposableDecoderBase<T, MessageEncoding<S, T>> {
-
-	/** References the input system models. */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/**
 	 * {@link MessageGenerator} which analyzes an {@link InstantiatedTaskMappingEncoding} and
 	 * determines the required {@link Message}s.
@@ -69,10 +66,9 @@ public class MessageDecoder<S extends TaskMappingEntry<ITaskAdapter<?>, Partitio
 
 	/** Default constructor that requires a reference to the input models. */
 	@Inject
-	public MessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-		messageGenerator = new MessageGenerator<S, T>(systemModelAdapter);
-		messageRouter = new MessageRouter(systemModelAdapter);
+	public MessageDecoder() {
+		messageGenerator = new MessageGenerator<S, T>();
+		messageRouter = new MessageRouter();
 	}
 
 	/**
@@ -87,8 +83,12 @@ public class MessageDecoder<S extends TaskMappingEntry<ITaskAdapter<?>, Partitio
 				decodedPhenotypes.getEncoding(PlatformCommunicationGraphEncoding.class);
 		assert (pcgEncoding != null) : "The required platform communication graph encoding could not" +
 				" be found in the map of already decoded phenotypes.";
+		@SuppressWarnings("unchecked") AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, ?> atgEnc =
+				decodedPhenotypes.getEncoding(AbstractTaskGraphEncoding.class);
+		assert (pcgEncoding != null) : "The required atstract task graph encoding encoding could not" +
+				" be found in the map of already decoded phenotypes.";
 
-		Collection<Message> generatedMessages = messageGenerator.generateMessages(genotype);
+		Collection<Message> generatedMessages = messageGenerator.generateMessages(genotype, atgEnc);
 		Map<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>> messageRouteMap =
 				messageRouter.calculateMessageRoutes(generatedMessages, pcgEncoding,
 						RoutingStrategy.SHORTEST_PATH);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings
index 0aab7652291c0f1e2b1dc3de75f82528a72eabd3..a198648b1b2829eee5de1bf2a29b11906333d963 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings
@@ -1,2 +1,2 @@
-InstantiatedTaskMappingDecoder.java fabe128ecd7f2a651384e4a22c8035c399226a2e RED
-InstantiatedTaskMappingDecoderAcyclic.java 9356d1cba4e983db4558b6f5b9b39dde876dc396 RED
+InstantiatedTaskMappingDecoder.java 7c814ec27683f24c4122d1c977ab47b76f36a379 RED
+InstantiatedTaskMappingDecoderAcyclic.java 9d2823e418fe0dae98fbfe00427b5bf6fe3ceb3b RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java
index 07d14c45191dc1c5d20eea7646592a90670d86d9..e73da437e703017adacce54f6778f553180c02b2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java
@@ -34,7 +34,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
@@ -50,15 +49,9 @@ import com.google.inject.Inject;
  */
 public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEntry, C> extends
 		ComposableDecoderBase<InstantiatedTaskMappingEncoding<T>, InstantiatedTaskGraphEncoding<T, C>> {
-
-	/** Representation of input system model */
-	private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Constructs a new decoder to generate {@link InstantiatedTaskGraphEncoding}. */
 	@Inject
-	public InstantiatedTaskMappingDecoder(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public InstantiatedTaskMappingDecoder() {
 	}
 
 	/** {@inheritDoc} */
@@ -77,7 +70,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 		TaskGraphInstantiator<DefaultTaskGraph<?>> tgInstatiator =
 				new TaskGraphInstantiator<>(tgColl, genotype);
 		InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>(
-				tgInstatiator.createMultipleInstanceTaskGraphs(tgColl));
+				tgInstatiator.createMultipleInstanceTaskGraphs(tgColl), atgEnc.getHyperPeriod());
 
 		if(sfEnc != null) {
 			removeInterSafetyChannelSignals(sfEnc, itgEnc);
@@ -128,11 +121,11 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 				ITaskAdapter<?> outputUnit =
 						sfEntry.getSafetyFunctionAdapter().getOutputComponent();
 				// TODO: only for a single diag unit.
-				Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getTasks()
-						.stream().filter(d -> sfUnits.contains(d.getReplacedComponent()))
+				Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getTasks().stream()
+						.filter(d -> sfUnits.contains(d.getReplacedComponent()))
 						.collect(Collectors.toList());
-				Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getTasks()
-						.stream().filter(d -> diagUnits.contains(d.getReplacedComponent()))
+				Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getTasks().stream()
+						.filter(d -> diagUnits.contains(d.getReplacedComponent()))
 						.collect(Collectors.toList());
 				Collection<ITaskAdapter<?>> outComps = itgEnc.getTasks().stream()
 						.filter(d -> d.getObject() == outputUnit.getObject())
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java
index 07e216c2d7fcfefcc59e6a3908712d7ffe0ba0ea..979d34e0bfc76cc39ac201b3d9d34500f44ce30d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java
@@ -29,7 +29,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.exception.DecodingException;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 import com.google.inject.Inject;
 
@@ -42,15 +41,9 @@ import com.google.inject.Inject;
 public class InstantiatedTaskMappingDecoderAcyclic<T extends InstantiatedTaskMappingEntry, C>
 		extends
 		ComposableDecoderBase<InstantiatedTaskMappingEncoding<T>, InstantiatedAcyclicTaskGraphEncoding<T, C>> {
-
-	/** Representation of input system model */
-	private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Constructs a new decoder to generate {@link InstantiatedTaskGraphEncoding}. */
 	@Inject
-	public InstantiatedTaskMappingDecoderAcyclic(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public InstantiatedTaskMappingDecoderAcyclic() {
 	}
 
 	/** {@inheritDoc} */
@@ -68,7 +61,8 @@ public class InstantiatedTaskMappingDecoderAcyclic<T extends InstantiatedTaskMap
 		assert (itgEnc != null) : "The required abstract task graph encoding could not be found in the map of already decoded phenotypes.";
 
 		InstantiatedAcyclicTaskGraphEncoding<T, C> iAtgEnc =
-				new InstantiatedAcyclicTaskGraphEncoding<T, C>(itgEnc.getTaskGraphs());
+				new InstantiatedAcyclicTaskGraphEncoding<T, C>(itgEnc.getTaskGraphs(),
+						atgEnc.getHyperPeriod());
 
 		return iAtgEnc;
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings
index c764bfa6423a9ec6cc7927c6c65fde7f4030c695..5449de7c96686a70c22c13adb08e418a1e029dd0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings
@@ -1,4 +1,4 @@
 SFEncodingDecoder.java 8e1594c92aa5e0c23d07038bb63db5b483c4f727 RED
-SFGraphDecoder.java 2b022c6eaf84224576a24b816cfc5a47c09635da RED
+SFGraphDecoder.java 833d6662ea99c8c7b92ba229c117f200a0300667 RED
 SFMappingConstraintDecoder.java b347e65e6b805103e133386ef76c2297a829559a RED
 SFMappingDecoder.java ec3d91b8cacb5743517d87a1c9eed347549d8acc RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java
index 320c2627b93856b884f9237d29bba55c3acd90d8..ac5f05de994a6f42eadaade36b87e99575384963 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java
@@ -46,9 +46,13 @@ import com.google.inject.Inject;
 public class SFGraphDecoder<C>
 		extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, SafeTaskGraphEncoding<C>>
 		implements ArchExpSubDecoder {
+	/** Task Graphs extracted from the input models. */
+	Collection<TaskGraph> origTaskGraphs;
+
 	/** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */
 	@Inject
-	public SFGraphDecoder() {
+	public SFGraphDecoder(Collection<TaskGraph> origTaskGraphs) {
+		this.origTaskGraphs = origTaskGraphs;
 	}
 
 	/** {@inheritDoc} */
@@ -58,11 +62,15 @@ public class SFGraphDecoder<C>
 		if(genotype == null) {
 			return null;
 		}
+
+		@SuppressWarnings("unchecked") AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C> atgEnc =
+				phenotypetypeMap.getEncoding(AbstractTaskGraphEncoding.class);
 		// TODO: we should dynamically retrieve the encoding here, since the statement below assumes
 		// that this decoding step is performed before others.
 		// FIXME: Find a way to pass the original taks graph. We might have a circular dependency
 		// here.
-		SafeTaskGraphEncoding<C> encoding = new SafeTaskGraphEncoding<>(Collections.emptySet());
+		SafeTaskGraphEncoding<C> encoding =
+				new SafeTaskGraphEncoding<>(origTaskGraphs, atgEnc.getHyperPeriod());
 
 		for(SafetyFunctionArchEntry<C> sFAEntry : genotype.getAllEntries()) {
 			boolean diagPresent = sFAEntry.isDiagnosicUnitPresent();
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings
index b74d77f80f7669ae9990fe924dc01fb7f36336c1..5ad329f6ef94e61f132c7662257568298540db56 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings
@@ -1,4 +1,4 @@
-AbstractTaskMappingDecoder.java edd7bd622640dfd8359d4f55b8f1f74839970823 RED
-FailSilentAbstractTaskMappingDecoder.java a443781caf223417b77a6163dcbb4d7df26f63ab RED
-FaultDetectionVotingAbstractTaskMappingDecoder.java 2ab809a5ca6bd2530d0c8eec167d4aa0d9b1ab37 RED
+AbstractTaskMappingDecoder.java 2f3aa1860a3f10224bd8f5eab4ee07f136f44065 RED
+FailSilentAbstractTaskMappingDecoder.java 5e93b07f400d697f318d029d00c674c715513422 RED
+FaultDetectionVotingAbstractTaskMappingDecoder.java 8d3613f856787bf667ef2bcdae441375cdb9e989 RED
 TaskInstanceResourceAlignmentDecoder.java 116f72a16a02c9aac617cc4c9684cd583b87e1b6 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java
index 15cd38f17a7c3a2dd820c2ff6c9b778593c1dae9..52a08984ae1270bba11cf3a215009c9d8c1f9a17 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java
@@ -25,7 +25,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.in
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.ComposableDecoderBase;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchExpSubDecoder;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.opt4j.core.problem.Decoder;
 
@@ -39,18 +38,12 @@ import com.google.inject.Inject;
  */
 public abstract class AbstractTaskMappingDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ComposableDecoderBase<AbstractTaskMappingEncoding, T> implements ArchExpSubDecoder {
-
-	/** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */
-	SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Reference to the {@link DseSpecification} specification that defines the DSE. */
 	DseSpecification explorationDefinition;
 
 	/** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */
 	@Inject
-	public AbstractTaskMappingDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DseSpecification explorationDefinition) {
-		this.systemModelAdapter = systemModelAdapter;
+	public AbstractTaskMappingDecoder(DseSpecification explorationDefinition) {
 		this.explorationDefinition = explorationDefinition;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java
index edb981d84db3fda0d8960604e6b1aec5739fc96e..2abf74f99f64c158f783f20d3f65d6ffa4667c09 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java
@@ -31,7 +31,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 
 /**
@@ -44,10 +43,8 @@ public class FailSilentAbstractTaskMappingDecoder extends
 		AbstractTaskMappingDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
 
 	/** Constructor. */
-	public FailSilentAbstractTaskMappingDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DseSpecification explorationDefinition) {
-		super(systemModelAdapter, explorationDefinition);
+	public FailSilentAbstractTaskMappingDecoder(DseSpecification explorationDefinition) {
+		super(explorationDefinition);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java
index eee6b950ebd254d7cd1e039ce66fccb5b08919c7..c8ec40520b37d052055a9f00971549f51e36ce20 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java
@@ -30,7 +30,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.opt4j.core.problem.Decoder;
 
@@ -44,10 +43,8 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder extends
 		AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> {
 
 	/** Constructor. */
-	public FaultDetectionVotingAbstractTaskMappingDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DseSpecification explorationDefinition) {
-		super(systemModelAdapter, explorationDefinition);
+	public FaultDetectionVotingAbstractTaskMappingDecoder(DseSpecification explorationDefinition) {
+		super(explorationDefinition);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings
index 8f1f27b5c4196a8d466009ca102eb889a45f1b09..6f59fb7e70c3b77b8e9146b5e24271d0255c65a7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings
@@ -1 +1 @@
-RepairModuleBase.java fa29abd77e23ccf196105cceac50e216d0384252 RED
+RepairModuleBase.java 9e491c2e726c0d72370b3ae71813aed1a4932f83 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java
index d7f221ab2467ff19e258de5d49f08f0b7e8857ab..8ad46913cc775f17607ac5ae660248f4a01910f5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java
@@ -15,7 +15,6 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.repair;
 
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.service.IRepairModule;
 import org.opt4j.core.Genotype;
 
@@ -25,15 +24,6 @@ import org.opt4j.core.Genotype;
  * @author diewald
  */
 public abstract class RepairModuleBase<T extends Genotype> implements IRepairModule<T> {
-
-	/** References the input model. */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
-	/** Creates an evaluator for a given exploration goal */
-	protected RepairModuleBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public String getIntrospectionLabel() {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings
index 9318b140ba1368b652e89caf7b6a4a53fcebeca4..de60db1371f7da6ef7c4ad36a75056231752f862 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings
@@ -2,5 +2,5 @@ ArchExpSubSolution.java 3bb56206fe70f19f7cb6aee575eba552ce9bbc4e RED
 ArchitectureSolution.java 8ba40ce339c4195641ed1b67c79718e297d66e4c RED
 IExplorationSolution.java a6153937197358907ceec46606a7f28620c26f2b RED
 IScheduleSolution.java 8a2959147bdca874fd43b1591bc5471b68c04333 RED
-StrictTTSchedule.java 3a6c9f1e00ff66a52bb2891c00a7ebb84ddf2192 RED
+StrictTTSchedule.java eec7ffce1047cec7b869a938fd428e56cd705163 RED
 TimeSlot.java 499ba8b40aca05351c4baf03d104dd20e5eb19d1 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java
index 156e81c03244557fa6774d2584d13a114c813bd2..d6685ea02516e37da2b62cacd97f519fb211bf4b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java
@@ -33,7 +33,6 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
@@ -94,30 +93,22 @@ public class StrictTTSchedule<S extends TaskMappingEntry<ITaskAdapter<?>, Partit
 	/** Maintain a reference to the encoding. */
 	private T encoding;
 
-	/** Representation of input system model */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/**
 	 * Constructor that creates a time-triggered schedule for a given encoding (mapping) and
 	 * optionally directly performs the scheduling.
 	 */
-	public StrictTTSchedule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			T encoding) {
+	public StrictTTSchedule(T encoding) {
+		this.encoding = encoding;
 		schedule = new HashMap<IResourceAdapter<?>, ResourceSchedule>();
 		timeSlotsOfMappingEntries = new HashMap<S, TimeSlot>();
-
-		this.systemModelAdapter = systemModelAdapter;
-		this.encoding = encoding;
 	}
 
 	/** Copy constructor. */
 	public StrictTTSchedule(StrictTTSchedule<S, T> schedule) {
+		this.encoding = schedule.encoding;
 		this.schedule = new HashMap<IResourceAdapter<?>, ResourceSchedule>();
 		timeSlotsOfMappingEntries = new HashMap<S, TimeSlot>();
 
-		this.systemModelAdapter = schedule.systemModelAdapter;
-		this.encoding = schedule.encoding;
-
 		for(Entry<IResourceAdapter<?>, ResourceSchedule> resSched : schedule.schedule.entrySet()) {
 			ResourceSchedule newSched = new ResourceSchedule();
 			newSched.putAll(resSched.getValue());
@@ -163,8 +154,7 @@ public class StrictTTSchedule<S extends TaskMappingEntry<ITaskAdapter<?>, Partit
 					}
 				}
 			}
-			if(compEncNum != compSchedNum &&
-					systemModelAdapter.getScheduleableComponents().contains(comp)) {
+			if(compEncNum != compSchedNum && encoding.getRequesters().contains(comp)) {
 				System.out.println("The number of scheduled Components of " + comp.getName() +
 						" does not match the number defined in the Component->ExecutionUnit mapping.");
 				if(enableScheduleException) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings
index f821eb6d32dd70d6acee346bcb714d90835cce42..89f21dad06204e660c48605051bf56504149fa9f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings
@@ -1,2 +1,2 @@
-FailSilentExecModelFactory.java bd1e62664d97539f19cd5b631c02fc4323586af2 RED
-FaultDetectionVotingExecModelFactory.java 0bbb870e645aa1dda912ce4a2cc9cf7157414681 RED
+FailSilentExecModelFactory.java 5e9acef92029f7f1cabffb5c1d61f99168a075a6 RED
+FaultDetectionVotingExecModelFactory.java 0357061405b68dcc9f02f17c14fb4bac2f0fd888 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java
index 810396b4891bd9089b3ac21d78cc084adf53bdf3..4ee468ad45b7548ee06b0ce3aaa417cbcbcec282 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.sysmodel;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.FailSilentTaskMappingCreator;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.TaskMappingCreator;
@@ -41,6 +43,7 @@ import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.DeadlineConstrai
 import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.PeriodConstraintEvaluator;
 import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.SafetyIntegrityLevelConstraintEvaluator;
 import org.fortiss.af3.exploration.alg.dse.evaluator.objective.FailSilentReliabilityEvaluator;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.EDFSchedulerBase;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.FailSilentEDFScheduler;
@@ -92,42 +95,40 @@ public class FailSilentExecModelFactory
 
 	/** {@inheritDoc} */
 	@Override
-	public MutateAllocation<?, ?> createMutateAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter);
+	public MutateAllocation<?, ?>
+			createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) {
+		return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(tasks);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MutateRedundancyDecrement<?, ?>
+			createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) {
 		return new MutateRedundancyDecrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter);
+				tasks);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MutateRedundancyIncrement<?, ?>
+			createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) {
 		return new MutateRedundancyIncrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter);
+				tasks);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
+	public CrossoverRandManyAllocation<?, ?>
+			createCrossoverRandManyAllocationOperator(double rate) {
 		return new CrossoverRandManyAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter, rate);
+				rate);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
+	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(double rate) {
 		return new CrossoverSingleAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter, rate);
+				rate);
 	}
 
 	/* Construct Decoders for the genotypes, aka task mappings. */
@@ -135,10 +136,8 @@ public class FailSilentExecModelFactory
 	/** {@inheritDoc} */
 	@Override
 	public AbstractTaskMappingDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
-			createAbstractTaskMappingDecoder(
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DseSpecification explorationDefinition) {
-		return new FailSilentAbstractTaskMappingDecoder(systemModelAdapter, explorationDefinition);
+			createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) {
+		return new FailSilentAbstractTaskMappingDecoder(explorationDefinition);
 	}
 
 	/** {@inheritDoc} */
@@ -146,26 +145,23 @@ public class FailSilentExecModelFactory
 	@Override
 	// TODO: identify why a warning is generated here.
 	public InstantiatedTaskMappingDecoderAcyclic<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
-			createAbstractToAcyclicTaskGraphDecoder(
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new InstantiatedTaskMappingDecoderAcyclic(systemModelAdapter);
+			createAbstractToAcyclicTaskGraphDecoder() {
+		return new InstantiatedTaskMappingDecoderAcyclic();
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public MessageDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
-			createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new MessageDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>(
-				systemModelAdapter);
+			createMessageDecoder() {
+		return new MessageDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>();
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public StrictTTDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
-			createStrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DseSpecification explorationDefinition) {
+			createStrictTTDecoder(DseSpecification explorationDefinition) {
 		return new StrictTTDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>(
-				systemModelAdapter, explorationDefinition);
+				explorationDefinition);
 	}
 
 	/**
@@ -173,10 +169,8 @@ public class FailSilentExecModelFactory
 	 * given execution model
 	 */
 	@Override
-	public EDFSchedulerBase<?, ?> createEDFScheduler(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		return new FailSilentEDFScheduler(systemModelAdapter, expSpec);
+	public EDFSchedulerBase<?, ?> createEDFScheduler(ExplorationSpecification expSpec) {
+		return new FailSilentEDFScheduler(expSpec);
 	}
 
 	/* Construct Evaluators for Optimization Goals. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java
index 03c96e2c264844f8e775b366dad43f2c4db7803e..b8c7d062f624c18a41bc4ee26e0e8299a82f5cdb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.sysmodel;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.FaultDetectionVotingTaskMappingCreator;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.TaskMappingCreator;
@@ -41,6 +43,7 @@ import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.DeadlineConstrai
 import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.PeriodConstraintEvaluator;
 import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.SafetyIntegrityLevelConstraintEvaluator;
 import org.fortiss.af3.exploration.alg.dse.evaluator.objective.FaultDetectionVotingReliabilityEvaluator;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.EDFSchedulerBase;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.FaultDetectionVotingEDFScheduler;
@@ -95,42 +98,40 @@ public class FaultDetectionVotingExecModelFactory extends
 
 	/** {@inheritDoc} */
 	@Override
-	public MutateAllocation<?, ?> createMutateAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter);
+	public MutateAllocation<?, ?>
+			createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) {
+		return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(tasks);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MutateRedundancyDecrement<?, ?>
+			createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) {
 		return new MutateRedundancyDecrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter);
+				tasks);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MutateRedundancyIncrement<?, ?>
+			createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) {
 		return new MutateRedundancyIncrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter);
+				tasks);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
+	public CrossoverRandManyAllocation<?, ?>
+			createCrossoverRandManyAllocationOperator(double rate) {
 		return new CrossoverRandManyAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter, rate);
+				rate);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
+	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(double rate) {
 		return new CrossoverSingleAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(
-				systemModelAdapter, rate);
+				rate);
 	}
 
 	/*
@@ -140,11 +141,8 @@ public class FaultDetectionVotingExecModelFactory extends
 	/** {@inheritDoc} */
 	@Override
 	public AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
-			createAbstractTaskMappingDecoder(
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DseSpecification explorationDefinition) {
-		return new FaultDetectionVotingAbstractTaskMappingDecoder(systemModelAdapter,
-				explorationDefinition);
+			createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) {
+		return new FaultDetectionVotingAbstractTaskMappingDecoder(explorationDefinition);
 	}
 
 	/** {@inheritDoc} */
@@ -152,34 +150,29 @@ public class FaultDetectionVotingExecModelFactory extends
 	@Override
 	// TODO: identify why a warning is generated here.
 	public InstantiatedTaskMappingDecoderAcyclic<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
-			createAbstractToAcyclicTaskGraphDecoder(
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new InstantiatedTaskMappingDecoderAcyclic(systemModelAdapter);
+			createAbstractToAcyclicTaskGraphDecoder() {
+		return new InstantiatedTaskMappingDecoderAcyclic();
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
-			createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
-				systemModelAdapter);
+			createMessageDecoder() {
+		return new MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>();
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
-			createStrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DseSpecification explorationDefinition) {
+			createStrictTTDecoder(DseSpecification explorationDefinition) {
 		return new StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
-				systemModelAdapter, explorationDefinition);
+				explorationDefinition);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public EDFSchedulerBase<?, ?> createEDFScheduler(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		return new FaultDetectionVotingEDFScheduler(systemModelAdapter, expSpec);
+	public EDFSchedulerBase<?, ?> createEDFScheduler(ExplorationSpecification expSpec) {
+		return new FaultDetectionVotingEDFScheduler(expSpec);
 	}
 
 	/* Construct Evaluators for Optimization Goals. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
index aeefd7b79aaddd5f3a8e594c212eeed5026ce0b0..cfdc84845249ca30a676e88e03456f482a804d2d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
@@ -14,4 +14,4 @@ ISignalAdapter.java 4f04154c5802a4f1a5469df90652852e16727421 RED
 ITaskAdapter.java 97ad40c0ca14be2fb4fd070214a3d6ebe5be914a RED
 ITransmissionUnitAdapter.java 8965b73bfe9ef232a2a6d5427f7001761716d583 RED
 InternalComponentParameters.java 2b19f4eeddee84e4c6e558ed9a1613cba33b7665 RED
-SystemModelAdapter.java d6ce52abad1f440e9df1c6a3e6bb98cfcfc86bfd RED
+SystemModelAdapter.java 3621d4aaaeb8b5913194dc4cc6182c20f305149b RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java
index 5b01009a3a1790ee77a31c2ccb030fea1bbbd000..f92341ec7813ad4301b0f3abc084b3dbc6f8055f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java
@@ -310,7 +310,7 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> {
 
 		initEncProvider.registerInputEncoding(
 				new AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C>(
-						(Collection<? extends DefaultTaskGraph<?>>)getTaskGraphs()));
+						(Collection<? extends DefaultTaskGraph<?>>)getTaskGraphs(), hyperPeriod));
 	}
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
index a63fe482ea2914e873b98f77d8061fb3383a67dc..1ddc3c736283bf1696139b85537a08201f2eddf4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
@@ -1,5 +1,5 @@
 AcyclicTaskGraph.java c8fa01f3ad30f0cc5980838636355a2e041b5cbb RED
-DefaultTaskGraph.java 783c347f7fd5a5bcd3bc3a643e9284bd3e27e9a3 RED
+DefaultTaskGraph.java 8c384e8dfd6f9806a04b68b45855ba75dd558a50 RED
 SignalAdapterWeightedEdge.java 6b7dbae1c2e7a658b33c3c7a584cee13b2269891 RED
 TaskGraph.java 90289a46be5c6ad658a06f4ff17d6da648fc97e8 RED
 TaskGraphInstantiator.java bfda013ddc6f4a9d2b063dfa7187827be1cdac73 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java
index 682aebc44f8446d91c3c2a397785fd8601b9bad6..d93154c7edf376e60e46f5f3b164bfa7d939b959 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java
@@ -26,7 +26,6 @@ import java.util.TreeSet;
 
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISignalAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel.FaultDetector;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration;
 import org.fortiss.af3.exploration.alg.graph.display.JGraphTVisualizer;
@@ -44,8 +43,7 @@ import com.google.common.collect.Multimap;
  * <p>
  * The TaskGraph represents the data dependencies of a single connected component between the
  * deployable components (= tasks) of a systems (Tasks = vertices, channels of logical architecture
- * = edges). Therefore, a system typically consists of multiple {@link DefaultTaskGraph}s that are
- * owned by the corresponding {@link SystemModelAdapter} instance.
+ * = edges). Therefore, a system typically consists of multiple {@link DefaultTaskGraph}s.
  * </p>
  * The TaskGraph also contains
  * <ul>
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
index d953d608eb2958a80849fe79efab50983e8da27f..39ee99a8f32821354d6fbac569103e9d91677db9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
@@ -1,2 +1,2 @@
 Message.java e6aeffa00605318214ba100758b988b500acfe8c RED
-MessageGenerator.java ad42c711bd25bb413cbcab3073c62e13ce3c9c07 RED
+MessageGenerator.java 841882d4cce69b7bb6cfa4dea4331f7dcfdb0038 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java
index 874c43be3859625fd9232c0965cd165c0d2c18e5..13d7678c5043b61a3306ffc50f8af97842ae0817 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java
@@ -17,19 +17,22 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.comm;
 
 import static org.fortiss.tooling.common.util.LambdaUtils.filterSet;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.comm.constraint.InternalIsolatedCommunicationSet;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.AbstractTaskGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISignalAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
 
 /**
@@ -40,20 +43,12 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
  * @author diewald
  */
 public class MessageGenerator<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> {
-
-	/** Reference to the systemModel. */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
-	/** Constructor. */
-	public MessageGenerator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
-
 	/**
 	 * Generates messages from the given {#link encoding}. This methods evaluates the {#link
 	 * encoding}
 	 */
-	public Collection<Message> generateMessages(T encoding) {
+	public Collection<Message> generateMessages(T encoding,
+			AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, ?> atgEnc) {
 		Collection<Message> generatedMessages = new HashSet<Message>();
 
 		// TODO: represent the signals in the task graph: do not use the systemModelAdapter here.
@@ -64,9 +59,12 @@ public class MessageGenerator<S extends TaskMappingEntry<ITaskAdapter<?>, Partit
 				senderComponent = senderComponent.getReplacedComponent();
 			}
 
+			TaskGraph tg = atgEnc.getTaskGraphOf(senderComponent);
+
 			@SuppressWarnings("unchecked") Collection<ISignalAdapter<?, ?>> emittedMessages =
-					(Collection<ISignalAdapter<?, ?>>)(Collection<?>)systemModelAdapter
-							.getEmmittedMessages(senderComponent);
+					new ArrayList<>();
+			tg.getGraph().outgoingEdgesOf(senderComponent)
+					.forEach(e -> emittedMessages.add(e.getSignalAdapter()));
 
 			Collection<InternalIsolatedCommunicationSet> allIsoCommConstr =
 					encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
index a4c072e4f1fac02bcb8def04f66739896ca63b4d..5aa80abebadacbcb6cbe8052c51e70b926475dfc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
@@ -1,3 +1,3 @@
 IMessageRouter.java 502b0083ba82de6a70813c4c7ca9606ebb2ba65f RED
-MessageRouter.java 8321c78da99168793bcfb8a4e00798e81c9867d2 RED
-ShortestPathRouter.java 9f42506455648f6ee2171f1fcf29ab0deb4389b1 RED
+MessageRouter.java 8dd059bfa4dabdf1939fb8e46d0499cf2a13664d RED
+ShortestPathRouter.java 1b82cb1fe083ec06411d399ef37d3fdddc7993aa RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java
index 3e86aba3905afbaa7f8a6b9987fcc3a7fedde817..3a0cbe363bf10ba384c7b1d2e42526f3178653a0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java
@@ -22,7 +22,6 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
 import org.jgrapht.DirectedGraph;
 import org.jgrapht.graph.DefaultEdge;
@@ -34,10 +33,6 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  */
 public class MessageRouter implements IMessageRouter {
-
-	/** Representation of input system model */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** The actual message router that implements a routing strategy. */
 	private IMessageRouter delegate;
 
@@ -45,8 +40,7 @@ public class MessageRouter implements IMessageRouter {
 	private Map<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>> messagesRoutes;
 
 	/** Constructs a scheduler for a given input model. */
-	public MessageRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public MessageRouter() {
 		messagesRoutes =
 				new ConcurrentHashMap<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>>();
 	}
@@ -59,7 +53,7 @@ public class MessageRouter implements IMessageRouter {
 		// For now, we have only one routing strategy, so define the delegate if it is not already
 		// constructed. Later, the specific routers can be constructed here, if needed.
 		if(delegate == null) {
-			delegate = new ShortestPathRouter(systemModelAdapter);
+			delegate = new ShortestPathRouter();
 		}
 
 		Map<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>> messagesRoutes =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java
index 9644036c80346641643efb8c53021927d58aa3b8..5625b3183184d3afb7041d1c333adac5ea6aea0d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java
@@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
 import org.jgrapht.DirectedGraph;
 import org.jgrapht.Graphs;
@@ -42,15 +41,12 @@ import org.jgrapht.graph.DirectedSubgraph;
  * @author diewald
  */
 public class ShortestPathRouter extends MessageRouter {
-
 	/** Buffers the already calculated shortest paths for the sender {@link IResourceAdapter}. */
 	@SuppressWarnings("unused")
 	private Map<IResourceAdapter<?>, BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>> shortestPathForSender;
 
 	/** Constructs a simple shortest path router for a given exploration run */
-	public ShortestPathRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-
+	public ShortestPathRouter() {
 		// TODO: Replace with more efficient Dijkstra, which needs an modification to contain the
 		// shortest paths to all other vertices in the graph.
 		shortestPathForSender =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings
index 182ddfeaa22fd813fd6a3d2bc37493a7d44ef450..73faf2e3ca7b29ac80d03559151165d2222c0a70 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings
@@ -1,2 +1,2 @@
 ScheduleRuntimeException.java d682adaaaff3d366cc6b55dd9c8e9c30bbc51152 RED
-SchedulerBase.java 7114bbf9feacb82978caeac83980ab1b8241d282 RED
+SchedulerBase.java a80ea719f9bfc7d3298515e343b725208d5c1e9f RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java
index 46397550909f1b20d7f0f4b245020b50f2f98a7e..e6e6cde677b0435fd247b80efd8cd9c662a2ba51 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java
@@ -21,7 +21,6 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.model.ExplorationSpecification;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
 import org.fortiss.af3.exploration.model.time.DeadlineConstraint;
@@ -35,9 +34,6 @@ public class SchedulerBase {
 	/** Precision for double */
 	protected final static int DOUBLE_PRECISION = 10;
 
-	/** Representation of input system model */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Contains the References to the {@link ExplorationTarget}s related to timing. */
 	protected Collection<DeadlineConstraint> deadlines;
 
@@ -48,9 +44,7 @@ public class SchedulerBase {
 	protected Map<DeadlineConstraint, ITaskAdapter<?>> deadlineTargetComponent;
 
 	/** Constructs a scheduler for a given input model. */
-	public SchedulerBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		this.systemModelAdapter = systemModelAdapter;
+	public SchedulerBase(ExplorationSpecification expSpec) {
 		this.deadlines =
 				expSpec.getTargets().stream().filter(t -> (t instanceof DeadlineConstraint))
 						.map(DeadlineConstraint.class::cast).collect(Collectors.toList());
@@ -58,7 +52,7 @@ public class SchedulerBase {
 		componentDeadlineSourceMap = new HashMap<ITaskAdapter<?>, DeadlineConstraint>();
 		deadlineTargetComponent = new HashMap<DeadlineConstraint, ITaskAdapter<?>>();
 
-		createComponentDeadlineMap();
+		// createComponentDeadlineMap();
 	}
 
 	/**
@@ -68,20 +62,19 @@ public class SchedulerBase {
 	 * <li>a map that relates
 	 * {@link DeadlineConstraint}s with its "target" {@link ITaskAdapter}s.
 	 */
-	private void createComponentDeadlineMap() {
-		if(deadlines == null) {
-			return;
-		}
-
-		for(DeadlineConstraint currentDeadline : deadlines) {
-			for(ITaskAdapter<?> deployableComponent : systemModelAdapter
-					.getDeployableComponents()) {
-				if(deployableComponent.getObject() == currentDeadline.getStartComponent()) {
-					componentDeadlineSourceMap.put(deployableComponent, currentDeadline);
-				} else if(deployableComponent.getObject() == currentDeadline.getEndComponent()) {
-					deadlineTargetComponent.put(currentDeadline, deployableComponent);
-				}
-			}
-		}
-	}
+	// private void createComponentDeadlineMap() {
+	// if(deadlines == null) {
+	// return;
+	// }
+	//
+	// for(DeadlineConstraint currentDeadline : deadlines) {
+	// for(ITaskAdapter<?> deployableComponent : schedule) {
+	// if(deployableComponent.getObject() == currentDeadline.getStartComponent()) {
+	// componentDeadlineSourceMap.put(deployableComponent, currentDeadline);
+	// } else if(deployableComponent.getObject() == currentDeadline.getEndComponent()) {
+	// deadlineTargetComponent.put(currentDeadline, deployableComponent);
+	// }
+	// }
+	// }
+	// }
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
index aae4aefeb8a771fac77bf633d977ffffe3a7817f..ebcee15574996a9c72a071508b0bc7c506b357cf 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
@@ -1 +1 @@
-TDMABusScheduler.java bb1c12e4869678eab21f3e52ba6b5f1ef65023f2 RED
+TDMABusScheduler.java b711592d931474543263e86dccd3b5ac39b17f22 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
index cbec0226c897308daac5b47feb91637b358dcd5b..20b532bc5028b4ab0e117f12001d9138b4ee00d8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
@@ -43,7 +43,6 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.IMessageRouter;
@@ -73,10 +72,9 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 	private IMessageRouter messageRouter;
 
 	/** Constructs a {@link TDMABusScheduler} for a given input model. */
-	public TDMABusScheduler(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		super(systemModelAdapter, expSpec);
-		this.messageRouter = new ShortestPathRouter(systemModelAdapter);
+	public TDMABusScheduler(ExplorationSpecification expSpec) {
+		super(expSpec);
+		this.messageRouter = new ShortestPathRouter();
 	}
 
 	/** Add simple TDMA bus schedule / communication time to a pure task schedule. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
index fb9132f690b9928147650dee7f9dc26b5791c44a..ecbc1135c2257741a27f25383a1c48d989a4a25d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
@@ -1,3 +1,3 @@
-EDFSchedulerBase.java eb253ffeff2b7bd71467dc4459c7f4051c3c0c0a RED
-FailSilentEDFScheduler.java a2b809f6d8162be4483900a83c60b1c9a9ad0341 RED
-FaultDetectionVotingEDFScheduler.java ba3a487c9c995d4e1a49a6e646532f893bb5ab92 RED
+EDFSchedulerBase.java 8bbcd90eeb796de2072d74cd7b669083c2b1bb73 RED
+FailSilentEDFScheduler.java 14c2fbb0ece5087d7c004fb372ad83fa6e85e5cc RED
+FaultDetectionVotingEDFScheduler.java 0d34f4702e29c2610b26656ca07288cfb8b5012e RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
index 040c582075e87a9750c9c6921cdeed979e49e16e..a8da54ef6ed72e0b7c13f21910e4d148f918d2a1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
@@ -40,7 +40,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
@@ -251,18 +250,16 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 	}
 
 	/** Constructs a simple EDF scheduler for a given exploration run */
-	public EDFSchedulerBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		super(systemModelAdapter, expSpec);
+	public EDFSchedulerBase(ExplorationSpecification expSpec) {
+		super(expSpec);
 	}
 
 	/**
 	 * Creates and returns a release queue for the given {@link TaskMappingEncoding}. A release
 	 * queue contains those {@link SchedulingObject}s which remain to be scheduled.
 	 */
-	private synchronized SortedSet<SchedulingObject> createReleaseQueue(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			InstantiatedAcyclicTaskGraphEncoding<S, ?> acycItgEnc) {
+	private synchronized SortedSet<SchedulingObject>
+			createReleaseQueue(InstantiatedAcyclicTaskGraphEncoding<S, ?> acycItgEnc) {
 		SchedulingObjectComparator EDFTopologicalComparator =
 				new SchedulingObjectComparator(acycItgEnc);
 		TreeSet<SchedulingObject> releaseQueue =
@@ -278,8 +275,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			while(iter.hasNext()) {
 				ITaskAdapter<?> deployableComponent = iter.next();
 				// create the instance of each hyper-period
-				for(int i = 0; i < systemModelAdapter.getHyperPeriod() /
-						taskGraph.getPeriod(); i++) {
+				for(int i = 0; i < acycItgEnc.getHyperPeriod() / taskGraph.getPeriod(); i++) {
 					double releasetime = i * taskGraph.getPeriod();
 					double effectiveDeadline = releasetime + taskGraph.getPeriod();
 
@@ -329,8 +325,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 	 */
 	public void schedule(InstantiatedAcyclicTaskGraphEncoding<S, ?> acycItgEnc,
 			PartitionMappingEncoding partEnc, T taskMapping, StrictTTSchedule<S, T> schedule) {
-		SortedSet<SchedulingObject> releaseQueue =
-				createReleaseQueue(systemModelAdapter, acycItgEnc);
+		SortedSet<SchedulingObject> releaseQueue = createReleaseQueue(acycItgEnc);
 		// Create copy of release queue
 		if(releaseQueue.isEmpty()) {
 			throw new RuntimeException("Scheduler failed...");
@@ -386,7 +381,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 					ITaskAdapter<?> targetDeployableComponent =
 							deadlineTargetComponent.get(currentDeadline);
 					TaskGraph tgOfDeadlineTarget =
-							systemModelAdapter.getAcyclicTaskGraph(targetDeployableComponent);
+							acycItgEnc.getTaskGraphOf(targetDeployableComponent);
 					Collection<ITaskAdapter<?>> deadlineTargetPredescessors =
 							Graphs.predecessorListOf(tgOfDeadlineTarget.getDelegateGraph(),
 									targetDeployableComponent);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java
index 64f7d4ab82d341d7bb0a57fc3b7797544f698838..6dcfc322b509231a9d621c8f6277ee411df59c5f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java
@@ -28,7 +28,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.model.ExplorationSpecification;
 
 /**
@@ -40,9 +39,8 @@ public class FailSilentEDFScheduler
 		extends EDFSchedulerBase<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
 
 	/** Constructs a simple EDF scheduler for a given exploration run */
-	public FailSilentEDFScheduler(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		super(systemModelAdapter, expSpec);
+	public FailSilentEDFScheduler(ExplorationSpecification expSpec) {
+		super(expSpec);
 	}
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java
index 059f98c7320fff175958d6a7db0a283e58e18ee5..af93ad1d506c88e5969dfde32523e0bd5956bc2b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java
@@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel.FaultDetector;
@@ -42,10 +41,8 @@ public class FaultDetectionVotingEDFScheduler extends
 		EDFSchedulerBase<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> {
 
 	/** Constructs a simple EDF scheduler for a given exploration run */
-	public FaultDetectionVotingEDFScheduler(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			ExplorationSpecification expSpec) {
-		super(systemModelAdapter, expSpec);
+	public FaultDetectionVotingEDFScheduler(ExplorationSpecification expSpec) {
+		super(expSpec);
 	}
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings
index fb01f2d165ee6cc356c6ed50390fa3b5c999eadf..08bc0aa04e471089ee43335d15e93bf077258b7a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings
@@ -5,7 +5,7 @@ IExplorationContraintTransformationModule.java a7ab4345519341a13ec2de1879c7efbd9
 IExplorationEncoding.java 510843700127afb540eda56934dbac3726b63529 RED
 IExplorationEvaluatationService.java 0b4af374a83386f3ac0e7fa8ba47b571da6fe58a RED
 IExplorationModule.java 8990c654e649f043fa9813b8bf9113ac7bd42d27 RED
-IExplorationRepairService.java 173f7631650eec36de1b001ced15547bda4df82a RED
+IExplorationRepairService.java e923c43c49e0c83daef71707d5fdb66444f859f8 RED
 IExplorationService.java 891b8c4ce01e40ab31bf69231a63fd61c57ac98e RED
 IExplorationTargetEvaluator.java 9b39b44f64ad8195583b00f8e3852bbc912f75fc RED
 IExplorationTransformationService.java aa63b9453ad395a111016cfd7fa7a30f35f4ea17 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java
index 482ea809b050b323aa0ada89d5461ec0922daf87..9fdbc6c62436e32f1ebc7f3e6c43517199271f32 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java
@@ -17,7 +17,6 @@ package org.fortiss.af3.exploration.alg.service;
 
 import java.util.List;
 
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 import org.opt4j.core.Genotype;
 
@@ -35,12 +34,10 @@ public interface IExplorationRepairService extends IExplorationService<IRepairMo
 	 * 
 	 * @param genotype
 	 *            {@link Genotype} that could be repaired.
-	 * @param systemModelAdapter
-	 *            current {@link SystemModelAdapter} of the DSE.
 	 * @return List of applicable {@link IRepairModule}s (in order).
 	 * @throws ExplorationException
 	 *             if any applicable {@link IRepairModule} could not be instantiated.
 	 */
-	<T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws ExplorationException;
+	<T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype)
+			throws ExplorationException;
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings
index 4c6b32d1241acff26850f4e91f023baeb6482043..b3e401f2504dad5bdd358bca72d5594e77327b7e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings
@@ -1,4 +1,4 @@
 ExplorationConstraintTransformationService.java 865f1aba5538370e5855cc46cbe854b0340549e6 RED
 ExplorationEvaluationService.java 259ace09d86990428fb2ff9cfbff552cb4a69be8 RED
-ExplorationRepairService.java d8e467d2c83d17ee034ee4cba8c336660ec18b96 RED
+ExplorationRepairService.java ac50a5e53792c6793ff4b8ad5aa9812141990f5c RED
 ExplorationTransformationService.java 96640353f12abd867378b84b5437811ca7996d8f RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java
index ea56523c19b47ed22864633bd5cc5a99193e276e..940ceda7c8c48f282132355249af1fe0a005c0f5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java
@@ -100,8 +100,7 @@ public class ExplorationRepairService extends ObjectAwareServiceBase<IRepairModu
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
 	@Override
-	public <T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter)
+	public <T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype)
 			throws ExplorationException {
 		List<IRepairModule<T>> repairModuleInstances = new ArrayList<>();
 		Collection<IRepairModule<?>> registeredHandlers =
@@ -113,7 +112,7 @@ public class ExplorationRepairService extends ObjectAwareServiceBase<IRepairModu
 				Constructor<IRepairModule<T>> extConstructor =
 						(Constructor<IRepairModule<T>>)curModuleTemplate.getClass()
 								.getConstructor(SystemModelAdapter.class);
-				moduleInstance = extConstructor.newInstance(systemModelAdapter);
+				moduleInstance = extConstructor.newInstance();
 			} catch(Exception e) {
 				throw new ExplorationException(
 						"Could not instantiate the repair module from its registered template. Please check if the required Constructors are present.",