From 7f11dce71924fcbbf9d6c8d56307dd3891f6f871 Mon Sep 17 00:00:00 2001
From: Alexander Diewald <diewald@fortiss.org>
Date: Fri, 9 Feb 2018 11:53:13 +0000
Subject: [PATCH] Exploration(.alg):Reduce the dependencies towards the
 SystemModelAdapter [2/2]

Removes the remaining occurrences of the SystemModelAdapter from the inner DSE parts. Instead, the abstraction created by the SystemModelAdapter are used.
refs 2962
---
 .../fortiss/af3/exploration/alg/dse/.ratings  |  4 +-
 .../af3/exploration/alg/dse/DSEFactory.java   | 22 +++---
 .../alg/dse/TaskMappingFactory.java           | 74 +++++++------------
 .../alg/dse/backend/opt4j/.ratings            |  2 +-
 .../backend/opt4j/Opt4JExplorerBackend.java   | 23 ++++--
 .../alg/dse/backend/opt4j/create/.ratings     |  2 +-
 .../opt4j/create/InitialEncodingProvider.java | 11 ++-
 .../backend/opt4j/encoding/taskgraph/.ratings | 10 +--
 .../taskgraph/AbstractTaskGraphEncoding.java  |  8 +-
 .../InstantiatedAcyclicTaskGraphEncoding.java | 11 +--
 .../InstantiatedTaskGraphEncoding.java        | 12 +--
 .../taskgraph/SafeTaskGraphEncoding.java      |  7 +-
 .../encoding/taskgraph/TaskGraphEncoding.java | 12 ++-
 .../alg/dse/backend/opt4j/mating/.ratings     |  4 +-
 .../mating/MatingCrossoverMutateRepair.java   | 12 +--
 .../MatingCrossoverMutateRepairModule.java    | 27 -------
 .../backend/opt4j/operator/crossover/.ratings |  8 +-
 .../CrossoverAbstractTaskMappingModule.java   | 12 +--
 .../crossover/CrossoverAllocationBase.java    |  9 +--
 .../CrossoverRandManyAllocation.java          |  7 +-
 .../crossover/CrossoverSingleAllocation.java  |  7 +-
 .../operator/crossover/failSilent/.ratings    |  2 +-
 .../CrossoverAllocationFailSilent.java        |  6 +-
 .../crossover/faultDetectionVoting/.ratings   |  2 +-
 ...ossoverAllocationFaultDetectionVoting.java |  6 +-
 .../backend/opt4j/operator/mutate/.ratings    |  2 +-
 .../opt4j/operator/mutate/MutateBase.java     | 12 +--
 .../operator/mutate/partitionmapping/.ratings |  8 +-
 .../partitionmapping/MutatePartitionBase.java |  8 +-
 .../MutatePartitionDecrement.java             |  8 +-
 .../MutatePartitionIncrement.java             |  8 +-
 .../PartitionMappingModule.java               | 18 +++--
 .../opt4j/operator/mutate/safetyarch/.ratings | 10 +--
 .../safetyarch/MutateChannelNumber.java       |  7 --
 .../MutateConnectedDiagnosisPresent.java      |  8 --
 .../safetyarch/MutateSafetyArchBase.java      |  7 --
 ...utateSafetyFunctionArchitectureModule.java | 17 +----
 .../MutateSafetyTriggerSignalNumber.java      |  8 --
 .../mutate/taskinstantiation/.ratings         |  4 +-
 .../taskinstantiation/MutateTaskInstance.java | 12 ++-
 .../MutateTaskInstanceModule.java             | 15 ++--
 .../operator/mutate/taskmapping/.ratings      | 12 +--
 .../mutate/taskmapping/MutateAllocation.java  | 14 ++--
 .../mutate/taskmapping/MutateRedundancy.java  | 15 ++--
 .../MutateRedundancyDecrement.java            |  7 +-
 .../MutateRedundancyIncrement.java            |  5 +-
 .../taskmapping/MutateTaskMappingModule.java  | 16 ++--
 .../mutate/taskmapping/MutateTasksBase.java   | 11 ++-
 .../alg/dse/backend/opt4j/problem/.ratings    |  4 +-
 .../opt4j/problem/DseProblemModuleBase.java   |  1 +
 .../opt4j/problem/StrictTTDecoder.java        | 20 ++---
 .../dse/backend/opt4j/problem/comm/.ratings   |  2 +-
 .../opt4j/problem/comm/MessageDecoder.java    | 20 ++---
 .../problem/instantiatetaskgraph/.ratings     |  4 +-
 .../InstantiatedTaskMappingDecoder.java       | 19 ++---
 ...InstantiatedTaskMappingDecoderAcyclic.java | 12 +--
 .../opt4j/problem/safetyfunction/.ratings     |  2 +-
 .../safetyfunction/SFGraphDecoder.java        | 12 ++-
 .../problem/taskmapping/instantiate/.ratings  |  6 +-
 .../AbstractTaskMappingDecoder.java           |  9 +--
 .../FailSilentAbstractTaskMappingDecoder.java |  7 +-
 ...ctionVotingAbstractTaskMappingDecoder.java |  7 +-
 .../alg/dse/backend/opt4j/repair/.ratings     |  2 +-
 .../opt4j/repair/RepairModuleBase.java        | 10 ---
 .../alg/dse/backend/opt4j/solution/.ratings   |  2 +-
 .../opt4j/solution/StrictTTSchedule.java      | 18 +----
 .../af3/exploration/alg/dse/sysmodel/.ratings |  4 +-
 .../sysmodel/FailSilentExecModelFactory.java  | 60 +++++++--------
 .../FaultDetectionVotingExecModelFactory.java | 61 +++++++--------
 .../alg/dse/sysmodel/arch/.ratings            |  2 +-
 .../dse/sysmodel/arch/SystemModelAdapter.java |  2 +-
 .../alg/dse/sysmodel/arch/taskgraph/.ratings  |  2 +-
 .../arch/taskgraph/DefaultTaskGraph.java      |  4 +-
 .../alg/dse/sysmodel/comm/.ratings            |  2 +-
 .../dse/sysmodel/comm/MessageGenerator.java   | 24 +++---
 .../alg/dse/sysmodel/mapping/comm/.ratings    |  4 +-
 .../sysmodel/mapping/comm/MessageRouter.java  | 10 +--
 .../mapping/comm/ShortestPathRouter.java      |  6 +-
 .../alg/dse/sysmodel/sched/.ratings           |  2 +-
 .../alg/dse/sysmodel/sched/SchedulerBase.java | 41 +++++-----
 .../alg/dse/sysmodel/sched/comm/.ratings      |  2 +-
 .../sysmodel/sched/comm/TDMABusScheduler.java |  8 +-
 .../alg/dse/sysmodel/sched/proc/.ratings      |  6 +-
 .../sysmodel/sched/proc/EDFSchedulerBase.java | 19 ++---
 .../sched/proc/FailSilentEDFScheduler.java    |  6 +-
 .../FaultDetectionVotingEDFScheduler.java     |  7 +-
 .../af3/exploration/alg/service/.ratings      |  2 +-
 .../service/IExplorationRepairService.java    |  7 +-
 .../exploration/alg/service/internal/.ratings |  2 +-
 .../internal/ExplorationRepairService.java    |  5 +-
 90 files changed, 382 insertions(+), 595 deletions(-)

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 f208d7d8..9cb0a1f3 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 8712f441..ae8a0f87 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 ec27a950..47e6b1cd 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 0ceea939..737d149f 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 3073d306..82dc6fc5 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 b4cea5d7..e93a81d6 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 d19f0843..d378a0d5 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 d5190aa7..eb0056ef 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 3d297b8c..400f4288 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 db1d1698..31bcc495 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 9b4f735d..bb630ced 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 7a845dd4..68d4a0a8 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 cab6a9c2..ec7985e9 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 803c17bb..44f4b293 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 92403b27..ea9784bc 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 004d221f..ae5182b0 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 08cb6b2c..1241fd9c 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 fbcc187a..04c64460 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 42bff2bd..d11fd0c9 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 61b48041..96118244 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 b70541b3..551f5c07 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 0bf9bbd4..d4a80ce8 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 6d0e7f98..a3ea300e 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 fe20f0fa..f6c755ce 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 f30d57ad..03955ce3 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 842f012a..2eb432b3 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 977b70a9..74235bf7 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 943b9bdc..c6d7a468 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 aaff7118..6cb25482 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 d0214e9a..aa364f0d 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 54ea1dff..4b8e804d 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 9a775f93..0eb2323c 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 c33bb16e..fc52acc0 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 c0e6ad96..2e49168b 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 14fa9a39..9089e7c8 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 637de8ce..572ca678 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 afe87271..00594454 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 f6ebb9ce..385efb31 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 9f903091..495a3e3e 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 880a43dc..0c101e73 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 29586e3b..4ec43fc3 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 2b396e58..8cb12bd9 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 7694d58c..cee21301 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 4a6b67df..4b8f9ba0 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 62001365..d2b17641 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 9fd1c7a9..6fb9e231 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 278e9df9..4f2d680a 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 2173de78..237e2814 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 5609b269..d4bd2506 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 e8661b3e..77cd950a 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 59d11e62..d44d02b5 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 568e28ea..fef09303 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 fbace084..7ef5faf5 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 0aab7652..a198648b 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 07d14c45..e73da437 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 07e216c2..979d34e0 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 c764bfa6..5449de7c 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 320c2627..ac5f05de 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 b74d77f8..5ad329f6 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 15cd38f1..52a08984 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 edb981d8..2abf74f9 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 eee6b950..c8ec4052 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 8f1f27b5..6f59fb7e 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 d7f221ab..8ad46913 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 9318b140..de60db13 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 156e81c0..d6685ea0 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 f821eb6d..89f21dad 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 810396b4..4ee468ad 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 03c96e2c..b8c7d062 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 aeefd7b7..cfdc8484 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 5b01009a..f92341ec 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 a63fe482..1ddc3c73 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 682aebc4..d93154c7 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 d953d608..39ee99a8 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 874c43be..13d7678c 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 a4c072e4..5aa80abe 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 3e86aba3..3a0cbe36 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 9644036c..5625b318 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 182ddfea..73faf2e3 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 46397550..e6e6cde6 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 aae4aefe..ebcee155 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 cbec0226..20b532bc 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 fb9132f6..ecbc1135 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 040c5820..a8da54ef 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 64f7d4ab..6dcfc322 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 059f98c7..af93ad1d 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 fb01f2d1..08bc0aa0 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 482ea809..9fdbc6c6 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 4c6b32d1..b3e401f2 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 ea56523c..940ceda7 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.",
-- 
GitLab