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 6278617d23fcaedad5c5f13dc764edf214ef6962..949d73e7654184b6f704266dc162a13e451787ee 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 e8a221bb175a30be7d4e780c58c2ba809980c47b RED
-Explorer.java 367aeeeeb26d22791c640e1b74c0af43277a3037 RED
+DSEFactory.java 4a1dab2f05976a1bd191aef340b94b62ef0c6ece RED
+Explorer.java b14a77607cfadf81aed523d7b53b14559482c44c RED
 ImplicitExplorationTargetFactory.java 7ce651a2161c71a2a90acf0f32b1e50ee23f160f RED
 SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED
-TaskMappingFactory.java f8f5541a563b46050daaf1c6a854c233e90792f7 RED
+TaskMappingFactory.java 5c01939ddbc3bf44d81094f4112dbd301a26dee4 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 59585161d4a0b6de7ebc63e20254e43b9f363fdf..71a21ce4469575d71650372b3896ad717c403048 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
@@ -122,7 +122,7 @@ public class DSEFactory {
 			createSafetyFunctionArchProblem(archExpProblemModule, systemModelAdapter, execDepGraph);
 		}
 		createPartitionMappingProblem(archExpProblemModule, dse, systemModelAdapter, execDepGraph);
-		createPlatformCommunicationGraphProblem(archExpProblemModule, dse, systemModelAdapter,
+		createPlatformCommunicationGraphProblem(archExpProblemModule, systemModelAdapter,
 				execDepGraph);
 		createAbstractTaskMappingProblem(tmFactory, archExpProblemModule, dse, systemModelAdapter,
 				execDepGraph);
@@ -211,8 +211,14 @@ public class DSEFactory {
 		archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders);
 	}
 
+	/**
+	 * Creates a subproblem to obtain a flat graph of the communication network of target platform.
+	 * It is intended to connect the virtual and physical architecture. The implementation as an
+	 * encoding allows to consider changes made to the target platform during the exploration.
+	 */
+	@SuppressWarnings("unchecked")
 	private void createPlatformCommunicationGraphProblem(
-			ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse,
+			ArchitectureExplorationProblemModule archExpProblemModule,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 			DecoderDependencyGraph execDepGraph) throws CycleFoundException {
 		Class<PlatformCommunicationGraphEncoding> pmEnodingClass =
@@ -223,7 +229,6 @@ public class DSEFactory {
 		@SuppressWarnings("rawtypes") List<ComposableDecoder> pmDecoders = new ArrayList<>();
 		PartitionMappingDecoderGraph pmgDecoder = new PartitionMappingDecoderGraph();
 		pmDecoders.add(pmgDecoder);
-		// pmCreator.registerAssocDecoders(pmgDecoder);
 		archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders);
 	}
 
@@ -335,6 +340,7 @@ public class DSEFactory {
 	 * @throws UnsupportedDataTypeException
 	 *             if the given {@link ExecutionModel} is not "wrapped" to factory in this method.
 	 */
+	@SuppressWarnings("unchecked")
 	public <S extends TaskMappingEntry<?, Partition>>
 			TaskMappingFactory<?, ? extends TaskMappingEncoding<?, S>>
 			createTaskMappingFactory(ExecutionModel execModel) throws UnsupportedDataTypeException {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
index d54f5164837b0919fed952abba078c72bc4a8b0b..332d72132a0e20f5625009e38f89ab924169bf8c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
@@ -1,3 +1,3 @@
 Opt4JExplorationSolutionSet.java fd1ca946198990604ea7a521e9d0335bef4ad8e1 RED
-Opt4JExplorerBackend.java b647535f92ebdf1e428757f6fe1e918964feb4f2 RED
+Opt4JExplorerBackend.java 1cbe89233576aa55d6705b92fc31934a5f4eb584 RED
 Opt4JSingleExplorationSolution.java 5b9e6ccdb887605faaa4d2a8b17b8fa1350fbafd RED
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 eb213614bbe296005a54e5caad43d3a440dc94c6..372551f4cf55a5f447a4959471eae289169ed15a 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 9c831443bf9cdc547dede8df28dcaf8cfac3ab55 RED
+PartitionMappingCreator.java dd76847eaeb119609c58ea7412cd9ae4330d7a7e RED
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
new file mode 100644
index 0000000000000000000000000000000000000000..81bd771cfcdb16902b25dfdcd63e5334eeff8666
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings
@@ -0,0 +1 @@
+PlatformCommunicationGraphCreator.java dca11304889fd796f721c4035940290a602659fb RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings
index eb47cb8ca83aad42d5da801e4dcfca05dddee997..cd67613f83ab4b3a5d190db9e89f05a1d132ad14 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings
@@ -1,4 +1,4 @@
 ArchExpSubEncoding.java 60e13a2cb13bb36e9f8f7149f322dbed5398eafb RED
 ArchitectureExplorationEncoding.java e7ff265079ae5838bf84abf9d05712409031a970 RED
-MappingEncoding.java f7db94bf2af8dd5817ad564135d226301c6b41d5 RED
-MappingEntryBase.java f173c8ee60dd175e9bc1240d1e1cc14d46d24d69 RED
+MappingEncoding.java f23852b2e5ae6e327a6c5609142e0307ca6bf5a1 RED
+MappingEntryBase.java 11073c027f7f28dfa1a8a3fe80cca68b0a66b48a RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java
index 80c2fe78cad8d05172a9b6c9a29b07c590879d59..7d6c8ae741085a1054055974a183f812499ed7dd 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java
@@ -119,6 +119,7 @@ public abstract class MappingEncoding<G extends Genotype, S extends IRequestAdap
 		return allocationMap.keySet();
 	}
 
+	/** {@inheritDoc} */
 	@Override
 	public abstract MappingEncoding<G, S, T, M> clone();
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java
index 057c56f8940e520cf9015b6ef6004a99a7116777..68a351fc19172030549cfee65b239f691aa6e78c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java
@@ -27,6 +27,8 @@ import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.MutableClassToInstanceMap;
 
 /**
+ * Base class for {@link IMappingEntry}s. Defines fields for source and target allocations plus
+ * associated mapping entries residing in other {@link MappingEncoding} than the current one.
  * 
  * @author diewald
  */
@@ -42,6 +44,7 @@ public abstract class MappingEntryBase<S extends IRequestAdapter<?>, T extends I
 	protected ClassToInstanceMap<IMappingEntry<S, T>> associatedEntries =
 			MutableClassToInstanceMap.create();
 
+	/** Constructor. */
 	public MappingEntryBase(S source, T target) {
 		this.source = source;
 		this.target = target;
@@ -84,6 +87,7 @@ public abstract class MappingEntryBase<S extends IRequestAdapter<?>, T extends I
 		return associatedEntries.getInstance(type);
 	}
 
+	/** {@inheritDoc} */
 	@Override
 	public abstract IMappingEntry<S, T> clone();
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings
index 11c83e6fb40d90852db276c40606e2dea9db99bd..e4348f7ddd25ab2c673761251f5822f47b266618 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings
@@ -1 +1 @@
-InternalIsolatedCommunicationSet.java 3957bb1e915e770b731e671900913a135b78b475 RED
+InternalIsolatedCommunicationSet.java 250ff5f0ee41829b051b4c597810ae80dc73a0cc RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
index dc7d4e68c0395e98744e25237e02c89cbe234615..de9b8f9b505c8abc468d7005636e7f5b09779d7a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
@@ -48,9 +48,9 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl
 
 	private boolean isSoft = false;
 
-	private Set<IMappingEntry> isolatedCommunicationSet;
+	private Set<IMappingEntry<?, ?>> isolatedCommunicationSet;
 
-	public InternalIsolatedCommunicationSet(Set<IMappingEntry> isolatedCommunicationSet) {
+	public InternalIsolatedCommunicationSet(Set<IMappingEntry<?, ?>> isolatedCommunicationSet) {
 		this.isolatedCommunicationSet = isolatedCommunicationSet;
 	}
 
@@ -121,30 +121,32 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl
 		// NOP.
 	}
 
-	public Set<IMappingEntry> getIsolatedCommunicationSet() {
+	public Set<IMappingEntry<?, ?>> getIsolatedCommunicationSet() {
 		return isolatedCommunicationSet;
 	}
 
-	public void setIsolatedCommunicationSet(Set<IMappingEntry> isolatedCommunicationSet) {
+	public void setIsolatedCommunicationSet(Set<IMappingEntry<?, ?>> isolatedCommunicationSet) {
 		this.isolatedCommunicationSet = isolatedCommunicationSet;
 	}
 
-	public void addToIsolatedCommunicationSet(Collection<? extends IMappingEntry> addEntries) {
+	public void
+			addToIsolatedCommunicationSet(Collection<? extends IMappingEntry<?, ?>> addEntries) {
 		this.isolatedCommunicationSet.addAll(addEntries);
 	}
 
-	public void removeFromIsolatedCommunicationSet(Collection<? extends IMappingEntry> rmEntries) {
+	public void removeFromIsolatedCommunicationSet(
+			Collection<? extends IMappingEntry<?, ?>> rmEntries) {
 		this.isolatedCommunicationSet.removeAll(rmEntries);
 	}
 
-	public void replaceEntry(IMappingEntry oldEntry, IMappingEntry newEntry) {
+	public void replaceEntry(IMappingEntry<?, ?> oldEntry, IMappingEntry<?, ?> newEntry) {
 		this.isolatedCommunicationSet.remove(oldEntry);
 		this.isolatedCommunicationSet.add(newEntry);
 	}
 
 	public void replaceEntriesIfPresent(
-			Map<? extends IMappingEntry, ? extends IMappingEntry> replacementMap) {
-		for(Entry<? extends IMappingEntry, ? extends IMappingEntry> entry : replacementMap
+			Map<? extends IMappingEntry<?, ?>, ? extends IMappingEntry<?, ?>> replacementMap) {
+		for(Entry<? extends IMappingEntry<?, ?>, ? extends IMappingEntry<?, ?>> entry : replacementMap
 				.entrySet()) {
 			if(contains(entry.getKey())) {
 				replaceEntry(entry.getKey(), entry.getValue());
@@ -152,7 +154,7 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl
 		}
 	}
 
-	public boolean contains(IMappingEntry entry) {
+	public boolean contains(IMappingEntry<?, ?> entry) {
 		return isolatedCommunicationSet.contains(entry);
 	}
 
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 d9a7bac001845a085ac17b0bdbf47501ba08b341..34061c3613d523b667df82075b32b170431beec6 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 91d0233fc1e2301b40cc955defa82dafadc724df RED
-PartitionMappingEntry.java 16130a3bd2f157c4f5f5ef6cb91d1b72137f0acd RED
+PartitionMappingEncoding.java 09dd8deba0a922ba9f5bdf8138676e945095edfc 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 1ad321a36bb05cc343b939e2d6ce7f63a1ec1b79..9968729f9f35c58850e1f8022ad3d7f7e6f0c4b3 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
@@ -36,10 +36,18 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration;
 public class PartitionMappingEncoding extends
 		MappingEncoding<PartitionMappingEncoding, Partition, IResourceAdapter<?>, PartitionMappingEntry>
 		implements ComposableGenotype, Cloneable {
+	/** Set of physical target resources, i.e., execution units. */
 	private Collection<? extends IResourceAdapter<?>> targetSet;
 
+	/** Strategy that defines how the initial mapping is constructed. */
 	public enum CREATE_STARTEGY {
-		MIN_SET, RANDOM_SET, MAX_SET
+		/** One Partition per physical execution unit. */
+		MIN_SET,
+		/** Random number of partitions per physical execution unit. */
+		RANDOM_SET,
+
+		/** Same number of partitions per physical execution units as tasks exist in the system. */
+		MAX_SET
 	}
 
 	/** Constructor. */
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
new file mode 100644
index 0000000000000000000000000000000000000000..6b254b2338b996a443e9ddbf3957a5760823e563
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings
@@ -0,0 +1 @@
+PlatformCommunicationGraphEncoding.java 92da4ce692afa447c13769a3bda1f3bb1fa7d783 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 7128803a0c438a32e9c9868caa3161b3d3c94af9..7fb776aeace0add8459875a3387113be425c7713 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
@@ -84,8 +84,6 @@ public class PlatformCommunicationGraphEncoding implements IExplorationEncoding,
 	public PlatformCommunicationGraphEncoding newInstance() {
 		PlatformCommunicationGraphEncoding pcgEncoding =
 				new PlatformCommunicationGraphEncoding(systemModelAdapter, this.platformGraph);
-
-		// Graphs.addGraph(pcgEncoding.platformGraph, this.platformGraph);
 		return pcgEncoding;
 	}
 
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 b942c38582557671e7f22f9231adbdb0734273ea..b642ae770502cfe0617fa81653d2530993b49ce3 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 cb575233524890c6687479dc65d782b5836c0858 RED
-InstantiatedAcyclicTaskGraphEncoding.java 1af9264d3486603df67ac8cd223348429566d81c RED
-InstantiatedTaskGraphEncoding.java 7b2e02e92ec82f8c6a796d19c01de6ff82f12cfc RED
+AbstractTaskGraphEncoding.java 79c2482106c0fa2895dc5ca2760bc68e8199ea89 RED
+InstantiatedAcyclicTaskGraphEncoding.java 5446f693086aaa2a0b39e1c8180af186a7c55809 RED
+InstantiatedTaskGraphEncoding.java 1ffb6b33efb6673d51a8ef99822caf42f43b2782 RED
 SafeTaskGraphEncoding.java 49f4c06f6db45e7751794bcc7e3892570c8daa29 RED
-TaskGraphEncoding.java 96dee6e872b408cef6630b700da2ee91eb5e2853 RED
+TaskGraphEncoding.java 85067f10567e2104119c61d8e599a7f28f18932d 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 a94ef29dd2fc13b4d7dd21d9b93af197e302ba59..829fd8fbfd1f63d84462299b6d4955df29eade77 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
@@ -27,8 +27,8 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  * 
  * @author diewald
  */
-public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C> extends
-		TaskGraphEncoding<G, C, DefaultTaskGraph> {
+public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C>
+		extends TaskGraphEncoding<G, C, DefaultTaskGraph<?>> {
 
 	/** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */
 	public AbstractTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter) {
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 9cfa44d579a6c5af0f53497ed0f318065c17dd26..652b4c5c0318396a5747377aab9905fdf31e0395 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
@@ -40,7 +40,7 @@ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMapp
 	 */
 	public InstantiatedAcyclicTaskGraphEncoding(
 			SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter,
-			Collection<DefaultTaskGraph> taskGraphs) {
+			Collection<DefaultTaskGraph<?>> taskGraphs) {
 		super(systemModelAdapter, AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs));
 	}
 
@@ -51,7 +51,8 @@ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMapp
 	}
 
 	/** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */
-	public InstantiatedAcyclicTaskGraphEncoding(InstantiatedAcyclicTaskGraphEncoding<T, C> encoding) {
+	public InstantiatedAcyclicTaskGraphEncoding(
+			InstantiatedAcyclicTaskGraphEncoding<T, C> encoding) {
 		super(encoding);
 	}
 
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 0cd7e6e0f7f907e06d868e963d1b5d2996471607..7f7d6635d64fb0ba264d6ae0029708242ca74473 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
@@ -29,14 +29,14 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  * 
  * @author diewald
  */
-public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C> extends
-		TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph> {
+public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C>
+		extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph<?>> {
 
 	/**
 	 * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}.
 	 */
 	public InstantiatedTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter,
-			Collection<DefaultTaskGraph> taskGraphs) {
+			Collection<DefaultTaskGraph<?>> taskGraphs) {
 		super(systemModelAdapter, taskGraphs);
 	}
 
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 57cbf17b135afd5aab74de79c01d39eef3d1deb4..7f0692831e67be52371ec10d2020a17c9957e889 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
@@ -39,8 +39,8 @@ import org.opt4j.core.Genotype;
  * 
  * @author diewald
  */
-public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> implements
-		IExplorationEncoding, ComposablePhenotype<G>, Cloneable {
+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;
@@ -68,9 +68,8 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> imple
 	public TaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter) {
 		this.systemModelAdapter = systemModelAdapter;
 
-		taskGraphs =
-				(Collection<T>)systemModelAdapter.getTaskGraphs().stream().map(tg -> tg.copy())
-						.collect(Collectors.toSet());
+		taskGraphs = (Collection<T>)systemModelAdapter.getTaskGraphs().stream().map(tg -> tg.copy())
+				.collect(Collectors.toSet());
 
 		replicableComponents.addAll(systemModelAdapter.getReplicableComponents());
 		deployableComponents.addAll(systemModelAdapter.getDeployableComponents());
@@ -244,7 +243,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> imple
 	 * <i>Side-note:</i> Each task may be located in only one {@link TaskGraph}.
 	 * 
 	 * @returns {@code true} iff a containing {@link TaskGraph} has been found.
-	 * */
+	 */
 	public boolean removeTask(IDeployableComponentAdapter<C> task) {
 		TaskGraph taskGraph = getGraphOf(task, taskGraphs);
 		if(taskGraph != null) {
@@ -280,8 +279,8 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> imple
 	 * @return The asociated {@link IDeployableComponentAdapter}, or {@code null} if none can be
 	 *         identified.
 	 */
-	public synchronized IDeployableComponentAdapter<C> getDeployableComponentOf(
-			EObject originalEObject) {
+	public synchronized IDeployableComponentAdapter<C>
+			getDeployableComponentOf(EObject originalEObject) {
 		for(IDeployableComponentAdapter<C> deployableComponentAdapter : deployableComponents) {
 			if(deployableComponentAdapter.getObject() == originalEObject) {
 				return deployableComponentAdapter;
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 d6ba481e3fe673b3ccce8f660295ed8fc493e484..3804d0b702a10d692d898c3d98be5dfb273ea7aa 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 f2cc21b6294896288c9bfe70870bf38d0b30cb71 RED
-TaskMappingEntry.java 83535c1ad58bc3016f2d9fe409d5b1f80394b501 RED
+TaskMappingEncoding.java 18a5a3aa6edbfaf22497f329e7c4a99f526cc142 RED
+TaskMappingEntry.java 6d6f0d8700aad210d47ee29f7581ed4f231c3d1a 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 2b7476fd937094bbb7bae71dbf1db1558dece4e1..adb2b3ad53d05b28d6ca89c1d8773743724bf48e 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
@@ -81,7 +81,8 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 			HashMultimap.create();
 
 	/** Stores the references between {@link IMappingEntry} to keep track of association updates. */
-	protected Multimap<IMappingEntry, IMappingEntry> referencedByMap = HashMultimap.create();
+	protected Multimap<IMappingEntry<?, ?>, IMappingEntry<?, ?>> referencedByMap =
+			HashMultimap.create();
 
 	/**
 	 * Map of disallowed {@link IDeployableComponentAdapter} -> {@link IExecutionUnitAdapter}
@@ -122,6 +123,7 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 	 * Constructor that is initialized with a reference to the DSE specification and the input
 	 * system.
 	 */
+	@SuppressWarnings("unchecked")
 	public TaskMappingEncoding(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 			PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding) {
@@ -188,6 +190,13 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 
 	// TODO: This is a HACK, which is required to get the recent set of target partitions. Here, the
 	// task mapping class architecture needs to be reworked.
+	/**
+	 * Injects a new {@link PartitionMappingEncoding} into the {@link TaskMappingEncoding} such that
+	 * the correct target resources are present for updated virtual target platforms.
+	 * 
+	 * @param partMappingEncoding
+	 *            updated target partition encoding.
+	 */
 	public void updatePartitionMapping(PartitionMappingEncoding partMappingEncoding) {
 		this.partMappingEncoding = partMappingEncoding;
 	}
@@ -498,7 +507,8 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 	 *            derived.
 	 * @return The created {@link TaskMappingEntry}.
 	 */
-	protected abstract <S extends TaskMappingEntry> T createEntry(S allocEntry);
+	protected abstract <U extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> T
+			createEntry(U allocEntry);
 
 	/**
 	 * Constructs a random {@TaskMappingEntry} for the given deployable
@@ -570,9 +580,10 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 	}
 
 	/** Removes the given {@code entry} of the given {@code task} from the mapping. */
+	@SuppressWarnings({"rawtypes", "unchecked"})
 	public void removeEntry(T entry) {
 		allocationMap.remove(entry.getSource(), entry);
-		referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement(entry));
+		referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement((IMappingEntry)entry));
 	}
 
 	/**
@@ -581,7 +592,7 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 	 */
 	public T removeRandomEntry(S deployableComponent) {
 		List<T> entries = new ArrayList<>();
-		entries.addAll((Collection<? extends T>)allocationMap.get(deployableComponent));
+		entries.addAll(allocationMap.get(deployableComponent));
 		int idx = rand.nextInt(entries.size());
 		T rmEntry = entries.get(idx);
 		removeEntry(rmEntry);
@@ -592,9 +603,10 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 	 * Removes the given {@link IDeployableComponentAdapter} and, consequently, all associated
 	 * entries from the mapping.
 	 */
+	@SuppressWarnings({"rawtypes", "unchecked"})
 	public Collection<T> removeTask(S deployableComponent) {
 		for(T entry : allocationMap.get(deployableComponent)) {
-			referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement(entry));
+			referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement((IMappingEntry)entry));
 		}
 		return allocationMap.removeAll(deployableComponent);
 	}
@@ -669,11 +681,11 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 			getExcludedDeploymentTargets(IDeployableComponentAdapter<?> deployableComponent) {
 		Collection<IExecutionUnitAdapter<?>> rval = getDisAllowedAllocations(deployableComponent);
 
-		Collection<InternalSeparationConstraint> sepConstraints =
-				getConstraintsOf(InternalSeparationConstraint.class);
+		// Collection<InternalSeparationConstraint> sepConstraints =
+		// getConstraintsOf(InternalSeparationConstraint.class);
 
-		Optional<InternalSeparationConstraint> relevantSepConstraint = sepConstraints.stream()
-				.filter(c -> c.getRequesterSet().contains(deployableComponent)).findAny();
+		// Optional<InternalSeparationConstraint> relevantSepConstraint = sepConstraints.stream()
+		// .filter(c -> c.getRequesterSet().contains(deployableComponent)).findAny();
 
 		// TODO: Reinclude for the safety exploration.
 		// if(relevantSepConstraint.isPresent()) {
@@ -750,6 +762,12 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter<
 		return tgEncoding;
 	}
 
+	/**
+	 * Returns the list of Partitions that are allocated to the given list of physical execution
+	 * units. The method is intended to extract a list of partitions that are valid allocation
+	 * targets iff the list of physical execution units is defined by the set of mapping constraints
+	 * (e.g., derived from available I/Os).
+	 */
 	public List<Partition>
 			getAllowedPartitionTargets(List<IExecutionUnitAdapter<?>> physExecUnits) {
 		List<Partition> execList = new ArrayList<>();
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 df46f858d95e1c2ac5f040af713dfbb6c0392d8c..6a4ccc06368cbe3d23357709d6f911e585685dd4 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 08b8a85ba4b9bf9a375f80c7852a3d2e9990c1e7 RED
+AbstractTaskMappingEncoding.java 3f3a6ad042d6eafebe3c3ed47f4ccbde11a2b8fb RED
 AbstractTaskMappingEntry.java b039009446aa861a4a13fa4ceb479a4ca9818045 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 7b08725024fc7386d57739e60d8865c5d61671b0..a9e63b25be5da60ad452585835a9709148ba8cb7 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
@@ -69,8 +69,7 @@ public class AbstractTaskMappingEncoding
 	/** Copy Constructor. */
 	public AbstractTaskMappingEncoding(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
-			PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding)
-			throws ExplorationException {
+			PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) {
 		super(dse, systemModelAdapter, partEnc, tgEncoding);
 	}
 
@@ -132,10 +131,10 @@ public class AbstractTaskMappingEncoding
 
 	/** {@inheritDoc} */
 	@Override
-	protected <S extends TaskMappingEntry> AbstractTaskMappingEntry createEntry(S allocEntry) {
+	protected <S extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>
+			AbstractTaskMappingEntry createEntry(S allocEntry) {
 		// TODO: Remove the ugly casts.
-		return new AbstractTaskMappingEntry((IDeployableComponentAdapter<?>)allocEntry.getSource(),
-				(Partition)allocEntry.getTarget());
+		return new AbstractTaskMappingEntry(allocEntry.getSource(), allocEntry.getTarget());
 	}
 
 	/** {@inheritDoc} */
@@ -154,13 +153,8 @@ public class AbstractTaskMappingEncoding
 	@Override
 	public AbstractTaskMappingEncoding clone() {
 		AbstractTaskMappingEncoding clonedEncoding;
-		try {
-			clonedEncoding = new AbstractTaskMappingEncoding(dse, systemModelAdapter,
-					partMappingEncoding, tgEncoding);
-		} catch(ExplorationException e) {
-			// Opt4J does not allow to throw Exceptions here.
-			throw new RuntimeException(e);
-		}
+		clonedEncoding = new AbstractTaskMappingEncoding(dse, systemModelAdapter,
+				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 c529c99bdd9f0e7f58d07675e69732c47b23fdc9..7caec5ff372c2adfba54e3bbbbfc1262fbd6a6b5 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 a792b00025cd97aaef95e76c79563240df23ae00 RED
+FailSilentTaskMappingEncoding.java fc5578ebb844f9b56b080480fb5c1eb112fd4bfa RED
 FailSilentTaskMappingEntry.java 61bdca6fdc8f36e3e82755af639fc27ab83b2ec6 RED
-FaultDetectionVotingTaskMappingEncoding.java 8fb17ee77def5375fdc2630b7a28cf2b8fbf55ed RED
+FaultDetectionVotingTaskMappingEncoding.java ed6ddc5125f9d225ef2c77f7f0ffb5ca83d607cc RED
 FaultDetectionVotingTaskMappingEntry.java bb0c1531a1173c58f07e67c41de8919fb9ad55f8 RED
-InstantiatedTaskMappingEncoding.java 5b91552c0185414270ad0993dac1aac68834399f RED
+InstantiatedTaskMappingEncoding.java 8d846f0ae16025f97bce21cecf9f13a802186a3e RED
 InstantiatedTaskMappingEntry.java 1bb380c1f473bb9d8db1b831037e5185818bd74e 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 3ff346fe82d68a65613d2aead325fd4967b53f6c..2b84d4f0a4a5e60d11ace219a21599f30014eccb 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
@@ -106,7 +106,8 @@ public class FailSilentTaskMappingEncoding
 
 	/** {@inheritDoc} */
 	@Override
-	public <S extends TaskMappingEntry> FailSilentTaskMappingEntry createEntry(S mapping) {
+	public <S extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>
+			FailSilentTaskMappingEntry createEntry(S mapping) {
 		return new FailSilentTaskMappingEntry((AbstractTaskMappingEntry)mapping);
 	}
 
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 6a4183ae1892e4c016ddfff291508ab2ebd0ed1d..6884185367d372d586903c0ebf9eff3edf8f8525 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
@@ -101,8 +101,8 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 
 	/** {@inheritDoc} */
 	@Override
-	public <S extends TaskMappingEntry> FaultDetectionVotingTaskMappingEntry
-			createEntry(S mapping) {
+	public <S extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>
+			FaultDetectionVotingTaskMappingEntry createEntry(S mapping) {
 		// TODO: Do not use 0, magic constant.
 		return new FaultDetectionVotingTaskMappingEntry((AbstractTaskMappingEntry)mapping, 0);
 	}
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 a3edbd75730efdfb5b1005aa9bcd260353d8c693..bb10776df1f97284bf3cf7aafb67db376b7c417d 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 0364eb1b0251e1548111be3d24207f21e92d0ea6 RED
+ComposableCreatorBase.java 0fb620915e2304057db795c29da86414b22958a0 RED
 CompositeCreator.java 65ab9f283191b081e40e8587431fd0a95f1daca6 RED
 CompositeCreatorBase.java ce0a74a4b8acf68069534443468f4995a091139e 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 b63db2537140c5e9f4d48f0c2617cc37908793a6..08ca7be33ca03969994bae542ae7493854aa933f 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
@@ -101,6 +101,7 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 	 * 
 	 * @throws DecodingException
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> decodeCreatedGenotype(
 			G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes,
@@ -113,7 +114,7 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
 		intermediatePhenos.addAll(decodedPhenotypes);
 
-		@SuppressWarnings("unchecked") Optional<? extends ComposableDecoder<G, P>> idDecoder =
+		Optional<? extends ComposableDecoder<G, P>> idDecoder =
 				(Optional<? extends ComposableDecoder<G, P>>)subDecoders.stream().filter(
 						d -> Arrays.asList(genotype.getClass()).containsAll(d.getRequiredTypes()))
 						.findAny();
@@ -127,10 +128,8 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 			 * }
 			 */
 
-			@SuppressWarnings("unchecked") ComposableDecoder<G, P> castedDecoder =
-					(ComposableDecoder<G, P>)decoder;
-			@SuppressWarnings("unchecked") Class<P> decPhenotypeType =
-					(Class<P>)decoder.getOutputType();
+			ComposableDecoder<G, P> castedDecoder = (ComposableDecoder<G, P>)decoder;
+			Class<P> decPhenotypeType = (Class<P>)decoder.getOutputType();
 			// TODO: Here, the check with the Required Phenotypes should be removed, and replaced
 			// with a check such that the required pheno/genotypes are available at this point.
 			if(!decoderExecuted.get(decoder) && decoder != idDecoder.orElse(null) &&
@@ -138,8 +137,7 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 					intermediatePhenos.containsAll(castedDecoder.getRequiredTypes())) {
 				decoderExecuted.put(decoder, true);
 
-				@SuppressWarnings("unchecked") P decPhenotype =
-						(P)decoder.decodeComposable(genotype, intermediatePhenos);
+				P decPhenotype = (P)decoder.decodeComposable(genotype, intermediatePhenos);
 				// Null indicates a decoding error here.
 				if(decPhenotype == null && !(decoder instanceof ConstraintGenerationDecoder)) {
 					throw new DecodingException(genotype, decoder);
@@ -161,21 +159,6 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype>
 		return phenotypes;
 	}
 
-	/**
-	 * Checks whether the collection of required input types contains hybrid {@link Genotype}s and
-	 * if they were already created.
-	 */
-	private boolean isHybridPhenoRequiredAndCreated(
-			Set<Class<? extends Genotype>> createdGenotypeTypeSet, Collection<Class<?>> reqTypes) {
-		for(Class<?> reqType : reqTypes) {
-			if(Genotype.class.isAssignableFrom(reqType) &&
-					!createdGenotypeTypeSet.contains(reqType)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
 	/** {@inheritDoc} */
 	@Override
 	public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype>
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 c51efbcafec1725b43381beeada5775f7b50ee2a..7e571dabdf39ba44b314a031e144d7c3b9bc41ba 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 95f1e8f3b8d60c52704c9f003f9772fe3897c1cf RED
+ComposableDecoder.java 197abec80b880e25fccfc66d61b471b0b5d7e10f RED
 ComposableDecoderBase.java 4f366cc6c0f8ca929cac43d9c5de675cbafbb132 RED
 CompositeDecoder.java 9d34dd0b342e6433ab894974f9430531ce2de39a RED
-CompositeDecoderBase.java aaeca798f88c1abb7aeed9843a7fb41c5935653f RED
+CompositeDecoderBase.java 9b41916f13b73ae910e3a3135b0a2ee97c48b81b 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/ComposableDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java
index fc32f1b315506dfb255df78234e18ac868a782a4..cedb145df9db80a134926e899c0a56500d3f4f82 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java
@@ -36,6 +36,10 @@ import org.opt4j.core.problem.Decoder;
 public interface ComposableDecoder<G extends ComposableGenotype, P extends ComposablePhenotype<?>>
 		extends IDependencyModule<IExplorationEncoding, P> {
 
+	/**
+	 * Returns the most relevant {@link Genotype} used for the Decoder whereas other dependencies
+	 * declare the <i>additionally</i> required information.
+	 */
 	Class<?> getPrimaryInputType();
 
 	/**
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 b631f18f29fe2c016a911baf661056d7222d6632..33a42479f9ca32a7f9e20fe2f8e05f7a13fff65c 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
@@ -236,6 +236,7 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e
 	 * 
 	 * @throws CycleFoundException
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public <G extends ComposableGenotype, CP extends ComposablePhenotype<G>, D extends ComposableDecoder<G, CP>>
 			void registerSubDecoder(Class<G> subGenotype, D subDecoder) throws CycleFoundException {
@@ -246,7 +247,7 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e
 		registeredSubDecoders.put(subDecoder,
 				(Class<? extends ComposableGenotype>)subDecoder.getPrimaryInputType());
 
-		@SuppressWarnings("unchecked") ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>> castedSubDecoder =
+		ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>> castedSubDecoder =
 				(ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>>)subDecoder;
 		depGraph.addOperator(castedSubDecoder);
 	}
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 eeaa7a87bb03c5f175d6b1065946611308b79823..b69be0d2c9adc72637af8a626713c0144538c74d 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 a9eceb013909352357df569d11d4a781d339a66e RED
+CompositeEvaluatorBase.java 892ecced8aa996be57baad178bdbeefd6855c2d6 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 06b23dd5cbc2004e8a8d7dfc47629cbaacedfea2..1ecde2ab17a1e269f7ddb2d29819ace8bd606c78 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
@@ -264,7 +264,8 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>>
 					(Class<SP>)currSubPhenotype.getClass();
 			phenotypeTypeMap.putEncoding(currSupPhenotypeType, currSubPhenotype);
 			if(CompositePhenotype.class.isAssignableFrom(currSubPhenotype.getClass())) {
-				List<SP> subPhenos = ((CompositePhenotype)currSubPhenotype).getSubPhenotypes();
+				@SuppressWarnings("unchecked") List<SP> subPhenos =
+						(List<SP>)((CompositePhenotype<?>)currSubPhenotype).getSubPhenotypes();
 				subPhenotypes.addAll(0, subPhenos);
 			}
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings
index de77162afd62be1bd2ae76dda7e228d9bb0a19eb..da01c918ad1b24012354ea3e6fd20c229c30a8ba 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings
@@ -1,2 +1,2 @@
-CopyPartitionMapping.java d70d75d2c4ad2e31461d3735ccb12087aa9eff10 RED
+CopyPartitionMapping.java 3e77f3bb93cdcb5839e6c050261f7a671bef6de0 RED
 CopyPartitionMappingModule.java 679212216ca3f9ae3fbeeaeeeeb5813dc762952d RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/platform/.ratings
new file mode 100644
index 0000000000000000000000000000000000000000..f94f131c6640b641fa2e1fb6f1ff481b02700508
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/platform/.ratings
@@ -0,0 +1,2 @@
+CopyPlatformCommunicationGraph.java 33a0bca299979ad7d6a25848e7828ca2d7017513 RED
+CopyPlatformCommunicationGraphModule.java 0dd4ad33e694d3b4ddb8fb404b56e46b51bf5fd3 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings
index 5ed817869cd8b641af62643740f1aa8d71f60754..6fd222c91b81e1500e1a9e13493e8d78f12acd74 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings
@@ -1,3 +1,3 @@
-CopyAbstractTaskMapping.java edbd8e4cc926cf2e055e024011ce67c009fe0d8b RED
+CopyAbstractTaskMapping.java c6df9e76c182ca083303703cdd7d53ebe5cb6960 RED
 CopyInstanceTaskMapping.java 902538ef9927500d5e16ff8b50364560bed10a6b RED
 CopyTaskMappingModule.java 4904f2062265901c4a9d070449a06d40f6c054a4 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings
index dbbda0b305935adb5022caa17ddb9d4365f7ae50..cc9a1fc560dd5e31e1cfde68cb4c95d63574531a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings
@@ -5,4 +5,6 @@ CrossoverRandManyAllocation.java b24cef44f25dfed6429e933281b8da3be681580c RED
 CrossoverSingleAllocation.java 1f4607e9a03f9627b56d4a04b7dcde0c37bf460f RED
 NopCrossover.java 70500c9db651250298c97e261e4f8a0d8b6941e3 RED
 NopCrossoverInstantiatedTaskMappingModule.java 95156489b862633b428a87df2ae51aa304c7f6f1 RED
+NopCrossoverPartitionMappingModule.java ac1eb750baf51027e352f4b95e6145e914bc4d19 RED
+NopCrossoverPlatformCommunicationGraphModule.java 1e4b42a28f38a42fbddd0b5ad793679c96cb3330 RED
 NopCrossoverSFArchModule.java 65379d3a5e26993de3cb72856e0e66b645e8b064 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings
index 9ca1d2b020ea95d725bb1ff1f928796bb8ee9155..2ad622cfba69786e59e1896c5b804a77043a46cf 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings
@@ -1,2 +1,3 @@
 MutateBase.java b151fab2adf99fa9dbe43805c0fbb7d856234165 RED
 MutateOperatorModuleBase.java b17ea95c0f3e8ccbdd9005c416c6d9aff54a5517 RED
+NopMutateOperator.java c016ee80e96392d663e59d151b16ea546111cecf RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings
index 19f115e01bff1ba36421ed45ccc9b6602cac8447..da3e59a293b6c61958466c45c9bc83f4c729256d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings
@@ -1,4 +1,4 @@
-MutatePartitionBase.java 739af618e683706a4550a162813a987219176a11 RED
+MutatePartitionBase.java db3ed01fe0a4fdf4c504d84b264ac724ae4447e7 RED
 MutatePartitionDecrement.java 741a0280e5e65d5360dba834e926cc879b9bd94a RED
 MutatePartitionIncrement.java e550d00c767f2350b7b6f7d664d3b7766e71059c RED
 PartitionMappingModule.java 379d07cd5495d4ddc657269a85962d95fde1287c RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/platform/.ratings
new file mode 100644
index 0000000000000000000000000000000000000000..028b9bd0625e368db0b3adc9a6a8d65d7ee8aa67
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/platform/.ratings
@@ -0,0 +1 @@
+NopPlatformCommGraphMutateModule.java 08577f7b156f428332be4a371fa6bc7f1f129c2b RED
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 a9a10c0096f1c00855d9fd4beec9bf1261fdaece..fee32671e26239ea727e424b709a21694225a3be 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
@@ -5,4 +5,4 @@ DseProblemModuleBase.java 67ea368a0824fb500f85bf49868754455049b9c9 RED
 EvaluatorWrapper.java 47ff0b2df7f75e232fa269b55750f0e2c408b08c RED
 ExplorationGoalPriorityMultiEvaluator.java 0f900f86c8adc14b69d95bb8eb3a34ea1ed2d41e RED
 ProblemModuleBase.java fb1401b846d001dfc78bbd8b8881929788b10d41 RED
-StrictTTDecoder.java b20a51c3310b2302ba0b1281ffda049a59df30fc RED
+StrictTTDecoder.java 0553585f0cd521b0d5012aeec5508785fc305529 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
index 10249da84343948cbd87a101f5c968dbf4c5dd42..c1264bf5e01fe548e351439c0ee1520e9905eef8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
@@ -1 +1 @@
-MessageDecoder.java e893d02f24db27df9752ee65e19dcf8f135f5d56 RED
+MessageDecoder.java 8763b821ca5bbb4637aadf78c599f5fe103eb5cf RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/.ratings
deleted file mode 100644
index c3a5110277a1a8b8ff773a4e9b33772d862c2f9c..0000000000000000000000000000000000000000
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/.ratings
+++ /dev/null
@@ -1,3 +0,0 @@
-AbstractTaskMappingDecoder.java 56d2d2f6edc999d0e802bc5f4e7e470307456a08 RED
-FailSilentAbstractTaskMappingDecoder.java f1a6618527b827342f4886e685a5abbb898eb205 RED
-FaultDetectionVotingAbstractTaskMappingDecoder.java cf6444e5c9ccf0b20365a2b55774d932a881712a RED
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 25e51fadd4a3f0426417d5aa1242ebaf6bad15ef..8c060808d6908c84b6811023cba3448fcb883448 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 2a307ac8b3adc3e2a6ae10ff64463deac0d54b28 RED
-InstantiatedTaskMappingDecoderAcyclic.java 45b939b3efe28493c5734f6603cafa991b50fb6f RED
+InstantiatedTaskMappingDecoder.java 57e46646ba44ffaa4af2612718dc31feb47b9f35 RED
+InstantiatedTaskMappingDecoderAcyclic.java 7abff3b7998604fa61a32b4cfa1d98fb9960ffb6 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 c029197cc557a90b74dd9b67fb1c9e859460e213..021724d7f9a932bb6115d41a42674f56c680b814 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
@@ -72,8 +72,8 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 		SafetyFunctionArchEncoding<?> sfEnc =
 				phenotypeTypeMap.getEncoding(SafetyFunctionArchEncoding.class);
 
-		Collection<DefaultTaskGraph> tgColl = atgEnc.getTaskGraphs();
-		TaskGraphInstantiator<DefaultTaskGraph> tgInstatiator =
+		Collection<DefaultTaskGraph<?>> tgColl = atgEnc.getTaskGraphs();
+		TaskGraphInstantiator<DefaultTaskGraph<?>> tgInstatiator =
 				new TaskGraphInstantiator<>(tgColl, genotype);
 		InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>(
 				systemModelAdapter, tgInstatiator.createMultipleInstanceTaskGraphs(tgColl));
@@ -103,7 +103,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 			// Get the "containing" task graph. We must check all replacement components (instances)
 			// since we don't know which one was instantiated (or it would be more costly to find
 			// out).
-			DefaultTaskGraph sfTG = null;
+			DefaultTaskGraph<?> sfTG = null;
 			for(IDeployableComponentAdapter<?> curSFCompAdp : sfCompAdp
 					.getReplacementComponents()) {
 				sfTG = itgEnc.getTaskGraphOf(curSFCompAdp);
@@ -203,7 +203,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 	 *            {@link IDeployableComponentAdapter} of the currently processed output aggregation
 	 *            element.
 	 */
-	private void updateTaskGraph(DefaultTaskGraph sfTG,
+	private void updateTaskGraph(DefaultTaskGraph<?> sfTG,
 			Collection<IDeployableComponentAdapter<?>> realizingSFUnits,
 			Collection<IDeployableComponentAdapter<?>> realizingDiagUnits,
 			Collection<IDeployableComponentAdapter<?>> outComps,
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/partitionmapping/.ratings
new file mode 100644
index 0000000000000000000000000000000000000000..efe3ea0143774a01236e60e6770e934ea799c7e6
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/partitionmapping/.ratings
@@ -0,0 +1,2 @@
+PartitionMappingDecoderGraph.java d164596ac52b41fbe7be9b926418a5cbf53edb08 RED
+PartitionMappingIdentityDecoder.java e1a56b26ca22e952b8c965f79ff748f48da3407c RED
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 561f89b445f9f4d174bac308fae1322fae493a92..d1b26cf669c29a624e6588072467995675e1b21b 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 5e73fc62be3b05def91ff00e326dbbb382770e98 RED
-SFGraphDecoder.java 77a9236bab238e44f6bc4ec94b974fea26b58106 RED
-SFMappingConstraintDecoder.java 381bc13803e7e16994df84a7ec3d5c108d35a12f RED
-SFMappingDecoder.java 7455f2aa6211310c95a24a26bdf152eb6c04fac3 RED
+SFEncodingDecoder.java 8e1594c92aa5e0c23d07038bb63db5b483c4f727 RED
+SFGraphDecoder.java 7290792dbf7bd2f22e909a1f166ab2dcaae7ee7d RED
+SFMappingConstraintDecoder.java 31ccf2a6cb337edce54fd77edb793e096f1a393d RED
+SFMappingDecoder.java 48342dcb954a8129e640ab89bbaf57fe028febf9 RED
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 651363256a2fb386dbb53c9e44da0ecb641895df..36e00e783a6b5c49f0978fef7e44e7af07889f29 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
@@ -114,7 +114,7 @@ public class SFMappingDecoder<C>
 
 			// TODO: use a more generic solution to instantiate these tyoes of constraints during
 			// the creation phase.
-			Set<IMappingEntry> existingEntries = new HashSet<>();
+			Set<IMappingEntry<?, ?>> existingEntries = new HashSet<>();
 			if(outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class).isEmpty()) {
 				for(IDeployableComponentAdapter<C> comp : sFAEntry.getSafetyFunctionAdapter()
 						.getAllComponents()) {
@@ -144,7 +144,7 @@ public class SFMappingDecoder<C>
 			// Match the encoding with the selected channel number.
 			for(int i = entryNumber; i < channelNumber; i++) {
 				try {
-					Set<IMappingEntry> createdEntries = new HashSet<>();
+					Set<IMappingEntry<?, ?>> createdEntries = new HashSet<>();
 					createdEntries.addAll(addSFComponents(outGenotype, sfComps));
 					if(diagPresent) {
 						createdEntries.addAll(addSFComponents(outGenotype, diagComps));
@@ -164,7 +164,7 @@ public class SFMappingDecoder<C>
 			List<InternalIsolatedCommunicationSet> isoCommSet = new ArrayList<>(
 					outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class));
 			for(int i = entryNumber - 1; i > channelNumber; i--) {
-				Collection<IMappingEntry> rmEntries =
+				Collection<IMappingEntry<?, ?>> rmEntries =
 						isoCommSet.get(i).getIsolatedCommunicationSet();
 
 				removeSFEntries(outGenotype, rmEntries);
@@ -195,7 +195,7 @@ public class SFMappingDecoder<C>
 		List<InternalIsolatedCommunicationSet> isoComm = new ArrayList<>(
 				outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class));
 		for(int i = 0; i < entryNumber; i++) {
-			Set<IMappingEntry> createdEntries = addSFComponents(outGenotype, diagComps);
+			Set<IMappingEntry<?, ?>> createdEntries = addSFComponents(outGenotype, diagComps);
 			InternalIsolatedCommunicationSet curConstr = isoComm.get(i);
 			curConstr.addToIsolatedCommunicationSet(createdEntries);
 		}
@@ -224,9 +224,9 @@ public class SFMappingDecoder<C>
 	 *             if no valid allocation targets can be identified for one
 	 *             {@link IDeployableComponentAdapter}.
 	 */
-	private Set<IMappingEntry> addSFComponents(AbstractTaskMappingEncoding outGenotype,
+	private Set<IMappingEntry<?, ?>> addSFComponents(AbstractTaskMappingEncoding outGenotype,
 			Collection<IDeployableComponentAdapter<C>> sfComps) throws ExplorationException {
-		Set<IMappingEntry> createdEntries = new HashSet<>();
+		Set<IMappingEntry<?, ?>> createdEntries = new HashSet<>();
 		if(sfComps != null) {
 			for(IDeployableComponentAdapter<C> curSFComp : sfComps) {
 				createdEntries.add(outGenotype.createAndAddRandomEntry(curSFComp));
@@ -238,8 +238,8 @@ public class SFMappingDecoder<C>
 
 	/** Removes the given {@link IMappingEntry}s from the {@link AbstractTaskMappingEncoding}. */
 	private void removeSFEntries(AbstractTaskMappingEncoding outGenotype,
-			Collection<IMappingEntry> sfEntries) {
-		for(IMappingEntry sfEntry : sfEntries) {
+			Collection<IMappingEntry<?, ?>> sfEntries) {
+		for(IMappingEntry<?, ?> sfEntry : sfEntries) {
 			outGenotype.removeEntry((AbstractTaskMappingEntry)sfEntry);
 		}
 	}
@@ -249,7 +249,7 @@ public class SFMappingDecoder<C>
 	 * the given {@link IMappingEntry}. If none is found {@code null} is returned.
 	 */
 	private InternalIsolatedCommunicationSet getMatchingIsolationCommConstraint(
-			AbstractTaskMappingEncoding outGenotype, IMappingEntry entry) {
+			AbstractTaskMappingEncoding outGenotype, IMappingEntry<?, ?> entry) {
 		InternalIsolatedCommunicationSet matchingConstraint = null;
 		Collection<InternalIsolatedCommunicationSet> isoComm =
 				outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class);
@@ -268,7 +268,7 @@ public class SFMappingDecoder<C>
 	 * given {@link IMappingEntry} from the given {@link AbstractTaskMappingEncoding}.
 	 */
 	private void removeMatchingConstraint(AbstractTaskMappingEncoding outGenotype,
-			IMappingEntry entry) {
+			IMappingEntry<?, ?> entry) {
 		InternalIsolatedCommunicationSet rmConstr =
 				getMatchingIsolationCommConstraint(outGenotype, entry);
 		assert rmConstr != null;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings
index 52d49b4dd86fc166dc3aac105730f6c4a030d942..c42351455e14fca612baea53759deb3b407cd66d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings
@@ -1 +1,2 @@
-AbstractTaskMappingIdentityDecoder.java 4b452975b3da72fb535a9e67013d45f9494e9203 RED
+AbstractTaskMappingIdentityDecoder.java b1556259f12c67e465031f63f21a47e327f42ab9 RED
+TaskMappingDecoderBase.java 969f0a27fad48ecf6de04e9ea4034602aeb21a20 RED
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
new file mode 100644
index 0000000000000000000000000000000000000000..706484f3c96433412beb3f9c646b93fba2356a55
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings
@@ -0,0 +1,4 @@
+AbstractTaskMappingDecoder.java 8daae35d8536b37e000eed45cec870fa94958f2e RED
+FailSilentAbstractTaskMappingDecoder.java 64dc3dac76cabf96f0dc39e5e7192c5caa04a7b0 RED
+FaultDetectionVotingAbstractTaskMappingDecoder.java 68bcd5b7faedc97269973023e5f9b6eebb020c1e RED
+TaskInstanceResourceAlignmentDecoder.java 116f72a16a02c9aac617cc4c9684cd583b87e1b6 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings
index 9537295392acfaf402279e213ce562cc68ef0ef5..1c98fc295f9ac5d24b5d1486a142185f85777596 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings
@@ -1,6 +1,6 @@
 ArchExpSubSolution.java 3bb56206fe70f19f7cb6aee575eba552ce9bbc4e RED
 ArchitectureSolution.java 8ba40ce339c4195641ed1b67c79718e297d66e4c RED
 IExplorationSolution.java a6153937197358907ceec46606a7f28620c26f2b RED
-IScheduleSolution.java 989614e232dcc1d4ade33ea2a76e90b514f175d7 RED
-StrictTTSchedule.java 65d194e0783917ecd6f103c8997ab65e88ef0c4a RED
+IScheduleSolution.java 8a2959147bdca874fd43b1591bc5471b68c04333 RED
+StrictTTSchedule.java 59958b5cacbe4a02e27ab82aac0afc501b10864f RED
 TimeSlot.java a394badca1460454c91e0d82b0d124f8b2a2ebcf RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java
index db6a97dae44818574e93c0c5e30765846b5432ef..1f219222f59260ca87ab38fc11bebe91b790812b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java
@@ -31,5 +31,5 @@ public interface IScheduleSolution<P extends Phenotype> extends IExplorationEnco
 	 * Returns the {@link TimeSlot} that has been reserved for the given {@link IMappingEntry}.
 	 * Returns null, if no {@link TimeSlot} could be found.
 	 */
-	public TimeSlot getTimeSlotOf(IMappingEntry entry);
+	public TimeSlot getTimeSlotOf(IMappingEntry<?, ?> entry);
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java
index ca518264c9e07182b66b878bdd2e3b7ae481ba23..12ba03306fabf0a270dbc96150f49e5d51931bd5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java
@@ -311,7 +311,7 @@ public class StrictTTSchedule<S extends TaskMappingEntry<IDeployableComponentAda
 
 	/** {@inheritDoc} */
 	@Override
-	public TimeSlot getTimeSlotOf(IMappingEntry entry) {
+	public TimeSlot getTimeSlotOf(IMappingEntry<?, ?> entry) {
 		return timeSlotsOfMappingEntries.get(entry);
 	}
 
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 ce981368d06ab57cc181a625036631f56425b13c..307c2f617966932472fcb9cadf06595effdc42e1 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
@@ -3,4 +3,4 @@ ArchitectureEvaluator.java 600c424651bc22bacecef9e596360763fdf28585 RED
 ExplorationTargetEvaluatorBase.java b6db855e18f03c4f5c8dd7b42dbae72836509f01 RED
 ExpressionEvaluatorBase.java 1552c9232d4ef9589560b6a95523ca21739ad110 RED
 ITopLevelEvaluator.java 032ec6375efff2234664690f271cec98816abcc5 RED
-MappingEvaluator.java 7e8d03539f5c42f9273967ee461e19ca41e839cd RED
+TaskMappingEvaluator.java 34231ad9255d3b7accdba5c1e75f3ecb4be4512f RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java
index c3746755125fff2101f2fc43c91484ce1bc68cc9..4f5b2682905c0846303d473bf6e5924a8260cd74 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java
@@ -21,6 +21,8 @@ import java.util.Collection;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
@@ -36,15 +38,16 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * 
  * @author diewald
  */
-public abstract class TaskMappingEvaluator
-		extends ExpressionEvaluatorBase<TaskMappingEncoding, Double, ExplorationTarget<Double>> {
+public abstract class TaskMappingEvaluator extends
+		ExpressionEvaluatorBase<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Double, ExplorationTarget<Double>> {
 
 	/** Reference to the mapping which shall be evaluated here. */
-	protected MappingEncoding mapping;
+	protected MappingEncoding<?, IDeployableComponentAdapter<?>, Partition, ?> mapping;
 
+	/** Mapping of Partitions to physical execution units. */
 	// FIXME: HACK in order to validate the mapping of components/tasks to phys exec units if
 	// partitions are used.
-	protected MappingEncoding virtMapping;
+	protected MappingEncoding<?, Partition, ?, ?> virtMapping;
 
 	/** Empty prototype constructor. */
 	public TaskMappingEvaluator() {
@@ -67,14 +70,14 @@ public abstract class TaskMappingEvaluator
 
 		IRequestAdapter<?> requestAdp = systemModelAdapter.getDeployableComponentOf(requester);
 
-		Collection<IResourceAdapter<?>> allocResourceAdps =
-				mapping.getAllocatedResourcesFor(requestAdp);
+		Collection<Partition> allocResourceAdps =
+				mapping.getAllocatedResourcesFor((IDeployableComponentAdapter<?>)requestAdp);
 		for(IResourceAdapter<?> allocResource : allocResourceAdps) {
 			if(allocResource.getObject() == resource) {
 				return Boolean.valueOf(true);
 			} else if(allocResource instanceof Partition) {
 				// TODO: HACK, remove after transition to full table based representation.
-				IResourceAdapter<?> physResource = (IResourceAdapter<?>)virtMapping
+				IResourceAdapter<?> physResource = virtMapping
 						.getAllocatedResourcesFor((Partition)allocResource).iterator().next();
 				if(physResource.getObject() == resource) {
 					return Boolean.valueOf(true);
@@ -93,8 +96,8 @@ public abstract class TaskMappingEvaluator
 
 		IRequestAdapter<?> requestAdp = systemModelAdapter.getDeployableComponentOf(requester);
 
-		Collection<IResourceAdapter<?>> allocResourceAdps =
-				mapping.getAllocatedResourcesFor(requestAdp);
+		Collection<Partition> allocResourceAdps =
+				mapping.getAllocatedResourcesFor((IDeployableComponentAdapter<?>)requestAdp);
 		for(IResourceAdapter<?> allocResource : allocResourceAdps) {
 			if(allocResource.getObject() == resource) {
 				return Boolean.valueOf(false);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
index 643e553058782a484e67425295f82f0388f5a0aa..ca186bd241a6b98acb9ad598e7f2ae29147ad35e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
@@ -1,8 +1,8 @@
-ComponentMultiAllocationConstraintEvaluator.java 1f3c1c96391de15f5b21377f52dde183b16428cc RED
+ComponentMultiAllocationConstraintEvaluator.java dd4460755f6dc04b67032d5ce5b68d0ae7c03cfa RED
 ComponentMultiDislocationConstraintEvaluator.java e63169976a3075d5d9ac62767bf6c17bc4ddfe07 RED
 ConstraintEvaluatorBase.java f42f71e64d32201b232c24542a2c0367a6293942 RED
 DeadlineConstraintEvaluator.java a023d233a2ee768cef573a67e06ae1fe0b53ddbe RED
 IConstraintEvaluator.java bca49bbdea5e089b0d045fc356ceedcb466df55e RED
-MappingEvaluatorConstraint.java fec8cf995cbafa433235f8f6715bc5183c2f8ba3 RED
+MappingEvaluatorConstraint.java dc7f0f8492827efad3c131ef5ab6768bba2b90ee RED
 PeriodConstraintEvaluator.java 52dc75180579f154a514816223461e27cb9ca84d RED
-SafetyIntegrityLevelConstraintEvaluator.java 34018532882a83860e35aa5bb102735c5be5772b RED
+SafetyIntegrityLevelConstraintEvaluator.java a689ee98f7243165b5186ccb70b37bdff1606748 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java
index 86018dea5015731dec99a9f2b452ab17e673bb07..2b74ee445a02cc9af17ca0eea265f4311b6fc2f4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java
@@ -121,7 +121,7 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 			return false;
 		}
 
-		for(IMappingEntry entry : entries) {
+		for(IMappingEntry<?, ?> entry : entries) {
 			if(!((ComponentMultiAllocationConstraint)expTarget).getExecutionUnits()
 					.contains(entry.getTarget().getObject())) {
 				return false;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java
index 629b43d63e352c29bc7da0f3db53c75095abd9ce..8149529c16114ae746320e06fc5372f93088dc95 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java
@@ -16,11 +16,14 @@
 package org.fortiss.af3.exploration.alg.dse.evaluator.constraint;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.evaluator.TaskMappingEvaluator;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
 import org.fortiss.af3.exploration.dsl_v2.model.function.Maximize;
@@ -37,7 +40,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  */
 public class MappingEvaluatorConstraint extends TaskMappingEvaluator implements
-		IConstraintEvaluator<TaskMappingEncoding, Boolean, ExplorationConstraint<Boolean>> {
+		IConstraintEvaluator<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Boolean, ExplorationConstraint<Boolean>> {
 
 	/** Prototype constructor. */
 	public MappingEvaluatorConstraint() {
@@ -54,7 +57,8 @@ public class MappingEvaluatorConstraint extends TaskMappingEvaluator implements
 
 	/** {@inheritDoc} */
 	@Override
-	public Value<?> evaluateGoal(TaskMappingEncoding phenotype,
+	public Value<?> evaluateGoal(
+			TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> phenotype,
 			FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
 			ClassToInstanceMap<EObject> transformedModels) {
 		mapping = phenotype;
@@ -91,7 +95,7 @@ public class MappingEvaluatorConstraint extends TaskMappingEvaluator implements
 
 	/** {@inheritDoc} */
 	@Override
-	public IExplorationTargetEvaluator<TaskMappingEncoding, Double, ExplorationTarget<Double>>
+	public IExplorationTargetEvaluator<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Double, ExplorationTarget<Double>>
 			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					ExplorationTarget<Double> explorationTarget)
 					throws InstantiationException, Exception {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java
index 9f373511bbf5d8e8b9f0b6da575f51fdf2a5c037..6e39ec41520b2ae0cebfad201a092720492ba4dc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java
@@ -126,7 +126,8 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM
 
 	// TODO: Port to org.fortiss.af3.safety
 	/** Helper function for the calculation of the actual SIL of a deployed component. */
-	private SIL detectSIL(IDeployableComponentAdapter<?> deployableComponent,
+	private SIL detectSIL(
+			@SuppressWarnings("unused") IDeployableComponentAdapter<?> deployableComponent,
 			Collection<S> allEntries) {
 		// Determine the number of replications onto different execution units. This separation is
 		// yet very primitive.
@@ -139,23 +140,23 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM
 		// Determine the SIL of a "safety function", i.e. a safety-annotated component mapped onto
 		// an execution unit, according to the tables given in IEC 61508-2.
 		List<SIL> parallelSILs = new ArrayList<SIL>();
-		for(IExecutionUnitAdapter<?> ecu : hwReplica) {
-			// TODO: Update the SafetyAnalysis Evaluator with comparable SILs.
-			// double sff = ecu.getSafeFailureFraction();
-			// if(sff >= 0.0 && sff < 0.6) {
-			// parallelSILs.add(SIL.SIL0);
-			// } else if(sff < 0.9) {
-			// parallelSILs.add(SIL.SIL1);
-			// } else if(sff < 0.99) {
-			// parallelSILs.add(SIL.SIL2);
-			// } else if(sff <= 1.0) {
-			// parallelSILs.add(SIL.SIL3);
-			// } else {
-			// throw new RuntimeException(
-			// "An invalid value for the safe failure fraction has been given to the optimization.
-			// The allowed range is 0 to 1.");
-			// }
-		}
+		// for(IExecutionUnitAdapter<?> ecu : hwReplica) {
+		// TODO: Update the SafetyAnalysis Evaluator with comparable SILs.
+		// double sff = ecu.getSafeFailureFraction();
+		// if(sff >= 0.0 && sff < 0.6) {
+		// parallelSILs.add(SIL.SIL0);
+		// } else if(sff < 0.9) {
+		// parallelSILs.add(SIL.SIL1);
+		// } else if(sff < 0.99) {
+		// parallelSILs.add(SIL.SIL2);
+		// } else if(sff <= 1.0) {
+		// parallelSILs.add(SIL.SIL3);
+		// } else {
+		// throw new RuntimeException(
+		// "An invalid value for the safe failure fraction has been given to the optimization.
+		// The allowed range is 0 to 1.");
+		// }
+		// }
 
 		// Determine the overall SIL of the safety function considering the hardware replication.
 		// The upper limit is set to 4, in accordance with IEC 61508.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
index b3af968cfd7fe8bd3cb875086f8e9989e520d686..4e26c4bffa97a79f984a155b5f48782656956df0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
@@ -1,5 +1,5 @@
-EnergyObjectiveEvaluator.java 02220e3d8cee11e21c0107d27d0e559b038471f3 RED
-FailSilentReliabilityEvaluator.java 4971dc34163580168686c3db9c0216defaa19631 RED
-FaultDetectionVotingReliabilityEvaluator.java 519228a5192f9e70c088e101dd766767f10dda1f RED
-MappingEvaluatorObjective.java 9a07bad8acb0b63e9798097435bdaed7a0ddf09b RED
-ReliabilityEvaluatorBase.java baea1cb7dc9f90e4bf763ef542c182aa497d1057 RED
+EnergyObjectiveEvaluator.java 5d9f8a7b9144fd8eb3b70dc6c66b2624bf3cddb1 RED
+FailSilentReliabilityEvaluator.java 8808fe9805ec75dad6d44e97d320ececb9501742 RED
+FaultDetectionVotingReliabilityEvaluator.java 4e7edb17054a81aec398c9d95e99b0a1e8268322 RED
+MappingEvaluatorObjective.java 6258cac448f074f569bd750e54892cc2652fb613 RED
+ReliabilityEvaluatorBase.java e20aadec51a62a486a03c9e47da074613c6bea42 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java
index d554da612cb158538edfa6c3fb422611fb745695..f162a2bcd8c0eae84f1b48bbfbd5563c14acd355 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java
@@ -89,8 +89,7 @@ public class EnergyObjectiveEvaluator<S extends TaskMappingEntry<IDeployableComp
 								(IExecutionUnitAdapter<?>)deploymentTarget;
 						// TODO: Rework Schedule to avoid casting.
 						IDeployableComponentAdapter<?> deployedComponent =
-								(IDeployableComponentAdapter<?>)t.getDeployedRequester()
-										.getSource();
+								t.getDeployedRequester().getSource();
 
 						energy += deployedComponent.getEnergyConsumption(executionUnit);
 					} else if(deploymentTarget instanceof ICommunicationResourceAdapter) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java
index 0f022d9fbdc884ab29d841415d8afefd09611975..a6e25f949fdbf2c3dfd803714d4cddeb987391de 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java
@@ -47,7 +47,7 @@ public class FailSilentReliabilityEvaluator extends
 	@Override
 	protected double evaluateInternal(
 			StrictTTSchedule<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> schedule,
-			FailSilentTaskMappingEncoding itmEnc, DefaultTaskGraph taskGraph,
+			FailSilentTaskMappingEncoding itmEnc, DefaultTaskGraph<?> taskGraph,
 			FailureType failureProbabilityType) {
 
 		// for the StrictTTFaileSilence model, no sdc could occur
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java
index 6c002733e5d0cea6adba0d6b5c2cba7e2ba6316c..f0b05a668cd610a23df634fdb0c49aa5c7500ebe 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java
@@ -108,7 +108,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends
 			null;
 
 	/** Last task graph */
-	private DefaultTaskGraph lastTaskGraph = null;
+	private DefaultTaskGraph<?> lastTaskGraph = null;
 
 	/** Last analysis result */
 	private ReliabilityMeasure lastResult = null;
@@ -130,7 +130,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends
 	@Override
 	public double evaluateInternal(
 			StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> schedule,
-			FaultDetectionVotingTaskMappingEncoding itmEnc, DefaultTaskGraph taskGraph,
+			FaultDetectionVotingTaskMappingEncoding itmEnc, DefaultTaskGraph<?> taskGraph,
 			FailureType failureProbabilityType) {
 
 		// TODO: Implement this caching in a safer way, and potentially extend it to other cases.
@@ -189,7 +189,8 @@ public class FaultDetectionVotingReliabilityEvaluator extends
 
 	/** Entry point for task analysis */
 	private ReliabilityMeasure taskAnalysis(IDeployableComponentAdapter<?> deployableComponent,
-			DefaultTaskGraph taskgraph, Collection<FaultDetectionVotingTaskMappingEntry> mappings) {
+			DefaultTaskGraph<?> taskgraph,
+			Collection<FaultDetectionVotingTaskMappingEntry> mappings) {
 
 		ReliabilityMeasure rm = new ReliabilityMeasure();
 		ActorAnalysisNode start = new ActorAnalysisNode();
@@ -202,7 +203,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends
 
 	/** Analyzes the reliability of a task. */
 	private void taskAnalysis(IDeployableComponentAdapter<?> deployableComponent,
-			ActorAnalysisNode current, DefaultTaskGraph taskgraph, ReliabilityMeasure rm,
+			ActorAnalysisNode current, DefaultTaskGraph<?> taskgraph, ReliabilityMeasure rm,
 			List<FaultDetectionVotingTaskMappingEntry> mappings) {
 
 		// the start node
@@ -283,7 +284,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends
 	 *            Defines the reliability value assigned to the logical components.
 	 * @return {@link ReliabilityMeasure} for the given {@link TaskGraph}.
 	 */
-	private ReliabilityMeasure appAnalysis(DefaultTaskGraph tg,
+	private ReliabilityMeasure appAnalysis(DefaultTaskGraph<?> tg,
 			Map<IDeployableComponentAdapter<?>, ReliabilityMeasure> actorReliabilities) {
 		ReliabilityMeasure rm = new ReliabilityMeasure();
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
index a3a217f44d4e05f06069878ecd4d833a98a3af19..4ce36691ed8d57d7aba912730a42bd6a5c244cc9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
@@ -18,11 +18,14 @@ package org.fortiss.af3.exploration.alg.dse.evaluator.objective;
 import java.math.BigInteger;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.evaluator.TaskMappingEvaluator;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
 import org.fortiss.af3.exploration.dsl_v2.model.arithmetic.IArithmeticExpression;
@@ -63,7 +66,8 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator {
 
 	/** {@inheritDoc} */
 	@Override
-	public Value<?> evaluateGoal(TaskMappingEncoding phenotype,
+	public Value<?> evaluateGoal(
+			TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> phenotype,
 			FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
 			ClassToInstanceMap<EObject> transformedModels) throws Exception {
 		mapping = phenotype;
@@ -82,7 +86,8 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator {
 		assert (minMaxTerm != null);
 
 		// The minMax Term is always non-zero.
-		Number retVal = minMaxTerm.accept(this, Number.class);
+		// TODO: redefine the
+		@SuppressWarnings("null") Number retVal = minMaxTerm.accept(this, Number.class);
 
 		return retVal instanceof BigInteger ? new IntegerValue(retVal.intValue())
 				: new DoubleValue(retVal.doubleValue());
@@ -104,7 +109,7 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator {
 
 	/** {@inheritDoc} */
 	@Override
-	public IExplorationTargetEvaluator<TaskMappingEncoding, Double, ExplorationTarget<Double>>
+	public IExplorationTargetEvaluator<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Double, ExplorationTarget<Double>>
 			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					ExplorationTarget<Double> explorationTarget)
 					throws InstantiationException, Exception {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java
index e41f5cedb36eee56c472a4b114a27f031f710cfc..17ad13626b7f899866f495aaecf03ef355f6b643 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java
@@ -247,7 +247,7 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 	 * If the failure probability is 0, -100 is returned to avoid log(0).
 	 */
 	protected abstract double evaluateInternal(StrictTTSchedule<S, T> schedule, T itmEnc,
-			DefaultTaskGraph taskGraph, FailureType failureProbabilityType);
+			DefaultTaskGraph<?> taskGraph, FailureType failureProbabilityType);
 
 	/**
 	 * {@inheritDoc}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings
index 2106354e6a5edec580d21df79cd6ba52f2c4c7ef..c3c1a8a1736c1cf1db858eaeb01675ecc3106d62 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings
@@ -1,6 +1,6 @@
 ComponentArchitectureFinalizer.java ec0e29b2ed27aecccae28bab0253b8e068276a17 RED
 ComponentArchitectureInitializer.java 4b1e1f03b6205b91e6a9dae5ae5f77ad5ef9ed78 RED
 ComponentArchitectureInserter.java 9ab94811d460d06fa1ce2f72e40911beb7982e94 RED
-ComponentArchitectureInstantiator.java 9258569c6b1a43bcdde104fc133d444f6ae5d002 RED
-ComponentArchitectureReplicator.java cbf6fcc9c69b4833664fe10dc5eac0941f014870 RED
+ComponentArchitectureInstantiator.java afa254d07ee7590e5f6a0d6f289673005f872b62 RED
+ComponentArchitectureReplicator.java a3f395333815fc495c7cc306fe998092d552bdb5 RED
 ComponentArchitectureTransformer.java 9eded58c64a6077a3a5cb13cf3d7d78779b70a49 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java
index f548e095bf5e4034a9d606f59be7cf3ce872e957..ba60a39fb176f74b062b1ec8617bedeb7f001eb6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java
@@ -179,7 +179,7 @@ public class ComponentArchitectureInstantiator
 						instantiatedComponent);
 				instantiatedComponents.add(instantiatedComponent);
 			} else {
-				IMappingEntry abstrEntr = pickFirstInstanceOf(AbstractTaskMappingEntry.class,
+				IMappingEntry<?, ?> abstrEntr = pickFirstInstanceOf(AbstractTaskMappingEntry.class,
 						entry.getAssociatedElement());
 				Component genComp =
 						(Component)encEntryModelElemAssoc.get(abstrEntr, Component.class);
@@ -235,7 +235,7 @@ public class ComponentArchitectureInstantiator
 
 	/** Updates the association maps with the modifications introduced by the instantiation. */
 	// TODO: generalize this update method to also consider children.
-	private void updateAssocMaps(IMappingEntry entry, Component poolComponent,
+	private void updateAssocMaps(IMappingEntry<?, ?> entry, Component poolComponent,
 			Component origComponent, Component abstrGenComponent, Component instantiatedComponent) {
 		origToGenAssocMap.remove(origComponent, abstrGenComponent);
 		origToGenAssocMap.put(origComponent, instantiatedComponent);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java
index 2f731c353e33c96c0d62da2319febd74a9c3e316..44414a36541c474c84da9520e8aab4d5c815d1b5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java
@@ -235,7 +235,7 @@ public class ComponentArchitectureReplicator
 					e);
 		}
 
-		for(IMappingEntry entry : mapping.getMappingEntries()) {
+		for(IMappingEntry<?, ?> entry : mapping.getMappingEntries()) {
 			if(!isPartOfIsolationCommConstraint(
 					mapping.getConstraintsOf(InternalIsolatedCommunicationSet.class), entry)) {
 				continue;
@@ -244,7 +244,7 @@ public class ComponentArchitectureReplicator
 			Collection<InternalIsolatedCommunicationSet> others =
 					getOtherIsolationCommConstraints(mapping, entry);
 			for(InternalIsolatedCommunicationSet otherSet : others) {
-				for(IMappingEntry conEntry : otherSet.getIsolatedCommunicationSet()) {
+				for(IMappingEntry<?, ?> conEntry : otherSet.getIsolatedCommunicationSet()) {
 					Component otherGenComp =
 							(Component)encEntryModelElemAssoc.get(conEntry, Component.class);
 					removeAllConnectionsBetween(genComponent, otherGenComp);
@@ -275,7 +275,7 @@ public class ComponentArchitectureReplicator
 	 * include the given {@link IMappingEntry}.
 	 */
 	private static Collection<InternalIsolatedCommunicationSet> getOtherIsolationCommConstraints(
-			TaskMappingEncoding<?, ?> encoding, IMappingEntry entry) {
+			TaskMappingEncoding<?, ?> encoding, IMappingEntry<?, ?> entry) {
 		Collection<InternalIsolatedCommunicationSet> otherConstraints = new HashSet<>();
 		Collection<InternalIsolatedCommunicationSet> isoComm =
 				encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class);
@@ -293,7 +293,7 @@ public class ComponentArchitectureReplicator
 	 * {@link InternalIsolatedCommunicationSet}s.
 	 */
 	private static boolean isPartOfIsolationCommConstraint(
-			Collection<InternalIsolatedCommunicationSet> isoComm, IMappingEntry entry) {
+			Collection<InternalIsolatedCommunicationSet> isoComm, IMappingEntry<?, ?> entry) {
 		for(InternalIsolatedCommunicationSet constr : isoComm) {
 			if(constr.contains(entry)) {
 				return true;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings
index 7d01ed135cf726233d25ed3f1478d7df8ed66f9d..488e7cf243cfeb674e0824705b873a0776b9f34b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings
@@ -1,4 +1,4 @@
-DeploymentFinalizer.java 39bb5a9d1953ca96b4713fa34a72a7c3e3d54e08 RED
+DeploymentFinalizer.java 092db412513fd59d462e2a796c324281d335c2c3 RED
 DeploymentInitializer.java 9d5023ee12fc92185bb418c735f1d6c5196dcab8 RED
 DeploymentReplicator.java 7c65dd646ca37477be592bb620536f15c48fa1f8 RED
-ExplorationSolutionToDeployment.java 2013adebdac360e8113acb05e640661c484a0a8a RED
+ExplorationSolutionToDeployment.java 8a8f53838eab59d0ce3af8950e313f9969ee130c RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java
index 8202d405e0e98d2485aa8a63739073955239a27e..54c00ad2e2b7878d7dcc7974e4abd9e2a2f9106b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java
@@ -113,7 +113,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 			ExplorationEncodingMap<IExplorationEncoding> explorationEncodings,
 			SubClassToInstanceMap<N> transformedModels, EObject outputModel)
 			throws TransformationModuleException {
-		IMappingEncoding mapping = explorationEncodings.getEncoding(IMappingEncoding.class);
+		@SuppressWarnings("unchecked") IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>>> mapping =
+				explorationEncodings.getEncoding(IMappingEncoding.class);
 		if(mapping == null) {
 			throw new TransformationModuleException(this,
 					"An IMappingEncoding is required for this module to operate properly.");
@@ -166,10 +167,10 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 	 * processed in an AF3 compatible {@link Deployment}.
 	 */
 	private List<ComponentAllocation> allocateComponentsToExecutionUnits(
-			IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>>> mappingEncoding) {
+			IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, ?> mapping) {
 		List<ComponentAllocation> componentToExecutionUnitAllocations =
 				new ArrayList<ComponentAllocation>();
-		for(IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>> curEntry : mappingEncoding
+		for(IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>> curEntry : mapping
 				.getMappingEntries()) {
 			Component curComponent =
 					(Component)encEntryModelElemAssoc.get(curEntry, Component.class);
@@ -178,7 +179,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 			// replication that is performed for abstract entries while we have instantiated entries
 			// here.
 			if(curComponent == null) {
-				for(IMappingEntry assocEntry : curEntry.getAssociatedElement()) {
+				for(IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>> assocEntry : curEntry
+						.getAssociatedElement()) {
 					curComponent =
 							(Component)encEntryModelElemAssoc.get(assocEntry, Component.class);
 					if(curComponent != null) {
@@ -203,13 +205,17 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 	 */
 	// TODO: how to handle instantiated components?
 	private void createDeploymentParameterMap(ComponentArchitecture originalCA,
-			PlatformArchitecture originalPA, Deployment deployment, IMappingEncoding mapping) {
+			PlatformArchitecture originalPA, Deployment deployment,
+			IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>>> mapping) {
 		List<Deployment> allDeploymentsWithParameters =
 				getDeploymentsWithParametersOf(originalCA, originalPA);
 
 		// Get the referenced Component Pool of the original Component Architecture & the deployment
 		// specific parameters.
-		ComponentArchitecture compPool = getFirstComponentPool(mapping);
+		// Ugly casting is needed due to limitations in Java to recognize subtypes in generic
+		// handling.
+		@SuppressWarnings({"rawtypes", "unchecked"}) ComponentArchitecture compPool =
+				getFirstComponentPool((IMappingEncoding)mapping);
 		List<Deployment> poolParameterDeployments =
 				getDeploymentsWithParametersOf(compPool, originalPA);
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java
index 6ed5053b10106f33657f700839d5268e777648bb..dda88dcff473476601968f2cb9a1c0daa5dc4d5d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java
@@ -92,7 +92,8 @@ public class ExplorationSolutionToDeployment extends TransformationStrategyBase<
 			SubClassToInstanceMap<N> transformedModels, EObject outputModel)
 			throws TransformationModuleException {
 		if(state == TransformationState.INITIALIZING) {
-			IMappingEncoding mapping = explorationEncodings.getEncoding(IMappingEncoding.class);
+			@SuppressWarnings("unchecked") IMappingEncoding<IDeployableComponentAdapter<?>, ?, IMappingEntry<IDeployableComponentAdapter<?>, ?>> mapping =
+					explorationEncodings.getEncoding(IMappingEncoding.class);
 			if(mapping == null) {
 				throw new TransformationModuleException(this,
 						"An IMappingEncoding is required for this module to operate properly.");
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 4b52b55836a65abfd504612a53f41a5b25b163ad..a88db7b2c802fd70c30e9bec9c4efc7b425529ea 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 ad44b628dbebce557336757e62959c18b3a81816 RED
-FaultDetectionVotingExecModelFactory.java 93c534680243eb4d469042505f2484189cf68ffe RED
+FailSilentExecModelFactory.java ce11e05c0e28b6a097b518c8c64c7dbb69fa0cdd RED
+FaultDetectionVotingExecModelFactory.java 14645f9d06fa26cdc9e7ebc65b2e590a39969e63 RED
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 c6b7235f1eba9aea3519fc354b77e191fb303a64..757b45994da7168aadd16998b070be187311d422 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
@@ -13,6 +13,5 @@ ISafetyFunctionAdapter.java 594df1308c5ea7ab7320129ec3ba77f3f2d584e1 RED
 ISignalAdapter.java 6bc37547141af089e14b7615eb39910bf2a24c98 RED
 ITransmissionUnitAdapter.java 8965b73bfe9ef232a2a6d5427f7001761716d583 RED
 InternalComponentParameters.java 2b19f4eeddee84e4c6e558ed9a1613cba33b7665 RED
-PlatformCommunicationGraph.java 2027ae507bc0917546cf2c32098aacc1ed582472 RED
-SystemModelAdapter.java d88a9d02727ad2f92d73701da57f3b3e738d16d7 RED
+SystemModelAdapter.java 134da2696e1a36e9d7e1b042b0bab3158d05a3bf RED
 SystemParameterContainer.java eddfc430acd8661dfe8ffbf191ef71a83157eff5 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 ac3d139ebe9644d5d078985add090745bff72afd..1f33576017cbad9d4a07a00c4486f6ad8f32297b 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
@@ -312,7 +312,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 
 		// Temporary task graph: add vertices (= software components / tasks that need to be mapped
 		// to processing elements, and that potentially require data from other software components)
-		DefaultTaskGraph temporaryTaskGraph = new DefaultTaskGraph();
+		DefaultTaskGraph<?> temporaryTaskGraph = new DefaultTaskGraph<>();
 		// createTaskForrest();
 		for(IDeployableComponentAdapter<?> deployableComponent : deployableComponents) {
 			temporaryTaskGraph.addTask(deployableComponent);
@@ -368,7 +368,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 		List<Set<IDeployableComponentAdapter<?>>> connectedSets = ci.connectedSets();
 		// Reconstruct TaskGraphs from vertex sets of connected components
 		for(Set<IDeployableComponentAdapter<?>> connectedSet : connectedSets) {
-			TaskGraph taskGraph = new DefaultTaskGraph();
+			TaskGraph taskGraph = new DefaultTaskGraph<>();
 			Graphs.addAllVertices(taskGraph.getGraph(), connectedSet);
 
 			for(ISignalAdapter<?> message : messages) {
@@ -426,9 +426,10 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 				new HashMap<IDeployableComponentAdapter<C>, T>();
 
 		for(T taskGraph : graphs) {
-			for(@SuppressWarnings("rawtypes") IDeployableComponentAdapter deployableComponent : taskGraph
-					.getGraph().vertexSet()) {
-				componentToGraphMap.put(deployableComponent, taskGraph);
+			for(IDeployableComponentAdapter<?> deployableComponent : taskGraph.getGraph()
+					.vertexSet()) {
+				componentToGraphMap.put((IDeployableComponentAdapter<C>)deployableComponent,
+						taskGraph);
 			}
 		}
 
@@ -515,7 +516,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * 
 	 * @throws Exception
 	 */
-	private void addDataDependenciesToTaskGraph(DefaultTaskGraph taskGraph) throws Exception {
+	private void addDataDependenciesToTaskGraph(DefaultTaskGraph<?> taskGraph) throws Exception {
 
 		// TODO: Currently, top-level components are considered as deployable components (=tasks)
 		for(ISignalAdapter<?> channelAdapter : messages) {
@@ -818,7 +819,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * Returns the {@link DefaultTaskGraph} in which a given deployable component (=task) is
 	 * contained.
 	 */
-	public DefaultTaskGraph
+	public DefaultTaskGraph<?>
 			getAcyclicTaskGraph(IDeployableComponentAdapter<?> deployableComponent) {
 		return componentInAcyclicGraph.get(deployableComponent);
 	}
@@ -952,6 +953,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 *            Set of already traversed connectors (to avoid loops).
 	 * @param nextTargetConnector
 	 *            Current {@link IConnector} whose target {@link IConnector}s need to be searched.
+	 * @param deploymentTargets
+	 *            Set of execution units present on the target platform.
 	 * @return Collection of {@link IConnector}s that are actual target {@link IConnector}s of the
 	 *         {@code sourceConnector}.
 	 */
@@ -1006,7 +1009,6 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 							}
 						}
 					}
-
 					for(IConnection currConn : connectorTgt.getIncoming()) {
 						IConnector currTgtConnector = currConn.getSource();
 						if(currTgtConnector.getOwner().getContainer() != tgtElement) {
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 2b38cc6910abf2fe60b5f5604256592b2f4d0af5..9f8fbf3e092186ce2ba2dc524e91939af8972c16 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
@@ -1,4 +1,4 @@
-AF3DeployableComponentAdapter.java 12703eb580d9c8e09e2c4660db114f38e3b12c20 RED
+AF3DeployableComponentAdapter.java e19b08011718d3aaa1c072945f4d0c1b723add2f RED
 AF3ExecutionUnitAdapter.java 95b1d4b3e933372e5e45e41ecd4e2730f823bcc5 RED
 AF3GatewayAdapter.java f61ab5ff2fa58f561ea6720ba1add06c0d1f437e RED
 AF3LogicalArchitectureAdapter.java b129b15fefcd1864df1d2584f2ca0820ef6600c4 RED
@@ -9,5 +9,5 @@ AF3RequestAdapter.java 8b551cf83401d93705d0527184a961ea8244daa3 RED
 AF3ResourceAdapter.java f20b7da41445acadc3d3cc5b662a993ecbaed47a RED
 AF3ResourceConnectionAdapter.java b0804eb7d4a2b36065d45bfd90ad548ca7e6c0f8 RED
 AF3SignalAdapter.java 66182f23909cf222fff5524158525bf432239b35 RED
-AF3SystemModelAdapter.java 44a475a40479856fa35b147eb71bfcd3ea3f1060 RED
+AF3SystemModelAdapter.java e65fffe8d5970a65296f57434a980cd7035994fc RED
 AF3TransmissionUnitAdapter.java 9221b239d1d54cc0b2f01b3c385faa660ed1d3e0 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java
index 14cb34aa0db6985c8c82f17b8c75fda73e29e9d1..daa63fdb17aabf824a10eb5bcd4505c0b11bfe61 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java
@@ -36,6 +36,7 @@ import org.fortiss.af3.safety.model.annotation.SafetyIntegrityLevel;
 public class AF3DeployableComponentAdapter extends AF3RequestAdapter<Component>
 		implements IDeployableComponentAdapter<Component> {
 	/** Map of possible Wcets defined by the deployment target. */
+	@SuppressWarnings("unused")
 	private Map<IExecutionUnitAdapter<?>, Double> wcetMap;
 
 	/** Map of possible energy consumption defined by the deployment target. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
index 9857a36f4e3eb903e3043531ea59426a83b96ee3..269ee57a865915bb8b52c54145c41d57f9746834 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
@@ -1,5 +1,5 @@
-AcyclicTaskGraph.java 5a4c07640b15eff2da05b8054547d2ad03704ed9 RED
+AcyclicTaskGraph.java 87b725593dd67491bdc28b8f41c5cc75d19eea64 RED
 ChannelAdapterWeightedEdge.java ef160bea5d74f09617388767313657dd76283f61 RED
-DefaultTaskGraph.java 51fc0ef55ba32b59c95feb6989be1ecb32b5334e RED
-TaskGraph.java 4a22a1beb6129396b7b478624bf1df2540598504 RED
+DefaultTaskGraph.java bf03b79a978932543c71424ed1dcfb549dfbd9f8 RED
+TaskGraph.java 0e859151bb4ff33f3203e013edd08e5f3e95f439 RED
 TaskGraphInstantiator.java fe92d5016c6c5b901c20ab418566286ef58d5a9c RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java
index 3ba439ef31c4bde638fd848a29cd28c17202fa49..a682e516b159d9ec18357234332afc56ed910692 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java
@@ -32,9 +32,12 @@ import org.jgrapht.alg.interfaces.MinimumSpanningTree;
 import org.jgrapht.graph.ListenableDirectedWeightedGraph;
 
 /**
- * Creates a Directed acyclic task graph of all the {@link IDeployableComponentAdapter}s. <li>Each
- * {@link ISignalAdapter} is examined:</li> <li>If there exists no path between a target of the
- * {@link ISignalAdapter} and it source, add an edge to the {@link DefaultTaskGraph}.</li> <li>
+ * Creates a Directed acyclic task graph of all the {@link IDeployableComponentAdapter}s.
+ * <li>Each
+ * {@link ISignalAdapter} is examined:</li>
+ * <li>If there exists no path between a target of the
+ * {@link ISignalAdapter} and it source, add an edge to the {@link DefaultTaskGraph}.</li>
+ * <li>
  * Otherwise, a loop is detected. Then, the detected loop is cut either by not adding the edge (if
  * the source vertex is strongly causal) or by removing an edge between the vertices (i.e.
  * {@link IDeployableComponentAdapter}s) that are closest to the current {@link ISignalAdapter} by
@@ -45,7 +48,7 @@ import org.jgrapht.graph.ListenableDirectedWeightedGraph;
  * 
  * @author diewald
  */
-public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph {
+public class AcyclicTaskGraph extends DefaultTaskGraph<AcyclicTaskGraph> {
 
 	/** Constructor. */
 	public AcyclicTaskGraph() {
@@ -83,6 +86,8 @@ public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph {
 	}
 
 	/** {@inheritDoc} */
+	// TODO: Parameterize the task graph correctly.
+	@SuppressWarnings("unchecked")
 	@Override
 	public AcyclicTaskGraph copy() {
 		AcyclicTaskGraph clonedTaskGraph;
@@ -106,8 +111,8 @@ public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph {
 	 * Transforms all existing {@link TaskGraph}s of {@code this} {@link TaskGraphEncoding} into
 	 * {@link AcyclicTaskGraph}s.
 	 */
-	public static <T extends TaskGraph> Collection<AcyclicTaskGraph> transformToAcyclicGraphs(
-			Collection<T> cyclicTGs) {
+	public static <T extends TaskGraph> Collection<AcyclicTaskGraph>
+			transformToAcyclicGraphs(Collection<T> cyclicTGs) {
 		Collection<AcyclicTaskGraph> acyclicTGCollection = new ArrayList<>();
 		for(TaskGraph tg : cyclicTGs) {
 			AcyclicTaskGraph acycTG = new AcyclicTaskGraph(tg);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java
index df19ad2b95f6a576ef91edb409a2b060854fb3e9..b75b7d354ba365ebd5865c98839bc62352f8fde9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java
@@ -54,7 +54,7 @@ import com.google.common.collect.Multimap;
  * @author huang
  */
 
-public class DefaultTaskGraph implements TaskGraph, Cloneable {
+public class DefaultTaskGraph<T extends DefaultTaskGraph<?>> implements TaskGraph, Cloneable {
 	/** Underlying graph implementation */
 	// TODO: Add a weight w.r.t. transmission time, when deployed
 	protected ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> graph;
@@ -79,9 +79,8 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable {
 	/** Creates an empty {@link DefaultTaskGraph}. */
 	public DefaultTaskGraph() {
 
-		graph =
-				new ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>(
-						ChannelAdapterWeightedEdge.class);
+		graph = new ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>(
+				ChannelAdapterWeightedEdge.class);
 
 		taskFaultDetectorsMap =
 				new HashMap<IDeployableComponentAdapter<?>, SortedSet<FaultDetector>>();
@@ -155,8 +154,8 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable {
 			IDeployableComponentAdapter<?> destinationComponent, ISignalAdapter<?> channelAdapter) {
 		graph.addVertex(sourceComponent);
 		graph.addVertex(destinationComponent);
-		return graph.addEdge(sourceComponent, destinationComponent, new ChannelAdapterWeightedEdge(
-				channelAdapter));
+		return graph.addEdge(sourceComponent, destinationComponent,
+				new ChannelAdapterWeightedEdge(channelAdapter));
 	}
 
 	/** {@inheritDoc} */
@@ -168,8 +167,7 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable {
 	// TODO: Get rid of this method!
 	/** {@inheritDoc} */
 	@Override
-	public
-			ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>
+	public ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>
 			getGraph() {
 		return graph;
 	}
@@ -201,7 +199,8 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable {
 			// TODO: readd the period consistency check for task graphs.
 			// if(period != null && !period.equals(deployableComponentPeriod)) {
 			// throw new InvalidTimingModelException(
-			// "The periods of the task graph could not be identified. Currently, only tasks with the same period or non-periodic task graphs are allowed.");
+			// "The periods of the task graph could not be identified. Currently, only tasks with
+			// the same period or non-periodic task graphs are allowed.");
 			// }
 		}
 	}
@@ -267,10 +266,10 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable {
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
 	@Override
-	public DefaultTaskGraph copy() {
-		DefaultTaskGraph clonedTaskGraph;
+	public T copy() {
+		T clonedTaskGraph;
 		try {
-			clonedTaskGraph = (DefaultTaskGraph)super.clone();
+			clonedTaskGraph = (T)super.clone();
 		} catch(CloneNotSupportedException e) {
 			throw new AssertionError();
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java
index b780ceb0311202d194f042d30641058242ea9fd7..4fbbb98a2e274c403e854fd5c5b3df07fc68beb3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java
@@ -40,8 +40,7 @@ public interface TaskGraph {
 
 	// TODO: Get rid of this method!
 	/** Returns the underlying {@link ListenableDirectedWeightedGraph}. */
-	public
-			ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>
+	public ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>
 			getGraph();
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
index fa19520a017a5d6c105704f400ad72371f8a6c84..e1693337349e028a023007aea9ea99156d991cc7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
@@ -1,2 +1,2 @@
-Message.java 6c99d518bfc9e31bb174c299017b561ec69314aa RED
-MessageGenerator.java 4d7b8bb7d59a10129c686a344241701f9b0fd376 RED
+Message.java c76010ee09dbf91335ddbba7dd062c961c94a23b RED
+MessageGenerator.java cc0c56a394e5ccbd909d981305d52ba2021fc8fd RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java
index 7f8b1c9f0472a7b635a9bf971d47c4f56f657233..d304ff9b301daa5ff56b2d620b9ebef350ca6412 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java
@@ -173,7 +173,7 @@ public class Message implements Comparable<Message> {
 	}
 
 	/** Returns the {@link IMappingEntry} of the sender of this message. */
-	public IMappingEntry getSender() {
+	public IMappingEntry<?, ?> getSender() {
 		return sender;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java
index d8d5c45482f03ad8fd27641bb5cd95839b023463..44ec4c47a70eb8c86cf3652d6a12390d3d774b49 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java
@@ -126,6 +126,7 @@ public class MessageGenerator<S extends TaskMappingEntry<IDeployableComponentAda
 	 * {@link IMappingEntry}s if the sender and the receiver are not mapped onto the same
 	 * {@link IExecutionUnitAdapter}.
 	 */
+	@SuppressWarnings("unchecked")
 	private Message generateMessageForSenderEntry(ISignalAdapter<?> senderChannel,
 			InstantiatedTaskMappingEntry senderMappingEntry,
 			Collection<S> mappingEntriesOfSuccesors,
@@ -180,7 +181,8 @@ public class MessageGenerator<S extends TaskMappingEntry<IDeployableComponentAda
 	private Collection<InternalIsolatedCommunicationSet>
 			getOtherIsolationCommConstraints(T outGenotype, S entry) {
 		// TODO: here we use the knowledge that we have instantiated task mapping entries.
-		IMappingEntry actualEntry = entry.getAssociatedElement(AbstractTaskMappingEntry.class);
+		IMappingEntry<?, ?> actualEntry =
+				entry.getAssociatedElement(AbstractTaskMappingEntry.class);
 
 		Collection<InternalIsolatedCommunicationSet> otherConstraints = new HashSet<>();
 		Collection<InternalIsolatedCommunicationSet> isoComm =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings
index 82094e2594f7b8d73581e1e994671a05c0fe0d8a..9f82cf5a9ae7ffef61063f4017577640e18241e8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings
@@ -1,2 +1,2 @@
-IMappingEncoding.java cd427e08588b59de29490c75c8a07947a115d4d7 RED
-IMappingEntry.java eba204428624604d850b3656ff58d56fb0c69591 RED
+IMappingEncoding.java faa8d770688ae74d54318b155be59d39a3fe3cd9 RED
+IMappingEntry.java 21bbb8e403894b56a0b0b97685fa526c4ea01c25 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java
index 84560179af261a2eb3ae1c3163ba3d2367810267..02378fcb8e8982995e1fc63d6a6c420ee365ec3e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java
@@ -34,6 +34,10 @@ public interface IMappingEncoding<S extends IRequestAdapter<?>, T extends IResou
 	 */
 	public Collection<T> getAllocatedResourcesFor(S source);
 
+	/**
+	 * Returns the set of {@link IResourceAdapter}s to which {@link IRequestAdapter}s can be
+	 * allocated.
+	 */
 	public Collection<T> getResources();
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java
index a667682d10863655d6318083ce485fa2c0c64370..616cd919c2519391255f0829626833789f76193c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java
@@ -33,5 +33,8 @@ public interface IMappingEntry<S extends IRequestAdapter<?>, T extends IResource
 	/** Return target resource to which the request is mapped. */
 	T getTarget();
 
+	/**
+	 * Creates a clone/copy of the mapping entry containing the same source and target references.
+	 */
 	IMappingEntry<S, T> clone();
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
index dde6feb1a760f393f656f289d834ec65dc852474..ac2e908b501c508489411c6370142b943c34642a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
@@ -1,3 +1,3 @@
-IMessageRouter.java 614435555c3e3966179d5462220a2e008f5a5ec0 RED
-MessageRouterBase.java bf2a94c29c4df1128816ba95be1bf55e0aca920b RED
-ShortestPathRouter.java 5f5c7ec5a104015ada6d7552bacf2d4d3fe93b1e RED
+IMessageRouter.java 502b0083ba82de6a70813c4c7ca9606ebb2ba65f RED
+MessageRouter.java f3d02c7b380380b6020eb63240e8dd4537208819 RED
+ShortestPathRouter.java 757864be955c0b8fae4ce490cfc843e29ea06729 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java
index d70bea0a6e06bc4d44f1fe2e9275e4f6668f3bac..1117e989c2a92e41639f6304d5a729f1fa225305 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java
@@ -31,8 +31,12 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  */
 public interface IMessageRouter {
-
+	/**
+	 * Defines the strategy implemented by a message router. Currently, only shortest path routing
+	 * is supported.
+	 */
 	public enum RoutingStrategy {
+		/** Route messages with a minimal number of intermediate hops. */
 		SHORTEST_PATH;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java
index 9548c8bb361df0a94b7a5c386bb0d8217e020827..d1a348ad2041b1aa8c284f34fff3554bf1ae8f10 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java
@@ -38,6 +38,7 @@ public class MessageRouter implements IMessageRouter {
 	/** Representation of input system model */
 	protected SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter;
 
+	/** The actual message router that implements a routing strategy. */
 	private IMessageRouter delegate;
 
 	/** Contains the calculated routes of the generated {@link Message}s. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java
index 86878edf838e472fdfb479ff0152a058029d6a9d..7fdcdf31a5500b2d9fda7dd143c8402491618e19 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java
@@ -44,6 +44,7 @@ import org.jgrapht.graph.DirectedSubgraph;
 public class ShortestPathRouter extends MessageRouter {
 
 	/** Buffers the already calculated shortest paths for the sender {@link IResourceAdapter}. */
+	@SuppressWarnings("unused")
 	private Map<IResourceAdapter<?>, BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>> shortestPathForSender;
 
 	/** Constructs a simple shortest path router for a given exploration run */
@@ -80,12 +81,12 @@ public class ShortestPathRouter extends MessageRouter {
 		// throw e;
 		// }
 
-		if(shortestPathForCurrentMessage == null) {
-			shortestPathForCurrentMessage =
-					new BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>(
-							pcgEncoding.getActualGraph(), source);
-			// shortestPathForSender.put(source, shortestPathForCurrentMessage);
-		}
+		// if(shortestPathForCurrentMessage == null) {
+		shortestPathForCurrentMessage =
+				new BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>(
+						pcgEncoding.getActualGraph(), source);
+		// shortestPathForSender.put(source, shortestPathForCurrentMessage);
+		// }
 
 		for(IResourceAdapter<?> currentReceiver : receiverResources) {
 			List<DefaultEdge> shortestMessagePath = null;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
index 3efff2ade4bf2b5fdaa9423ef52725e80eca961b..76880c7d4fb1c0dc902694f5ac1bb248574dc785 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
@@ -1 +1 @@
-TDMABusScheduler.java f25bcd63b0a8dd2f5e72c72261246286bf48c841 RED
+TDMABusScheduler.java b637503506b0a53020d35d3d944ec5d8c8f101bf RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
index 4a6e0c7660f06a6622635db0a2a094882957aa26..0c173fae0195c1e23cb94725c5ae6647287ec759 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
@@ -1,3 +1,3 @@
 EDFSchedulerBase.java ccef414626ed16974de7a2524cf68fcef718fcb8 RED
 FailSilentEDFScheduler.java 121a3f20080cf87677e4cb6c695751ee7cf70cc9 RED
-FaultDetectionVotingEDFScheduler.java 01c337cc9870e7ccdf9adf69a61474b0e8f13196 RED
+FaultDetectionVotingEDFScheduler.java b16293a95822a802cf87ea88ecba7180913698c9 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java
index 382b708f21a8f23da602ea57ce05f18ab0055af1..ce73235a028825185cf32adaf6ef079197db332a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java
@@ -28,8 +28,8 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.ChannelAdapterWeightedEdge;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel.FaultDetector;
 import org.fortiss.af3.exploration.model.ExplorationSpecification;
 
@@ -66,7 +66,7 @@ public class FaultDetectionVotingEDFScheduler extends
 
 		Apfloat voterDelay = new Apfloat(0, DOUBLE_PRECISION);
 
-		TaskGraph taskGraph = acycItgEnc.getTaskGraphOf(receiver);
+		AcyclicTaskGraph taskGraph = acycItgEnc.getTaskGraphOf(receiver);
 		for(ChannelAdapterWeightedEdge edge : taskGraph.getGraph().incomingEdgesOf(receiver)) {
 			IDeployableComponentAdapter<?> sender = taskGraph.getGraph().getEdgeSource(edge);
 
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 4cd0265cd6a9ef27bdea68e8bdd37a3f41d27d28..54f52d20d29f95cf4ed433f0d876ac0c622bc867 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 e5cb4014cde4fcec189db78b18e374bc4ea29c32 RED
+DependencyGraph.java 3c7e6385ed928f6a0bf9d55c05a75415234bb25c 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 7c5b263a7fd3dc96443ee6d842e94f10511774c6..719571f1f2313ba9df26a2009b01e4aade4f356b 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
@@ -79,6 +79,10 @@ public abstract class DependencyGraph<V, T extends IDependencyModule<V, ? extend
 	/** Operators which implement an identity operation. */
 	private Multimap<Class<? extends V>, T> identityOperators = HashMultimap.create();
 
+	/**
+	 * Identity operators whose only purpose is to place an input encoding in the phenotype. Such a
+	 * operator does not declare any other dependencies.
+	 */
 	private Map<Class<? extends V>, T> pureIdentityOperators = new HashMap<>();
 
 	/** Constructor. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings
index cb1ffee9f7acc0cdda6f917b45a3fe9ad97ca345..4e939f8bfee780eb6ae8f4c7eb9b0cf4bc40bf79 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings
@@ -1,6 +1,6 @@
 AF3JGraphTVisualizer.java 3608982f88f8605806a93887c7637f05cfaad39f RED
 JGraphTVisualizer.java 178b8a5caeba118ce61d867a4f090bdfaaa33021 RED
 NamedAF3Vertex.java a149c2cc614086aeac840e5624af97b906802a4e RED
-NamedVertex.java e2e0efb1b9fd37926907a6e3daf1a0e486b12ce7 RED
+NamedVertex.java d7f25cd2df6da0569a4b7bcad23683a1cd9d244e RED
 ObjectJGraphTVisualizer.java 284fd7554765867b5b08701e502063c54d55ea05 RED
 ObjectVertex.java e9249d0502db6fe91b70f333c5dbe30ceadbc0e8 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings
index 7e82944391be39c0f539fb17dbeffd44c6be2e74..eb3019420c2325b694900e85a43495baf1347176 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings
@@ -1,6 +1,6 @@
-AF3Utils.java ae4bb78f77989e3a5689bfff80298c1bdeccdb3a RED
+AF3Utils.java 32a99e6c777f54f31dd81e4771daf6067be1aa7e RED
 DesignSpaceExplorationModelElementFactory.java 9dc330973f132c4b936e4dc7ee8407614faf2ff6 RED
-ExplorationAlgDebugUtils.java ff9feee46a3d00dd21d007a53f71f2de1ce10a94 RED
+ExplorationAlgDebugUtils.java 74c0f408542f3656481173ee71a14dfef0a77814 RED
 ExplorationAlgUtils.java 1deb317ed1d276e778fb64d207a1784a4919518b RED
 ExplorationEcoreUtils.java 48ed07aec3cd93e66d37abc10d50636d591f1c71 RED
 GraphUtils.java a1cec037a4d54bcf196dc5eebddc72b033993d6f RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java
index 18fff4f9cdf8e8508b060f1cd297960394673bac..35e1af1abe0566134578bf8d1ad5ca4309e6003c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java
@@ -55,6 +55,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IModelElementAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding;
@@ -604,7 +605,7 @@ public class AF3Utils {
 	 *         {@code null} if none is found.
 	 */
 	public static ComponentArchitecture getFirstComponentPool(
-			IMappingEncoding<IDeployableComponentAdapter<?>, ?, IMappingEntry<IDeployableComponentAdapter<?>, ?>> mapping) {
+			IMappingEncoding<IDeployableComponentAdapter<?>, IResourceAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IResourceAdapter<?>>> mapping) {
 		for(IDeployableComponentAdapter<?> deployableComponent : mapping.getRequesters()) {
 			if(deployableComponent.isInstantiation()) {
 				// TODO: Avoid casting: Parameterize the IModelElementAdapter to use EObject-derived
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java
index 2ce3105a7cabe1af2c8259abbe768941ef8816af..adcf5a6c2ad9b9b7938969f7c41a946e14336cc5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java
@@ -109,7 +109,7 @@ public class ExplorationAlgDebugUtils {
 				encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class);
 		// TODO: Remove the ugly casting when converting the internal constraints into "real" ones.
 		for(InternalIsolatedCommunicationSet curConstr : constrs) {
-			for(IMappingEntry entry : curConstr.getIsolatedCommunicationSet()) {
+			for(IMappingEntry<?, ?> entry : curConstr.getIsolatedCommunicationSet()) {
 				if(!encoding.containsEntry((AbstractTaskMappingEntry)entry)) {
 					return false;
 				}