diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings
index 8732d84450cc26fa68181840cd8cd337f44370b5..17c79725732f008672f0b57d113f9d111aa421d1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings
@@ -1,3 +1,3 @@
 ComponentImplDiversityRefValueProvider.java d2cbe7d1acefd9941a766ea7cf2ac958a4347ef6 RED
-MaxReplicationBoundValueProvider.java 697ecf4593ec7fd29992b25b782ddf20f191c975 RED
-MinReplicationBoundValueProvider.java 3e806929a039c49b83455b637bf16c079a9e9c29 RED
+MaxReplicationBoundValueProvider.java 78cde3b9543ff06c9310f96de8ad24e9feacc5d4 RED
+MinReplicationBoundValueProvider.java 7ef7176ae0f4e64ad0e0923f09f3bc8fe0a14b67 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings
index 7997c2ae4b0347225485224440a03937d3d9c88d..1264a044e27f191598aa1de703f7d5a3a19b0f33 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings
@@ -1 +1 @@
-Opt4JDseBackend.java 2d4b0c96fcda02bf428fb5a6c02a48bbef74374b RED
+Opt4JDseBackend.java 50254b3b5058ed77e8a868f3545fde16153217b1 RED
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 14e19ce8e9d28acfdfc4197b18bd089da87491f9..f208d7d88821902bd3762ca21a3f1a0ac40f21c1 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 069d001586ce88cb320537b1411b1a3b8649003b RED
-Explorer.java c857d21f603d09447953d3e4929aedb76b1b1bfd RED
+DSEFactory.java 98b9133b3f33fe8c2d61f8bdab8ac97508872a6e RED
+Explorer.java 9e0020b6a55bb035a41fb1bf4a1b709a7d6353f6 RED
 ImplicitExplorationTargetFactory.java 0b10dc4e8385bbdee0217dac783203080eb723f0 RED
 SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED
-TaskMappingFactory.java eb8e4a8b70f9465b849dd5700f603f55aa26363e RED
+TaskMappingFactory.java 14671417668c58cbfd97bb1fcebf0874895314e8 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 5400412739026bd3fe813ced9551f386779600aa..8712f4416d47f010b7348a293f8744ea97a29f00 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
@@ -18,6 +18,7 @@ package org.fortiss.af3.exploration.alg.dse;
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import javax.activation.UnsupportedDataTypeException;
@@ -58,7 +59,11 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.taskmapping.ins
 import org.fortiss.af3.exploration.alg.dse.evaluator.ArchitectureEvaluator;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.FailSilentExecModelFactory;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.FaultDetectionVotingExecModelFactory;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IMemoryUnitAdapter;
 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.moea.model.DseSpecification;
 import org.fortiss.af3.exploration.moea.model.feature.SafetyExploration;
@@ -72,6 +77,7 @@ import org.jgrapht.experimental.dag.DirectedAcyclicGraph.CycleFoundException;
  * @author diewald
  */
 public class DSEFactory {
+	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
 
 	/** The instance (singleton) of the {@link DSEFactory}. */
 	private static final class InstanceHolder {
@@ -88,6 +94,11 @@ public class DSEFactory {
 		return InstanceHolder.INSTANCE;
 	}
 
+	// FIXME: Remove this method: it violates the sigleton pattern.
+	public void init(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
+		this.systemModelAdapter = systemModelAdapter;
+	}
+
 	/**
 	 * Creates/Registers the sub problem definitions that compose the overall architectural
 	 * exploration problem.
@@ -107,9 +118,7 @@ public class DSEFactory {
 	@SuppressWarnings("unchecked")
 	public <C, S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 			void createSubProblems(ArchitectureExplorationProblemModule archExpProblemModule,
-					DseSpecification dse,
-					SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DecoderDependencyGraph execDepGraph) throws Exception {
+					DseSpecification dse, DecoderDependencyGraph execDepGraph) throws Exception {
 		// Java-limitation: it is not possible to pass the generic to the static methods.
 		TaskMappingFactory<S, T> tmFactory =
 				(TaskMappingFactory<S, T>)TaskMappingFactory.getInstance();
@@ -120,15 +129,12 @@ public class DSEFactory {
 			sfExplorationModule.getAdapters().parallelStream()
 					.forEach(a -> a.initializeAdapter(systemModelAdapter));
 			systemModelAdapter.addSafetyFunctionAdapters(sfExplorationModule.getAdapters());
-			createSafetyFunctionArchProblem(archExpProblemModule, systemModelAdapter, execDepGraph);
+			createSafetyFunctionArchProblem(archExpProblemModule, execDepGraph);
 		}
-		createPartitionMappingProblem(archExpProblemModule, dse, systemModelAdapter, execDepGraph);
-		createPlatformCommunicationGraphProblem(archExpProblemModule, systemModelAdapter,
-				execDepGraph);
-		createAbstractTaskMappingProblem(tmFactory, archExpProblemModule, dse, systemModelAdapter,
-				execDepGraph);
-		createTaskMappingInstantiationProblem(tmFactory, archExpProblemModule, dse,
-				systemModelAdapter, execDepGraph);
+		createPartitionMappingProblem(archExpProblemModule, dse, execDepGraph);
+		createPlatformCommunicationGraphProblem(archExpProblemModule, execDepGraph);
+		createAbstractTaskMappingProblem(tmFactory, archExpProblemModule, dse, execDepGraph);
+		createTaskMappingInstantiationProblem(tmFactory, archExpProblemModule, dse, execDepGraph);
 	}
 
 	/**
@@ -148,20 +154,18 @@ public class DSEFactory {
 	@SuppressWarnings("unchecked")
 	private <C, T extends SafetyFunctionArchEncoding<C>> void createSafetyFunctionArchProblem(
 			ArchitectureExplorationProblemModule archExpProblemModule,
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) throws Exception {
 		// These suppress warnings are required since type erasure in Java does not allow to pass
 		// XY<Z>.class.
 		@SuppressWarnings("rawtypes") SafetyFunctionArchCreator sfCreator =
-				new SafetyFunctionArchCreator<C>(systemModelAdapter, execDepGraph);
+				new SafetyFunctionArchCreator(systemModelAdapter.getSafetyFunctionAdapters(),
+						execDepGraph);
 		@SuppressWarnings("rawtypes") SFEncodingDecoder sfEncodingDecoder =
 				new SFEncodingDecoder<>();
-		@SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder =
-				new SFGraphDecoder<C>(systemModelAdapter);
-		@SuppressWarnings("rawtypes") SFMappingDecoder sfMappingDecoder =
-				new SFMappingDecoder<C>(systemModelAdapter);
+		@SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder = new SFGraphDecoder();
+		@SuppressWarnings("rawtypes") SFMappingDecoder sfMappingDecoder = new SFMappingDecoder();
 		@SuppressWarnings("rawtypes") SFMappingConstraintDecoder sfMappingConstraintDecoder =
-				new SFMappingConstraintDecoder<C>(systemModelAdapter);
+				new SFMappingConstraintDecoder();
 
 		sfCreator.registerAssocDecoders(sfEncodingDecoder);
 		sfCreator.registerAssocDecoders(sfGraphDecoder);
@@ -174,6 +178,7 @@ public class DSEFactory {
 		sfDecoders.add(sfMappingDecoder);
 		sfDecoders.add(sfMappingConstraintDecoder);
 
+		execDepGraph.addCreatedEncoding(sfCreator.getCreatedEncodingType());
 		archExpProblemModule.registerSubProblem(SafetyFunctionArchEncoding.class, sfCreator,
 				sfDecoders);
 	}
@@ -186,8 +191,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 CycleFoundException
@@ -196,11 +199,12 @@ public class DSEFactory {
 	@SuppressWarnings("unchecked")
 	private void createPartitionMappingProblem(
 			ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) throws CycleFoundException {
 		Class<PartitionMappingEncoding> pmEnodingClass = PartitionMappingEncoding.class;
-		PartitionMappingCreator pmCreator =
-				new PartitionMappingCreator(systemModelAdapter, execDepGraph);
+		PartitionMappingCreator pmCreator = new PartitionMappingCreator(execDepGraph,
+				(Collection<IExecutionUnitAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getDeploymentTargets(),
+				systemModelAdapter.getDeployableComponents().size());
 
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> pmDecoders = new ArrayList<>();
 		PartitionMappingIdentityDecoder pmDecoder = new PartitionMappingIdentityDecoder();
@@ -209,6 +213,7 @@ public class DSEFactory {
 		pmDecoders.add(pmDecoder);
 		pmDecoders.add(tiraDecoder);
 		pmCreator.registerAssocDecoders(pmDecoder);
+		execDepGraph.addCreatedEncoding(pmCreator.getCreatedEncodingType());
 		archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders);
 	}
 
@@ -220,16 +225,25 @@ public class DSEFactory {
 	@SuppressWarnings("unchecked")
 	private void createPlatformCommunicationGraphProblem(
 			ArchitectureExplorationProblemModule archExpProblemModule,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) throws CycleFoundException {
 		Class<PlatformCommunicationGraphEncoding> pmEnodingClass =
 				PlatformCommunicationGraphEncoding.class;
-		PlatformCommunicationGraphCreator pmCreator =
-				new PlatformCommunicationGraphCreator(systemModelAdapter, execDepGraph);
+		PlatformCommunicationGraphCreator pmCreator = new PlatformCommunicationGraphCreator(
+				execDepGraph,
+				(Collection<IExecutionUnitAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getDeploymentTargets(),
+				(Collection<IMemoryUnitAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getMemoryUnits(),
+				(Collection<IGatewayUnitAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getGatewayUnits(),
+				(Collection<ITransmissionUnitAdapter<?>>)(Collection<?>)systemModelAdapter
+						.getTransmissionUnits(),
+				systemModelAdapter.getResouceConnections());
 
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> pmDecoders = new ArrayList<>();
 		PartitionMappingDecoderGraph pmgDecoder = new PartitionMappingDecoderGraph();
 		pmDecoders.add(pmgDecoder);
+		execDepGraph.addCreatedEncoding(pmCreator.getCreatedEncodingType());
 		archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders);
 	}
 
@@ -246,8 +260,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
@@ -257,11 +269,10 @@ public class DSEFactory {
 	private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 			void createAbstractTaskMappingProblem(TaskMappingFactory<S, T> tmFactory,
 					ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse,
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DecoderDependencyGraph execDepGraph) throws Exception {
 		Class<AbstractTaskMappingEncoding> tmEnodingClass = AbstractTaskMappingEncoding.class;
 		AbstractTaskMappingCreator tmCreator =
-				tmFactory.createAbstractTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
+				tmFactory.createAbstractTaskMappingCreator(dse, execDepGraph);
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> abstrTaskDecoders = new ArrayList<>();
 		AbstractTaskMappingDecoder<?, ?> atmDecoder =
 				tmFactory.createAbstractTaskMappingDecoder(systemModelAdapter, dse);
@@ -272,6 +283,7 @@ public class DSEFactory {
 		tmCreator.registerAssocDecoders(atmDecoder);
 		tmCreator.registerAssocDecoders(idtDecoder);
 
+		execDepGraph.addCreatedEncoding(tmCreator.getCreatedEncodingType());
 		archExpProblemModule.registerSubProblem(tmEnodingClass, tmCreator, abstrTaskDecoders);
 	}
 
@@ -289,8 +301,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
@@ -300,7 +310,6 @@ public class DSEFactory {
 	private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 			void createTaskMappingInstantiationProblem(TaskMappingFactory<S, T> tmFactory,
 					ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse,
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DecoderDependencyGraph execDepGraph) throws Exception {
 		// These suppress warnings are required since type erasure in Java does not allow to pass
 		// XY<Z>.class.
@@ -312,7 +321,7 @@ public class DSEFactory {
 		@SuppressWarnings("rawtypes") MessageDecoder msgDecoder =
 				tmFactory.createMessageDecoder(systemModelAdapter);
 		@SuppressWarnings("rawtypes") TaskMappingCreator tmCreator =
-				tmFactory.createTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
+				tmFactory.createTaskMappingCreator(dse, execDepGraph);
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> instTaskDecoders = new ArrayList<>();
 		instTaskDecoders.add(tgDecoder);
 		instTaskDecoders.add(acycTgDecoder);
@@ -320,6 +329,7 @@ public class DSEFactory {
 		instTaskDecoders.add(tmDecoder);
 		tmCreator.registerAssocDecoders(instTaskDecoders);
 
+		execDepGraph.addCreatedEncoding(tmCreator.getCreatedEncodingType());
 		archExpProblemModule.registerSubProblem(InstantiatedTaskMappingEncoding.class, tmCreator,
 				instTaskDecoders);
 	}
@@ -329,9 +339,8 @@ public class DSEFactory {
 	 * concrete architecture exploration problem, i.e. the {@link ArchitectureExplorationCreator}
 	 * calls the creators of the genotypes composing the architecture exploration problem.
 	 */
-	public ArchitectureExplorationCreator createArchitectureExplorationCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new ArchitectureExplorationCreator(dse, systemModelAdapter);
+	public ArchitectureExplorationCreator createArchitectureExplorationCreator() {
+		return new ArchitectureExplorationCreator();
 	}
 
 	/**
@@ -366,10 +375,8 @@ public class DSEFactory {
 	 * DSE.
 	 * It delegates the subproblems to sub decoders, e.g. a decoder for the task mapping problem.
 	 */
-	public ArchitectureDecoder createArchitectureDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph execdepGraph) {
-		return new ArchitectureDecoder(systemModelAdapter, execdepGraph);
+	public ArchitectureDecoder createArchitectureDecoder(DecoderDependencyGraph execdepGraph) {
+		return new ArchitectureDecoder(execdepGraph);
 	}
 
 	/**
@@ -378,8 +385,7 @@ public class DSEFactory {
 	 * It delegates the evaluation of the overall problem to sub-decoders, e.g. an evaluator of the
 	 * power consumption of a TT-schedule.
 	 */
-	public ArchitectureEvaluator createArchitectureEvaluator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		return new ArchitectureEvaluator(systemModelAdapter);
+	public ArchitectureEvaluator createArchitectureEvaluator() {
+		return new ArchitectureEvaluator();
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
index 806837be7ba3b946ffd58948b73d8e589618844b..ca337e8dc13f299de0b27b4629f2afe54279cfc1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
@@ -87,6 +87,7 @@ public class Explorer {
 		}
 
 		// Extract external models to add them to the available input models.
+		// TODO: readd support for "external" EMF models
 		for(ExplorationTarget<?> expTarget : expSpec.getTargets()) {
 			if(expTarget instanceof ExternalModelTarget) {
 				Collection<EObject> extModels =
@@ -94,7 +95,6 @@ public class Explorer {
 				for(EObject extModel : extModels) {
 					@SuppressWarnings("unchecked") Class<? extends EObject> modelType =
 							(Class<? extends EObject>)extModel.eClass().getInstanceClass();
-					systemModelAdapter.putInputModel(modelType, extModel);
 				}
 			}
 		}
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 cdb34c19f1b7888ccbcfea187a4a5338c7852e69..ec27a950fe9120a27aa18721164bae268d6a03c0 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
@@ -96,16 +96,13 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * 
 	 * @param dse
 	 *            design space exploration model defined in the GUI
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
 	 * @param execDepGraph
 	 *            Dependency graph defining the execution order.
 	 * @return instance of an {@link AbstractTaskMappingCreator}.
 	 */
 	public AbstractTaskMappingCreator createAbstractTaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) {
-		return new AbstractTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
+		return new AbstractTaskMappingCreator(dse, execDepGraph);
 	}
 
 	/**
@@ -113,15 +110,12 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * 
 	 * @param dse
 	 *            design space exploration model defined in the GUI
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
 	 * @param execDepGraph
 	 *            Dependency graph defining the execution order.
 	 * @return instance of a {@link TaskMappingCreator}.
 	 */
 	// TODO: document execDepGraph param.
 	public TaskMappingCreator<S, T> createTaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
@@ -132,15 +126,12 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * 
 	 * @param dse
 	 *            design space exploration model defined in the GUI
-	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
 	 * @param abstractEnc
 	 *            encoding that may contain abstract task which need to be instantiated.
 	 * @return instance of a {@link TaskMappingCreator}.
 	 */
 	// TODO: update doc
 	public TaskMappingCreator<S, T> createTaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			AbstractTaskMappingEncoding abstractEnc) {
 		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/create/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings
index b88f42483b86ce2365e2304303afbea1ae7eaf34..b4cea5d757fb8cdc91d11c623aabff492f5de198 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 +1,2 @@
-ArchitectureExplorationCreator.java 5bbd448f433da0e455e026f9452b7bccf67e4905 RED
+ArchitectureExplorationCreator.java d0a638d783ec90959bf1f95af42ea5a15606ebd2 RED
+InitialEncodingProvider.java a265e1b07f9f5e7dfb3a7dd808240c39ad25f4f9 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java
index d4bf0d59597b6d849ab55da9c838643195c968d3..1d101999bf56eca36a607b45c7e8fddb5fe06b67 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java
@@ -18,12 +18,8 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.ArchitectureExplorationEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.CompositeCreatorBase;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
-import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.opt4j.core.problem.Creator;
 
-import com.google.inject.Inject;
-
 /**
  * {@link Creator} of the {@link ArchitectureExplorationEncoding} of an architectural exploration
  * problem, that consists of sub encodings. Refer to {@link ComposableGenotype} for further
@@ -33,18 +29,6 @@ import com.google.inject.Inject;
  */
 public class ArchitectureExplorationCreator
 		extends CompositeCreatorBase<ArchitectureExplorationEncoding> {
-
-	/** DSE specification */
-	protected DseSpecification dse;
-
-	/** Constructor. */
-	@Inject
-	public ArchitectureExplorationCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-		this.dse = dse;
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public ArchitectureExplorationEncoding createComposite() {
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
new file mode 100644
index 0000000000000000000000000000000000000000..d19f0843418c111181d7f359559c23f4864c1e91
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java
@@ -0,0 +1,86 @@
+/*-------------------------------------------------------------------------+
+| Copyright 2018 fortiss GmbH                                              |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create;
+
+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;
+
+/**
+ * Holds encodings which are generated from the input models. In contrast to {@link Genotype}s, they
+ * are not considered as variables by the optimizer.
+ * Nevertheless, this provider may also hold {@link Genotype} encodings for the case that an
+ * exploration feature is disabled, but it's outputs would be required by dependent features. The
+ * provider is responsible to provide the required inputs iff these inputs can be constructed from
+ * the input models.
+ * 
+ * @author diewald
+ */
+public class InitialEncodingProvider {
+	/** Holds the instance. */
+	private volatile static InitialEncodingProvider INSTANCE;
+
+	/** Constructor. */
+	private InitialEncodingProvider() {
+		// Prevent direct instantiation of this singleton.
+	}
+
+	/** Returns the instance of this singleton. */
+	public static synchronized InitialEncodingProvider getInstance() {
+		if(INSTANCE == null) {
+			INSTANCE = new InitialEncodingProvider();
+		}
+		return INSTANCE;
+	}
+
+	/**
+	 * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@code this}
+	 * {@link SystemModelAdapter} by their corresponding types.
+	 */
+	private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings =
+			new HashMap<>();
+
+	/** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */
+	public <T extends IExplorationEncoding> void registerInputEncoding(T encoding) {
+		@SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass();
+		assert (!inputEncodings.containsKey(
+				encodingType)) : "You are trying to add an encoding to the input encoding whose type is already registered. This is not supported";
+		inputEncodings.put(encodingType, encoding);
+	}
+
+	/** Returns the input encoding of the given type. */
+	@SuppressWarnings("unchecked")
+	public <T extends IExplorationEncoding> T getInputEncoding(Class<T> encodingType) {
+		return (T)inputEncodings.get(encodingType);
+	}
+
+	/**
+	 * Returns the collection of {@link IExplorationEncoding} types that are availably through
+	 * {@code this} {@link SystemModelAdapter}.
+	 */
+	public Set<Class<? extends IExplorationEncoding>> getRegisteredEncodingTypes() {
+		return inputEncodings.keySet();
+	}
+
+	/** Empties the currently held encodings. */
+	public void clearEncodings() {
+		inputEncodings.clear();
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings
index ec4315b53f38c11d946adb7b377bdb6dacca5d0e..b6c77c3ab45670bbfcfc21b45065260528ca28d3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings
@@ -1 +1 @@
-PartitionMappingCreator.java c5536fccefbe437360efe9fe8a60409991192243 RED
+PartitionMappingCreator.java 624850b3bbf31e965005ed1acf8622e81f1103b6 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java
index 7849120558e41c2b3ce76c6a6d82ebf126d1634a..6c83f8a857b0fa1e1bf90121a91d58038ed5d9d0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.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.encoding.partitionmapping.PartitionMappingEncoding.CREATE_STARTEGY;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase;
@@ -22,7 +24,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 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 org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.opt4j.core.problem.Creator;
@@ -33,29 +35,34 @@ import org.opt4j.core.problem.Creator;
  * @author diewald
  */
 public class PartitionMappingCreator extends ComposableCreatorBase<PartitionMappingEncoding> {
+	/** Physical execution units. */
+	private Collection<IExecutionUnitAdapter<?>> execUnits;
+
+	/** Number of tasks to allocate to partitions. */
+	int numTasks;
 
 	/** Constructor. */
-	public PartitionMappingCreator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph depGraph) {
-		super(systemModelAdapter, depGraph);
+	public PartitionMappingCreator(DecoderDependencyGraph depGraph,
+			Collection<IExecutionUnitAdapter<?>> execUnits, int numTasks) {
+		super(depGraph);
+		this.execUnits = execUnits;
+		this.numTasks = numTasks;
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public PartitionMappingEncoding createComposable(FlatGenotypeMap createdGenotypes,
 			FlatPhenotypeMap<Phenotype> decodedPhenotypes) {
-		// TODO In order to correctly choose the create strategy here, we'd need to know the
-		// population size. For now, we assume an initial population size of 25.
-		final int INIT_POP_SIZE = 25;
-		// "Probability distribution" for the strategy selection: | 1 | 23 | 1 | ==> 25
-		int strategySelIdx = RandomExploration.getInstance().nextInt(INIT_POP_SIZE);
+		// "Probability distribution" for the strategy selection: |1|numTasks - 2|1| ==> numTasks
+		int strategySelIdx = RandomExploration.getInstance().nextInt(numTasks);
 		switch(strategySelIdx) {
 			case 0:
-				return new PartitionMappingEncoding(systemModelAdapter, CREATE_STARTEGY.MIN_SET);
+				return new PartitionMappingEncoding(execUnits, numTasks, CREATE_STARTEGY.MIN_SET);
 			case 24:
-				return new PartitionMappingEncoding(systemModelAdapter, CREATE_STARTEGY.MAX_SET);
+				return new PartitionMappingEncoding(execUnits, numTasks, CREATE_STARTEGY.MAX_SET);
 			default:
-				return new PartitionMappingEncoding(systemModelAdapter, CREATE_STARTEGY.RANDOM_SET);
+				return new PartitionMappingEncoding(execUnits, numTasks,
+						CREATE_STARTEGY.RANDOM_SET);
 		}
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings
index 98d16b028d0e71aae562862f2cd15eaa6635f490..8581fab183fd7b440ada1fc4e78bd8385033085d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings
@@ -1 +1 @@
-PlatformCommunicationGraphCreator.java 072bb6445dc182931ef28e47dbaad19ae87cc3d6 RED
+PlatformCommunicationGraphCreator.java fd016186eea8e716f9f6699b46c5d386acf2db8a RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java
index 9427662c76976c40febfb02b1ec83b4da6417d4b..54301f92ded2065b76a45ad27aeb6a8dcbac01fb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java
@@ -15,14 +15,26 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.platform;
 
+import java.util.Collection;
+
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.FlatGenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 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 org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IMemoryUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
+import org.jgrapht.DirectedGraph;
+import org.jgrapht.Graphs;
+import org.jgrapht.graph.DefaultDirectedGraph;
+import org.jgrapht.graph.DefaultEdge;
 
 /**
  * 
@@ -30,24 +42,76 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  */
 public class PlatformCommunicationGraphCreator
 		extends ComposableCreatorBase<PlatformCommunicationGraphEncoding> {
+	/** Execution Units present in the input models. */
+	private Collection<IExecutionUnitAdapter<?>> execUnits;
+	/** Memories present in the input models. */
+	private Collection<IMemoryUnitAdapter<?>> memoryUnits;
+	/** Gateways present in the input models. */
+	private Collection<IGatewayUnitAdapter<?>> gatewayUnits;
+	/** Transmission Units present in the input models. */
+	private Collection<ITransmissionUnitAdapter<?>> transmissionUnits;
+	/** Connections between resources present in the input models. */
+	private Collection<IResourceConnectionAdapter> resourceConnections;
+
 	/** Constructor. */
-	public PlatformCommunicationGraphCreator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph depGraph) {
-		super(systemModelAdapter, depGraph);
+	public PlatformCommunicationGraphCreator(DecoderDependencyGraph depGraph,
+			Collection<IExecutionUnitAdapter<?>> execUnits,
+			Collection<IMemoryUnitAdapter<?>> memoryUnits,
+			Collection<IGatewayUnitAdapter<?>> gatewayUnits,
+			Collection<ITransmissionUnitAdapter<?>> transmissionUnits,
+			Collection<IResourceConnectionAdapter> resourceConnections) {
+		super(depGraph);
+		this.execUnits = execUnits;
+		this.memoryUnits = memoryUnits;
+		this.gatewayUnits = gatewayUnits;
+		this.transmissionUnits = transmissionUnits;
+		this.resourceConnections = resourceConnections;
 	}
 
 	/** {@inheritDoc} */
 	@Override
 	public PlatformCommunicationGraphEncoding createComposable(FlatGenotypeMap createdGenotypes,
 			FlatPhenotypeMap<Phenotype> decodedPhenotypes) {
-		PlatformCommunicationGraphEncoding pcgEncoding = new PlatformCommunicationGraphEncoding(
-				systemModelAdapter, systemModelAdapter.createGraph());
-		// Debug code
-		// if(isDebugVerboseEnabled()) {
-		// pcgEncoding.display();
-		// }
-		return pcgEncoding;
+		DirectedGraph<IResourceAdapter<?>, DefaultEdge> tempPlatformCommGraph =
+				new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class);
+		DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph =
+				new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class);
+
+		// Add all resources present in the platform as vertices to the "connection graph"
+		Graphs.addAllVertices(tempPlatformCommGraph, execUnits);
+		Graphs.addAllVertices(tempPlatformCommGraph, memoryUnits);
+		Graphs.addAllVertices(tempPlatformCommGraph, gatewayUnits);
+		Graphs.addAllVertices(tempPlatformCommGraph, transmissionUnits);
+
+		// Successively connect the resources in the graph. The edges are given within the
+		// collection resource connectors are assumed to be fully connected.
+		for(IResourceConnectionAdapter connection : resourceConnections) {
+			// We add edges for each receiver in order to support broadcast connections
+			for(IResourceAdapter<?> currentReceiverResource : connection.getTargetResources()) {
+				// If the current resource is a child of a {@link TransmissionUnit} (like a NoC
+				// router), respect the direction of connections such that complex networks are
+				// correctly reflected.
+				if(connection
+						.getConnectionType(currentReceiverResource) == ConnectionType.OUTGOING) {
+					Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(),
+							currentReceiverResource);
+				} else if(connection
+						.getConnectionType(currentReceiverResource) == ConnectionType.INCOMING) {
+					Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource,
+							connection.getSourceResource());
+				} else {
+					// Add the edges of a single connection. We add to edges for each connection
+					// such that an undirected graph is generated effectively. It is required to use
+					// this "trick" in order to be able to use the standard shortest path
+					// algorithms.
+					Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(),
+							currentReceiverResource);
+					Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource,
+							connection.getSourceResource());
+				}
+			}
+		}
+		return new PlatformCommunicationGraphEncoding(platformGraph);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings
index 20c6ada402194e67d871eb2aaba16673f5e7c659..a6d95f4febd71947302f178f93ab1061fcd54de8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings
@@ -1 +1 @@
-SafetyFunctionArchCreator.java 26770ef069fd786ecf579cbb761a1071073c975d RED
+SafetyFunctionArchCreator.java 29178efd61d31c86d719a8fac9a110745e3cf5aa RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java
index eea946000bedef55ccbe394d6efb59dd8327d22f..e15712cd3dbf2a62f38c5dcad6cf101fff8525e1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java
@@ -15,12 +15,14 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.safetyfunctionarch;
 
+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.create.ComposableCreatorBase;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.FlatGenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISafetyFunctionAdapter;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 
 import com.google.inject.Inject;
@@ -33,12 +35,15 @@ import com.google.inject.Inject;
  */
 public class SafetyFunctionArchCreator<C>
 		extends ComposableCreatorBase<SafetyFunctionArchEncoding<C>> {
+	/** Collection of safety functions present in the system. */
+	Collection<ISafetyFunctionAdapter<C>> sfAdapters;
 
 	/** Constructor. */
 	@Inject
-	public SafetyFunctionArchCreator(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter,
+	public SafetyFunctionArchCreator(Collection<ISafetyFunctionAdapter<C>> sfAdapters,
 			DecoderDependencyGraph execDepGraph) {
-		super(systemModelAdapter, execDepGraph);
+		super(execDepGraph);
+		this.sfAdapters = sfAdapters;
 	}
 
 	/** {@inheritDoc} */
@@ -48,8 +53,7 @@ public class SafetyFunctionArchCreator<C>
 			FlatPhenotypeMap decodedPhenotypes) {
 		// It is clear that the generic is right. However, the compiler does not get it. Thus,
 		// suppress the corresponding Warnings.
-		return new SafetyFunctionArchEncoding(systemModelAdapter.getSafetyFunctionAdapters(), true,
-				true);
+		return new SafetyFunctionArchEncoding(sfAdapters, true, true);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings
index 049b045ec5a5b679a316f32fa856fd9508249624..5c511d7e9aac6e74a0be16e8b3bd8f9e78fd7981 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings
@@ -1,4 +1,4 @@
-AbstractTaskMappingCreator.java 1e4473c63abb2aa49b0d85a96ad0de025f42bebb RED
-FailSilentTaskMappingCreator.java ec7daa0d1bd3c42eedc69a5d955269e7ff3798d0 RED
-FaultDetectionVotingTaskMappingCreator.java 34efb7f7574f833aac75c8f4f80d4d5da0dd9c37 RED
-TaskMappingCreator.java e5aa46677ddc797f92847dfe3179a22424a780f8 RED
+AbstractTaskMappingCreator.java f0cee5bfa4e83539c2b7ad2ac8e66c1457c39ab5 RED
+FailSilentTaskMappingCreator.java e21d4f6d6ed24fb42adeb9cd9f7b0069aeb40fd5 RED
+FaultDetectionVotingTaskMappingCreator.java 8b18ef5401d28cc61ba4ce3545c16d531289549e RED
+TaskMappingCreator.java 154b1528e3b96078a4f00a633adce5fbe6233151 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java
index f8bcc0e592e19886759962b980f25484c1b19c69..813a927b1b10b29e7707f4207901d3e0a3529b43 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java
@@ -24,7 +24,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.exception.ExplorationException;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
@@ -44,10 +43,8 @@ public class AbstractTaskMappingCreator
 
 	/** Constructor */
 	@Inject
-	public AbstractTaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph execDepGraph) {
-		super(dse, systemModelAdapter, execDepGraph);
+	public AbstractTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) {
+		super(dse, execDepGraph);
 	}
 
 	/**
@@ -69,7 +66,7 @@ public class AbstractTaskMappingCreator
 				createdGenotypes.get(AbstractTaskMappingEncoding.class);
 		PartitionMappingEncoding partEnc = createdGenotypes.get(PartitionMappingEncoding.class);
 		assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes.";
-		return new AbstractTaskMappingEncoding(dse, systemModelAdapter, partEnc, atgEnc, atmEnc);
+		return new AbstractTaskMappingEncoding(dse, partEnc, atgEnc, atmEnc);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java
index e26e68115bd4c4fc3ad2c456a577156820977b5f..7375dc0d4c424606672e0fd88a2f97bf2f0c58ea 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java
@@ -25,7 +25,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 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 org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 
@@ -44,10 +43,8 @@ public class FailSilentTaskMappingCreator
 	 * (execution model = fail-silent)
 	 */
 	@Inject
-	public FailSilentTaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph execDepGraph) {
-		super(dse, systemModelAdapter, execDepGraph);
+	public FailSilentTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) {
+		super(dse, execDepGraph);
 	}
 
 	/** {@inheritDoc} */
@@ -62,7 +59,7 @@ public class FailSilentTaskMappingCreator
 		assert (atmEnc != null) : "The required abstract task mapping encoding could not be found in the map of already decoded phenotypes.";
 		PartitionMappingEncoding partEnc = createdGenotypes.get(PartitionMappingEncoding.class);
 		assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes.";
-		return new FailSilentTaskMappingEncoding(dse, systemModelAdapter, partEnc, atgEnc, atmEnc);
+		return new FailSilentTaskMappingEncoding(dse, partEnc, atgEnc, atmEnc);
 	}
 
 	// TODO: remove this method: use the identifier from the encoding, instead.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java
index c1991126ae6537d97f53ac62b2eefcab9c7e1c59..0b8ce4eb8f73d3fa0fa1d3ef0d4ffec2e2be253e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java
@@ -25,7 +25,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 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 org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 
@@ -45,9 +44,8 @@ public class FaultDetectionVotingTaskMappingCreator extends
 	 */
 	@Inject
 	public FaultDetectionVotingTaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) {
-		super(dse, systemModelAdapter, execDepGraph);
+		super(dse, execDepGraph);
 	}
 
 	/** {@inheritDoc} */
@@ -62,8 +60,7 @@ public class FaultDetectionVotingTaskMappingCreator extends
 		assert (atmEnc != null) : "The required abstract task mapping encoding could not be found in the map of already decoded phenotypes.";
 		PartitionMappingEncoding partEnc = createdGenotypes.get(PartitionMappingEncoding.class);
 		assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes.";
-		return new FaultDetectionVotingTaskMappingEncoding(dse, systemModelAdapter, partEnc, atgEnc,
-				atmEnc);
+		return new FaultDetectionVotingTaskMappingEncoding(dse, partEnc, atgEnc, atmEnc);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java
index 576da44e2c6d60430d2a0ecaa2ac0e26800f9b64..1b09ee1d49cd4a8424d922fa605463f810063c78 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java
@@ -21,7 +21,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 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.Genotype;
 import org.opt4j.core.problem.Creator;
@@ -42,10 +41,8 @@ public abstract class TaskMappingCreator<S extends TaskMappingEntry<ITaskAdapter
 
 	/** Constructor. */
 	@Inject
-	public TaskMappingCreator(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph execDepGraph) {
-		super(systemModelAdapter, execDepGraph);
+	public TaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) {
+		super(execDepGraph);
 		this.dse = dse;
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings
index 0f4a0e17f142d1283e093e570c34e2392c870a94..c2323e22d537ba3e9131040bb83ca81789da25bc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings
@@ -1 +1 @@
-MessageEncoding.java f52ba1f6179357209a1fd265238746102a1c3728 RED
+MessageEncoding.java 523e16c2ec3d890b6715bfcd24ab39da4f850621 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
index 069573fa6a1bf56259a5dc15a353071b5637dd09..36e5d7bc48fd4097c975b8422473c9f75501acd2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
@@ -1,3 +1,3 @@
 Partition.java b870fdd306818d8195b662daee9546feebb28e18 RED
-PartitionMappingEncoding.java 345a25f0324c07a8e4c5b83d2cabeae2ba7c9608 RED
+PartitionMappingEncoding.java 45388dce4228074541b17410baabf30f9c22f858 RED
 PartitionMappingEntry.java 2f8f082e6bcd49dbe2f5ba88724850b54b20d637 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java
index d298d291d8ae741714ee1bc08c446cd6e7a868be..0bad93c34b5d0abcb90034e3882211057643c218 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java
@@ -23,8 +23,8 @@ import java.util.Map;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding;
 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.IExecutionUnitAdapter;
 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.random.RandomExploration;
 
 /**
@@ -52,12 +52,11 @@ public class PartitionMappingEncoding extends
 
 	/** Constructor. */
 	// TODO: The strategy can be replaced by lambdas for a cleaner design.
-	public PartitionMappingEncoding(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
+	public PartitionMappingEncoding(Collection<IExecutionUnitAdapter<?>> targetSet, int numTasks,
 			CREATE_STARTEGY strategy) {
+		this.targetSet = targetSet;
 		// Number of tasks to deploy
 		// TODO: This does not consider task replicas yet.
-		int taskNum = systemModelAdapter.getDeployableComponents().size();
-		targetSet = systemModelAdapter.getDeploymentTargets();
 		if(strategy == CREATE_STARTEGY.MIN_SET) {
 			for(IResourceAdapter<?> target : targetSet) {
 				Partition part = new Partition();
@@ -65,7 +64,7 @@ public class PartitionMappingEncoding extends
 			}
 		} else if(strategy == CREATE_STARTEGY.RANDOM_SET) {
 			for(IResourceAdapter<?> target : targetSet) {
-				int randMaxPartitions = RandomExploration.getInstance().nextInt(taskNum);
+				int randMaxPartitions = RandomExploration.getInstance().nextInt(numTasks);
 				// Ensure at least one partition per phys. execution unit.
 				randMaxPartitions = (randMaxPartitions < 1) ? 1 : randMaxPartitions;
 				for(int i = 0; i < randMaxPartitions; ++i) {
@@ -75,7 +74,7 @@ public class PartitionMappingEncoding extends
 			}
 		} else if(strategy == CREATE_STARTEGY.MAX_SET) {
 			for(IResourceAdapter<?> target : targetSet) {
-				for(int i = 0; i < taskNum; ++i) {
+				for(int i = 0; i < numTasks; ++i) {
 					Partition part = new Partition();
 					allocationMap.put(part, new PartitionMappingEntry(part, target));
 				}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings
index 1a3629389d11d4d12156a1c2877fa769c7e62773..d5a16a58dda581a60afc1af2c6111c6167b389d3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings
@@ -1 +1 @@
-PlatformCommunicationGraphEncoding.java 5cd55e1eb23fdb27389dd95ef7edaf16bb4bc01e RED
+PlatformCommunicationGraphEncoding.java 69cdf4968c8572f70b4360b0c027cf6cbfd28a92 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java
index 2aa5bb16ea543fbc22af665bdcada91c71d921e8..e44f92b6a282bcb9dff02ed1a81653af69bb215d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java
@@ -20,7 +20,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 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.graph.display.JGraphTVisualizer;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.jgrapht.DirectedGraph;
@@ -36,25 +35,17 @@ import org.jgrapht.graph.DefaultEdge;
  */
 public class PlatformCommunicationGraphEncoding implements IExplorationEncoding, ComposableGenotype,
 		ComposablePhenotype<PartitionMappingEncoding>, Cloneable {
-
-	/** Representation of input system model */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** The graph representing the communication structure of a platform. */
 	protected DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph;
 
 	/** Constructor for the initial version of the Graph w/o available Partitions. */
 	public PlatformCommunicationGraphEncoding(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph) {
-		this.systemModelAdapter = systemModelAdapter;
 		this.platformGraph = platformGraph;
 	}
 
 	/** Copy constructor. */
-	protected PlatformCommunicationGraphEncoding(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	protected PlatformCommunicationGraphEncoding() {
 	}
 
 	/** Creates a Dialog that illustrates this {@link DirectedGraph}. */
@@ -82,9 +73,7 @@ public class PlatformCommunicationGraphEncoding implements IExplorationEncoding,
 	@SuppressWarnings("unchecked")
 	@Override
 	public PlatformCommunicationGraphEncoding newInstance() {
-		PlatformCommunicationGraphEncoding pcgEncoding =
-				new PlatformCommunicationGraphEncoding(systemModelAdapter, this.platformGraph);
-		return pcgEncoding;
+		return new PlatformCommunicationGraphEncoding(platformGraph);
 	}
 
 	/** {@inheritDoc} */
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 4d759b43f02c1143ac95296fd93c785818de2b44..d5190aa79eabbd397dce962885f87a14fe02b356 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 5978cc6ab893cbd36e337da149b23f728885a923 RED
-InstantiatedAcyclicTaskGraphEncoding.java d350697fc6ce436f0eb7466be1462b922f35f1ef RED
-InstantiatedTaskGraphEncoding.java 9ac64514fb83bbc4f0258b3fc40ac40bd76a5f83 RED
-SafeTaskGraphEncoding.java 2df896a20d2f1759b07de59385df00440a20e8a2 RED
-TaskGraphEncoding.java 2b90454bea36e75301633fdeec83cf9a874d7269 RED
+AbstractTaskGraphEncoding.java 40dfbbfac60f8c595e7e673e9e709736a1b9e091 RED
+InstantiatedAcyclicTaskGraphEncoding.java 4541bb1f0c79aafbc88b49c0cbbe7c973153e1af RED
+InstantiatedTaskGraphEncoding.java 01b03a6de225f5890a4a9764f127045c4748e14e RED
+SafeTaskGraphEncoding.java 03cb22320614f1ad4c16fbe68acbe045ca7e89ef RED
+TaskGraphEncoding.java be6960a7221e7383afc17be8734e982b1529db2f 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 fd50f6bdb7a8f889bad359a52524b24d6d5ce7ee..3d297b8c0af9ebe6127102b88d4fcaff286146dc 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
@@ -15,6 +15,8 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph;
 
+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;
@@ -31,8 +33,8 @@ public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C>
 		extends TaskGraphEncoding<G, C, DefaultTaskGraph<?>> {
 
 	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
-	public AbstractTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public AbstractTaskGraphEncoding(Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) {
+		super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs);
 	}
 
 	/** 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 67998b5b51bca104adcc270a0a0e0edaddb04af7..db1d1698e65c57928cbec26ce8f31855f636ab64 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
@@ -38,16 +38,8 @@ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMapp
 	/**
 	 * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}.
 	 */
-	public InstantiatedAcyclicTaskGraphEncoding(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			Collection<DefaultTaskGraph<?>> taskGraphs) {
-		super(systemModelAdapter, AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs));
-	}
-
-	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
-	public InstantiatedAcyclicTaskGraphEncoding(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public InstantiatedAcyclicTaskGraphEncoding(Collection<DefaultTaskGraph<?>> taskGraphs) {
+		super(AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs));
 	}
 
 	/** 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 cf1f8f170d773719dc18232745d6ae0e54a5d745..9b4f735d2e86a0e0c1991e4692c0d08a73763cc0 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
@@ -35,15 +35,9 @@ public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntr
 	/**
 	 * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}.
 	 */
-	public InstantiatedTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			Collection<DefaultTaskGraph<?>> taskGraphs) {
-		super(systemModelAdapter, taskGraphs);
-	}
-
-	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
 	public InstantiatedTaskGraphEncoding(
-			SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+			Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) {
+		super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs);
 	}
 
 	/** 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 5a2726db0a69d64b6535ed461bc7165989a107f1..7a845dd47445c026c153c59df72b651ee3925181 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
@@ -15,9 +15,13 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph;
 
+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;
 
 /**
@@ -28,10 +32,13 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  */
 public class SafeTaskGraphEncoding<C>
 		extends AbstractTaskGraphEncoding<SafetyFunctionArchEncoding<C>, C> {
+	/** Collection of task graphs extracted from the input models. */
+	Collection<TaskGraph> originalTaskGraphs;
 
 	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
-	public SafeTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public SafeTaskGraphEncoding(Collection<TaskGraph> originalTaskGraphs) {
+		super((Collection<? extends DefaultTaskGraph<?>>)originalTaskGraphs);
+		this.originalTaskGraphs = originalTaskGraphs;
 	}
 
 	/** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */
@@ -39,6 +46,19 @@ public class SafeTaskGraphEncoding<C>
 		super(encoding);
 	}
 
+	/**
+	 * Detects whether the {@link TaskGraph} of the input system model references any tasks of the
+	 * internal {@link TaskGraph}s and returns the first matching {@link TaskGraph}.
+	 */
+	public TaskGraph getOriginalTaskGraph(ITaskAdapter<?> task) {
+		for(TaskGraph currTG : originalTaskGraphs) {
+			if(currTG.containsTask(task)) {
+				return currTG;
+			}
+		}
+		return null;
+	}
+
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
 	@Override
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 3890f90dce7151bda197f44cd7eb60a842fc62aa..cab6a9c268ff19a2efe4c165b5a56dc5e1623a49 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
@@ -19,14 +19,12 @@ import static org.fortiss.af3.exploration.alg.util.GraphUtils.getGraphOf;
 
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.stream.Collectors;
 
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.af3.component.model.Component;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 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.SignalAdapterWeightedEdge;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
@@ -41,10 +39,6 @@ import org.opt4j.core.Genotype;
  */
 public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 		implements IExplorationEncoding, ComposablePhenotype<G>, Cloneable {
-
-	/** References the {@link SystemModelAdapter} which adapts the input models. */
-	protected SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** {@link TaskGraph} that represents the deployable components and their signals. */
 	protected Collection<T> taskGraphs;
 
@@ -64,24 +58,7 @@ 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.
 	 */
-	@SuppressWarnings("unchecked")
-	public TaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-
-		taskGraphs = (Collection<T>)systemModelAdapter.getTaskGraphs().stream().map(tg -> tg.copy())
-				.collect(Collectors.toSet());
-
-		replicableComponents.addAll(systemModelAdapter.getReplicableComponents());
-		deployableComponents.addAll(systemModelAdapter.getDeployableComponents());
-	}
-
-	/**
-	 * Constructor that initializes {@code this} encoding with the collection of
-	 * {@link ITaskAdapter}s as they are extracted from the input models.
-	 */
-	public TaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			Collection<T> taskGraphs) {
-		this(systemModelAdapter);
+	public TaskGraphEncoding(Collection<T> taskGraphs) {
 		this.taskGraphs = taskGraphs;
 
 		this.deployableComponents.clear();
@@ -117,11 +94,6 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 		// present in the system model adapter.
 
 		TaskGraph taskGraph = getGraphOf(task, taskGraphs);
-		// Find the right Task Graph, in case the task does not exist in any of the task graphs of
-		// this encoding.
-		if(taskGraph == null) {
-			taskGraph = findTGBySystemModel(systemModelAdapter.getTaskGraph(task));
-		}
 
 		// TODO: This should be transformed into an exception.
 		assert (taskGraph != null) : "The task to be added could be neither found in this encoding, nor the input models.";
@@ -133,44 +105,30 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 		}
 	}
 
-	/**
-	 * Detects whether the {@link TaskGraph} of the input system model references any tasks of the
-	 * internal {@link TaskGraph}s and returns the first matching {@link TaskGraph}.
-	 */
-	private TaskGraph findTGBySystemModel(TaskGraph systemTG) {
-		for(TaskGraph currTG : taskGraphs) {
-			if(currTG.containsAnyTaskOf(systemTG.getTasks())) {
-				return currTG;
-			}
-		}
-		return null;
-	}
-
 	/**
 	 * Adds all signals defined in the input models for the given
 	 * {@link ITaskAdapter} which must be contained in any of the internal
 	 * {@link TaskGraph}s.
 	 */
-	public void addSignalsOf(ITaskAdapter<C> task) {
+	public void addSignalsOf(ITaskAdapter<C> task, TaskGraph origTaskGraph) {
 		// The given task must be in the any of the task graphs!
 
 		T taskGraph = getGraphOf(task, taskGraphs);
 		// TODO: This should be transformed into an exception.
 		assert (taskGraph != null);
 
-		TaskGraph systemTG = systemModelAdapter.getTaskGraph(task);
 		Collection<SignalAdapterWeightedEdge> incomingEdges =
-				systemTG.getGraph().incomingEdgesOf(task);
+				origTaskGraph.getGraph().incomingEdgesOf(task);
 		Collection<SignalAdapterWeightedEdge> outgoingEdges =
-				systemTG.getGraph().outgoingEdgesOf(task);
+				origTaskGraph.getGraph().outgoingEdgesOf(task);
 
 		for(SignalAdapterWeightedEdge edge : incomingEdges) {
-			ITaskAdapter<?> source = systemTG.getGraph().getEdgeSource(edge);
+			ITaskAdapter<?> source = taskGraph.getGraph().getEdgeSource(edge);
 			taskGraph.getGraph().addEdge(source, task, edge);
 		}
 
 		for(SignalAdapterWeightedEdge edge : outgoingEdges) {
-			ITaskAdapter<?> target = systemTG.getGraph().getEdgeTarget(edge);
+			ITaskAdapter<?> target = taskGraph.getGraph().getEdgeTarget(edge);
 			taskGraph.getGraph().addEdge(task, target, edge);
 		}
 	}
@@ -259,7 +217,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph>
 	 * Returns the deployable (software) component that are present in the internal
 	 * {@link TaskGraph}s. May contain "abstract" {@link Component}s.
 	 */
-	public Collection<ITaskAdapter<?>> getDeployableComponents() {
+	public Collection<ITaskAdapter<?>> getTasks() {
 		// return deployableComponents;
 		Collection<ITaskAdapter<?>> deplComp = new HashSet<>();
 		for(T tg : taskGraphs) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings
index a92b55cd861fc4e5254a57e7b89444c9e22b80ca..ceadd362632ba2ad7136e6fb2f14626d250df447 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings
@@ -1,2 +1,2 @@
-TaskMappingEncoding.java 930be52f3d4940c4905ce901e8376ea076caf2c7 RED
+TaskMappingEncoding.java 978f19bbba5b01c9b5157292775610d2a40df378 RED
 TaskMappingEntry.java 8872e14a5d29f267ce2be78e9a3f3f817f16edd2 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java
index 63ca9e12982bd26ca42dd0567f2d951f98a6e2bb..49480f278fb9d8c40710ef8b8fc574b325c62a54 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java
@@ -41,7 +41,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.encoding.Con
 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.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.mapping.IMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
@@ -52,7 +51,6 @@ import org.fortiss.af3.exploration.model.ExplorationConstraint;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.fortiss.af3.exploration.moea.model.predefined.ComponentMultiAllocationConstraint;
 import org.fortiss.af3.exploration.moea.model.predefined.ComponentMultiDislocationConstraint;
-import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.tooling.common.util.LambdaUtils;
 
 import com.google.common.collect.HashMultimap;
@@ -100,14 +98,14 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	/** Deployable component adapters that shall not be considered by the redundancy operator. */
 	protected Collection<ITaskAdapter<?>> fixAllocatedComponents;
 
-	/** Representation of input system */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/**
 	 * Collection of deployable {@link ITaskAdapter}s represented by {@code this}
 	 * mapping.
 	 */
-	protected Collection<S> deployableComponents;
+	protected Collection<S> tasks;
+
+	/** Collection of {@link Partition}s to deploy {@link Task}s to. */
+	protected Collection<Partition> partitions;
 
 	/** The input {@link TaskGraphEncoding} that contains the tasks and their signals. */
 	protected TaskGraphEncoding<?, ?, ?> tgEncoding;
@@ -123,37 +121,19 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	 * system.
 	 */
 	@SuppressWarnings("unchecked")
-	public TaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding) {
+	public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding,
+			TaskGraphEncoding<?, ?, ?> tgEncoding) {
 		this.dse = dse;
-		this.systemModelAdapter = systemModelAdapter;
 		this.tgEncoding = tgEncoding;
 		this.partMappingEncoding = partMappingEncoding;
-		this.deployableComponents = (Collection<S>)tgEncoding.getDeployableComponents();
+		this.tasks = (Collection<S>)tgEncoding.getTasks();
+		this.partitions = partMappingEncoding.getRequesters();
 
 		disallowedAllocations = createDisallowedAllocationMap();
 		allowedAllocations = createAllowedAllocationMap();
 		fixAllocatedComponents = createFixAllocationCollection();
 	}
 
-	/**
-	 * Constructor that optionally initializes the encoding to a random encoding.
-	 * 
-	 * @throws ExplorationException
-	 *             if no valid allocation targets can be identified for one
-	 *             {@link ITaskAdapter}.
-	 */
-	public TaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize)
-			throws ExplorationException {
-		this(dse, systemModelAdapter, new PartitionMappingEncoding(systemModelAdapter, null),
-				new TaskGraphEncoding<>(systemModelAdapter));
-		if(initialize) {
-			resetEncoding();
-		}
-	}
-
 	/**
 	 * Constructor that optionally initializes the encoding to a random encoding
 	 * 
@@ -161,11 +141,9 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public TaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding,
-			boolean initialize) throws ExplorationException {
-		this(dse, systemModelAdapter, partMappingEncoding, tgEncoding);
+	public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding,
+			TaskGraphEncoding<?, ?, ?> tgEncoding, boolean initialize) throws ExplorationException {
+		this(dse, partMappingEncoding, tgEncoding);
 		if(initialize) {
 			resetEncoding();
 		}
@@ -178,12 +156,11 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public TaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding,
+	public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding,
+			TaskGraphEncoding<?, ?, ?> tgEncoding,
 			TaskMappingEncoding<ITaskAdapter<?>, ?> incompleteEncoding)
 			throws ExplorationException {
-		this(dse, systemModelAdapter, partMappingEncoding, tgEncoding);
+		this(dse, partMappingEncoding, tgEncoding);
 		completeEncoding(incompleteEncoding);
 	}
 
@@ -220,16 +197,16 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	// components (-> marker) to not be processed by subsequent operators.
 	private Collection<ITaskAdapter<?>> createFixAllocationCollection() {
 		Collection<ITaskAdapter<?>> fixAllocatedComponents = new HashSet<>();
-		for(ITaskAdapter<?> compAdp : deployableComponents) {
+		for(ITaskAdapter<?> compAdp : tasks) {
 			Optional<ComponentMultiDislocationConstraint> constr =
 					dse.getTargetSpecification().getTargets().stream()
 							.filter(c -> (c instanceof ComponentMultiDislocationConstraint))
 							.map(ComponentMultiDislocationConstraint.class::cast)
 							.filter(c -> c.getComponent() == compAdp.getObject()).findAny();
-			if(constr.isPresent()) {
-				fixAllocatedComponents.add(
-						systemModelAdapter.getDeployableComponentOf(constr.get().getComponent()));
-			}
+			// if(constr.isPresent()) {
+			// fixAllocatedComponents.add(
+			// systemModelAdapter.getDeployableComponentOf(constr.get().getComponent()));
+			// }
 		}
 		return fixAllocatedComponents;
 	}
@@ -253,26 +230,27 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	private Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> createDisallowedAllocationMap() {
 		Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> rval = HashMultimap.create();
 
-		Collection<ComponentMultiDislocationConstraint> forbiddenDeploymentConstraints =
-				getChildrenWithType(dse, ComponentMultiDislocationConstraint.class);
-
-		for(ComponentMultiDislocationConstraint currentConstraint : forbiddenDeploymentConstraints) {
-			for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter
-					.getDeployableComponents()) {
-				if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) {
-					// TODO: Remove dependency on AF3 here.
-					Collection<ExecutionUnit> forbiddenAF3TargetsOfComponent =
-							currentConstraint.getExecutionUnits();
-					for(IExecutionUnitAdapter<?> currentForbiddenTargetUnit : systemModelAdapter
-							.getDeploymentTargets()) {
-						if(forbiddenAF3TargetsOfComponent
-								.contains(currentForbiddenTargetUnit.getObject())) {
-							rval.put(currentComponentAdapter, currentForbiddenTargetUnit);
-						}
-					}
-				}
-			}
-		}
+		// Collection<ComponentMultiDislocationConstraint> forbiddenDeploymentConstraints =
+		// getChildrenWithType(dse, ComponentMultiDislocationConstraint.class);
+		//
+		// for(ComponentMultiDislocationConstraint currentConstraint :
+		// forbiddenDeploymentConstraints) {
+		// for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter
+		// .getDeployableComponents()) {
+		// if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) {
+		// // TODO: Remove dependency on AF3 here.
+		// Collection<ExecutionUnit> forbiddenAF3TargetsOfComponent =
+		// currentConstraint.getExecutionUnits();
+		// for(IExecutionUnitAdapter<?> currentForbiddenTargetUnit : systemModelAdapter
+		// .getDeploymentTargets()) {
+		// if(forbiddenAF3TargetsOfComponent
+		// .contains(currentForbiddenTargetUnit.getObject())) {
+		// rval.put(currentComponentAdapter, currentForbiddenTargetUnit);
+		// }
+		// }
+		// }
+		// }
+		// }
 
 		return rval;
 	}
@@ -288,30 +266,31 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 				getChildrenWithType(dse, ComponentMultiAllocationConstraint.class);
 		Collection<ITaskAdapter<?>> constrainedComponentAdps = new HashSet<>();
 
-		for(ComponentMultiAllocationConstraint currentConstraint : allowedDeploymentConstraints) {
-			for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter
-					.getDeployableComponents()) {
-				if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) {
-					constrainedComponentAdps.add(currentComponentAdapter);
-
-					// TODO: Remove dependency on AF3 here.
-					Collection<ExecutionUnit> allowedAF3TargetsOfComponent =
-							currentConstraint.getExecutionUnits();
-					for(IExecutionUnitAdapter<?> currentAllowedTargetUnit : systemModelAdapter
-							.getDeploymentTargets()) {
-						if(allowedAF3TargetsOfComponent
-								.contains(currentAllowedTargetUnit.getObject())) {
-							rval.put(currentComponentAdapter, currentAllowedTargetUnit);
-						}
-					}
-				}
-			}
-		}
+		// for(ComponentMultiAllocationConstraint currentConstraint : allowedDeploymentConstraints)
+		// {
+		// for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter
+		// .getTasks()) {
+		// if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) {
+		// constrainedComponentAdps.add(currentComponentAdapter);
+		//
+		// // TODO: Remove dependency on AF3 here.
+		// Collection<ExecutionUnit> allowedAF3TargetsOfComponent =
+		// currentConstraint.getExecutionUnits();
+		// for(IExecutionUnitAdapter<?> currentAllowedTargetUnit : systemModelAdapter
+		// .getDeploymentTargets()) {
+		// if(allowedAF3TargetsOfComponent
+		// .contains(currentAllowedTargetUnit.getObject())) {
+		// rval.put(currentComponentAdapter, currentAllowedTargetUnit);
+		// }
+		// }
+		// }
+		// }
+		// }
 
-		for(ITaskAdapter<?> curDeplComp : deployableComponents) {
+		for(ITaskAdapter<?> curDeplComp : tasks) {
 			// TODO: create a field for the deployment targets.
 			if(!constrainedComponentAdps.contains(curDeplComp)) {
-				systemModelAdapter.getDeploymentTargets().forEach(t -> rval.put(curDeplComp, t));
+				partitions.forEach(t -> rval.put(curDeplComp, t));
 			}
 		}
 
@@ -328,7 +307,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 		// ITaskAdapter<?> origComponent = systemModelAdapter
 		// .getDeployableComponentOf((EObject)deployableComponent.getObject());
 		// return allowedAllocations.get(origComponent);
-		return Collections.emptySet();
+		return allowedAllocations.get(deployableComponent);
 	}
 
 	/**
@@ -397,7 +376,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	public void completeEncoding(TaskMappingEncoding<?, ?> incompleteEncoding)
 			throws ExplorationException {
 		ArrayList<S> allocComponents = new ArrayList<>();
-		allocComponents.addAll(deployableComponents);
+		allocComponents.addAll(tasks);
 
 		if(incompleteEncoding != null) {
 			allocComponents.removeAll(incompleteEncoding.getRequesters());
@@ -420,7 +399,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	public void resetEncoding() throws ExplorationException {
 		assert (false);
 		allocationMap.clear();
-		createEncoding(deployableComponents);
+		createEncoding(tasks);
 	}
 
 	/**
@@ -433,8 +412,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 	 */
 	protected void createEncoding(Collection<S> allocatableComponents) throws ExplorationException {
 		double selRandOrFixedInit = rand.nextDouble();
-		List<IExecutionUnitAdapter<?>> execTargets =
-				new ArrayList<>(systemModelAdapter.getDeploymentTargets());
+		List<IExecutionUnitAdapter<?>> execTargets = new ArrayList<>(partitions);
 		int roundRobinAllocIdx = rand.nextInt(execTargets.size());
 
 		List<S> compColl = new ArrayList<>(allocatableComponents);
@@ -444,13 +422,16 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 
 		for(S deployableComponent : compColl) {
 			List<Partition> validExecTargets = new ArrayList<>();
-			if(allowedAllocations.containsKey(deployableComponent)) {
-				List<IExecutionUnitAdapter<?>> physicalExecTargets = allowedAllocations
-						.get(deployableComponent).stream().collect(Collectors.toList());
-				for(IExecutionUnitAdapter<?> physExecUnit : physicalExecTargets) {
-					validExecTargets.addAll(partMappingEncoding.getRequesters(physExecUnit));
-				}
-			}
+			validExecTargets.addAll((Collection<Partition>)(Collection<?>)allowedAllocations
+					.get(deployableComponent));
+			// TODO: reenable the constraints twds. phys exec Units.
+			// if(allowedAllocations.containsKey(deployableComponent)) {
+			// List<IExecutionUnitAdapter<?>> physicalExecTargets = allowedAllocations
+			// .get(deployableComponent).stream().collect(Collectors.toList());
+			// for(IExecutionUnitAdapter<?> physExecUnit : physicalExecTargets) {
+			// validExecTargets.addAll(partMappingEncoding.getRequesters(physExecUnit));
+			// }
+			// }
 
 			if(selRandOrFixedInit < fixToRandomRatio) {
 				generateRandomDeployment(deployableComponent);
@@ -525,9 +506,11 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 		// is given
 		if(deploymentTargets == null || deploymentTargets.isEmpty()) {
 			deploymentTargets = new ArrayList<Partition>();
-			for(IResourceAdapter<?> physResource : allowedAllocations.get(deployableComponent)) {
-				deploymentTargets.addAll(partMappingEncoding.getRequesters(physResource));
-			}
+			deploymentTargets.addAll(partitions);
+			// TODO: Reenable when the constraints twds phys exec units are operational again.
+			// for(IResourceAdapter<?> physResource : allowedAllocations.get(deployableComponent)) {
+			// deploymentTargets.addAll(partMappingEncoding.getRequesters(physResource));
+			// }
 		}
 
 		// Remove any disallowed mapping
@@ -635,8 +618,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 		for(ComponentMultiAllocationConstraint cons : constraints) {
 			if(cons.getComponent() == deployableComponent.getObject()) {
 				removeTask(deployableComponent);
-				List<IExecutionUnitAdapter<?>> physExecList =
-						new ArrayList<>(systemModelAdapter.getDeploymentTargets());
+				List<IExecutionUnitAdapter<?>> physExecList = new ArrayList<>(partitions);
 				List<Partition> execList = new ArrayList<>();
 				LambdaUtils.forEach(physExecList, e -> execList
 						.addAll(partMappingEncoding.getRequesters((IResourceAdapter<?>)e)));
@@ -753,10 +735,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T
 		return str;
 	}
 
-	/**
-	 * Returns all independent {@link DefaultTaskGraph}s contained in this
-	 * {@link SystemModelAdapter}.
-	 */
+	/** Returns all independent {@link DefaultTaskGraph}s contained in this encoding. */
 	public TaskGraphEncoding<?, ?, ?> getTaskGraphEncoding() {
 		return tgEncoding;
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings
index be62ba9ca9419f7d01bbf26fb21c82b7cdc10f4c..80ee49551aeba8c89e6ee4067602ba4957c3251d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings
@@ -1,2 +1,2 @@
-AbstractTaskMappingEncoding.java 631cdcc84f476354eadd07abb21106d2390815bb RED
+AbstractTaskMappingEncoding.java 285c8a15dda294bee34119d914e46bd8f0864283 RED
 AbstractTaskMappingEntry.java 0bef4c1102baf6bfbddc759fd103cf18df4b5553 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java
index bc825e86933f217a0008cc9578a057f83d1074fb..bf776e421a54365968dbd4876ca942db9698b736 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java
@@ -28,7 +28,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 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.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.opt4j.core.Genotype;
@@ -46,10 +45,9 @@ public class AbstractTaskMappingEncoding
 	 * Constructor that is initialized with a reference to the DSE specification and the input
 	 * system model.
 	 */
-	AbstractTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, SafeTaskGraphEncoding<?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+	AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			SafeTaskGraphEncoding<?> tgEncoding) {
+		super(dse, partEnc, tgEncoding);
 	}
 
 	/**
@@ -59,31 +57,15 @@ public class AbstractTaskMappingEncoding
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public AbstractTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, SafeTaskGraphEncoding<?> tgEncoding,
-			boolean initialize) throws ExplorationException {
-		super(dse, systemModelAdapter, partEnc, tgEncoding, initialize);
+	public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			SafeTaskGraphEncoding<?> tgEncoding, boolean initialize) throws ExplorationException {
+		super(dse, partEnc, tgEncoding, initialize);
 	}
 
 	/** Copy Constructor. */
-	public AbstractTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
-	}
-
-	/**
-	 * Constructor that optionally initializes the encoding to a random encoding
-	 * 
-	 * @throws ExplorationException
-	 *             if no valid allocation targets can be identified for one
-	 *             {@link ITaskAdapter}.
-	 */
-	public AbstractTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize)
-			throws ExplorationException {
-		super(dse, systemModelAdapter, initialize);
+	public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			TaskGraphEncoding<?, ?, ?> tgEncoding) {
+		super(dse, partEnc, tgEncoding);
 	}
 
 	/**
@@ -93,11 +75,10 @@ public class AbstractTaskMappingEncoding
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public AbstractTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> atgEnc,
-			boolean initialize) throws ExplorationException {
-		super(dse, systemModelAdapter, partEnc, atgEnc, initialize);
+	public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> atgEnc, boolean initialize)
+			throws ExplorationException {
+		super(dse, partEnc, atgEnc, initialize);
 	}
 
 	/**
@@ -110,11 +91,10 @@ public class AbstractTaskMappingEncoding
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public AbstractTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> atgEnc,
-			AbstractTaskMappingEncoding partialEncoding) throws ExplorationException {
-		super(dse, systemModelAdapter, partEnc, atgEnc, partialEncoding);
+	public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> atgEnc, AbstractTaskMappingEncoding partialEncoding)
+			throws ExplorationException {
+		super(dse, partEnc, atgEnc, partialEncoding);
 	}
 
 	/** {@inheritDoc} */
@@ -142,7 +122,7 @@ public class AbstractTaskMappingEncoding
 	@Override
 	public AbstractTaskMappingEncoding newInstance() {
 		try {
-			return new AbstractTaskMappingEncoding(dse, systemModelAdapter, true);
+			return new AbstractTaskMappingEncoding(dse, null, null, true);
 		} catch(ExplorationException e) {
 			// Opt4J does not allow to throw Exceptions here.
 			throw new RuntimeException(e);
@@ -153,8 +133,7 @@ public class AbstractTaskMappingEncoding
 	@Override
 	public AbstractTaskMappingEncoding clone() {
 		AbstractTaskMappingEncoding clonedEncoding;
-		clonedEncoding = new AbstractTaskMappingEncoding(dse, systemModelAdapter,
-				partMappingEncoding, tgEncoding);
+		clonedEncoding = new AbstractTaskMappingEncoding(dse, partMappingEncoding, tgEncoding);
 
 		Map<AbstractTaskMappingEntry, AbstractTaskMappingEntry> copyAssocMap = new HashMap<>();
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings
index a815873fa8fe5acd8f5a9e35dd9d81a888375788..962cb0eb5dc192721645bc90e10665d7cd6ebf96 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings
@@ -1,6 +1,6 @@
-FailSilentTaskMappingEncoding.java 1457b164ab20624575f4bcbd3e9263c2d9c029c5 RED
+FailSilentTaskMappingEncoding.java 6cd0c0d865f7930e9c1ef5aa24006c1c118f9ad8 RED
 FailSilentTaskMappingEntry.java 28c15e958f6208c1c65e5076bc7c3be26d7a2dc9 RED
-FaultDetectionVotingTaskMappingEncoding.java 95d5befaeb9185f2ebe5ee5ff0d5e58412afcd03 RED
+FaultDetectionVotingTaskMappingEncoding.java dee2b30029af89891814450e064cbfdb70af3124 RED
 FaultDetectionVotingTaskMappingEntry.java c6f6588154665d765b506850a78d8a434000c843 RED
-InstantiatedTaskMappingEncoding.java 564ee5ab7d5eaf98a134dd92faee35cc30d038fd RED
+InstantiatedTaskMappingEncoding.java 35e480631da67eebd5e52d20485b6a76c9f030ec RED
 InstantiatedTaskMappingEntry.java 06181aa57ffb0c269c4dac8047cdccc2ae7afdd9 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java
index 61622c70e3e04243c513c463dc3c1824d9062761..e5a362b79a9f1b78a09b4b18b6538ed4bf4dfbfe 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java
@@ -24,7 +24,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 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.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.moea.model.DseSpecification;
 
@@ -40,17 +39,15 @@ public class FailSilentTaskMappingEncoding
 	 * Constructor that is initialized with a reference to the DSE specification and the input
 	 * system model.
 	 */
-	FailSilentTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+	FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> tgEncoding) {
+		super(dse, partEnc, tgEncoding);
 	}
 
 	/** Copy Constructor. */
-	FailSilentTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+	FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			TaskGraphEncoding<?, ?, ?> tgEncoding) {
+		super(dse, partEnc, tgEncoding);
 	}
 
 	// TODO: Check whether the two constructors below are actually needed.
@@ -61,35 +58,20 @@ public class FailSilentTaskMappingEncoding
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public FailSilentTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding,
-			boolean initialize) throws ExplorationException {
-		super(dse, systemModelAdapter, partEnc, tgEncoding, initialize);
-	}
-
-	/**
-	 * Constructor that optionally initializes the encoding to a random encoding
-	 * 
-	 * @throws ExplorationException
-	 *             if no valid allocation targets can be identified for one
-	 *             {@link ITaskAdapter}.
-	 */
-	public FailSilentTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize)
+	public FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize)
 			throws ExplorationException {
-		super(dse, systemModelAdapter, initialize);
+		super(dse, partEnc, tgEncoding, initialize);
 	}
 
 	/**
 	 * Constructor which derives the resulting {@link FailSilentTaskMappingEncoding} from the given
 	 * {@link AbstractTaskMappingEncoding}.
 	 */
-	public FailSilentTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding,
+	public FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> tgEncoding,
 			AbstractTaskMappingEncoding abstractEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding, abstractEncoding);
+		super(dse, partEnc, tgEncoding, abstractEncoding);
 	}
 
 	/** {@inheritDoc} */
@@ -116,7 +98,7 @@ public class FailSilentTaskMappingEncoding
 	@Override
 	public FailSilentTaskMappingEncoding newInstance() {
 		try {
-			return new FailSilentTaskMappingEncoding(dse, systemModelAdapter, true);
+			return new FailSilentTaskMappingEncoding(dse, null, null, true);
 		} catch(ExplorationException e) {
 			// Opt4J does not allow to throw Exceptions here.
 			throw new RuntimeException(e);
@@ -128,8 +110,7 @@ public class FailSilentTaskMappingEncoding
 	public FailSilentTaskMappingEncoding clone() {
 		// TODO: Here, we should maintain the mapping.
 		FailSilentTaskMappingEncoding clonedEncoding;
-		clonedEncoding = new FailSilentTaskMappingEncoding(dse, systemModelAdapter,
-				partMappingEncoding, tgEncoding);
+		clonedEncoding = new FailSilentTaskMappingEncoding(dse, partMappingEncoding, tgEncoding);
 		return clonedEncoding;
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java
index 2d7b0bdb194b3fc436f5b401e817ca7b4964f21d..e906d793528ba8a329b3549ead4b904135ce73bb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.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.abstractmapping.AbstractTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEntry;
 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.moea.model.DseSpecification;
 
@@ -39,10 +38,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 	 * Constructor that is initialized with a reference to the DSE specification and the input
 	 * system model.
 	 */
-	FaultDetectionVotingTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+	FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> tgEncoding) {
+		super(dse, partEnc, tgEncoding);
 	}
 
 	// TODO: Check whether the two constructors below are actually needed.
@@ -54,24 +52,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 	 *             {@link ITaskAdapter}.
 	 */
 	public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding,
 			boolean initialize) throws ExplorationException {
-		super(dse, systemModelAdapter, partEnc, tgEncoding, initialize);
-		assert (false) : "Never here any more.";
-	}
-
-	/**
-	 * Constructor that optionally initializes the encoding to a random encoding
-	 * 
-	 * @throws ExplorationException
-	 *             if no valid allocation targets can be identified for one
-	 *             {@link ITaskAdapter}.
-	 */
-	public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize)
-			throws ExplorationException {
-		super(dse, systemModelAdapter, initialize);
+		super(dse, partEnc, tgEncoding, initialize);
 		assert (false) : "Never here any more.";
 	}
 
@@ -80,10 +63,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 	 * the given {@link AbstractTaskMappingEncoding}.
 	 */
 	public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding,
 			AbstractTaskMappingEncoding abstractEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding, abstractEncoding);
+		super(dse, partEnc, tgEncoding, abstractEncoding);
 	}
 
 	/** {@inheritDoc} */
@@ -112,7 +94,7 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 	@Override
 	public FaultDetectionVotingTaskMappingEncoding newInstance() {
 		try {
-			return new FaultDetectionVotingTaskMappingEncoding(dse, systemModelAdapter, true);
+			return new FaultDetectionVotingTaskMappingEncoding(dse, null, null, true);
 		} catch(ExplorationException e) {
 			// Opt4J does not allow to throw Exceptions here.
 			throw new RuntimeException(e);
@@ -127,8 +109,7 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 		// TODO: Here, we should maintain the mapping.
 		FaultDetectionVotingTaskMappingEncoding clonedEncoding = null;
 		try {
-			clonedEncoding =
-					new FaultDetectionVotingTaskMappingEncoding(dse, systemModelAdapter, false);
+			clonedEncoding = new FaultDetectionVotingTaskMappingEncoding(dse, null, null, false);
 		} catch(ExplorationException e) {
 			// Opt4J does not allow to throw Exceptions here.
 			throw new RuntimeException(e);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java
index a616471c347402fbf90e352225cd4cba43cba4a2..f56533609ddf90863cda19ccb108be76c4d90ff0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java
@@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 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;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.opt4j.core.Genotype;
@@ -48,16 +47,14 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask
 	 * system model.
 	 */
 	protected InstantiatedTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+		super(dse, partEnc, tgEncoding);
 	}
 
 	/** Copy Constructor. */
 	protected InstantiatedTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+		super(dse, partEnc, tgEncoding);
 	}
 
 	// TODO: Check whether the two constructors below are actually needed.
@@ -68,35 +65,20 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link ITaskAdapter}.
 	 */
-	public InstantiatedTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding,
-			boolean initialize) throws ExplorationException {
-		super(dse, systemModelAdapter, partEnc, tgEncoding, initialize);
-	}
-
-	/**
-	 * Constructor that optionally initializes the encoding to a random encoding
-	 * 
-	 * @throws ExplorationException
-	 *             if no valid allocation targets can be identified for one
-	 *             {@link ITaskAdapter}.
-	 */
-	public InstantiatedTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize)
+	public InstantiatedTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize)
 			throws ExplorationException {
-		super(dse, systemModelAdapter, initialize);
+		super(dse, partEnc, tgEncoding, initialize);
 	}
 
 	/**
 	 * Constructor which derives the resulting {@link InstantiatedTaskMappingEncoding} from the
 	 * given {@link AbstractTaskMappingEncoding}.
 	 */
-	public InstantiatedTaskMappingEncoding(DseSpecification dse,
-			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding,
+	public InstantiatedTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc,
+			AbstractTaskGraphEncoding<?, ?> tgEncoding,
 			AbstractTaskMappingEncoding abstractEncoding) {
-		super(dse, systemModelAdapter, partEnc, tgEncoding);
+		super(dse, partEnc, tgEncoding);
 		this.constraintMap = abstractEncoding.copyConstraintMap(null);
 		instantiateAbstractEntries(abstractEncoding);
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings
index cba6099fd05ed0a0d3c13c4c8d06e1c99ca92a60..a0053d4e9934c12a204d2fe68bdb3f10bce95ca7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings
@@ -1,4 +1,4 @@
 ComposableCreator.java 14cb174847cd3a0882bc4fd17cf8cbe18b2b7f36 RED
-ComposableCreatorBase.java 1973a3b7381a283020361df273ef7cdf3bfd3948 RED
+ComposableCreatorBase.java 336e1e319b4a7650851eddf0417f6dd6726afff7 RED
 CompositeCreator.java 65ab9f283191b081e40e8587431fd0a95f1daca6 RED
-CompositeCreatorBase.java c701656ca99b43c8e868216c0399de635595ca7a RED
+CompositeCreatorBase.java ac356e2a17e5929c965f14766d85e609eaf011d2 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java
index e6437bb41078b289151b16b3bb31d9763a7a297f..69bbbb7a7b5fd5ee1401d7c11958a9982ff17451 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.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.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.decode.ConstraintGenerationDecoder;
 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.alg.util.ExplorationAlgDebugUtils;
 import org.opt4j.core.Genotype;
@@ -48,10 +47,6 @@ import org.opt4j.core.problem.Decoder;
  */
 public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 		implements ComposableCreator<G> {
-
-	/** References the input models */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** References the {@link ComposableDecoder}s that decode the created {@link Genotype}. */
 	private List<ComposableDecoder<G, ? extends ComposablePhenotype<G>>> subDecoders =
 			new ArrayList<>();
@@ -67,12 +62,10 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 	 * References the {@link DecoderDependencyGraph} which defines execution orders and which
 	 * {@link Phenotype}s are needed within the DSE.
 	 */
-	DecoderDependencyGraph depGraph;
+	private DecoderDependencyGraph depGraph;
 
 	/** Default constructor that requires a representation of the input models. */
-	public ComposableCreatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph depGraph) {
-		this.systemModelAdapter = systemModelAdapter;
+	public ComposableCreatorBase(DecoderDependencyGraph depGraph) {
 		this.depGraph = depGraph;
 	}
 
@@ -106,12 +99,10 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 	public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> decodeCreatedGenotype(
 			G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes,
 			Set<Class<? extends Genotype>> createdGenotypeTypeSet) throws DecodingException {
-		FlatPhenotypeMap<Phenotype> phenotypes =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
+		FlatPhenotypeMap<Phenotype> phenotypes = new FlatPhenotypeMap<>();
 		Collection<Class<? extends IExplorationEncoding>> reqPhenotypeTypes =
 				depGraph.getAllRequiredTypes();
-		FlatPhenotypeMap<Phenotype> intermediatePhenos =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
+		FlatPhenotypeMap<Phenotype> intermediatePhenos = new FlatPhenotypeMap<>();
 		intermediatePhenos.addAll(decodedPhenotypes);
 
 		Optional<? extends ComposableDecoder<G, P>> idDecoder =
@@ -164,10 +155,8 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 	public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype>
 			identityDecodeCreatedGenotype(G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes)
 					throws DecodingException {
-		FlatPhenotypeMap<Phenotype> phenotypes =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
-		FlatPhenotypeMap<Phenotype> intermediatePhenos =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
+		FlatPhenotypeMap<Phenotype> phenotypes = new FlatPhenotypeMap<>();
+		FlatPhenotypeMap<Phenotype> intermediatePhenos = new FlatPhenotypeMap<>();
 		intermediatePhenos.addAll(decodedPhenotypes);
 
 		// If an identity decoder is present, execute it before any other decoder to ensure all
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java
index 0a609d7abdb37405c1079a47a30ea252eb41eadc..88bb3e8d2af3c40ef563649bf599d3dbe2268805 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java
@@ -24,13 +24,10 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 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 org.fortiss.af3.exploration.alg.exception.ExplorationException;
 import org.opt4j.core.genotype.CompositeGenotype;
 import org.opt4j.core.problem.Creator;
 
-import com.google.inject.Inject;
-
 /**
  * Base class of the {@link Creator} for {@link CompositeGenotype}s. It handles the creation of the
  * {@link ComposableGenotype}s comprising this {@link CompositeGenotype}.
@@ -45,18 +42,6 @@ public abstract class CompositeCreatorBase<G extends CompositeGenotype<Class<? e
 	 */
 	private List<ComposableCreator<? extends ComposableGenotype>> subCreators = new LinkedList<>();
 
-	/** Representation of input system. */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
-	/**
-	 * Default Constructor that requires a {@link SystemModelAdapter} such that {@link Creator}s are
-	 * aware of the input models.
-	 */
-	@Inject
-	public CompositeCreatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public G create() {
@@ -81,8 +66,7 @@ public abstract class CompositeCreatorBase<G extends CompositeGenotype<Class<? e
 	public <N extends ComposableGenotype, P extends ComposablePhenotype<N>> void
 			createSubGenotypes(G compositeGenotype) throws DecodingException {
 		FlatGenotypeMap createdGenotypes = new FlatGenotypeMap();
-		FlatPhenotypeMap<Phenotype> decodedPhenotypes =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
+		FlatPhenotypeMap<Phenotype> decodedPhenotypes = new FlatPhenotypeMap<>();
 
 		for(ComposableCreator<? extends ComposableGenotype> creator : subCreators) {
 			@SuppressWarnings("unchecked") ComposableCreator<N> castedCreator =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings
index 35d587cc6f6f157122a14d74eae8986c2b779127..667938f7a0e30e09c7a8a2d1c89e66c153a5d687 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings
@@ -1,5 +1,5 @@
 ComposableDecoder.java 197abec80b880e25fccfc66d61b471b0b5d7e10f RED
 ComposableDecoderBase.java 4f366cc6c0f8ca929cac43d9c5de675cbafbb132 RED
 CompositeDecoder.java 9d34dd0b342e6433ab894974f9430531ce2de39a RED
-CompositeDecoderBase.java 9f992f1cb91e7575ad10393f013872a67015581d RED
+CompositeDecoderBase.java 1bc1860ed616010f7f459ed6579989f155f607c2 RED
 PhenotypeDecoder.java 44079e8545aaf8b8729919f0b07c774c3ca0df06 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java
index fad862eba7c9f4237021104d3fe379213b5e9311..15d6562ec6fef8d5287a851c68ca054ef2af9182 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.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.CompositePhenotype;
 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 org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.jgrapht.experimental.dag.DirectedAcyclicGraph.CycleFoundException;
 import org.opt4j.core.Genotype;
@@ -47,10 +46,6 @@ import org.opt4j.core.problem.Decoder;
  */
 public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? extends ComposableGenotype>, ComposableGenotype>, P extends CompositePhenotype<?>>
 		implements CompositeDecoder<C, P> {
-
-	/** representation of the input models. */
-	private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/**
 	 * References the {@link DecoderDependencyGraph} which defines execution orders and which
 	 * {@link Phenotype}s are needed within the DSE.
@@ -87,9 +82,7 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e
 	private boolean isDecoderRegistrationChecked = false;
 
 	/** Default constructor that requires a representation of the input models. */
-	public CompositeDecoderBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph depGraph) {
-		this.systemModelAdapter = systemModelAdapter;
+	public CompositeDecoderBase(DecoderDependencyGraph depGraph) {
 		this.depGraph = depGraph;
 	}
 
@@ -112,18 +105,14 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e
 	 *             sub-Decoders produces an error.
 	 * @throws MissingDependencyException
 	 *             if some required {@link IExplorationEncoding} of a {@link ComposableDecoder} is
-	 *             not provided by another one, a {@link ComposableCreator}, or the
-	 *             {@link SystemModelAdapter}.
+	 *             not provided by another one, a {@link ComposableCreator}.
 	 */
 	public <SP extends Genotype, CG extends ComposableGenotype, CP extends ComposablePhenotype<CG>>
 			P decodeInternal(C genotype) throws DecodingException, MissingDependencyException {
 		Map<Class<CP>, CP> subPhenotypes = new HashMap<>();
-		FlatPhenotypeMap<Phenotype> decodedPhenotypes =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
-
+		FlatPhenotypeMap<Phenotype> decodedPhenotypes = new FlatPhenotypeMap<>();
 		if(!isDecoderRegistrationChecked) {
 			isDecoderRegistrationChecked = true;
-
 			for(ComposableDecoder<?, ?> decoder : depGraph.getOperatorExecOrder()) {
 				if(registeredSubDecoders.containsKey(decoder)) {
 					@SuppressWarnings("unchecked") ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>> castedDecoder =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings
index 9215094dc6a330d2097476a53ce7d120ffa411a9..3740a0d2aca6de461b75cb799f96c2d6a1bf8109 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings
@@ -1,3 +1,3 @@
 ComposableEvaluator.java 5882908b5b90aa31bcf806cbfca047d2d0725640 RED
 CompositeEvaluator.java 185b9a6776a419ce0fc2adae31eced97c0d756d5 RED
-CompositeEvaluatorBase.java a496b7824e5d5fcff8414c18df93a1fec3d43601 RED
+CompositeEvaluatorBase.java a7e7f0d30206ef74b7c6f4b8f1244433ec3f8cc6 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java
index 53a0844fd01fbcfd16c1ef0f74bcee7c8903f50a..0cce028e760172b35356fbc569d9417559cc665c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java
@@ -16,7 +16,6 @@
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.evaluate;
 
 import static org.fortiss.af3.exploration.alg.service.ExplorationService.getService;
-import static org.fortiss.af3.exploration.alg.service.IExplorationTransformationService.TransformationContext.DSE_INTERNAL;
 import static org.fortiss.af3.exploration.alg.util.ExplorationAlgUtils.pickInstanceOf;
 
 import java.util.Collection;
@@ -34,7 +33,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.problem.EvaluatorWrapper;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMultiMap;
 import org.fortiss.af3.exploration.alg.service.IExplorationEvaluatationService;
 import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
@@ -57,10 +55,6 @@ import com.google.common.collect.MutableClassToInstanceMap;
  */
 public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>>
 		implements CompositeEvaluator<P> {
-
-	/** Representation of the input models. */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Flag to mark that marks the top-most evaluator in the composite structure. */
 	protected boolean isTopLevelEvaluator = false;
 
@@ -82,12 +76,8 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>>
 			new SubClassToInstanceMultiMap<>(
 					(Class<? extends ComposablePhenotype<?>>)ComposablePhenotype.class);
 
-	/**
-	 * Default constructor which requires a {@link SystemModelAdapter} to access the input models.
-	 */
-	public CompositeEvaluatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-
+	/** Constructor. */
+	public CompositeEvaluatorBase() {
 		if(!ComposableEvaluator.class.isAssignableFrom(getClass())) {
 			isTopLevelEvaluator = true;
 		}
@@ -144,11 +134,12 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>>
 		ClassToInstanceMap<EObject> transformedModels = MutableClassToInstanceMap.create();
 		if(isTopLevelEvaluator && !requiredTransformedModelTypes.isEmpty()) {
 			try {
-				transformedModels =
-						getService(IExplorationTransformationService.class).getTransformedModels(
-								DSE_INTERNAL, null, phenotypeTypeMap.asExplorationEncoding(),
-								systemModelAdapter.getInputModels(), requiredTransformedModelTypes,
-								null);
+				// TODO: Readd the transformation service to the evaluators.
+				// transformedModels =
+				// getService(IExplorationTransformationService.class).getTransformedModels(
+				// DSE_INTERNAL, null, phenotypeTypeMap.asExplorationEncoding(),
+				// systemModelAdapter.getInputModels(), requiredTransformedModelTypes,
+				// null);
 			} catch(Exception e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();
@@ -254,8 +245,7 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>>
 	 */
 	private <G extends Genotype, CP extends CompositePhenotype<?>, SP extends ComposablePhenotype<G>>
 			FlatPhenotypeMap<Phenotype> constructPhenotypeMap(CP phenotype) {
-		FlatPhenotypeMap<Phenotype> phenotypeTypeMap =
-				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
+		FlatPhenotypeMap<Phenotype> phenotypeTypeMap = new FlatPhenotypeMap<>();
 		@SuppressWarnings("unchecked") LinkedList<SP> subPhenotypes =
 				new LinkedList<SP>((Collection<? extends SP>)phenotype.getSubPhenotypes());
 		while(!subPhenotypes.isEmpty()) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings
index 14cc86ade91d15412d52fda702bf1096d4fa8c10..2d24dbfd517bf4bdb672c2b2aa665bd1226321fc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings
@@ -1,2 +1,2 @@
-DecoderDependencyGraph.java e0f55416161a46d7fb0663fe3d358aacd3db32ae RED
+DecoderDependencyGraph.java a67fe21e5c6e54e426fd3a8502b92275592794ca RED
 DecoderEdge.java 364767c6d4b15b02830e1c58a47f28f6e3bf3fcb RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java
index 02273be7471344ffab828a9b5a9ac06710a2329c..8c706a8208cea2b70541625fdcdc42253e03bb3a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java
@@ -26,7 +26,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 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.backend.opt4j.extensions.decode.ConstraintGenerationDecoder;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.graph.DependencyGraph;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.opt4j.core.problem.Creator;
@@ -39,20 +38,13 @@ import org.opt4j.core.problem.Decoder;
  */
 public class DecoderDependencyGraph extends
 		DependencyGraph<IExplorationEncoding, ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>>, DecoderEdge<ComposableGenotype, ComposablePhenotype<?>>> {
-
-	/**
-	 * Set of {@link IExplorationEncoding} types that can be obtained from the SystemModelAdapter.
-	 */
-	protected Set<Class<? extends IExplorationEncoding>> sysModelEncodings;
-
+	// TODO: Move to the parent?
 	/** Internal graph representation for the execution order of {@link Creator}s. */
 	private HashSet<ComposableCreator<?>> registeredCreators = new HashSet<>();
 
 	/** Constructor. */
-	public DecoderDependencyGraph(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			Set<Class<? extends IExplorationEncoding>> pTypeCollection) {
+	public DecoderDependencyGraph(Set<Class<? extends IExplorationEncoding>> pTypeCollection) {
 		super(pTypeCollection, IExplorationEncoding.class);
-		sysModelEncodings = systemModelAdapter.getRegisteredEncodingTypes();
 	}
 
 	/** {@inheritDoc} */
@@ -65,8 +57,7 @@ public class DecoderDependencyGraph extends
 				if(!dependencyDagGraph
 						.containsVertex((Class<? extends IExplorationEncoding>)reqEnc) &&
 						!registeredCreators.stream()
-								.anyMatch(c -> c.getCreatedEncodingType().equals(reqEnc)) &&
-						!sysModelEncodings.contains(reqEnc)) {
+								.anyMatch(c -> c.getCreatedEncodingType().equals(reqEnc))) {
 					throw new MissingDependencyException(dec,
 							(Class<? extends IExplorationEncoding>)reqEnc, "");
 				}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings
index 307eb0fd9f13017066405d40413f1c833e2773ce..97ce0da15ba645017ea1ae28a4785f84dc2d4cd5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings
@@ -1,5 +1,5 @@
 ComposablePhenotype.java c480ccbf2ed93bdb5a0ec5461629475bff033e18 RED
 CompositePhenotype.java 8706a2d636e49472dd5160dc8a0c871801f4fb69 RED
 CompositePhenotypeBase.java dc30951b9b55fef23ba657c54fef512a8886ec93 RED
-FlatPhenotypeMap.java dd51eb1e3ed9a0c4ec67eac8c28342f0e98735fe RED
+FlatPhenotypeMap.java f6d74992bbdcc84d358c27616b13c512ef7841b1 RED
 Phenotype.java 3b01d5fc912747b3409fe2868447f395dafd860c RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java
index 7c5e0ac81125946728caeb29e220e54f78bba646..f1145eabf572655f886f203edc4c89ca585473e2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java
@@ -16,10 +16,13 @@
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype;
 
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
 
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.InitialEncodingProvider;
 import org.fortiss.af3.exploration.alg.service.ExplorationEncodingMap;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
+import org.opt4j.core.problem.Creator;
 
 /**
  * Allows to capture the already created/decoded {@link Phenotype}s and pass them to their successor
@@ -30,11 +33,12 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  */
 public class FlatPhenotypeMap<T extends Phenotype> extends ExplorationEncodingMap<T> {
-
-	/** Constructor. */
-	public FlatPhenotypeMap(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
-	}
+	/**
+	 * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@link Creator}s by
+	 * their corresponding types.
+	 */
+	private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings =
+			new HashMap<>();
 
 	/**
 	 * Returns the {@link Phenotype} of the given type. If no {@link Phenotype} of the given type
@@ -47,20 +51,17 @@ public class FlatPhenotypeMap<T extends Phenotype> extends ExplorationEncodingMa
 			if(IExplorationEncoding.class.isAssignableFrom(subGenotypeClass)) {
 				@SuppressWarnings("unchecked") Class<IExplorationEncoding> inputEncoding =
 						(Class<IExplorationEncoding>)subGenotypeClass;
-				assert (systemModelAdapter != null) : "The SystemModelAdapter is required for CompositePhenotypes as an alternate source of input encodings.";
 				@SuppressWarnings("unchecked") P encoding =
-						(P)systemModelAdapter.getInputEncoding(inputEncoding);
+						(P)InitialEncodingProvider.getInstance().getInputEncoding(inputEncoding);
 				phenotype = encoding;
 			}
 		}
-
 		return phenotype;
 	}
 
 	/**
 	 * Determines whether {@code this} {@link FlatPhenotypeMap} contains {@link ComposablePhenotype}
-	 * s of all given types, or it is able to retrieve the demanded types via the
-	 * {@link SystemModelAdapter}.
+	 * s of all given types, or it is able to retrieve the demanded types via the {@link Creator}s.
 	 */
 	@SuppressWarnings("unchecked")
 	public <P extends T> boolean containsAll(Collection<Class<?>> phenoCollection) {
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 5d5b5e7702e66ad8fb06590808b00db73a8a1c31..2b396e582401fec112545cd14e27e94956a2656a 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,4 +1,4 @@
-MutateAllocation.java 39fdbaf0e9bf57743f157a561fa954f4bd907871 RED
+MutateAllocation.java 0994667e10022be731b4cb6c04a59d0b562eb575 RED
 MutateRedundancy.java 916b93f4ee2eb953033daa38273cc2360234c89e RED
 MutateRedundancyDecrement.java 38c930eb6d5648d58e31d5c0bb39f7edf50f9a87 RED
 MutateRedundancyIncrement.java 5256080dcaab5482c33915fd8c78e0bb3c3fbcd6 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 b63e0a893ab26b764e0b129bb3ae97cc5d2c0d5e..7694d58c2fffb29b1f3bd8189e7085142e47cd04 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
@@ -107,9 +107,11 @@ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partit
 
 		// This respects {@link ExcludeDeploymentConstraint}s.
 		if(encoding.hasLimitedDeployment(deployableComponent)) {
-			List<IExecutionUnitAdapter<?>> physExecUnits =
-					new ArrayList<>(encoding.getAllowedAllocations(deployableComponent));
-			List<Partition> targets = encoding.getAllowedPartitionTargets(physExecUnits);
+			// List<IExecutionUnitAdapter<?>> physExecUnits =
+			// new ArrayList<>(encoding.getAllowedAllocations(deployableComponent));
+			// List<Partition> targets = encoding.getAllowedPartitionTargets(physExecUnits);
+			List<Partition> targets = new ArrayList<>((Collection<Partition>)(Collection<?>)encoding
+					.getAllowedAllocations(deployableComponent));
 			int selExecU = max(0, rand.nextInt(targets.size()) - 1);
 			selectedEntry.resetTarget(targets.get(selExecU));
 		} else {
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 4027b6e6a3108d7bf8328972947ad4beadf8f468..5609b269b682993040ac6ee7e31e7e26af391024 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,6 +1,6 @@
 ArchExpSubDecoder.java b53315dae39fd6afdae22e2412af5cf9dff5e574 RED
-ArchitectureDecoder.java 676d76512f665c3d52ff06a84c65f7d272e33975 RED
-ArchitectureExplorationProblemModule.java ebed1fbcb71842bf8f2940c5f6a266568acd8184 RED
+ArchitectureDecoder.java 9a002b7e7ecf05835276dd0302faf0bd7c3aa656 RED
+ArchitectureExplorationProblemModule.java 650201476e17b6c7df1b9844e69fe979d20f04f6 RED
 DseProblemModuleBase.java ad44baebb3c417c3778672f10ae4f3e61f1fa932 RED
 EvaluatorWrapper.java 47ff0b2df7f75e232fa269b55750f0e2c408b08c RED
 ExplorationGoalPriorityMultiEvaluator.java 0f900f86c8adc14b69d95bb8eb3a34ea1ed2d41e RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java
index cdd3b5aedd85fe3f1916678673a8759927fd1640..bae36d87b95e63c9a0c451711fd34f170729abbb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java
@@ -23,7 +23,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.ArchitectureSolution;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.opt4j.core.Genotype;
 import org.opt4j.core.genotype.CompositeGenotype;
 import org.opt4j.core.problem.Decoder;
@@ -41,9 +40,8 @@ public class ArchitectureDecoder
 
 	/** Default constructor that makes the input models accessible for the decoders. */
 	@Inject
-	public ArchitectureDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-			DecoderDependencyGraph execdepGraph) {
-		super(systemModelAdapter, execdepGraph);
+	public ArchitectureDecoder(DecoderDependencyGraph execdepGraph) {
+		super(execdepGraph);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java
index 4bd9474e8efbc5acea4e66cf5c9562fedcf9b093..6a8f34a29885d14c6f96e7516d23b30a646cd032 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java
@@ -37,11 +37,14 @@ import org.fortiss.af3.exploration.moea.model.DseSpecification;
 public class ArchitectureExplorationProblemModule extends
 		DseProblemModuleBase<ArchitectureExplorationEncoding, ArchitectureSolution, ArchitectureDecoder> {
 
+	DSEFactory dseFactory = DSEFactory.getInstance();
+
 	/** Constructor. */
 	public ArchitectureExplorationProblemModule(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			Set<Class<? extends IExplorationEncoding>> requestedSolutions) {
 		super(dse, systemModelAdapter, requestedSolutions);
+		dseFactory.init(systemModelAdapter);
 	}
 
 	/**
@@ -54,22 +57,20 @@ public class ArchitectureExplorationProblemModule extends
 		 * added separately.
 		 */
 		DSEFactory dseFactory = DSEFactory.getInstance();
+		dseFactory.init(systemModelAdapter);
 
-		ArchitectureEvaluator archEvaluator =
-				dseFactory.createArchitectureEvaluator(systemModelAdapter);
+		ArchitectureEvaluator archEvaluator = dseFactory.createArchitectureEvaluator();
 
 		// Dependency graph for the execution order.
-		DecoderDependencyGraph execDepGraph =
-				new DecoderDependencyGraph(systemModelAdapter, requestedSolutions);
+		DecoderDependencyGraph execDepGraph = new DecoderDependencyGraph(requestedSolutions);
 
 		// TODO: construct the execution dependency graph elsewhere?
-		bindProblem(dseFactory.createArchitectureExplorationCreator(dse, systemModelAdapter),
-				dseFactory.createArchitectureDecoder(systemModelAdapter, execDepGraph),
-				archEvaluator);
+		bindProblem(dseFactory.createArchitectureExplorationCreator(),
+				dseFactory.createArchitectureDecoder(execDepGraph), archEvaluator);
 
 		// Create/Bind the subproblems of the architectural exploration problem.
 		try {
-			dseFactory.createSubProblems(this, dse, systemModelAdapter, execDepGraph);
+			dseFactory.createSubProblems(this, dse, execDepGraph);
 		} catch(Exception e) {
 			throw new RuntimeException("Failed setting up the DSE Problem instance.", e);
 		}
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 db79dd4cfce938347660798c1e7aec1b6ebbb461..0aab7652291c0f1e2b1dc3de75f82528a72eabd3 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 bfd10ee690ab13330e70c87fced365e66403d6a6 RED
-InstantiatedTaskMappingDecoderAcyclic.java 32e5e157dd67b7b5db99fb72a86440f83dd8605f RED
+InstantiatedTaskMappingDecoder.java fabe128ecd7f2a651384e4a22c8035c399226a2e RED
+InstantiatedTaskMappingDecoderAcyclic.java 9356d1cba4e983db4558b6f5b9b39dde876dc396 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 8a8aaebd7e8505ab1ce4828cb858261c052ffe43..07d14c45191dc1c5d20eea7646592a90670d86d9 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
@@ -77,7 +77,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 		TaskGraphInstantiator<DefaultTaskGraph<?>> tgInstatiator =
 				new TaskGraphInstantiator<>(tgColl, genotype);
 		InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>(
-				systemModelAdapter, tgInstatiator.createMultipleInstanceTaskGraphs(tgColl));
+				tgInstatiator.createMultipleInstanceTaskGraphs(tgColl));
 
 		if(sfEnc != null) {
 			removeInterSafetyChannelSignals(sfEnc, itgEnc);
@@ -128,13 +128,13 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 				ITaskAdapter<?> outputUnit =
 						sfEntry.getSafetyFunctionAdapter().getOutputComponent();
 				// TODO: only for a single diag unit.
-				Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getDeployableComponents()
+				Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getTasks()
 						.stream().filter(d -> sfUnits.contains(d.getReplacedComponent()))
 						.collect(Collectors.toList());
-				Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getDeployableComponents()
+				Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getTasks()
 						.stream().filter(d -> diagUnits.contains(d.getReplacedComponent()))
 						.collect(Collectors.toList());
-				Collection<ITaskAdapter<?>> outComps = itgEnc.getDeployableComponents().stream()
+				Collection<ITaskAdapter<?>> outComps = itgEnc.getTasks().stream()
 						.filter(d -> d.getObject() == outputUnit.getObject())
 						.collect(Collectors.toList());
 
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 5aaaf2f79302a2aeaa81591234744d8ff6ccb742..07e216c2d7fcfefcc59e6a3908712d7ffe0ba0ea 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
@@ -68,8 +68,7 @@ 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>(systemModelAdapter,
-						itgEnc.getTaskGraphs());
+				new InstantiatedAcyclicTaskGraphEncoding<T, C>(itgEnc.getTaskGraphs());
 
 		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 f008274a3dcd5d0cd6f5bfb6dad0ad064dc54538..c764bfa6423a9ec6cc7927c6c65fde7f4030c695 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 bad196d3f1f5aca199765783ae80ca30981bc84e RED
-SFMappingConstraintDecoder.java 567af65d0f1344a22e5d0fb5ccf6b9beedd631d4 RED
-SFMappingDecoder.java 12bccf9c5c44e03a4268b04bf98f29b94a39ed1e RED
+SFGraphDecoder.java 2b022c6eaf84224576a24b816cfc5a47c09635da 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 a0d0ba4c51c29e265bb77fee12b1a46d31223ee2..320c2627b93856b884f9237d29bba55c3acd90d8 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
@@ -33,7 +33,7 @@ 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.backend.opt4j.problem.ArchExpSubDecoder;
 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 com.google.inject.Inject;
 
@@ -46,14 +46,9 @@ import com.google.inject.Inject;
 public class SFGraphDecoder<C>
 		extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, SafeTaskGraphEncoding<C>>
 		implements ArchExpSubDecoder {
-
-	/** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */
-	SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */
 	@Inject
-	public SFGraphDecoder(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public SFGraphDecoder() {
 	}
 
 	/** {@inheritDoc} */
@@ -65,7 +60,9 @@ public class SFGraphDecoder<C>
 		}
 		// TODO: we should dynamically retrieve the encoding here, since the statement below assumes
 		// that this decoding step is performed before others.
-		SafeTaskGraphEncoding<C> encoding = new SafeTaskGraphEncoding<>(systemModelAdapter);
+		// FIXME: Find a way to pass the original taks graph. We might have a circular dependency
+		// here.
+		SafeTaskGraphEncoding<C> encoding = new SafeTaskGraphEncoding<>(Collections.emptySet());
 
 		for(SafetyFunctionArchEntry<C> sFAEntry : genotype.getAllEntries()) {
 			boolean diagPresent = sFAEntry.isDiagnosicUnitPresent();
@@ -123,12 +120,15 @@ public class SFGraphDecoder<C>
 	 * Adds the given collection of {@link ITaskAdapter}s from the
 	 * {@link SafetyFunctionArchEntry} to the {@link TaskGraphEncoding}.
 	 */
-	private void addTasks(Collection<ITaskAdapter<C>> deplComp, SafeTaskGraphEncoding<C> encoding) {
+	private void addTasks(Collection<ITaskAdapter<C>> tasks, SafeTaskGraphEncoding<C> encoding) {
 		// Add the Components.
-		deplComp.stream().forEach(task -> encoding.addTask(task));
+		tasks.stream().forEach(task -> encoding.addTask(task));
 
 		// Add the corresponding signals.
-		deplComp.stream().forEach(task -> encoding.addSignalsOf(task));
+		for(ITaskAdapter<C> task : tasks) {
+			TaskGraph tg = encoding.getOriginalTaskGraph(task);
+			encoding.addSignalsOf(task, tg);
+		}
 	}
 
 	/** Removes the diagnostic units from the {@link TaskGraphEncoding}. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java
index 1a28d877b3cf01f6362849eb24224c932ba71ce3..9d4b0183aea2fa789359a1d3344979df9e61dadf 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java
@@ -31,7 +31,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.decode.ConstraintGenerationDecoder;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISafetyFunctionAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.platform.hierarchic.model.tile.Tile;
 
 import com.google.inject.Inject;
 
@@ -44,15 +44,9 @@ import com.google.inject.Inject;
 public class SFMappingConstraintDecoder<C>
 		extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding>
 		implements ConstraintGenerationDecoder {
-
-	// TODO: replace with a dynamic mechanism for the retrieval of deployable components.
-	/** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */
-	private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */
 	@Inject
-	public SFMappingConstraintDecoder(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public SFMappingConstraintDecoder() {
 	}
 
 	/** {@inheritDoc} */
@@ -67,8 +61,6 @@ public class SFMappingConstraintDecoder<C>
 	public AbstractTaskMappingEncoding updateComposable(SafetyFunctionArchEncoding<C> inGenotype,
 			AbstractTaskMappingEncoding outGenotype,
 			FlatPhenotypeMap<Phenotype> decodedPhenotypes) {
-		Collection<ITaskAdapter<C>> deplComps = new HashSet<>();
-		deplComps.addAll(systemModelAdapter.getDeployableComponents());
 		for(SafetyFunctionArchEntry<C> sFAEntry : inGenotype.getAllEntries()) {
 			int channelNumber = sFAEntry.getNumChannels();
 
@@ -100,13 +92,13 @@ public class SFMappingConstraintDecoder<C>
 			ISafetyFunctionAdapter<C> sfAdp = sfEntry.getSafetyFunctionAdapter();
 
 			// TODO: We should not be aware of the Tile type here.
-			sepConstraints.add(new InternalSeparationConstraint(sfAdp.getRealizingComponents(),
-					systemModelAdapter.getFaultContainmentRegion()));
-			sepConstraints.add(new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(),
-					systemModelAdapter.getFaultContainmentRegion()));
-			sepConstraints
-					.add(new InternalSeparationConstraint(Arrays.asList(sfAdp.getOutputComponent()),
-							systemModelAdapter.getFaultContainmentRegion()));
+			// FIXME: We need a "better" machanism than the fault containment region. Also,
+			sepConstraints.add(
+					new InternalSeparationConstraint(sfAdp.getRealizingComponents(), Tile.class));
+			sepConstraints.add(
+					new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(), Tile.class));
+			sepConstraints.add(new InternalSeparationConstraint(
+					Arrays.asList(sfAdp.getOutputComponent()), Tile.class));
 		}
 
 		return sepConstraints;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java
index a4e23b9278136c0fcc3c364f5f20ea63b624df66..cdea51a4fcc67631c7206f0f31226b3f57bbffd6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java
@@ -38,7 +38,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.backend.opt4j.extensions.decode.ConstraintGenerationDecoder;
 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.IMappingEntry;
 import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 
@@ -52,15 +51,9 @@ import com.google.inject.Inject;
 public class SFMappingDecoder<C>
 		extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding>
 		implements ConstraintGenerationDecoder {
-
-	// TODO: replace with a dynamic mechanism for the retrieval of deployable components.
-	/** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */
-	private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */
 	@Inject
-	public SFMappingDecoder(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
+	public SFMappingDecoder() {
 	}
 
 	/**
@@ -93,8 +86,6 @@ public class SFMappingDecoder<C>
 		}
 
 		// TODO: replace with a dynamic mechanism for the retrieval of deployable components.
-		Collection<ITaskAdapter<C>> deplComps = new HashSet<>();
-		deplComps.addAll(systemModelAdapter.getDeployableComponents());
 		for(SafetyFunctionArchEntry<C> sFAEntry : inGenotype.getAllEntries()) {
 			boolean diagPresent = sFAEntry.isDiagnosicUnitPresent();
 			int channelNumber = sFAEntry.getNumChannels();
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 784ff10089e09e3022510a70b5b9432f909d79d5..b74d77f80f7669ae9990fe924dc01fb7f36336c1 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 449364213ecc7a68d1eb2c42b710dea35efa073a RED
-FaultDetectionVotingAbstractTaskMappingDecoder.java 80f4f41e445d7ed6decfd6f3125e14b355ee7e15 RED
+FailSilentAbstractTaskMappingDecoder.java a443781caf223417b77a6163dcbb4d7df26f63ab RED
+FaultDetectionVotingAbstractTaskMappingDecoder.java 2ab809a5ca6bd2530d0c8eec167d4aa0d9b1ab37 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/FailSilentAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java
index c01bd7952d8790ad7efd0b5a7d2ea6924770326a..edb981d84db3fda0d8960604e6b1aec5739fc96e 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
@@ -61,8 +61,7 @@ public class FailSilentAbstractTaskMappingDecoder extends
 		PartitionMappingEncoding partEnc =
 				phenotypeTypeMap.getEncoding(PartitionMappingEncoding.class);
 		assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes.";
-		return new FailSilentTaskMappingEncoding(explorationDefinition, systemModelAdapter, partEnc,
-				atgEnc, genotype);
+		return new FailSilentTaskMappingEncoding(explorationDefinition, partEnc, atgEnc, genotype);
 	}
 
 	// TODO: Abstract to the AbstractTaskMappingDecoder.
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 8b31cecb2ff4ca7426a67c6173ba53ae8c216a6a..eee6b950ebd254d7cd1e039ce66fccb5b08919c7 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
@@ -61,8 +61,8 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder extends
 		PartitionMappingEncoding partEnc =
 				phenotypeTypeMap.getEncoding(PartitionMappingEncoding.class);
 		assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes.";
-		return new FaultDetectionVotingTaskMappingEncoding(explorationDefinition,
-				systemModelAdapter, partEnc, atgEnc, genotype);
+		return new FaultDetectionVotingTaskMappingEncoding(explorationDefinition, partEnc, atgEnc,
+				genotype);
 	}
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings
index aa2879b26530e82bd491c191626ab4892c3adf30..673026aebd8e1338416e2466ef663f5b4e5b9b2b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings
@@ -1,5 +1,5 @@
 ArchExpSubEvaluator.java 3516cc5a58514e47f965920012cf0cd738ddbaa4 RED
-ArchitectureEvaluator.java cf3c9627aa7d4b00413fc3810a42769709432390 RED
+ArchitectureEvaluator.java b0c504d4b75bd7286c22713282a5ae38f27db231 RED
 ExplorationTargetEvaluatorBase.java 1b45c04cb27a911806682b9f5ee18bcaa5f0ee0d RED
 ExpressionEvaluatorBase.java 920ee255df1861cbad8db5e94e6365d1d69d5fa4 RED
 ITopLevelEvaluator.java 032ec6375efff2234664690f271cec98816abcc5 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java
index 969118d77f44d00d395c3d6eba41e5d185a14724..bd4d481faedd5fb0cb34ae9ab6742ed48a016444 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java
@@ -39,8 +39,8 @@ public class ArchitectureEvaluator extends CompositeEvaluatorBase<ArchitectureSo
 	 * Default constructor which requires a {@link SystemModelAdapter} to access the input models.
 	 */
 	@Inject
-	public ArchitectureEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		super(systemModelAdapter);
+	public ArchitectureEvaluator() {
+		super();
 	}
 
 	/** {@inheritDoc} */
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 9ee1c142eb5420fa381cb0a8f42a62ba940e0d92..f821eb6d32dd70d6acee346bcb714d90835cce42 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 64552c491927f16db7f63406347f0338a0845c06 RED
-FaultDetectionVotingExecModelFactory.java 3f06e1e2b33abe9c9830191979da49219a860d8e RED
+FailSilentExecModelFactory.java bd1e62664d97539f19cd5b631c02fc4323586af2 RED
+FaultDetectionVotingExecModelFactory.java 0bbb870e645aa1dda912ce4a2cc9cf7157414681 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 cb5d58160ce1a14564a2a3f73655b1956396cad0..810396b4891bd9089b3ac21d78cc084adf53bdf3 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
@@ -84,10 +84,8 @@ public class FailSilentExecModelFactory
 	/** Creates a TaskMappingCreator that matches the given execution model. */
 	@Override
 	public TaskMappingCreator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
-			createTaskMappingCreator(DseSpecification dse,
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DecoderDependencyGraph execDepGraph) {
-		return new FailSilentTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
+			createTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) {
+		return new FailSilentTaskMappingCreator(dse, execDepGraph);
 	}
 
 	/* Construct execution model specific operators. */
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 2e62878aeb75c5676564924de201015c97b0b11f..03c96e2c264844f8e775b366dad43f2c4db7803e 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
@@ -87,10 +87,8 @@ public class FaultDetectionVotingExecModelFactory extends
 	/** Creates a TaskMappingCreator that matches the given execution model. */
 	@Override
 	public TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
-			createTaskMappingCreator(DseSpecification dse,
-					SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					DecoderDependencyGraph execDepGraph) {
-		return new FaultDetectionVotingTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
+			createTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) {
+		return new FaultDetectionVotingTaskMappingCreator(dse, execDepGraph);
 	}
 
 	/* Construct execution model specific operators. */
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 c40ec26828984867240f33825f14e6b1eae53344..aeefd7b79aaddd5f3a8e594c212eeed5026ce0b0 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 393b4017059b41dc296d881a0fe39cfc83ccaa39 RED
+SystemModelAdapter.java d6ce52abad1f440e9df1c6a3e6bb98cfcfc86bfd 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 def49c10acf8e4812e41193d24b1cc78ca25ba1b..5b01009a3a1790ee77a31c2ccb030fea1bbbd000 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
@@ -33,17 +33,17 @@ import java.util.stream.Collectors;
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.af3.component.model.Component;
 import org.fortiss.af3.component.model.ComponentArchitecture;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.InitialEncodingProvider;
 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.taskmapping.abstractmapping.AbstractTaskMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType;
 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.SignalAdapterWeightedEdge;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 import org.fortiss.af3.exploration.alg.exception.InvalidTimingModelException;
-import org.fortiss.af3.exploration.alg.guava.MutableSubClassToInstanceMap;
-import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMap;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.af3.platform.model.IPlatformArchitectureElement;
@@ -55,11 +55,9 @@ import org.fortiss.tooling.base.model.element.IConnection;
 import org.fortiss.tooling.base.model.element.IConnector;
 import org.fortiss.tooling.base.model.element.IHierarchicElement;
 import org.fortiss.tooling.base.model.element.IModelElement;
-import org.jgrapht.DirectedGraph;
 import org.jgrapht.Graphs;
 import org.jgrapht.alg.ConnectivityInspector;
-import org.jgrapht.graph.DefaultDirectedGraph;
-import org.jgrapht.graph.DefaultEdge;
+import org.opt4j.core.Genotype;
 
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Multimap;
@@ -83,12 +81,6 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> {
 	/** Platform architecture of this {@link SystemModelAdapter}. */
 	protected IPlatformArchitectureAdapter<?> platformArchitecture;
 
-	/**
-	 * Input models that can be retrieved via {@code this} {@link SystemModelAdapter}. It references
-	 * the original
-	 */
-	protected SubClassToInstanceMap<EObject> inputModels = MutableSubClassToInstanceMap.create();
-
 	/** Deployable software components, to be mapped to deployment targets provided by platform. */
 	protected Collection<ITaskAdapter<C>> tasks;
 
@@ -211,59 +203,6 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> {
 	/** Defines the fault containment region defined for the target {@link PlatformArchitecture}. */
 	protected Class<? extends IPlatformResource> faultContainmentRegion;
 
-	/**
-	 * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@code this}
-	 * {@link SystemModelAdapter} by their corresponding types.
-	 */
-	private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings =
-			new HashMap<>();
-
-	/** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */
-	protected <T extends IExplorationEncoding> void registerInputEncoding(T encoding) {
-		@SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass();
-		assert (!inputEncodings.containsKey(
-				encodingType)) : "You are trying to add an encoding to the input encoding whose type is already registered. This is not supported";
-		inputEncodings.put(encodingType, encoding);
-	}
-
-	/** Returns the input encoding of the given type. */
-	@SuppressWarnings("unchecked")
-	public <T extends IExplorationEncoding> T getInputEncoding(Class<T> encodingType) {
-		return (T)inputEncodings.get(encodingType);
-	}
-
-	/**
-	 * Returns the collection of {@link IExplorationEncoding} types that are availably through
-	 * {@code this} {@link SystemModelAdapter}.
-	 */
-	public Set<Class<? extends IExplorationEncoding>> getRegisteredEncodingTypes() {
-		return inputEncodings.keySet();
-	}
-
-	/** Returns the input models accessible via {@code this} {@link SystemModelAdapter}. */
-	public SubClassToInstanceMap<EObject> getInputModels() {
-		return inputModels;
-	}
-
-	/**
-	 * Adds the given model to the input models that can be obtained via {@code this}
-	 * {@link SystemModelAdapter}.
-	 */
-	@SuppressWarnings("unchecked")
-	public <T extends EObject> void putInputModel(Class<? extends T> modelType, T inputModel) {
-		inputModels.putInstance((Class<T>)modelType, inputModel);
-	}
-
-	/**
-	 * Creates and registers an {@link AbstractTaskGraphEncoding} with @code this}
-	 * {@link SystemModelAdapter}.
-	 */
-	protected void createAbstractTaskGraphEncoding() {
-		AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C> atgEnc =
-				new AbstractTaskGraphEncoding<>(this);
-		registerInputEncoding(atgEnc);
-	}
-
 	/**
 	 * Setups the list of {@link ITaskAdapter}s that are scheduleable by a
 	 * time-triggered scheduler.
@@ -358,6 +297,22 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> {
 		return independentTaskGraphs;
 	}
 
+	/**
+	 * Creates the initial set of encodings that can be constructed from the input system models.
+	 * While {@link Genotype}s and {@link Phenotype}s have a special meaning in the optimizers'
+	 * context, {@link IExplorationEncoding}s are "only" system abstraction without any of the
+	 * aforementioned meanings.
+	 */
+	@SuppressWarnings("unchecked")
+	protected void createInitialEncodings() {
+		InitialEncodingProvider initEncProvider = InitialEncodingProvider.getInstance();
+		initEncProvider.clearEncodings();
+
+		initEncProvider.registerInputEncoding(
+				new AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C>(
+						(Collection<? extends DefaultTaskGraph<?>>)getTaskGraphs()));
+	}
+
 	/**
 	 * Adds the given collection of {@link ISafetyFunctionAdapter}s to {@code this}
 	 * {@link SystemModelAdapter} that represents the input system models. In contrast to other
@@ -442,72 +397,6 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> {
 		}
 	}
 
-	/**
-	 * Creates the {@link PlatformCommunicationGraphEncoding} that is used to determine the routing
-	 * of
-	 * messages between {@link ITaskAdapter}s and their respective
-	 * {@link IExecutionUnitAdapter}s.
-	 */
-	protected void setupPlatformGraph() {
-		platformCommunicationGraph = new PlatformCommunicationGraphEncoding(this, createGraph());
-	}
-
-	/**
-	 * Creates the communication (or connection) graph which is implicitly given by the platform
-	 * referenced in the {@link SystemModelAdapter}. This graph is used for routing messages.
-	 */
-	public DirectedGraph<IResourceAdapter<?>, DefaultEdge> createGraph() {
-		DirectedGraph<IResourceAdapter<?>, DefaultEdge> tempPlatformCommGraph =
-				new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class);
-		DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph =
-				new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class);
-
-		// Add all resources present in the platform as vertices to the "connection graph"
-		for(IResourceAdapter<?> resource : getDeploymentTargets()) {
-			tempPlatformCommGraph.addVertex(resource);
-		}
-		for(IResourceAdapter<?> resource : getMemoryUnits()) {
-			tempPlatformCommGraph.addVertex(resource);
-		}
-		for(IResourceAdapter<?> resource : getGatewayUnits()) {
-			tempPlatformCommGraph.addVertex(resource);
-		}
-		for(IResourceAdapter<?> resource : getTransmissionUnits()) {
-			tempPlatformCommGraph.addVertex(resource);
-		}
-
-		// Successively connect the resources in the graph. The edges are given within the
-		// collection resource connectors are assumed to be fully connected.
-		for(IResourceConnectionAdapter connection : platformConnections) {
-			// We add edges for each receiver in order to support broadcast connections
-			for(IResourceAdapter<?> currentReceiverResource : connection.getTargetResources()) {
-				// If the current resource is a child of a {@link TransmissionUnit} (like a NoC
-				// router), respect the direction of connections such that complex networks are
-				// correctly reflected.
-				if(connection
-						.getConnectionType(currentReceiverResource) == ConnectionType.OUTGOING) {
-					Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(),
-							currentReceiverResource);
-				} else if(connection
-						.getConnectionType(currentReceiverResource) == ConnectionType.INCOMING) {
-					Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource,
-							connection.getSourceResource());
-				} else {
-					// Add the edges of a single connection. We add to edges for each connection
-					// such that an undirected graph is generated effectively. It is required to use
-					// this "trick" in order to be able to use the standard shortest path
-					// algorithms.
-					Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(),
-							currentReceiverResource);
-					Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource,
-							connection.getSourceResource());
-				}
-			}
-		}
-
-		return platformGraph;
-	}
-
 	/**
 	 * Setups the {#link emittedMessagesBySender} map which makes it possible to easily identify the
 	 * {@link ISignalAdapter}s that are emitted by the given {@link ITaskAdapter}.
@@ -921,4 +810,9 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> {
 	public Class<? extends IPlatformResource> getFaultContainmentRegion() {
 		return faultContainmentRegion;
 	}
+
+	/** Returns the present connections between platform resources. */
+	public Collection<IResourceConnectionAdapter> getResouceConnections() {
+		return platformConnections;
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings
index 8b0d4b1b428b31ff38f0599904e4b8711efa83b2..75c63c2e327531d90f17e98c0e80f2ccbaa73b67 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings
@@ -8,6 +8,6 @@ AF3RequestAdapter.java 7cfea424beeacaac81b48efd4e1c24270dcb3929 RED
 AF3ResourceAdapter.java 00070d4e3ec7f19a672b6295c546fa1d30d7fc50 RED
 AF3ResourceConnectionAdapter.java 0e791fd7d9602f4cf00f54c6254d31f1c9cc72b0 RED
 AF3SignalAdapter.java bc102b65b929393808eb747572f9ae05b04a8856 RED
-AF3SystemModelAdapter.java 6ecf47e813341aa68f049a8cdec77782b98c2a96 RED
+AF3SystemModelAdapter.java e9f93d7710e2b00a6a420687b8fd161974e10dee RED
 AF3TaskAdapter.java a3cfe04d7b235cc61031c5477de2cb54ac810aac RED
 AF3TransmissionUnitAdapter.java 0ce1a08c29d75a05fb49668d02abddd852487a4c RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java
index 08d7f655744392ef6bd966aed4073ad2a732a11e..346318d062a619970613e18983084cd865ccf9df 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java
@@ -135,9 +135,6 @@ public class AF3SystemModelAdapter extends
 
 		this.taskObjects = tasks.getEntries();
 		this.faultContainmentRegion = Tile.class;
-		// TODO(#3254): Use SuperSets here for querying the required input types.
-		putInputModel(ComponentArchitecture.class, compArch);
-		putInputModel(PlatformArchitecture.class, platArch);
 
 		// Disable any annotation view update.
 		annotationUpdateEnabled = isUpdateEnabled();
@@ -167,10 +164,11 @@ public class AF3SystemModelAdapter extends
 
 		setupScheduleableComponents();
 		setupTaskGraphs();
+
 		setupEmittedMessages();
-		setupPlatformGraph();
-		registerInputEncoding(getPlatformCommunicationGraph());
-		createAbstractTaskGraphEncoding();
+
+		// Create the initial encodings that can already be constructed from the input models.
+		createInitialEncodings();
 
 		// Re-enable annotation view updates.
 		setUpdateEnabled(annotationUpdateEnabled);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings
index 54f52d20d29f95cf4ed433f0d876ac0c622bc867..6eefaced98791368c8786ed35011caddb0a617b8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings
@@ -1,3 +1,3 @@
 DependencyEdge.java 2de1bcec554c6167f132b3808040704867c65b7f RED
-DependencyGraph.java 3c7e6385ed928f6a0bf9d55c05a75415234bb25c RED
+DependencyGraph.java c00ed51a15597aad876b80d2a323c9053c1b5995 RED
 IDependencyModule.java 51c66e0f96ef56e9c5f34ead3b4efeddf2193b55 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java
index 719571f1f2313ba9df26a2009b01e4aade4f356b..745cb18dfa5992412c063d6280c44ede081e54b2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java
@@ -38,6 +38,7 @@ 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.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.graph.display.ObjectJGraphTVisualizer;
+import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.exploration.alg.util.GraphUtils;
 import org.jgrapht.Graphs;
 import org.jgrapht.experimental.dag.DirectedAcyclicGraph;
@@ -85,6 +86,9 @@ public abstract class DependencyGraph<V, T extends IDependencyModule<V, ? extend
 	 */
 	private Map<Class<? extends V>, T> pureIdentityOperators = new HashMap<>();
 
+	/** Set of {@link IExplorationEncoding} types that can be obtained from Creators. */
+	protected Set<Class<? extends V>> inputEncodings = new HashSet<>();
+
 	/** Constructor. */
 	public DependencyGraph(Set<Class<? extends V>> reqTypeCollection,
 			Class<? extends V> vertexType) {
@@ -92,6 +96,14 @@ public abstract class DependencyGraph<V, T extends IDependencyModule<V, ? extend
 		this.vertexType = vertexType;
 	}
 
+	/**
+	 * Adds an initial {@link IExplorationEncoding} that is provided by {@link Creator}s to the
+	 * dependency graph.
+	 */
+	public void addCreatedEncoding(Class<? extends V> inputType) {
+		inputEncodings.add(inputType);
+	}
+
 	/**
 	 * Adds the input types and the generated output types of the given
 	 * operator to this {@link DependencyGraph}. They are connected by edges
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings
index f67dac442fa692cd3e057f10a3a0b9fed5f654f6..f8afe20299b8d12c41b3d70aac029f5d0a281ae5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings
@@ -1,7 +1,7 @@
-MessagePathOnClicked.java 985f075fabbd5e6aa796e5ef0c0e6a976a9e8571 RED
-ScheduleGanttRenderer.java 8c481d56ca65d6074f0340f2c7789bbe6e3a48e6 RED
-ScheduleLabelGenerator.java 595273570eef7ef53ba5a9efd4ab25133aded3a8 RED
-SchedulePlotter.java 71570960426800c1e2589dd05e538e9abb69f126 RED
-ScheduleToolTipGenerator.java 492b5f3469dc2ae7e57af39059c09bd0b64773ae RED
-TaskSeriesCollectionFromSchedule.java a945f60435ee3bfa908db211a4924963a6dcdfb2 RED
-XYPlotter.java fa10b612914c940cb6c42c3c072d00319aaf82ae RED
+MessagePathOnClicked.java e90438a9aa7342112e9c7f9ff9d5ea85d1e3a445 RED
+ScheduleGanttRenderer.java 1ebd6405da88417a9cc8464913a1ad5206ff897f RED
+ScheduleLabelGenerator.java 0ceecedfec9802bbcaa33525d61e1a60a70d3841 RED
+SchedulePlotter.java 29b1156c9419d4ff3314c4b2c932aeb46f4749f8 RED
+ScheduleToolTipGenerator.java cedfa0dd7ebc7b48d7cc70e966eebaeee9636caf RED
+TaskSeriesCollectionFromSchedule.java b53b7af649c48980520ad572da8c7bbdbae0aed5 RED
+XYPlotter.java 0c384f5d560260225cee5bb65710842613b395b9 RED
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 3cf4406c30a1e50ff7ed61f38db99c9e0423212b..fb01f2d165ee6cc356c6ed50390fa3b5c999eadf 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
@@ -1,4 +1,4 @@
-ExplorationEncodingMap.java 0c8eedf00ba34b96a24b5ec0bcfbe50dbcc7ea35 RED
+ExplorationEncodingMap.java 061b6c18f34c3584890ec0630ec40bac1eee7c1c RED
 ExplorationService.java f5067724b280208d9a7f59f417a068cbc7a20416 RED
 IExplorationConstraintTransformationService.java 6c3c34b527d526674e6474b42131b6948bdb8937 RED
 IExplorationContraintTransformationModule.java a7ab4345519341a13ec2de1879c7efbd9cb0dbb2 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java
index 4944442871da1dbe54631fc12e8c70add6585444..224f014dd6821f5040457f881bd014c605420601 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java
@@ -22,7 +22,6 @@ import java.util.Set;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.CompositePhenotype;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 
 /**
  * Allows to capture the already created/decoded {@link Phenotype}s and pass them to their successor
@@ -34,23 +33,12 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  */
 public class ExplorationEncodingMap<T extends IExplorationEncoding>
 		implements Iterable<Entry<Class<? extends T>, T>> {
-
-	/**
-	 * References the {@link SystemModelAdapter} that provides an abstraction of the input models.
-	 */
-	protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter;
-
 	/**
 	 * Map which correlates the {@link IExplorationEncoding} classes with their corresponding
 	 * {@link IExplorationEncoding}s.
 	 */
 	protected LinkedHashMap<Class<? extends T>, T> encodings = new LinkedHashMap<>();
 
-	/** Constructor. */
-	public ExplorationEncodingMap(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) {
-		this.systemModelAdapter = systemModelAdapter;
-	}
-
 	/**
 	 * Returns whether {@code this} {@link ExplorationEncodingMap} contains an encoding that is
 	 * assignable from the given encoding type.
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 a5a1d84ba5f8fe060f05bb42571abe8768de948b..4c6b32d1241acff26850f4e91f023baeb6482043 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
-ExplorationTransformationService.java 89f24b8f70a4d942478a059193e11930b13c36f2 RED
+ExplorationTransformationService.java 96640353f12abd867378b84b5437811ca7996d8f RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java
index faf082936459866576772ffd62472e4fcbf3e876..00fffbe79139af2bedcad609a63babc25e3b57cb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java
@@ -233,7 +233,7 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 		// TODO: instead of triggering the transformations here, use a threaded implementation in
 		// the ITransformation's base class.
 		ExplorationEncodingMap<IExplorationEncoding> solutionEncodings =
-				new ExplorationEncodingMap<>(null);
+				new ExplorationEncodingMap<>();
 		Queue<ITransformationModule<?>> moduleTraversalList = new LinkedList<>();
 		moduleTraversalList.addAll(topLvlModules);
 		while(!moduleTraversalList.isEmpty()) {
@@ -339,7 +339,7 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 		// and its sub-Modules are present.
 		// TODO: instead of triggering the transformations here, use a threaded implementation in
 		// the ITransformation's base class.
-		ExplorationEncodingMap<IExplorationEncoding> encodings = new ExplorationEncodingMap<>(null);
+		ExplorationEncodingMap<IExplorationEncoding> encodings = new ExplorationEncodingMap<>();
 		Queue<ITransformationModule<?>> moduleTraversalList = new LinkedList<>();
 		moduleTraversalList.addAll(topLvlModules);
 		while(!moduleTraversalList.isEmpty()) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings
index 01763b6de79264a8fa6aaf4f2bae2e8903f89bec..2c853377f339ef80fa2208c9f370a9e417165732 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings
@@ -1 +1 @@
-ElementPropertyStaticImpl.java 00996d1c7f0f6192d315904d6459d0bf99bc3a30 RED
+ElementPropertyStaticImpl.java f979c072af7d0815c71d56ab4e3f4d03b224ae63 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java
index 4b90b4e81b989972cf56538395b66bdfb29262ea..7ca63e3f7093b7f4948a8605bcd3bb680e0bf8ef 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java
@@ -27,7 +27,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  */
 public class ElementPropertyStaticImpl {
 
-	/** Static implementation of the method {@link ElementProperty#getProperty()} using lambdas. */
+	/** Static implementation of the method {@link ElementProperty#getProperty} using lambdas. */
 	public static <T, ME extends IModelElement> T getProperty(ElementProperty<ME, T> pattern) {
 		// FIXME: in the model, there should be a type definition for the java type "Function" to be
 		// type-safer.