diff --git a/org.fortiss.af3.exploration.alg/trunk/.classpath b/org.fortiss.af3.exploration.alg/trunk/.classpath
index 23d98c4d52e480489ab0c01c06bcee1fa44d0f45..00cba46552ec46802617357ac8cb3914d42fe7a5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/.classpath
+++ b/org.fortiss.af3.exploration.alg/trunk/.classpath
@@ -24,5 +24,7 @@
 	<classpathentry kind="lib" path="lib/guice-assistedinject-4.0.jar" sourcepath="lib/guice-assistedinject-4.0-sources.jar"/>
 	<classpathentry kind="lib" path="lib/guice-4.0.jar" sourcepath="lib/guice-4.0-sources.jar"/>
 	<classpathentry kind="lib" path="lib/guice-multibindings-4.0.jar" sourcepath="lib/guice-multibindings-4.0-sources.jar"/>
+	<classpathentry kind="lib" path="lib/jcommon-1.0.23.jar"/>
+	<classpathentry kind="lib" path="lib/jfreechart-1.0.19.jar" sourcepath="lib/jfreechart-1.0.19-src.jar"/>
 	<classpathentry kind="output" path="build"/>
 </classpath>
diff --git a/org.fortiss.af3.exploration.alg/trunk/META-INF/MANIFEST.MF b/org.fortiss.af3.exploration.alg/trunk/META-INF/MANIFEST.MF
index 62b3e6537c904623cdbe1c39e1dee026ed8a6f1c..5d6a70e66fd53ee76b318e7d14889b752704d209 100644
--- a/org.fortiss.af3.exploration.alg/trunk/META-INF/MANIFEST.MF
+++ b/org.fortiss.af3.exploration.alg/trunk/META-INF/MANIFEST.MF
@@ -16,7 +16,9 @@ Bundle-ClassPath: .,
  lib/guice-multibindings-4.0.jar,
  lib/commons-collections4-4.1.jar,
  lib/opt4j-optimizers-SNAPSHOT-20161110.jar,
- lib/guava-19.0.jar
+ lib/guava-19.0.jar,
+ lib/jfreechart-1.0.19.jar,
+ lib/jcommon-1.0.23.jar
 Bundle-Vendor: fortiss GmbH
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
@@ -33,7 +35,9 @@ Require-Bundle: org.fortiss.tooling.base.ui;visibility:=reexport,
  org.fortiss.af3.exploration;bundle-version="2.11.0";visibility:=reexport,
  org.fortiss.af3.expression;visibility:=reexport,
  org.fortiss.af3.platform;visibility:=reexport,
- org.fortiss.af3.project;visibility:=reexport
+ org.fortiss.af3.project;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.fortiss.af3.exploration.smt;bundle-version="2.11.0"
 Export-Package: com.google.common.annotations,
  com.google.common.base,
  com.google.common.base.internal,
@@ -63,29 +67,79 @@ Export-Package: com.google.common.annotations,
  org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,
  org.fortiss.af3.exploration.alg.dse.backend.opt4j.repair,
  org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,
- org.fortiss.af3.exploration.alg.dse.evaluator;uses:="org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,  org.fortiss.af3.exploration.model,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.evaluate,  org.opt4j.core",
- org.fortiss.af3.exploration.alg.dse.evaluator.constraint;uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,  org.fortiss.af3.exploration.alg.dse.modeltransformation,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,  eu.dreamsproject.ikerlan.safetystandards.SafetyCompliance,  org.fortiss.af3.exploration.model,  org.fortiss.af3.exploration.alg.dse.evaluator",
- org.fortiss.af3.exploration.alg.dse.evaluator.objective;uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,  org.apfloat,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,  org.fortiss.af3.exploration.model,  org.fortiss.af3.exploration.alg.dse.evaluator",
+ org.fortiss.af3.exploration.alg.dse.evaluator;
+  uses:="org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,
+   org.fortiss.af3.exploration.model,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.evaluate,
+   org.opt4j.core",
+ org.fortiss.af3.exploration.alg.dse.evaluator.constraint;
+  uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,
+   org.fortiss.af3.exploration.alg.dse.modeltransformation,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,
+   eu.dreamsproject.ikerlan.safetystandards.SafetyCompliance,
+   org.fortiss.af3.exploration.model,
+   org.fortiss.af3.exploration.alg.dse.evaluator",
+ org.fortiss.af3.exploration.alg.dse.evaluator.objective;
+  uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,
+   org.apfloat,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype,
+   org.fortiss.af3.exploration.model,
+   org.fortiss.af3.exploration.alg.dse.evaluator",
  org.fortiss.af3.exploration.alg.dse.modeltransformation,
  org.fortiss.af3.exploration.alg.dse.modeltransformation.base,
  org.fortiss.af3.exploration.alg.dse.modeltransformation.comparch,
  org.fortiss.af3.exploration.alg.dse.modeltransformation.deployment,
  org.fortiss.af3.exploration.alg.dse.modeltransformation.element,
  org.fortiss.af3.exploration.alg.dse.sysmodel,
- org.fortiss.af3.exploration.alg.dse.sysmodel.arch;uses:="org.eclipse.emf.ecore,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,  org.eclipse.emf.common.util,  org.jgrapht",
- org.fortiss.af3.exploration.alg.dse.sysmodel.arch.af3;uses:="org.fortiss.tooling.base.model.element,  eu.dreamsproject.application.model.annotation,  org.fortiss.af3.component.model,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,  org.eclipse.emf.common.util,  org.fortiss.af3.timing.model.annotation,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.platform.model,  eu.dreamsproject.platform.model.annotation",
+ org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
+  uses:="org.eclipse.emf.ecore,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,
+   org.eclipse.emf.common.util,
+   org.jgrapht",
+ org.fortiss.af3.exploration.alg.dse.sysmodel.arch.af3;
+  uses:="org.fortiss.tooling.base.model.element,
+   eu.dreamsproject.application.model.annotation,
+   org.fortiss.af3.component.model,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,
+   org.eclipse.emf.common.util,
+   org.fortiss.af3.timing.model.annotation,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.platform.model,
+   eu.dreamsproject.platform.model.annotation",
  org.fortiss.af3.exploration.alg.dse.sysmodel.arch.af3.helper,
  org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph,
- org.fortiss.af3.exploration.alg.dse.sysmodel.comm;uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.exploration.alg.dse.sysmodel.mapping,  org.jgrapht",
+ org.fortiss.af3.exploration.alg.dse.sysmodel.comm;
+  uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.mapping,
+   org.jgrapht",
  org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel,
  org.fortiss.af3.exploration.alg.dse.sysmodel.mapping;uses:="org.fortiss.af3.exploration.alg.dse.sysmodel.arch",
  org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm,
  org.fortiss.af3.exploration.alg.dse.sysmodel.random,
  org.fortiss.af3.exploration.alg.dse.sysmodel.sched;uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,org.fortiss.af3.exploration.alg.dse.sysmodel.arch,org.fortiss.af3.exploration.model",
- org.fortiss.af3.exploration.alg.dse.sysmodel.sched.comm;uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,  org.fortiss.af3.exploration.alg.dse.sysmodel.sched,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.exploration.model,  org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm",
- org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc;uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping,  org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping,  org.apfloat,  org.fortiss.af3.exploration.alg.dse.sysmodel.sched,  org.fortiss.af3.exploration.alg.dse.sysmodel.arch,  org.fortiss.af3.exploration.model",
+ org.fortiss.af3.exploration.alg.dse.sysmodel.sched.comm;
+  uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.sched,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.exploration.model,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm",
+ org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc;
+  uses:="org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping,
+   org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping,
+   org.apfloat,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.sched,
+   org.fortiss.af3.exploration.alg.dse.sysmodel.arch,
+   org.fortiss.af3.exploration.model",
  org.fortiss.af3.exploration.alg.exception,
  org.fortiss.af3.exploration.alg.guava,
+ org.fortiss.af3.exploration.alg.port,
  org.fortiss.af3.exploration.alg.service,
  org.fortiss.af3.exploration.alg.util,
  org.fortiss.af3.exploration.dsl.model,
@@ -126,9 +180,6 @@ Export-Package: com.google.common.annotations,
  org.fortiss.af3.exploration.moea.model.predefined,
  org.fortiss.af3.exploration.moea.model.predefined.impl,
  org.fortiss.af3.exploration.moea.model.predefined.util,
- org.fortiss.af3.exploration.moea.model.solutions,
- org.fortiss.af3.exploration.moea.model.solutions.impl,
- org.fortiss.af3.exploration.moea.model.solutions.util,
  org.fortiss.af3.exploration.moea.model.util,
  org.fortiss.af3.exploration.util,
  org.opt4j.core;uses:="com.google.inject,org.opt4j.core.problem"
diff --git a/org.fortiss.af3.exploration.alg/trunk/build.properties b/org.fortiss.af3.exploration.alg/trunk/build.properties
index 708d3a0f194fd263a26e67a7a05cf71927c03662..4d2297a928d13bec66c3dc57840409d78044eeda 100644
--- a/org.fortiss.af3.exploration.alg/trunk/build.properties
+++ b/org.fortiss.af3.exploration.alg/trunk/build.properties
@@ -22,7 +22,9 @@ bin.includes = .,\
                lib/guice-multibindings-4.0.jar,\
                lib/commons-collections4-4.1.jar,\
                lib/opt4j-optimizers-SNAPSHOT-20161110.jar,\
-               lib/guava-19.0.jar
+               lib/guava-19.0.jar,\
+               lib/jfreechart-1.0.19.jar,\
+               lib/jcommon-1.0.23.jar
 source.. = src/, \
            generated-src
 output.. = build/
diff --git a/org.fortiss.af3.exploration.alg/trunk/lib/jcommon-1.0.23.jar b/org.fortiss.af3.exploration.alg/trunk/lib/jcommon-1.0.23.jar
new file mode 100644
index 0000000000000000000000000000000000000000..4dbb094abc11c38abce13f473781c9c5db679391
Binary files /dev/null and b/org.fortiss.af3.exploration.alg/trunk/lib/jcommon-1.0.23.jar differ
diff --git a/org.fortiss.af3.exploration.alg/trunk/lib/jfreechart-1.0.19-src.jar b/org.fortiss.af3.exploration.alg/trunk/lib/jfreechart-1.0.19-src.jar
new file mode 100644
index 0000000000000000000000000000000000000000..03f85cee5e57fbd3383e00f199b2d1b6845830d7
Binary files /dev/null and b/org.fortiss.af3.exploration.alg/trunk/lib/jfreechart-1.0.19-src.jar differ
diff --git a/org.fortiss.af3.exploration.alg/trunk/lib/jfreechart-1.0.19.jar b/org.fortiss.af3.exploration.alg/trunk/lib/jfreechart-1.0.19.jar
new file mode 100644
index 0000000000000000000000000000000000000000..10f276c6fbd50cfeec4901e39dabef8a24c89ffc
Binary files /dev/null and b/org.fortiss.af3.exploration.alg/trunk/lib/jfreechart-1.0.19.jar differ
diff --git a/org.fortiss.af3.exploration.alg/trunk/model/generate-ecore.xml b/org.fortiss.af3.exploration.alg/trunk/model/generate-ecore.xml
index 743dbca62acc5eb6ba8d4de3f66333a72abdcee1..1e9e2b81402587652f409cec8546c42ece25a2de 100644
--- a/org.fortiss.af3.exploration.alg/trunk/model/generate-ecore.xml
+++ b/org.fortiss.af3.exploration.alg/trunk/model/generate-ecore.xml
@@ -2,7 +2,7 @@
 <!--  
   $Id$
   @version $Rev$
-  @ConQAT.Rating YELLOW Hash: 2E67BF6F5D8E249F2906F0D624AD0CCF
+  @ConQAT.Rating RED Hash: 331113F418B6841EE5FAB58708EE6DEB
 -->
 <project name="org.fortiss.af3.exploration" default="generate-ecore" basedir="..">
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore b/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore
index a175d328fc3ae9838393ccc8b8ed27de994bc14b..fdbf96440bdf990fbccd8a9dd00d03649e7623e4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore
+++ b/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore
@@ -371,205 +371,4 @@
       </eGenericSuperTypes>
     </eClassifiers>
   </eSubpackages>
-  <eSubpackages name="solutions" nsURI="http://www.fortiss.org/af3/exploration/moea/solutions"
-      nsPrefix="org-fortiss-af3-exploration-moea-solutions">
-    <eClassifiers xsi:type="ecore:EClass" name="ExplorationResult">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Contains the evaluation result of a single {@link ExplorationTarget}."/>
-      </eAnnotations>
-      <eTypeParameters name="T"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="result" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Contains the evaluation result of a single {@link ExplorationTarget}."/>
-        </eAnnotations>
-        <eGenericType eTypeParameter="#//solutions/ExplorationResult/T"/>
-      </eStructuralFeatures>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="ExplorationSolutionSet" eSuperTypes="platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationSolution">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Contains the set of {@link ExplorationSolution}s that are solutions to the problem defined in the {@link ExplorationSpecification}."/>
-      </eAnnotations>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="inputModelAdapter" lowerBound="1"
-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="References the corresponding input models."/>
-        </eAnnotations>
-      </eStructuralFeatures>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="targetSpecification"
-          lowerBound="1" eType="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationSpecification">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="References the {@link ExplorationSpecification} for which {@this ExplorationSolutionSet} provides solutions."/>
-        </eAnnotations>
-      </eStructuralFeatures>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="solutions" upperBound="-1"
-          eType="#//solutions/SingleExplorationSolutionMap" containment="true">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Contains the single solutions that are maps relating the {@link ExplorationTarget}s with their (evaluation) {@link ExplorationResult}s."/>
-        </eAnnotations>
-      </eStructuralFeatures>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="SingleExplorationSolutionMap">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="documentation" value="Represents a single solution as a map relating the {@link ExplorationTarget}s with their (evaluation) {@link ExplorationResult}s."/>
-      </eAnnotations>
-      <eOperations name="containsKey" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#containsKey} method."/>
-          <details key="body" value="return solutionMap.containsKey(key);"/>
-        </eAnnotations>
-        <eParameters name="key">
-          <eGenericType eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationTarget">
-            <eTypeArguments/>
-          </eGenericType>
-        </eParameters>
-      </eOperations>
-      <eOperations name="containsValue" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#containsValue} method."/>
-          <details key="body" value="return solutionMap.containsValue(value);"/>
-        </eAnnotations>
-        <eParameters name="value">
-          <eGenericType eClassifier="#//solutions/ExplorationResult">
-            <eTypeArguments/>
-          </eGenericType>
-        </eParameters>
-      </eOperations>
-      <eOperations name="get" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#get} method, except that the Types of the key ({@link ExplorationTarget}) and the returned value ({@link ExplorationValue}) will match."/>
-          <details key="body" value="return (ExplorationResult&lt;T>)solutionMap.get(key);"/>
-        </eAnnotations>
-        <eGenericType eClassifier="#//solutions/ExplorationResult">
-          <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/get/T"/>
-        </eGenericType>
-        <eTypeParameters name="T"/>
-        <eParameters name="key">
-          <eGenericType eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationTarget">
-            <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/get/T"/>
-          </eGenericType>
-        </eParameters>
-      </eOperations>
-      <eOperations name="keySet" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#keySet} method."/>
-          <details key="body" value="return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;ExplorationTarget&lt;?>>(solutionMap.keySet());"/>
-        </eAnnotations>
-        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-          <eTypeArguments eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationTarget">
-            <eTypeArguments/>
-          </eTypeArguments>
-        </eGenericType>
-      </eOperations>
-      <eOperations name="put" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#get} method, except that the Types of the key ({@link ExplorationTarget}) and the returned value ({@link ExplorationValue}) must match."/>
-          <details key="body" value="return (ExplorationResult&lt;T>)solutionMap.put(key, value);"/>
-        </eAnnotations>
-        <eGenericType eClassifier="#//solutions/ExplorationResult">
-          <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/put/T"/>
-        </eGenericType>
-        <eTypeParameters name="T"/>
-        <eParameters name="key">
-          <eGenericType eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationTarget">
-            <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/put/T"/>
-          </eGenericType>
-        </eParameters>
-        <eParameters name="value">
-          <eGenericType eClassifier="#//solutions/ExplorationResult">
-            <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/put/T"/>
-          </eGenericType>
-        </eParameters>
-      </eOperations>
-      <eOperations name="removeKey" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#removeKey} method, except that the Types of the key ({@link ExplorationTarget}) and the returned value ({@link ExplorationValue}) will match."/>
-          <details key="body" value="return (ExplorationResult&lt;T>)solutionMap.get(key);"/>
-        </eAnnotations>
-        <eGenericType eClassifier="#//solutions/ExplorationResult">
-          <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/removeKey/T"/>
-        </eGenericType>
-        <eTypeParameters name="T"/>
-        <eParameters name="key">
-          <eGenericType eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationTarget">
-            <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/removeKey/T"/>
-          </eGenericType>
-        </eParameters>
-      </eOperations>
-      <eOperations name="values" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Mirrors the standard {@link java.util.Map#values} method, except that its returned value is an {@link EList} instead of a {@link Collection} due to EMF limitations."/>
-          <details key="body" value="return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;ExplorationResult&lt;?>>(solutionMap.values());"/>
-        </eAnnotations>
-        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-          <eTypeArguments eClassifier="#//solutions/ExplorationResult">
-            <eTypeArguments/>
-          </eTypeArguments>
-        </eGenericType>
-      </eOperations>
-      <eOperations name="getSolutionModel" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Allows to retrieve an attached solution model of this representation of a single solution."/>
-          <details key="body" value="return SingleExplorationSolutionMapStaticImpl.getModel(this, modelType);"/>
-        </eAnnotations>
-        <eGenericType eTypeParameter="#//solutions/SingleExplorationSolutionMap/getSolutionModel/T"/>
-        <eTypeParameters name="T"/>
-        <eParameters name="modelType" lowerBound="1">
-          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
-            <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/getSolutionModel/T"/>
-          </eGenericType>
-        </eParameters>
-      </eOperations>
-      <eOperations name="putSolutionModel" lowerBound="1">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Allows to attach a solution model to this representation of a single solution."/>
-          <details key="body" value="SingleExplorationSolutionMapStaticImpl.putSolutionModel(this, modelType, solutionModel);"/>
-        </eAnnotations>
-        <eTypeParameters name="T"/>
-        <eParameters name="modelType" lowerBound="1">
-          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
-            <eTypeArguments eTypeParameter="#//solutions/SingleExplorationSolutionMap/putSolutionModel/T"/>
-          </eGenericType>
-        </eParameters>
-        <eParameters name="solutionModel" lowerBound="1">
-          <eGenericType eTypeParameter="#//solutions/SingleExplorationSolutionMap/putSolutionModel/T"/>
-        </eParameters>
-      </eOperations>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="solutionMap" lowerBound="1"
-          upperBound="-1" eType="#//solutions/ExplorationTargetToExplorationResultMap"
-          containment="true">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="EMF-implementation of the backend map."/>
-        </eAnnotations>
-      </eStructuralFeatures>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="solutionModelMap" lowerBound="1"
-          upperBound="-1" eType="#//solutions/EJavaClassToEJavaObjectMap" containment="true">
-        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-          <details key="documentation" value="Allows to optionally attach calculated solution models to a single solution. They are identified by their type."/>
-        </eAnnotations>
-      </eStructuralFeatures>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="ExplorationTargetToExplorationResultMap"
-        instanceClassName="java.util.Map$Entry">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="key" lowerBound="1">
-        <eGenericType eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationTarget">
-          <eTypeArguments/>
-        </eGenericType>
-      </eStructuralFeatures>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1"
-          containment="true">
-        <eGenericType eClassifier="#//solutions/ExplorationResult">
-          <eTypeArguments/>
-        </eGenericType>
-      </eStructuralFeatures>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="EJavaClassToEJavaObjectMap" instanceClassName="java.util.Map$Entry">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" lowerBound="1">
-        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaClass">
-          <eTypeArguments/>
-        </eGenericType>
-      </eStructuralFeatures>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
-          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
-    </eClassifiers>
-  </eSubpackages>
 </ecore:EPackage>
diff --git a/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel b/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel
index 1126ed1da1328dad92c44edf6aa3d9b5bb0db1f6..7b69193a4cf24b17b5e261dfb0e0dec282407217 100644
--- a/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel
+++ b/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel
@@ -117,62 +117,5 @@
         <genTypeParameters ecoreTypeParameter="moea.ecore#//predefined/SafetyComparison/T"/>
       </genClasses>
     </nestedGenPackages>
-    <nestedGenPackages prefix="Solutions" basePackage="org.fortiss.af3.exploration.moea.model"
-        disposableProviderFactory="true" ecorePackage="moea.ecore#//solutions">
-      <genClasses ecoreClass="moea.ecore#//solutions/ExplorationResult">
-        <genTypeParameters ecoreTypeParameter="moea.ecore#//solutions/ExplorationResult/T"/>
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute moea.ecore#//solutions/ExplorationResult/result"/>
-      </genClasses>
-      <genClasses ecoreClass="moea.ecore#//solutions/ExplorationSolutionSet">
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute moea.ecore#//solutions/ExplorationSolutionSet/inputModelAdapter"/>
-        <genFeatures notify="false" createChild="false" propertySortChoices="true"
-            ecoreFeature="ecore:EReference moea.ecore#//solutions/ExplorationSolutionSet/targetSpecification"/>
-        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference moea.ecore#//solutions/ExplorationSolutionSet/solutions"/>
-      </genClasses>
-      <genClasses ecoreClass="moea.ecore#//solutions/SingleExplorationSolutionMap">
-        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference moea.ecore#//solutions/SingleExplorationSolutionMap/solutionMap"/>
-        <genFeatures notify="false" createChild="false" propertySortChoices="true"
-            ecoreFeature="ecore:EReference moea.ecore#//solutions/SingleExplorationSolutionMap/solutionModelMap"/>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/containsKey">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/containsKey/key"/>
-        </genOperations>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/containsValue">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/containsValue/value"/>
-        </genOperations>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/get">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/get/key"/>
-          <genTypeParameters ecoreTypeParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/get/T"/>
-        </genOperations>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/keySet"/>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/put">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/put/key"/>
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/put/value"/>
-          <genTypeParameters ecoreTypeParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/put/T"/>
-        </genOperations>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/removeKey">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/removeKey/key"/>
-          <genTypeParameters ecoreTypeParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/removeKey/T"/>
-        </genOperations>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/values"/>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/getSolutionModel">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/getSolutionModel/modelType"/>
-          <genTypeParameters ecoreTypeParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/getSolutionModel/T"/>
-        </genOperations>
-        <genOperations ecoreOperation="moea.ecore#//solutions/SingleExplorationSolutionMap/putSolutionModel">
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/putSolutionModel/modelType"/>
-          <genParameters ecoreParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/putSolutionModel/solutionModel"/>
-          <genTypeParameters ecoreTypeParameter="moea.ecore#//solutions/SingleExplorationSolutionMap/putSolutionModel/T"/>
-        </genOperations>
-      </genClasses>
-      <genClasses ecoreClass="moea.ecore#//solutions/ExplorationTargetToExplorationResultMap">
-        <genFeatures notify="false" createChild="false" propertySortChoices="true"
-            ecoreFeature="ecore:EReference moea.ecore#//solutions/ExplorationTargetToExplorationResultMap/key"/>
-        <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference moea.ecore#//solutions/ExplorationTargetToExplorationResultMap/value"/>
-      </genClasses>
-      <genClasses ecoreClass="moea.ecore#//solutions/EJavaClassToEJavaObjectMap">
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute moea.ecore#//solutions/EJavaClassToEJavaObjectMap/key"/>
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute moea.ecore#//solutions/EJavaClassToEJavaObjectMap/value"/>
-      </genClasses>
-    </nestedGenPackages>
   </genPackages>
 </genmodel:GenModel>
diff --git a/org.fortiss.af3.exploration.alg/trunk/plugin.xml b/org.fortiss.af3.exploration.alg/trunk/plugin.xml
index e8100e50f3fc1d229b3be52ca6d98abdefb3eacf..ef036d32cef33a8c970494800fa9667412f215bd 100644
--- a/org.fortiss.af3.exploration.alg/trunk/plugin.xml
+++ b/org.fortiss.af3.exploration.alg/trunk/plugin.xml
@@ -26,6 +26,9 @@
       <annotation binding="org.fortiss.af3.exploration.alg.annotation.valueprovider.ComponentImplDiversityRefValueProvider">
          <modelElementClass modelElementClass="org.fortiss.af3.component.model.Component"/>
       </annotation>
+      <annotation binding="org.fortiss.af3.timing.annotation.valueprovider.WcetValueProvider">
+         <modelElementClass modelElementClass="org.fortiss.af3.deployment.model.DeploymentParameterValue"/>
+      </annotation>
    </extension>
    
    <extension
@@ -115,13 +118,6 @@
             genModel="model/moea.genmodel"/>
    </extension>
 
-   <extension point="org.eclipse.emf.ecore.generated_package">
-      <!-- @generated moea -->
-      <package
-            uri="http://www.fortiss.org/af3/exploration/moea/solutions"
-            class="org.fortiss.af3.exploration.moea.model.solutions.SolutionsPackage"
-            genModel="model/moea.genmodel"/>
-   </extension>
 
    <extension point="org.eclipse.emf.ecore.generated_package">
       <!-- @generated common -->
@@ -235,5 +231,23 @@
                modelElementClass="org.fortiss.af3.exploration.moea.model.predefined.EnergyMinObjective">
          </modelElementClass>
       </evaluator>
+      <evaluator
+            module="org.fortiss.af3.exploration.alg.dse.evaluator.objective.MappingEvaluatorObjective">
+         <modelElementClass
+               modelElementClass="org.fortiss.af3.exploration.model.ObjectiveExpression">
+         </modelElementClass>
+      </evaluator>
+      <evaluator
+            module="org.fortiss.af3.exploration.alg.dse.evaluator.constraint.MappingEvaluatorConstraint">
+         <modelElementClass
+               modelElementClass="org.fortiss.af3.exploration.model.ConstraintExpression">
+         </modelElementClass>
+      </evaluator>
+   </extension>
+   <extension
+         point="org.eclipse.ui.startup">
+      <startup
+            class="org.fortiss.af3.exploration.alg.ExplorationAlg">
+      </startup>
    </extension>
 </plugin>
diff --git a/org.fortiss.af3.exploration.alg/trunk/pom.xml b/org.fortiss.af3.exploration.alg/trunk/pom.xml
index f53f65df94f9a198f9e7828e0906f41749dc3cf1..5f7e30106cfd45fab4f794f8058bc7c7363d89e3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/pom.xml
+++ b/org.fortiss.af3.exploration.alg/trunk/pom.xml
@@ -2,7 +2,7 @@
 <!--  
   $Id$
   @version $Rev$
-  @ConQAT.Rating YELLOW Hash: 8E4EDB3139807C233D5B61B625C07C5C
+  @ConQAT.Rating RED Hash: B30979E9B961E43B31496F9F0B8C5D44
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlg.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlg.java
index d3daa871980de8be168e53e7072f440c44c20deb..1fdaa752ecfea1efb6f241ad59e5bcbd3ca0c087 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlg.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlg.java
@@ -20,6 +20,8 @@ package org.fortiss.af3.exploration.alg;
 import static org.fortiss.af3.exploration.alg.ExplorationAlgActivator.getDefault;
 import static org.fortiss.af3.exploration.alg.service.ExplorationService.getService;
 
+import org.eclipse.ui.IStartup;
+import org.fortiss.af3.exploration.alg.contribution.Opt4JDseBackend;
 import org.fortiss.af3.exploration.alg.service.IExplorationConstraintTransformationService;
 import org.fortiss.af3.exploration.alg.service.IExplorationEvaluatationService;
 import org.fortiss.af3.exploration.alg.service.IExplorationRepairService;
@@ -29,17 +31,31 @@ import org.fortiss.af3.exploration.alg.service.internal.ExplorationConstraintTra
 import org.fortiss.af3.exploration.alg.service.internal.ExplorationEvaluationService;
 import org.fortiss.af3.exploration.alg.service.internal.ExplorationRepairService;
 import org.fortiss.af3.exploration.alg.service.internal.ExplorationTransformationService;
+import org.fortiss.af3.exploration.backend.DseBackendHandler;
 import org.osgi.framework.BundleContext;
 
 /**
  * Centralized class that provides the startup routines of all services provided by this plugin.
  * 
+ * The order of execution is as follows:
+ * - Initialize own services.
+ * - Register with the exploration plugin. (Make the "Parent" aware of me)
+ * - Start own services.
+ * 
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C64B2989C7CEF4E07D3059DBFC4FF3D7
+ * @ConQAT.Rating RED Hash: F0CF2115E77A7263016DF63FB5469B78
  */
-public final class ExplorationAlg {
+public final class ExplorationAlg implements IStartup {
+
+	/** {@inheritDoc} */
+	@Override
+	public void earlyStartup() {
+		initialize();
+		registerBackend();
+		start();
+	}
 
 	/**
 	 * Initializes the {@link IExplorationService}s contained in this plugin (first service
@@ -68,6 +84,11 @@ public final class ExplorationAlg {
 				ExplorationTransformationService.getInstance(), null);
 	}
 
+	/** Register the DSE backend with the exploration plugin. */
+	private static void registerBackend() {
+		DseBackendHandler.getInstance().registerDseBackend(new Opt4JDseBackend());
+	}
+
 	/**
 	 * Starts the {@link IExplorationService}s contained in this plugin (second service activation
 	 * stage).
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlgActivator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlgActivator.java
index 90f0c9a28046574099f3d16f0a8e4f3bb2e7f773..a4e31e9df91371a1daa45eec4b37cb325092424d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlgActivator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/ExplorationAlgActivator.java
@@ -26,7 +26,7 @@ import org.osgi.framework.BundleContext;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 91B64626EB8689A497D50A0AB78A7581
+ * @ConQAT.Rating RED Hash: 2775799EEBECA23B88F232FF162983D8
  */
 public class ExplorationAlgActivator extends Plugin {
 	/** The plug-in ID. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/ComponentImplDiversityRefValueProvider.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/ComponentImplDiversityRefValueProvider.java
index 0847414a2c70c897ddc81fa6bc34a1b781c7316e..1280d000713231bb6275ac67d9604d02baa33ba0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/ComponentImplDiversityRefValueProvider.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/ComponentImplDiversityRefValueProvider.java
@@ -44,7 +44,7 @@ import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: FA4D4457C9F251312DCA6CA2AEF45DA0
+ * @ConQAT.Rating RED Hash: 82835CDFD50148F99673264F2C847168
  */
 public class ComponentImplDiversityRefValueProvider extends
 		EStructuralFeatureValueProviderBase<ComponentDiverseImplRef> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/contribution/Opt4JDseBackend.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/contribution/Opt4JDseBackend.java
index 178f8b49ae22d17b430980c1c488e2abc3875308..d54cd7af3f4a8bac202cb642bdea2e4c43739437 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/contribution/Opt4JDseBackend.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/contribution/Opt4JDseBackend.java
@@ -17,6 +17,12 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.contribution;
 
+import static org.fortiss.af3.exploration.alg.port.DSEPortingUtils.createSystemParameterContainer;
+import static org.fortiss.af3.exploration.alg.util.DesignSpaceExplorationModelElementFactory.createDefaultDesignSpaceExploration;
+import static org.fortiss.af3.exploration.util.DesignSpaceExplorationModelElementFactory.createExplorationSpecification;
+
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Optional;
@@ -26,19 +32,29 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.fortiss.af3.component.model.ComponentArchitecture;
 import org.fortiss.af3.exploration.alg.dse.CompositeExplorationSolution;
 import org.fortiss.af3.exploration.alg.dse.Explorer;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemParameterContainer;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.af3.AF3SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.port.plot.XYPlotter;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
-import org.fortiss.af3.exploration.extension.DseInputParametersBase;
-import org.fortiss.af3.exploration.extension.IDseBackend;
-import org.fortiss.af3.exploration.extension.IDseInputParameters;
+import org.fortiss.af3.exploration.backend.DseInputContainer;
+import org.fortiss.af3.exploration.backend.IDseBackend;
+import org.fortiss.af3.exploration.backend.IDseInputContainer;
+import org.fortiss.af3.exploration.backend.RuleSetContainer;
 import org.fortiss.af3.exploration.model.ExplorationSolution;
 import org.fortiss.af3.exploration.model.ExplorationSpecification;
 import org.fortiss.af3.exploration.model.IExplorationFeature;
+import org.fortiss.af3.exploration.model.solutions.ExplorationSolutionSet;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
-import org.fortiss.af3.exploration.moea.model.solutions.ExplorationSolutionSet;
+import org.fortiss.af3.exploration.moea.model.feature.FeatureFactory;
+import org.fortiss.af3.exploration.projectmodel.RuleSet;
 import org.fortiss.af3.platform.model.PlatformArchitecture;
+import org.fortiss.af3.task.model.TaskArchitecture;
+import org.fortiss.tooling.base.model.element.IModelElement;
+import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
+import org.fortiss.tooling.kernel.service.IPersistencyService;
+import org.jfree.ui.RefineryUtilities;
 
 /**
  * Contributor class to allow launching this DSE backend from the DSE perspective.
@@ -46,42 +62,67 @@ import org.fortiss.af3.platform.model.PlatformArchitecture;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: CBF2C6C02ED967765B27C1E6641B9892
+ * @ConQAT.Rating RED Hash: 90A978E0CA71FD190A0BFBD434583612
  */
 public class Opt4JDseBackend implements IDseBackend {
 
-	/** Holds the input parameters required for the DSE in this plugin. */
-	private Opt4JDSEInputParameters inputParameterContainer = new Opt4JDSEInputParameters();
+	/** Specifies the required input models from the DSE. */
+	private final Collection<Class<?>> requiredInputModels =
+			Arrays.asList(ComponentArchitecture.class, TaskArchitecture.class,
+					PlatformArchitecture.class, RuleSetContainer.class);
+
+	// TODO: Remove after migration to AF3 visiualization
+	/** Last {@link XYPlotter} (in order to close it before creating a new one. */
+	protected XYPlotter lastPlotter;
 
 	/** {@inheritDoc} */
 	@Override
-	public IDseInputParameters getRequiredParameterContainer() {
-		return inputParameterContainer;
+	public Collection<Class<?>> getRequiredInputSet() {
+		return requiredInputModels;
 	}
 
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
 	@Override
-	public Optional<ExplorationSolution> executeDSE(ExplorationSpecification spec,
-			Set<Class<?>> solutionTypes, IDseInputParameters inputParameters,
-			Collection<IExplorationFeature> explorationModules, IProgressMonitor monitor)
-			throws Exception {
+	public Optional<ExplorationSolution> executeDSE(RuleSetContainer expSpec,
+			Set<Class<? extends IModelElement>> solutionModels, IDseInputContainer inputContainer,
+			Collection<IExplorationFeature> explorationModules, IProgressMonitor monitor,
+			int timeoutMS) throws Exception {
 		ExplorationSolutionSet explorationSolutionSet;
 		SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter;
+		// TODO: Find a cleaner way to extract the model context.
+		ComponentArchitecture refModel = inputContainer.getInputModel(ComponentArchitecture.class);
+		ITopLevelElement context =
+				IPersistencyService.getInstance().getTopLevelElementFor(refModel);
 
-		inputParameters.validateInputParametersPresent();
-		if(!(inputParameters instanceof Opt4JDSEInputParameters)) {
-			throw new Exception("Wrong input parameter container type.");
+		ExplorationSpecification spec = createExplorationSpecification();
+		for(RuleSet ruleSet : expSpec) {
+			context.runAsNonDirtyingCommand(
+					() -> spec.getTargets().addAll(ruleSet.getExplorationTargets()));
 		}
-		Opt4JDSEInputParameters parameters = (Opt4JDSEInputParameters)inputParameters;
 
 		// Input to DSE: {@link SystemModelAdapter} and {@link DesignSpaceExploration}.
 		// SystemModelAdapter systemModelAdapter;
-		systemModelAdapter =
-				new AF3SystemModelAdapter(
-						parameters.getInputParameter(ComponentArchitecture.class),
-						parameters.getInputParameter(PlatformArchitecture.class),
-						parameters.getInputParameter(SystemParameterContainer.class));
+		ComponentArchitecture componentArchitecture =
+				inputContainer.getInputModel(ComponentArchitecture.class);
+		PlatformArchitecture platformArchitecture =
+				inputContainer.getInputModel(PlatformArchitecture.class);
+		TaskArchitecture taskArchitecture = inputContainer.getInputModel(TaskArchitecture.class);
+		SystemParameterContainer paramContainer =
+				createSystemParameterContainer(platformArchitecture, taskArchitecture, spec);
+		systemModelAdapter = new AF3SystemModelAdapter(componentArchitecture, platformArchitecture,
+				paramContainer);
+		DseSpecification dseSpec = createDefaultDesignSpaceExploration(spec, context);
+
+		// Set the requested solutions.
+		Set<Class<?>> solutionTypes = new HashSet<>();
+		solutionTypes.add(StrictTTSchedule.class);
+
+		// Features enabled by default.
+		Collection<IExplorationFeature> dseFeatures = new ArrayList<>();
+		dseFeatures.add(FeatureFactory.eINSTANCE.createTaskMapping());
+		dseFeatures.add(FeatureFactory.eINSTANCE.createTaskInstantiation());
+		dseSpec.getFeatures().addAll(dseFeatures);
 
 		try {
 			Explorer explorer = new Explorer();
@@ -94,10 +135,11 @@ public class Opt4JDseBackend implements IDseBackend {
 				solPhenotypeTypes.add((Class<? extends IExplorationEncoding>)solType);
 			}
 			CompositeExplorationSolution<?> expResult =
-					explorer.explore(parameters.getInputParameter(DseSpecification.class),
-							systemModelAdapter, solPhenotypeTypes, monitor, true);
+					explorer.explore(dseSpec, systemModelAdapter, solPhenotypeTypes, monitor, true);
 			explorationSolutionSet = expResult.convertToExplorationSolution();
 			explorationSolutionSet.setInputModelAdapter(systemModelAdapter);
+
+			explorationSolutionSet.setTargetSpecification(spec);
 		} catch(Exception ex) {
 			// TODO: readd code to present the schedule which failed... Use the LoggingService from
 			// the kernel.
@@ -114,8 +156,46 @@ public class Opt4JDseBackend implements IDseBackend {
 		return Optional.of(explorationSolutionSet);
 	}
 
+	/**
+	 * Creates and launches the Dialog that displays the results from the exploration.
+	 * Pareto-optimal points are displayed in a 2D-graph, while schedules can be inspected for
+	 * each solution.
+	 */
+	@Override
+	public void plotResult(ExplorationSolutionSet solutionSet) {
+		if(solutionSet != null) {
+			// Keep only one DSE result window
+			if(lastPlotter != null) {
+				lastPlotter.dispose();
+			}
+
+			// draw figure
+			// FIXME: Unchecked cast to ExplorationSolutionSet
+			XYPlotter plotter = new XYPlotter(solutionSet.getTargetSpecification(), solutionSet,
+					"Design Space Exploration Result (generations: " + "N/A" + ")");
+			plotter.createPlot();
+			plotter.pack();
+			RefineryUtilities.centerFrameOnScreen(plotter);
+			plotter.setVisible(true);
+
+			lastPlotter = plotter;
+		}
+	}
+
 	/** Defines the required input parameters of this DSE backend. */
-	protected class Opt4JDSEInputParameters extends DseInputParametersBase {
+	protected class Opt4JDSEInputParameters extends DseInputContainer {
 		// Parameter container wrapping a standard java map.
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String getName() {
+		return "MOEA-based Exploration";
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String toString() {
+		return getName();
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java
index fbec9069906fb165154949b2be6a6c20d89fc9ed..fd4991b7cf9cd4ac4531f7eff7db7928f676df6a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java
@@ -29,10 +29,10 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IExplorationSo
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IScheduleSolution;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
-import org.fortiss.af3.exploration.moea.model.solutions.ExplorationResult;
-import org.fortiss.af3.exploration.moea.model.solutions.ExplorationSolutionSet;
-import org.fortiss.af3.exploration.moea.model.solutions.SingleExplorationSolutionMap;
-import org.fortiss.af3.exploration.moea.model.solutions.SolutionsFactory;
+import org.fortiss.af3.exploration.model.solutions.ExplorationResult;
+import org.fortiss.af3.exploration.model.solutions.ExplorationSolutionSet;
+import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolutionMap;
+import org.fortiss.af3.exploration.model.solutions.SolutionsFactory;
 import org.opt4j.core.Value;
 
 /**
@@ -42,7 +42,7 @@ import org.opt4j.core.Value;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 2D00DB30E39656D1BF504DE4CA45CDB7
+ * @ConQAT.Rating RED Hash: A83203F078C33494DBF92AF8B8EAB15D
  */
 public class CompositeExplorationSolution<P extends Phenotype> {
 
@@ -85,10 +85,9 @@ public class CompositeExplorationSolution<P extends Phenotype> {
 	/** {@inheritDoc} */
 	@Override
 	public String toString() {
-		String rval =
-				"After " + completedIterations +
-						" completed iterations, the exploration result contains " +
-						explorationResultMap.size() + " individual(s) (= archive size).\n\n";
+		String rval = "After " + completedIterations +
+				" completed iterations, the exploration result contains " +
+				explorationResultMap.size() + " individual(s) (= archive size).\n\n";
 
 		for(IExplorationSolution<?> solution : explorationResultMap.keySet()) {
 			IScheduleSolution<?> scheduleSolution = solution.getSubSolution(StrictTTSchedule.class);
@@ -165,6 +164,7 @@ public class CompositeExplorationSolution<P extends Phenotype> {
 			}
 			expSol.getSolutions().add(expSolutionMap);
 		}
+
 		return expSol;
 	}
 }
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 07bd5b08044831d3efafbc7ff9b3bca187010cd4..122b7449cbe68530271fa666b44344028c8d5cc6 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
@@ -65,7 +65,7 @@ import org.fortiss.af3.exploration.moea.model.parameters.ExecutionModel;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 17294767F6BCCBD53BF9861D1B22A08E
+ * @ConQAT.Rating RED Hash: E9260E5D55A4A132E1FA84A8C6AB9625
  */
 public class DSEFactory {
 
@@ -95,12 +95,13 @@ public class DSEFactory {
 	 *            The design space exploration description.
 	 * @param systemModelAdapter
 	 *            The adapter to model of the system on which the dse is executed.
+	 * @param execDepGraph
+	 *            Dependency graph defining the execution order.
 	 * @throws Exception
 	 *             if (one of) the sub problem(s) cannot be registered.
 	 */
 	@SuppressWarnings("unchecked")
-	public
-			<C, S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
+	public <C, S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 			void createSubProblems(ArchitectureExplorationProblemModule archExpProblemModule,
 					DseSpecification dse, SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter,
 					DecoderDependencyGraph execDepGraph) throws Exception {
@@ -132,6 +133,8 @@ public class DSEFactory {
 	 *            problem.
 	 * @param systemModelAdapter
 	 *            The adapter to model of the system on which the dse is executed.
+	 * @param execDepGraph
+	 *            Dependency graph defining the execution order.
 	 * @throws Exception
 	 *             if (one of) the sub problem(s) cannot be registered.
 	 */
@@ -183,14 +186,16 @@ public class DSEFactory {
 	 *            The design space exploration description.
 	 * @param systemModelAdapter
 	 *            The adapter to model of the system on which the dse is executed.
+	 * @param execDepGraph
+	 *            Dependency graph defining the execution order.
 	 * @throws Exception
 	 *             if (one of) the sub problem(s) cannot be registered.
 	 */
 	@SuppressWarnings("unchecked")
 	private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 			void createAbstractTaskMappingProblem(TaskMappingFactory<S, T> tmFactory,
-					ArchitectureExplorationProblemModule archExpProblemModule,
-					DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+					ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse,
+					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DecoderDependencyGraph execDepGraph) throws Exception {
 		Class<AbstractTaskMappingEncoding> tmEnodingClass = AbstractTaskMappingEncoding.class;
 		AbstractTaskMappingCreator tmCreator =
@@ -224,14 +229,16 @@ public class DSEFactory {
 	 *            The design space exploration description.
 	 * @param systemModelAdapter
 	 *            The adapter to model of the system on which the dse is executed.
+	 * @param execDepGraph
+	 *            Dependency graph defining the execution order.
 	 * @throws Exception
 	 *             if (one of) the sub problem(s) cannot be registered.
 	 */
 	@SuppressWarnings("unchecked")
 	private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 			void createTaskMappingInstantiationProblem(TaskMappingFactory<S, T> tmFactory,
-					ArchitectureExplorationProblemModule archExpProblemModule,
-					DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+					ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse,
+					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DecoderDependencyGraph execDepGraph) throws Exception {
 		// These suppress warnings are required since type erasure in Java does not allow to pass
 		// XY<Z>.class.
@@ -260,8 +267,8 @@ public class DSEFactory {
 	 * concrete architecture exploration problem, i.e. the {@link ArchitectureExplorationCreator}
 	 * calls the creators of the genotypes composing the architecture exploration problem.
 	 */
-	public ArchitectureExplorationCreator createArchitectureExplorationCreator(
-			DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public ArchitectureExplorationCreator createArchitectureExplorationCreator(DseSpecification dse,
+			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		return new ArchitectureExplorationCreator(dse, systemModelAdapter);
 	}
 
@@ -303,8 +310,8 @@ public class DSEFactory {
 	 * It delegates the evaluation of the overall problem to sub-decoders, e.g. an evaluator of the
 	 * power consumption of a TT-schedule.
 	 */
-	public ArchitectureEvaluator createArchitectureEvaluator(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public ArchitectureEvaluator
+			createArchitectureEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		return new ArchitectureEvaluator(systemModelAdapter);
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
index 5cfc61b26c53454037de7655703977ff19d395f1..3bbc5e82b0fb3d6e46777403010b58b9a9307beb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
@@ -49,7 +49,7 @@ import org.fortiss.tooling.kernel.utils.EcoreUtils;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 2507231201B01652467116B4749B3869
+ * @ConQAT.Rating RED Hash: 0F0142E5F251CDCCDBA3E81E68B05402
  */
 public class Explorer {
 
@@ -74,7 +74,8 @@ public class Explorer {
 	public CompositeExplorationSolution<?> explore(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 			Set<Class<? extends IExplorationEncoding>> requestedSolutions,
-			IProgressMonitor progressMonitor, boolean generateImplicitConstraints) throws Exception {
+			IProgressMonitor progressMonitor, boolean generateImplicitConstraints)
+			throws Exception {
 
 		validateDesignSpaceExploration(dse);
 		validateSystemModelAdapter(systemModelAdapter);
@@ -85,9 +86,8 @@ public class Explorer {
 		DseSpecification dseSpec = copyDSESpecification(dse, targetAssocMap);
 		ExplorationSpecification expSpec = dseSpec.getTargetSpecification();
 		if(generateImplicitConstraints) {
-			expSpec.getTargets().addAll(
-					ImplicitExplorationTargetFactory.getInstance()
-							.createImplicitExplorationTargets(dseSpec, systemModelAdapter));
+			expSpec.getTargets().addAll(ImplicitExplorationTargetFactory.getInstance()
+					.createImplicitExplorationTargets(dseSpec, systemModelAdapter));
 		}
 
 		// Extract external models to add them to the available input models.
@@ -106,17 +106,15 @@ public class Explorer {
 		// Execute the Constraint Transformation.
 		IExplorationConstraintTransformationService constrService =
 				getService(IExplorationConstraintTransformationService.class);
-		Collection<GenericConstraint<?>> genConstrs =
-				filterByType(expSpec.getTargets(), new ArrayList<GenericConstraint<?>>(),
-						GenericConstraint.class);
+		Collection<GenericConstraint<?>> genConstrs = filterByType(expSpec.getTargets(),
+				new ArrayList<GenericConstraint<?>>(), GenericConstraint.class);
 		Collection<ExplorationConstraint<?>> transformedConstrs =
 				constrService.getTransformedConstraints(systemModelAdapter, genConstrs);
 		expSpec.getTargets().addAll(transformedConstrs);
 
 		// Invoke the backend in order to perform the DSE
-		IExplorerBackend<? extends IOptimizer> explorerBackend =
-				createExplorerBackend(dseSpec, expSpec, targetAssocMap, systemModelAdapter,
-						requestedSolutions, progressMonitor);
+		IExplorerBackend<? extends IOptimizer> explorerBackend = createExplorerBackend(dseSpec,
+				expSpec, targetAssocMap, systemModelAdapter, requestedSolutions, progressMonitor);
 		CompositeExplorationSolution<?> explorationResult = explorerBackend.explore();
 
 		// Print results
@@ -158,28 +156,33 @@ public class Explorer {
 	/** Validation of DSE configuration */
 	private void validateDesignSpaceExploration(DseSpecification dse) throws Exception {
 		if(dse == null) {
-			createDesignSpaceExplorationConfigurationException("No DSE configuration has been specified.");
+			createDesignSpaceExplorationConfigurationException(
+					"No DSE configuration has been specified.");
 			// Never here
 			return;
 		}
 
 		if(dse.getParameters() == null) {
-			createDesignSpaceExplorationConfigurationException("No optimizer independent parameters have been provided.");
+			createDesignSpaceExplorationConfigurationException(
+					"No optimizer independent parameters have been provided.");
 		}
 
 		if(dse.getParameters().getExecutionModel() == null) {
-			createDesignSpaceExplorationConfigurationException("No execution model has been specified.");
+			createDesignSpaceExplorationConfigurationException(
+					"No execution model has been specified.");
 		}
 
 		if(dse.getOptimizer() == null) {
-			createDesignSpaceExplorationConfigurationException("No optimizer backend has been specified.");
+			createDesignSpaceExplorationConfigurationException(
+					"No optimizer backend has been specified.");
 		}
 
 		// TODO: create a validation whether the constraints or objectives are not given
 		if(dse.getTargetSpecification() == null ||
 				dse.getTargetSpecification().getTargets() == null ||
 				dse.getTargetSpecification().getTargets().isEmpty()) {
-			createDesignSpaceExplorationConfigurationException("No Optimization goals have been provided.");
+			createDesignSpaceExplorationConfigurationException(
+					"No Optimization goals have been provided.");
 		}
 	}
 
@@ -192,36 +195,40 @@ public class Explorer {
 	// TODO: Port validation of system model to model validation framework that creates markers
 	// in the problem view
 	/** Validation of system model */
-	private void
-			validateSystemModelAdapter(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter)
-					throws Exception {
+	private void validateSystemModelAdapter(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter)
+			throws Exception {
 
 		if(systemModelAdapter == null) {
-			createSystemModelAdapterConfigurationException("No DSE configuration has been specified.");
+			createSystemModelAdapterConfigurationException(
+					"No DSE configuration has been specified.");
 			return;
 		}
 
 		if(systemModelAdapter.getDeployableComponents().isEmpty()) {
-			createSystemModelAdapterConfigurationException("Component architecture does not contain any deployable components.\n\nMake sure the \"Trigger\" annotation have been defined for all components that should be deployed.");
+			createSystemModelAdapterConfigurationException(
+					"Component architecture does not contain any deployable components.\n\nMake sure the \"Trigger\" annotation have been defined for all components that should be deployed.");
 		}
 
 		if(systemModelAdapter.getDeploymentTargets().isEmpty()) {
-			createSystemModelAdapterConfigurationException("Platform architecture does not contain any deployment targets.\n\nMake sure the \"Deployment Target\" annotation has been set for all execution units that should be deployed.\n\nMaybe you selected the wrong platform architecture?");
+			createSystemModelAdapterConfigurationException(
+					"Platform architecture does not contain any deployment targets.\n\nMake sure the \"Deployment Target\" annotation has been set for all execution units that should be deployed.\n\nMaybe you selected the wrong platform architecture?");
 		}
 
 		if(systemModelAdapter.getTaskGraphs().isEmpty()) {
-			createSystemModelAdapterConfigurationException("System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
+			createSystemModelAdapterConfigurationException(
+					"System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
 		}
 
 		if(systemModelAdapter.getAcyclicTaskGraphs().isEmpty()) {
-			createSystemModelAdapterConfigurationException("System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
+			createSystemModelAdapterConfigurationException(
+					"System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
 		}
 
 		// FIXME: readd? ==>> VL Generation.
 		// if(systemModelAdapter.getHyperPeriod() <= 0) {
-		// createSystemModelAdapterConfigurationException("System model does not have a valid hyper period.");
+		// createSystemModelAdapterConfigurationException("System model does not have a valid hyper
+		// period.");
 		// }
-
 	}
 
 	/** Explorer backend */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java
index 14798dd9ff694e6e63b898d9f54993a30813f011..dfdee6c06baece1a56420ff5a2586635e72abd15 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java
@@ -37,7 +37,7 @@ import org.fortiss.af3.exploration.util.CommonExplorationTagetModelElementFactor
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E0C6356940A38A85C285595B3B5FC5C4
+ * @ConQAT.Rating RED Hash: 956089BE9B440F6ADFCE9BA7C6437076
  */
 public class ImplicitExplorationTargetFactory {
 
@@ -69,6 +69,7 @@ public class ImplicitExplorationTargetFactory {
 	 * @param systemModelAdapter
 	 *            {@link SystemModelAdapter} from which the "implicit" {@link ExplorationTarget}s
 	 *            are deduced.
+	 * @return Collection of constraints generated from the model.
 	 * @throws Exception
 	 *             if any of the constraint generators fails.
 	 */
@@ -96,9 +97,9 @@ public class ImplicitExplorationTargetFactory {
 	 * @throws ConstraintGenerationException
 	 *             if the generation of any {@link PeriodConstraint} fails.
 	 */
-	private static Collection<ExplorationConstraint<?>> createPeriodConstraints(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter)
-			throws ConstraintGenerationException {
+	private static Collection<ExplorationConstraint<?>>
+			createPeriodConstraints(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter)
+					throws ConstraintGenerationException {
 		Collection<ExplorationConstraint<?>> constraints = new ArrayList<>();
 		for(TaskGraph tg : systemModelAdapter.getTaskGraphs()) {
 			for(IDeployableComponentAdapter<?> component : tg.getTasks()) {
@@ -108,8 +109,8 @@ public class ImplicitExplorationTargetFactory {
 									component.getObject().getClass().getSimpleName() +
 									". Expected a Component.");
 				}
-				constraints.add(createPeriodConstraint((Component)component.getObject(),
-						tg.getPeriod()));
+				constraints.add(
+						createPeriodConstraint((Component)component.getObject(), tg.getPeriod()));
 			}
 		}
 		return constraints;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/SolutionQuantification.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/SolutionQuantification.java
index 961e2779544302a9d64edcfc35dc589b083bb022..abb9db3c90b961ff00383ab90a1e28ab7563a390 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/SolutionQuantification.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/SolutionQuantification.java
@@ -32,7 +32,7 @@ import org.opt4j.core.Value;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A4B34DCC8C1B2991E41D69EA44ECBB57
+ * @ConQAT.Rating RED Hash: 8946DC6B0F62C2DD67BC1820D00BBC73
  */
 public class SolutionQuantification {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java
index 59aed6c66fc23653ef1d5f161d9b01f27c805f1e..f437fc00893208bbe7f4f572d507cc2f7303d27e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java
@@ -66,7 +66,7 @@ import com.google.inject.TypeLiteral;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E4AB56ADE344EB4FC1FAFC7C853AABAE
+ * @ConQAT.Rating RED Hash: 2D023E1211E22DFFA220D6306AC5BE67
  */
 public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> {
 
@@ -90,9 +90,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 		return instance;
 	}
 
-	/*
-	 * Construct Creators for the task mapping
-	 */
+	/* Construct Creators for the task mapping. */
 
 	/** Creates and returns a {@link TypeLiteral} of the specific encoding of the task mapping. */
 	public abstract TypeLiteral<T> createGenotypeTypeLiteral();
@@ -105,6 +103,9 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            design space exploration model defined in the GUI
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @param execDepGraph
+	 *            Dependency graph defining the execution order.
+	 * @return instance of an {@link AbstractTaskMappingCreator}.
 	 */
 	public AbstractTaskMappingCreator createAbstractTaskMappingCreator(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
@@ -120,6 +121,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
 	 * @param execDepGraph
+	 *            Dependency graph defining the execution order.
+	 * @return instance of a {@link TaskMappingCreator}.
 	 */
 	// TODO: document execDepGraph param.
 	public TaskMappingCreator<S, T> createTaskMappingCreator(DseSpecification dse,
@@ -129,13 +132,16 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	}
 
 	/**
-	 * Creates a TaskMappingCreator that matches the given execution model.
+	 * Creates a TaskMappingCreator that uses an {@link AbstractTaskMappingEncoding} to generate a
+	 * Tank Mapping that consists only of tasks instances.
 	 * 
 	 * @param dse
 	 *            design space exploration model defined in the GUI
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
 	 * @param abstractEnc
+	 *            encoding that may contain abstract task which need to be instantiated.
+	 * @return instance of a {@link TaskMappingCreator}.
 	 */
 	// TODO: update doc
 	public TaskMappingCreator<S, T> createTaskMappingCreator(DseSpecification dse,
@@ -144,18 +150,18 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
-	/*
-	 * Construct execution model specific operators
-	 */
+	/* Construct execution model specific operators. */
 
 	/**
 	 * Creates an execution model specific {@link MutateAllocation} operator.
 	 * 
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return Mutation Operator for Allocations.
 	 */
 	public MutateAllocation<? extends TaskMappingEntry, ? extends TaskMappingEncoding<?>>
-			createMutateAllocationOperator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
+			createMutateAllocationOperator(
+					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
@@ -164,6 +170,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * 
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return Mutation operator that decreases the redundant instances of tasks.
 	 */
 	public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
@@ -175,6 +182,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * 
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return Mutation operator that increases the redundant instances of tasks.
 	 */
 	public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
@@ -188,6 +196,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            The system model deduced from the logical and technical architecture.
 	 * @param rate
 	 *            The rate or probability of such that the the operator is applied.
+	 * @return Crossover operator that swaps randomly many allocations from one resource with
+	 *         another.
 	 */
 	public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
@@ -201,15 +211,14 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            The system model deduced from the logical and technical architecture.
 	 * @param rate
 	 *            The rate or probability of such that the the operator is applied.
+	 * @return Crossover operator that swaps a single allocation from one resource with another.
 	 */
 	public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) {
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
-	/*
-	 * Construct Decoders for the genotypes, aka task mappings.
-	 */
+	/* Construct Decoders for the genotypes, aka task mappings. */
 
 	// TODO: correct the type parameters --> Instantiated XY
 	/**
@@ -221,6 +230,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * @param explorationDefinition
 	 *            The model of the DSE; This information can be useful for the decoders to optimize
 	 *            the decoding strategy
+	 * @return instance of an {@link AbstractTaskMappingDecoder}.
 	 */
 	public AbstractTaskMappingDecoder<?, ?> createAbstractTaskMappingDecoder(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
@@ -264,8 +274,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            The system model deduced from the logical and technical architecture.
 	 * @return An instance of a {@link MessageDecoder}.
 	 */
-	public MessageDecoder<S, T> createMessageDecoder(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public MessageDecoder<S, T>
+			createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		throw new UnsupportedOperationException(
 				"The Decoder which generates messages from task mappings has not been defined for current Execution Model.");
 	}
@@ -275,10 +285,11 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * be defined, e.g. time triggered scheduling.
 	 * 
 	 * @param systemModelAdapter
-	 *            the system model deduced from the logical and technical architecture
+	 *            the system model deduced from the logical and technical architecture.
 	 * @param explorationDefinition
 	 *            The model of the DSE; This information can be useful for the decoders to optimize
-	 *            the decoding strategy
+	 *            the decoding strategy.
+	 * @return instance of a {@link StrictTTDecoder}
 	 */
 	public StrictTTDecoder<S, T> createStrictTTDecoder(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
@@ -291,8 +302,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 * {@link ShortestPathRouter} to find the shortest communication path between two communicating
 	 * instantiations of an {@link IDeployableComponentAdapter} for a given platform.
 	 */
-	public IMessageRouter createShortestPathRouter(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
+	public IMessageRouter
+			createShortestPathRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		return new ShortestPathRouter(systemModelAdapter);
 	}
 
@@ -304,6 +315,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            the system model deduced from the logical and technical architecture
 	 * @param expSpec
 	 *            DSE goal specification used within the exploration, useful for scheduling
+	 * @return instance of the EDF schedule decoder.
 	 */
 	public EDFSchedulerBase<?, ?> createEDFScheduler(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
@@ -311,9 +323,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 		throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG);
 	}
 
-	/*
-	 * Construct Evaluators for Optimization Goals
-	 */
+	/* Construct Evaluators for Optimization Goals. */
 
 	/**
 	 * Decides, which create method has to be called for a specific goal.
@@ -325,9 +335,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 			createEvaluatorWrapper(ExplorationTarget<?> goal, int priority,
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception {
 		ExplorationEvaluationService<?> evalService = ExplorationEvaluationService.getInstance();
-		EvaluatorWrapper<?, RT, ET> evaluatorWrapper =
-				(EvaluatorWrapper<?, RT, ET>)evalService.createEvalWrapperFor(systemModelAdapter,
-						goal);
+		EvaluatorWrapper<?, RT, ET> evaluatorWrapper = (EvaluatorWrapper<?, RT, ET>)evalService
+				.createEvalWrapperFor(systemModelAdapter, goal);
 
 		// TODO: remove the block below when all evaluators are migrated to the service interface.
 		if(evaluatorWrapper == null) {
@@ -341,12 +350,11 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 			/* Then, the constraints are handled */
 			else if(goal instanceof DeadlineConstraint) {
 				evaluatorWrapper =
-						(EvaluatorWrapper<?, RT, ET>)createDeadlineConstraintWrapper(goal,
-								priority, systemModelAdapter);
-			} else if(goal instanceof PeriodConstraint) {
-				evaluatorWrapper =
-						(EvaluatorWrapper<?, RT, ET>)createPeriodConstraintWrapper(goal, priority,
+						(EvaluatorWrapper<?, RT, ET>)createDeadlineConstraintWrapper(goal, priority,
 								systemModelAdapter);
+			} else if(goal instanceof PeriodConstraint) {
+				evaluatorWrapper = (EvaluatorWrapper<?, RT, ET>)createPeriodConstraintWrapper(goal,
+						priority, systemModelAdapter);
 			} else if(goal instanceof ComponentMultiAllocationConstraint) {
 				evaluatorWrapper =
 						(EvaluatorWrapper<?, RT, ET>)createComponentMultiAllocationConstraintWrapper(
@@ -379,12 +387,13 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            defines the order of evaluation.
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return instance of an failure minimization objective wrapper.
 	 * @throws Exception
 	 *             if the input model validation fails.
 	 */
 	protected <RT, ET extends ExplorationTarget<RT>>
-			EvaluatorWrapper<?, Double, FailureMinObjective> createFailureMinObjectiveWrapper(
-					ExplorationTarget<?> optGoal, int priority,
+			EvaluatorWrapper<?, Double, FailureMinObjective>
+			createFailureMinObjectiveWrapper(ExplorationTarget<?> optGoal, int priority,
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception {
 		throw new UnsupportedOperationException(GOAL_NOT_IMPL_MSG);
 	}
@@ -399,12 +408,12 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            defines the order of evaluation.
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return instance of a deadline evaluator wrapper.
 	 * @throws Exception
 	 *             if the input model validation fails.
 	 */
-	protected <RT, ET extends ExplorationTarget<RT>>
-			EvaluatorWrapper<?, Double, DeadlineConstraint> createDeadlineConstraintWrapper(
-					ExplorationTarget<?> optGoal, int priority,
+	protected <RT, ET extends ExplorationTarget<RT>> EvaluatorWrapper<?, Double, DeadlineConstraint>
+			createDeadlineConstraintWrapper(ExplorationTarget<?> optGoal, int priority,
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception {
 		throw new UnsupportedOperationException(GOAL_NOT_IMPL_MSG);
 	}
@@ -419,6 +428,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            defines the order of evaluation.
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return instance of a periodicity evaluator wrapper.
 	 * @throws Exception
 	 *             if the input model validation fails.
 	 */
@@ -438,6 +448,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            defines the order of evaluation.
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return instance of a allocation evaluator wrapper.
 	 * @throws Exception
 	 *             if the input model validation fails.
 	 */
@@ -459,6 +470,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            defines the order of evaluation.
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return instance of a dislocation evaluator wrapper.
 	 * @throws Exception
 	 *             if the input model validation fails.
 	 */
@@ -480,6 +492,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry,
 	 *            defines the order of evaluation.
 	 * @param systemModelAdapter
 	 *            the system model deduced from the logical and technical architecture
+	 * @return instance of a SIL evaluator wrapper.
 	 * @throws Exception
 	 *             if the input model validation fails.
 	 */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/ExplorerBackendBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/ExplorerBackendBase.java
index 674a738ccb52410742f499e83786fe527e6a2b20..5ba1a22b5121a9b1cad7a260440c09eef1bc9148 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/ExplorerBackendBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/ExplorerBackendBase.java
@@ -48,7 +48,7 @@ import org.opt4j.core.problem.Evaluator;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 03315F22DBBD0E9D68D1574A17E793AE
+ * @ConQAT.Rating RED Hash: A0241D07DF85652C519AE77915BACA05
  */
 public abstract class ExplorerBackendBase<O extends IOptimizer> implements IExplorerBackend<O> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/IExplorerBackend.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/IExplorerBackend.java
index a19dd15764a17f543478f9d5cafc546606fd1908..ca630768521cb62445e82835eb7d10744e690985 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/IExplorerBackend.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/IExplorerBackend.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.moea.model.parameters.IOptimizer;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: C8E9A58BBE654EF0ECB4D5C9A5D2C572
+ * @ConQAT.Rating RED Hash: 78EE1823181065759CFC4234315FFABC
  */
 public interface IExplorerBackend<O extends IOptimizer> {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/SolutionCandidateBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/SolutionCandidateBase.java
index e6bae178751e68f571d5a0b5eddfb5aca4ec42fc..6731dd723dec185a23a849b19e80acd6efc6c90d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/SolutionCandidateBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/SolutionCandidateBase.java
@@ -32,14 +32,16 @@ import org.fortiss.af3.exploration.model.IProblemDimension;
 import org.fortiss.tooling.kernel.utils.EcoreUtils;
 
 /**
- * Base class to track status information of "individual evolution" during opitmization.
+ * Base class to track status information of "individual evolution" during optimization.
  * 
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E1340CEA3DB229840BB6BF3E7518FA98
+ * @ConQAT.Rating RED Hash: 9B7EBC04F6D10D704837B0F60DFBBAE1
  */
 // TODO: transform this class into a status genotype the track the status information.
+// NOTE: This Class is not used at the moment. It ONLY serves as a reference for the genotype
+// implementation.
 @SuppressWarnings("javadoc")
 public class SolutionCandidateBase {
 
@@ -73,10 +75,9 @@ public class SolutionCandidateBase {
 	 * the DSE.
 	 */
 	public void addConstraints(ExplorationSpecification specification) {
-		constraints =
-				specification.getTargets().stream()
-						.filter(t -> (t instanceof ExplorationConstraint<?>))
-						.map(ExplorationConstraint.class::cast).collect(Collectors.toList());
+		constraints = specification.getTargets().stream()
+				.filter(t -> (t instanceof ExplorationConstraint<?>))
+				.map(ExplorationConstraint.class::cast).collect(Collectors.toList());
 		constraints.forEach(c -> doAddConstraint(c));
 	}
 
@@ -87,7 +88,7 @@ public class SolutionCandidateBase {
 	}
 
 	public void addConstraintVioloation(ExplorationConstraint<?> violatedConstraint,
-			double violationValue) {
+			double violationValue) throws Exception {
 
 		// The ordering in calling these functions is important as to get the reset condition for
 		// the problem dimensions correctly.
@@ -142,11 +143,16 @@ public class SolutionCandidateBase {
 	}
 
 	private void addConstraintViolationToProblemDimension(
-			ExplorationConstraint<?> violatedConstraint, double violationValue) {
+			ExplorationConstraint<?> violatedConstraint, double violationValue) throws Exception {
 		EList<EClass> constraintSuperEClasses = violatedConstraint.eClass().getESuperTypes();
 		EList<IProblemDimension> associatedProblemDimensionList =
 				EcoreUtils.pickInstanceOf(IProblemDimension.class, constraintSuperEClasses);
-
+		if(associatedProblemDimensionList.size() < 1) {
+			// TODO: This WILL fail when the problem dimensions are implmented more dynamically, but
+			// we should use the check for now.
+			throw new Exception("Each Constraint type must have an IProlemDimension");
+		}
+		// Get(0) is safe due to the above check.
 		IProblemDimension associatedProblemDimension = associatedProblemDimensionList.get(0);
 
 		int constraintViolationCount = 0;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorationSolutionSet.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorationSolutionSet.java
index 87642d06fbb591b5e5104526f6f63903ee76e4da..ec6f2acc59682d1920c3d762a5deae2505c05d8c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorationSolutionSet.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorationSolutionSet.java
@@ -36,7 +36,7 @@ import org.opt4j.core.optimizer.Archive;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 63BB357583426608969CF5DD7DF65C22
+ * @ConQAT.Rating RED Hash: EBAB34167BA939EE73D41B47018CDF62
  */
 public class Opt4JExplorationSolutionSet<P extends Phenotype> extends
 		CompositeExplorationSolution<P> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
index 81e2d15bdc38a834530688e89c2402c8a0d984ee..32fe8f1a1abfa8a4efd9bdf6929b8b3a325d1cf1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
@@ -75,7 +75,7 @@ import com.google.inject.Module;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 2DF68013FA764456520184882EA0822E
+ * @ConQAT.Rating RED Hash: 7B6DF0A80AA786D2F2A72C3FC95D721F
  */
 public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 
@@ -103,7 +103,8 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 			Set<Class<? extends IExplorationEncoding>> requestedSolutions,
 			IProgressMonitor progressMonitor) throws Exception {
 		// Optimizer independent configuration
-		super(dse, expSpec, targetAssocMap, systemModelAdapter, requestedSolutions, progressMonitor);
+		super(dse, expSpec, targetAssocMap, systemModelAdapter, requestedSolutions,
+				progressMonitor);
 
 		if(dse.getOptimizer() instanceof EAOptimizer) {
 			init((EAOptimizer)dse.getOptimizer());
@@ -157,9 +158,8 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 		// };
 		// modules.add(multiEvaluatorModule);
 
-		archExplorationProblemModule =
-				new ArchitectureExplorationProblemModule(dse, systemModelAdapter,
-						requestedSolutions);
+		archExplorationProblemModule = new ArchitectureExplorationProblemModule(dse,
+				systemModelAdapter, requestedSolutions);
 		modules.add(archExplorationProblemModule);
 
 		// Configure operators
@@ -182,18 +182,6 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 			MutateSafetyFunctionArchitectureModule sfArchModule =
 					new MutateSafetyFunctionArchitectureModule(systemModelAdapter);
 			modules.add(sfArchModule);
-
-			// FIXME: add the safety complianceSpec to the input models if needed.
-			// Also add the SafetyCompliance model to the set of input models.
-			// SafetyComplianceConstraint scConstr =
-			// (SafetyComplianceConstraint)targetAssocMap
-			// .entrySet()
-			// .stream()
-			// .filter(e -> SafetyComplianceConstraint.class.isAssignableFrom(e
-			// .getKey().getClass())).findAny().get().getValue();
-			//
-			// systemModelAdapter.putInputModel(SafetyComplianceSpecification.class,
-			// scConstr.getSafetyComplianceSpecification());
 		}
 
 		// Task instantiation
@@ -320,12 +308,10 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 				curIndividual.setObjectives(origObjectives);
 			}
 
-			rval =
-					new Opt4JExplorationSolutionSet<ArchitectureSolution>(archive, targetAssocMap,
-							archExplorationProblemModule);
+			rval = new Opt4JExplorationSolutionSet<ArchitectureSolution>(archive, targetAssocMap,
+					archExplorationProblemModule);
 
 			rval.setCompletedIterations(opt4JTask.getIteration());
-
 		} catch(Exception e) {
 			ex = e;
 		} finally {
@@ -338,5 +324,4 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 
 		return rval;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java
index e9cfe253e571818c1b95f10431f5bbf749c647d3..8900124266c08755aafe87ce21895f8e18d62e19 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java
@@ -36,7 +36,7 @@ import org.opt4j.core.Objectives;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 9D4851DEB83D62EEB2BFB3471470064E
+ * @ConQAT.Rating RED Hash: 1ABAF4492FF41A0E4355A35E524CD9FA
  */
 public class Opt4JSingleExplorationSolution extends SolutionQuantification {
 
@@ -64,6 +64,7 @@ public class Opt4JSingleExplorationSolution extends SolutionQuantification {
 					". Possible reasons are a missing deduction from the class ExplorationTarget or a missing parameter substitiution in the concrete ExplorationTarget.";
 
 			// Type check the result vs. the expected type defined by the exploration target.
+			// TODO: Possible NPE: Throw a more precise Exception, instead.
 			Object result = objectives.get(objective).getValue();
 
 			// FIXME: remove this hack: Instead, the safetycomplianceconstraint should have the
@@ -71,7 +72,7 @@ public class Opt4JSingleExplorationSolution extends SolutionQuantification {
 			// differently.
 			if(expectedResultType.equals(Boolean.class) ||
 					IModelElement.class.isAssignableFrom(expectedResultType)) {
-				result = new Boolean(objectives.get(objective).getDouble() <= 10E-9);
+				result = Boolean.valueOf(objectives.get(objective).getDouble() <= 10E-9);
 			} else if(result != null && !result.getClass().equals(expectedResultType)) {
 				// Note: if the result is null, a serious constraint violation is indicated. Its
 				// corresponding solution will be filtered out in a later stage.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java
index 583a100aab22f6d8957a970fdd802c95cdde7a63..a7751c95a41c5633b072cf197f21713844eaa1ee 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java
@@ -34,7 +34,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 72A1986A705CA4A3B5556A5529946EBF
+ * @ConQAT.Rating RED Hash: 482A5FC527AD8D2241E2E05FC383B7E7
  */
 public class ArchitectureExplorationCreator extends
 		CompositeCreatorBase<ArchitectureExplorationEncoding> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java
index e01a644e814ec95c1d5b586a8cb13970d23af5f0..87a5a6914b214421100f554e7b4f2ff1952d841b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java
@@ -34,10 +34,10 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F3DF227B23CDB81D39D60C772E7B5FEE
+ * @ConQAT.Rating RED Hash: BF0E2928922764EA1711587B4803C626
  */
-public class SafetyFunctionArchCreator<C> extends
-		ComposableCreatorBase<SafetyFunctionArchEncoding<C>> {
+public class SafetyFunctionArchCreator<C>
+		extends ComposableCreatorBase<SafetyFunctionArchEncoding<C>> {
 
 	/** Constructor. */
 	@Inject
@@ -62,5 +62,4 @@ public class SafetyFunctionArchCreator<C> extends
 	public Class<? extends IExplorationEncoding> getCreatedEncoding() {
 		return SafetyFunctionArchEncoding.class;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java
index e5923f19ccb5c1aa7de48708ab6085f7a16a8d90..5bb18edf38431bf13310c76a72ba625ec316664f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java
@@ -41,7 +41,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B5E7282821DC0BDD3F21BEEFF206CADB
+ * @ConQAT.Rating RED Hash: AC689D016362D0D011E4F0DDA015A1D9
  */
 public class AbstractTaskMappingCreator extends
 		TaskMappingCreator<AbstractTaskMappingEntry, AbstractTaskMappingEncoding> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java
index 9c292b3f742d2c60d591a23f29683d70b59612e3..0bff8345bc9adeb04f72693c865559b12b147649 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java
@@ -38,7 +38,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 63617E22A0E6104696E922C5898E6F29
+ * @ConQAT.Rating RED Hash: FBB7610F190ED58872736CFAF1638DC9
  */
 public class FailSilentTaskMappingCreator extends
 		TaskMappingCreator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java
index c510237703c164791694f47cebe8431e78ae0261..6633a32c526c7086ccfec6dffafa9bead880440c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java
@@ -38,7 +38,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 97ADDC5E50C163FECA7860D88AE719E3
+ * @ConQAT.Rating RED Hash: D1C5107ABD90E34C54B57591F32D0F6C
  */
 public class FaultDetectionVotingTaskMappingCreator
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java
index 3fac7e3ab91a8d56317e4ca5f5ac6be63bb8294d..29a85cf59b42cb6147b33d1cec0e5b2fc003cdc2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java
@@ -34,7 +34,7 @@ import com.google.inject.Inject;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B7A041BF5AF8264C4F1DD2608567E353
+ * @ConQAT.Rating RED Hash: 230B229C553CB00B8060D436C8F7E281
  */
 
 public abstract class TaskMappingCreator<S extends TaskMappingEntry, T extends TaskMappingEncoding<?>>
@@ -51,5 +51,4 @@ public abstract class TaskMappingCreator<S extends TaskMappingEntry, T extends T
 		super(systemModelAdapter, execDepGraph);
 		this.dse = dse;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/ArchitectureExplorationEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/ArchitectureExplorationEncoding.java
index e18573abfec9b67ce1384298478fd0a533987181..a3e4798a54d271e4ab2e850582bab32923050476 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/ArchitectureExplorationEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/ArchitectureExplorationEncoding.java
@@ -27,7 +27,7 @@ import org.opt4j.core.genotype.CompositeGenotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B37047008B36E977742EF5E0E10F9510
+ * @ConQAT.Rating RED Hash: D4E881E2ACB8E1514E8C63551C1A67D9
  */
 public class ArchitectureExplorationEncoding extends
 		CompositeGenotype<Class<? extends ComposableGenotype>, ComposableGenotype> {
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
new file mode 100644
index 0000000000000000000000000000000000000000..1b9c31123f1510898e77f24c1a6f5ab1219d72c8
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java
@@ -0,0 +1,35 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2017 fortiss GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding;
+import org.opt4j.core.Genotype;
+
+/**
+ * Marker interface for porting: Genotypes which allocate one request to a resource.
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 298556A355FC9E862B27E67AD8422A26
+ */
+public interface MappingEncoding<G extends Genotype>
+		extends ComposablePhenotype<G>, IMappingEncoding {
+	// Marker interface for porting.
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/MessageEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/MessageEncoding.java
index 1283eee0272d762f5d8b2bb6532753c409828235..8635017ea647c034ce90ddaabd780746e107ea10 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/MessageEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/MessageEncoding.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
-import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.SignalType;
 
 /**
  * {@link IExplorationEncoding} that defines the {@link Message}s which are transmitted on a target
@@ -35,7 +35,7 @@ import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 0220017F7AB18DAE7B0737139CCCF9CD
+ * @ConQAT.Rating RED Hash: D73F50975A4BFD2A37976B86FB3F37CE
  */
 public class MessageEncoding<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		implements IExplorationEncoding, ComposablePhenotype<T> {
@@ -55,7 +55,8 @@ public class MessageEncoding<S extends TaskMappingEntry, T extends TaskMappingEn
 
 	/** Returns all messages that are sent periodically. */
 	public Collection<Message> getPeriodicMessages() {
-		return filterSet(messages, m -> m.getSignalAdapter().getSignalType() == SignalType.PERIODIC);
+		return filterSet(messages,
+				m -> m.getSignalAdapter().getSignalType() == SignalType.PERIODIC);
 	}
 
 	/** {@inheritDoc} */
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 bddfd305d1540f498e8495a00edf9372569f8a1f..d67f594afb96a4163430d79585812fccd8e0f939 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
@@ -38,12 +38,12 @@ import org.fortiss.af3.exploration.model.ExplorationTarget;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 1DF34FD78A32C1B5C854FECB58CC392D
+ * @ConQAT.Rating RED Hash: 3FBA33610B5E09FCD89E8CAE0FADA17B
  */
 // TODO: Clarify the internal ExplorationConstraint concept to allow for a cleaner implementation.
 @SuppressWarnings("javadoc")
-public class InternalIsolatedCommunicationSet extends EObjectImpl implements
-		ExplorationConstraint<Boolean>, Cloneable {
+public class InternalIsolatedCommunicationSet extends EObjectImpl
+		implements ExplorationConstraint<Boolean>, Cloneable {
 
 	private int id = 0;
 
@@ -177,7 +177,6 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl implements
 	@Override
 	public void setExpression(IExpression value) {
 		// TODO Auto-generated method stub
-
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEncoding.java
index 7ee96cdb42ad3769e8b8483bfd6dd9f5e7d3c1d8..825e08777d13f247235841260567b0b7c3730550 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEncoding.java
@@ -43,7 +43,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 462D04A5BD9D6AC86EEE3505FA48A7A3
+ * @ConQAT.Rating RED Hash: AF50E8B9D777FA0BB274BB4E0227FFB4
  */
 public class SafetyFunctionArchEncoding<C> implements IExplorationEncoding, ComposableGenotype,
 		ComposablePhenotype<SafetyFunctionArchEncoding<C>>, Cloneable {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEntry.java
index e5d137a7c01ad1ad5c21b586808bb40b8061deda..5c392cbc11a3ddb5e8fdfb8470cf2947a050c4e4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/safetyfunctionarch/SafetyFunctionArchEntry.java
@@ -31,7 +31,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISafetyFunctionAdapter;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: AB62565599AE56C9101627078897D30D
+ * @ConQAT.Rating RED Hash: 65CE739775A71C4BD65E5BAE492C1A83
  */
 public class SafetyFunctionArchEntry<C> implements Cloneable {
 
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 8ee9cfefe77137cbe09543159f6c7ec8370cc122..8c03009873d95aa1337e4d8331b89c8ec502103a 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
@@ -30,7 +30,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A694EC071CACBCF34CB4E36AD7A9FEC1
+ * @ConQAT.Rating RED Hash: 1E871574CDBA7188AB4D369D0E7CD98A
  */
 public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C> extends
 		TaskGraphEncoding<G, C, DefaultTaskGraph> {
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 111373e2f23e732e31bad4d903454b5dc001d025..5c3735ddda19b9f38dc6c1666e96443a207398f6 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
@@ -35,7 +35,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7209F955880EFC0598528E5CCB8D2809
+ * @ConQAT.Rating RED Hash: E42FC40C8CDDF9ADDC642CA42B18F49A
  */
 public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C>
 		extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, AcyclicTaskGraph> {
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 b8f15349aa9b6f620051c2881213459f302f77c3..edfa2638e9022330db5575adf268e41873c8e93b 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
@@ -32,7 +32,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C03B8040E16131B7125651C59098DC72
+ * @ConQAT.Rating RED Hash: 8EF5A4473BDCFD72A3AED1A40E8ACBBF
  */
 public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C> extends
 		TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java
index f9f3c9703364b375b92aaec8d10ee1c4c1fcb411..8d984db264311e90aa0ce5cb088eb7a7080dfe0b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java
@@ -29,7 +29,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 044839861F95037D2DD4D480279F2C8B
+ * @ConQAT.Rating RED Hash: 62C48EEC73FEB8FB565197D21B2E4E04
  */
 public class SafeTaskGraphEncoding<C> extends
 		AbstractTaskGraphEncoding<SafetyFunctionArchEncoding<C>, C> {
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 1ea674aef5a0b01ea162534e0c66138383c95f98..08b4c22007810807c4467847e490354a9ed1e2f8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java
@@ -42,7 +42,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: D089A8D66AECE47F6E0A840767FA7891
+ * @ConQAT.Rating RED Hash: ACAC81CFC026063D5266CBF1AC4DB252
  */
 public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> implements
 		IExplorationEncoding, ComposablePhenotype<G>, Cloneable {
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 d12d1f07127fbde06344cd9c747ecf6c04388d2b..14451485a185a11aea621c32ca94e8bd6e689b5f 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
@@ -33,6 +33,7 @@ import java.util.stream.Collectors;
 
 import org.eclipse.emf.ecore.EObject;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.ArchExpSubEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.comm.constraint.InternalIsolatedCommunicationSet;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.TaskGraphEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint.InternalReplicationConstraint;
@@ -68,11 +69,11 @@ import com.google.common.collect.Multimap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: A2725E4E96BAA9D211EB0D09F59D039C
+ * @ConQAT.Rating RED Hash: 129E21888EFC52D5087485E78545F6EC
  */
-public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements IMappingEncoding,
-		ComposableGenotype, ArchExpSubEncoding, IExplorationEncoding, ConstrainedEncoding,
-		Cloneable {
+public abstract class TaskMappingEncoding<T extends TaskMappingEntry>
+		implements IMappingEncoding, ComposableGenotype, MappingEncoding, ArchExpSubEncoding,
+		IExplorationEncoding, ConstrainedEncoding, Cloneable {
 	/** Random generator */
 	private RandomExploration rand = RandomExploration.getInstance();
 
@@ -219,8 +220,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 							.map(ComponentMultiDislocationConstraint.class::cast)
 							.filter(c -> c.getComponent() == compAdp.getObject()).findAny();
 			if(constr.isPresent()) {
-				fixAllocatedComponents.add(systemModelAdapter.getDeployableComponentOf(constr.get()
-						.getComponent()));
+				fixAllocatedComponents.add(
+						systemModelAdapter.getDeployableComponentOf(constr.get().getComponent()));
 			}
 		}
 		return fixAllocatedComponents;
@@ -259,8 +260,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 							currentConstraint.getExecutionUnits();
 					for(IExecutionUnitAdapter<?> currentForbiddenTargetUnit : systemModelAdapter
 							.getDeploymentTargets()) {
-						if(forbiddenAF3TargetsOfComponent.contains(currentForbiddenTargetUnit
-								.getObject())) {
+						if(forbiddenAF3TargetsOfComponent
+								.contains(currentForbiddenTargetUnit.getObject())) {
 							rval.put(currentComponentAdapter, currentForbiddenTargetUnit);
 						}
 					}
@@ -295,8 +296,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 							currentConstraint.getExecutionUnits();
 					for(IExecutionUnitAdapter<?> currentAllowedTargetUnit : systemModelAdapter
 							.getDeploymentTargets()) {
-						if(allowedAF3TargetsOfComponent.contains(currentAllowedTargetUnit
-								.getObject())) {
+						if(allowedAF3TargetsOfComponent
+								.contains(currentAllowedTargetUnit.getObject())) {
 							rval.put(currentComponentAdapter, currentAllowedTargetUnit);
 						}
 					}
@@ -318,11 +319,10 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * Returns the collection of allowed mapping targets if a
 	 * {@link ComponentMultiAllocationConstraint} is defined, otherwise {@code null} is returned.
 	 */
-	public Collection<IExecutionUnitAdapter<?>> getAllowedAllocations(
-			IDeployableComponentAdapter<?> deployableComponent) {
-		IDeployableComponentAdapter<?> origComponent =
-				systemModelAdapter.getDeployableComponentOf((EObject)deployableComponent
-						.getObject());
+	public Collection<IExecutionUnitAdapter<?>>
+			getAllowedAllocations(IDeployableComponentAdapter<?> deployableComponent) {
+		IDeployableComponentAdapter<?> origComponent = systemModelAdapter
+				.getDeployableComponentOf((EObject)deployableComponent.getObject());
 		return allowedAllocations.get(origComponent);
 	}
 
@@ -330,11 +330,10 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * Returns the collection of disallowed mapping targets if a
 	 * {@link ComponentMultiDislocationConstraint} is defined, otherwise null is returned.
 	 */
-	public Collection<IExecutionUnitAdapter<?>> getDisAllowedAllocations(
-			IDeployableComponentAdapter<?> deployableComponent) {
-		IDeployableComponentAdapter<?> origComponent =
-				systemModelAdapter.getDeployableComponentOf((EObject)deployableComponent
-						.getObject());
+	public Collection<IExecutionUnitAdapter<?>>
+			getDisAllowedAllocations(IDeployableComponentAdapter<?> deployableComponent) {
+		IDeployableComponentAdapter<?> origComponent = systemModelAdapter
+				.getDeployableComponentOf((EObject)deployableComponent.getObject());
 		return disallowedAllocations.get(origComponent);
 	}
 
@@ -354,8 +353,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 
 	/** {@inheritDoc} */
 	@Override
-	public <U extends ExplorationConstraint<?>> void replaceConstraints(
-			Multimap<Class<? extends U>, U> constraintMap) {
+	public <U extends ExplorationConstraint<?>> void
+			replaceConstraints(Multimap<Class<? extends U>, U> constraintMap) {
 		constraintMap.keySet().forEach(c -> this.constraintMap.removeAll(c));
 		this.constraintMap.putAll(constraintMap);
 	}
@@ -440,9 +439,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 		for(IDeployableComponentAdapter<?> deployableComponent : compColl) {
 			List<IExecutionUnitAdapter<?>> validExecTargets = execTargets;
 			if(allowedAllocations.containsKey(deployableComponent)) {
-				validExecTargets =
-						allowedAllocations.get(deployableComponent).stream()
-								.collect(Collectors.toList());
+				validExecTargets = allowedAllocations.get(deployableComponent).stream()
+						.collect(Collectors.toList());
 			}
 
 			if(selRandOrFixedInit < fixToRandomRatio) {
@@ -450,8 +448,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 			} else {
 				for(int repl = 0; repl < deployableComponent.getMaxReplication(); repl++) {
 					int calcTargetIdx = roundRobinAllocIdx % validExecTargets.size();
-					addAllocation(createEntry(deployableComponent,
-							validExecTargets.get(calcTargetIdx)));
+					addAllocation(
+							createEntry(deployableComponent, validExecTargets.get(calcTargetIdx)));
 					roundRobinAllocIdx++;
 					if(roundRobinAllocIdx == execTargets.size()) {
 						roundRobinAllocIdx = 0;
@@ -495,11 +493,9 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * @param allocEntry
 	 *            {@link TaskMappingEntry} from which the returned {@link TaskMappingEntry} is
 	 *            derived.
+	 * @return The created {@link TaskMappingEntry}.
 	 */
-	protected <S extends TaskMappingEntry> T createEntry(S allocEntry) {
-		throw new UnsupportedOperationException(
-				"Creating a TaskMappingEntry based on the given TaskMappingEntry is not supported/implemented.");
-	}
+	protected abstract <S extends TaskMappingEntry> T createEntry(S allocEntry);
 
 	/**
 	 * Constructs a random {@TaskMappingEntry} for the given deployable
@@ -534,8 +530,7 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 		if(target == null) {
 			throw new ExplorationException(
 					"Could not create an allocation entry for the Component " +
-							deployableComponent.getName() +
-							". Typical reasons include:\n" +
+							deployableComponent.getName() + ". Typical reasons include:\n" +
 							"1. An over-constrained ExplorationSpecification such that there " +
 							"exist no valid allocation targets." +
 							"2. Desired but non-selected deployment targets in the annoation view " +
@@ -623,20 +618,18 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 *            Deployable component for which fixed deployment is to be generated for
 	 */
 	public void generateFixedDeployment(IDeployableComponentAdapter<?> deployableComponent) {
-		Collection<ComponentMultiAllocationConstraint> constraints =
-				dse.getTargetSpecification().getTargets().stream()
-						.filter(t -> (t instanceof ComponentMultiAllocationConstraint))
-						.map(ComponentMultiAllocationConstraint.class::cast)
-						.collect(Collectors.toList());
+		Collection<ComponentMultiAllocationConstraint> constraints = dse.getTargetSpecification()
+				.getTargets().stream()
+				.filter(t -> (t instanceof ComponentMultiAllocationConstraint))
+				.map(ComponentMultiAllocationConstraint.class::cast).collect(Collectors.toList());
 		for(ComponentMultiAllocationConstraint cons : constraints) {
 			if(cons.getComponent() == deployableComponent.getObject()) {
 				removeTask(deployableComponent);
 				List<IExecutionUnitAdapter<?>> execList =
 						new ArrayList<>(systemModelAdapter.getDeploymentTargets());
-				execList =
-						execList.stream()
-								.filter(e -> cons.getExecutionUnits().contains(e.getObject()))
-								.collect(Collectors.toList());
+				execList = execList.stream()
+						.filter(e -> cons.getExecutionUnits().contains(e.getObject()))
+						.collect(Collectors.toList());
 				int allocIdx = 0;
 				for(int i = 0; i < deployableComponent.getMaxReplication(); i++) {
 					allocIdx = rand.nextInt(execList.size());
@@ -673,19 +666,16 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * Determines the list of deployment target to which a given deployable component may not be
 	 * deployed. These restrictions are derived from {@link InternalSeparationConstraint}s and
 	 * {@link ComponentMultiDislocationConstraint}s.
-	 * 
-	 * @param deployableComponent
 	 */
-	private Collection<IExecutionUnitAdapter<?>> getExcludedDeploymentTargets(
-			IDeployableComponentAdapter<?> deployableComponent) {
+	private Collection<IExecutionUnitAdapter<?>>
+			getExcludedDeploymentTargets(IDeployableComponentAdapter<?> deployableComponent) {
 		Collection<IExecutionUnitAdapter<?>> rval = getDisAllowedAllocations(deployableComponent);
 
 		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();
 
 		if(relevantSepConstraint.isPresent()) {
 			// TODO: consider the separation level in the selection of forbidden deployment targets.
@@ -708,8 +698,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
 	@Override
-	public Collection<IMappingEntry> getIMappingEntriesOf(
-			IDeployableComponentAdapter<?> deployableComponent) {
+	public Collection<IMappingEntry>
+			getIMappingEntriesOf(IDeployableComponentAdapter<?> deployableComponent) {
 		return (Collection<IMappingEntry>)allocationMap.get(deployableComponent);
 	}
 
@@ -736,7 +726,7 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * 
 	 * @returns {@code null} if no entry in the allocation table is found.
 	 */
-	public Collection<T> getMappingEntriesOf(IDeployableComponentAdapter<?> deployableComponent) {
+	public List<T> getMappingEntriesOf(IDeployableComponentAdapter<?> deployableComponent) {
 		return allocationMap.get(deployableComponent);
 	}
 
@@ -744,8 +734,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * Returns the collection of {@link IExecutionUnitAdapter}s onto which the given
 	 * {@link IDeployableComponentAdapter} is allocated to.
 	 */
-	public Collection<IExecutionUnitAdapter<?>> getMappingTargetsOf(
-			IDeployableComponentAdapter<?> deployableComponent) {
+	public Collection<IExecutionUnitAdapter<?>>
+			getMappingTargetsOf(IDeployableComponentAdapter<?> deployableComponent) {
 		Collection<IExecutionUnitAdapter<?>> executionTargets =
 				new HashSet<IExecutionUnitAdapter<?>>();
 		for(IMappingEntry currentEntry : getMappingEntriesOf(deployableComponent)) {
@@ -760,8 +750,8 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 	 * IDeployableComponentAdapter)}
 	 */
 	@Override
-	public synchronized Collection<IResourceAdapter<?>> getAllocatedResourcesFor(
-			IRequestAdapter<?> deployableComponent) {
+	public synchronized Collection<IResourceAdapter<?>>
+			getAllocatedResourcesFor(IRequestAdapter<?> deployableComponent) {
 		if(!(deployableComponent instanceof IDeployableComponentAdapter<?>)) {
 			return null;
 		}
@@ -782,7 +772,9 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 		deploymentTargets.forEach(e -> addAllocation(e));
 	}
 
-	/** Creates a copy of the internal allocation map of {@code this} {@link TaskMappingEncoding}. */
+	/**
+	 * Creates a copy of the internal allocation map of {@code this} {@link TaskMappingEncoding}.
+	 */
 	public ListMultimap<IDeployableComponentAdapter<?>, T>
 			copyAllocationMap(Map<T, T> copyAssocMap) {
 		ListMultimap<IDeployableComponentAdapter<?>, T> copiedMap = ArrayListMultimap.create();
@@ -794,7 +786,9 @@ public abstract class TaskMappingEncoding<T extends TaskMappingEntry> implements
 		return copiedMap;
 	}
 
-	/** Creates a copy of the internal constraint map of {@code this} {@link TaskMappingEncoding}. */
+	/**
+	 * Creates a copy of the internal constraint map of {@code this} {@link TaskMappingEncoding}.
+	 */
 	public Multimap<Class<? extends ExplorationConstraint<?>>, ExplorationConstraint<?>>
 			copyConstraintMap(Map<T, T> copyAssocMap) {
 		Multimap<Class<? extends ExplorationConstraint<?>>, ExplorationConstraint<?>> copiedMap =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEntry.java
index bf2fb62637bd715b5455e53252084a0e821fe776..cfe4a3ffdab53ad6452a627c949ba127e074db2f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEntry.java
@@ -33,7 +33,7 @@ import com.google.common.collect.MutableClassToInstanceMap;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5CB5AB5FCB8696537D2229C5E5FC15E0
+ * @ConQAT.Rating RED Hash: F8C230B31908566B664F04AB75D67435
  */
 public abstract class TaskMappingEntry implements IMappingEntry {
 	/** Deployment target to which task is mapped */
@@ -43,8 +43,8 @@ public abstract class TaskMappingEntry implements IMappingEntry {
 	protected IDeployableComponentAdapter<?> deploymentSource;
 
 	/** Associated {@link IMappingEntry}s that were generated during the DSE process. */
-	private ClassToInstanceMap<IMappingEntry> associatedEntries = MutableClassToInstanceMap
-			.create();
+	private ClassToInstanceMap<IMappingEntry> associatedEntries =
+			MutableClassToInstanceMap.create();
 
 	/** Constructs a mapping entry the represents the mapping to a given deployment target. */
 	protected TaskMappingEntry(IDeployableComponentAdapter<?> deployableComponent,
@@ -85,7 +85,7 @@ public abstract class TaskMappingEntry implements IMappingEntry {
 	/** {@inheritDoc} */
 	@Override
 	public void rmAssociatedElement(IMappingEntry entry) {
-		associatedEntries.remove(entry);
+		associatedEntries.remove(entry.getClass());
 	}
 
 	/** {@inheritDoc} */
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 6183b898ff95381411bfecb52c8f2f013896066f..17451da11e84afd519edc7a2bf3d429c9bf3a866 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
@@ -40,10 +40,9 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3DF39B0B8106F1038EB2EC0EF0E02D1E
+ * @ConQAT.Rating RED Hash: EAAACC15E879B0C7E7CA91E953D6F505
  */
-public class AbstractTaskMappingEncoding extends TaskMappingEncoding<AbstractTaskMappingEntry>
-		implements ComposablePhenotype<AbstractTaskMappingEncoding> {
+public class AbstractTaskMappingEncoding extends TaskMappingEncoding<AbstractTaskMappingEntry> {
 
 	/**
 	 * Constructor that is initialized with a reference to the DSE specification and the input
@@ -90,7 +89,8 @@ public class AbstractTaskMappingEncoding extends TaskMappingEncoding<AbstractTas
 	 */
 	public AbstractTaskMappingEncoding(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
-			AbstractTaskGraphEncoding<?, ?> atgEnc, boolean initialize) throws ExplorationException {
+			AbstractTaskGraphEncoding<?, ?> atgEnc, boolean initialize)
+			throws ExplorationException {
 		super(dse, systemModelAdapter, atgEnc, initialize);
 	}
 
@@ -121,6 +121,13 @@ public class AbstractTaskMappingEncoding extends TaskMappingEncoding<AbstractTas
 		return new AbstractTaskMappingEntry(deployableComponent, deploymentTarget);
 	}
 
+	/** {@inheritDoc} */
+	@Override
+	protected <S extends TaskMappingEntry> AbstractTaskMappingEntry createEntry(S allocEntry) {
+		return new AbstractTaskMappingEntry(allocEntry.getDeployableComponent(),
+				allocEntry.getTarget());
+	}
+
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
 	@Override
@@ -159,8 +166,9 @@ public class AbstractTaskMappingEncoding extends TaskMappingEncoding<AbstractTas
 	}
 
 	/** {@inheritDoc} */
+	@SuppressWarnings("unchecked")
 	@Override
 	public Class<? extends ComposablePhenotype<?>> getPTypeToRegister() {
-		return AbstractTaskMappingEncoding.class;
+		return (Class<? extends ComposablePhenotype<?>>)AbstractTaskMappingEncoding.class;
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEntry.java
index 6ad5c513ef42349f35b7bb755147222a440cc78d..4204266f255687d15e8f96922b2e1c2dbea85aaa 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEntry.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: E9BCEC8A55BF5E4CBBBEA84883FD93DD
+ * @ConQAT.Rating RED Hash: A8BBB8FC82364F1AD4D6FB187F51156D
  */
 public class AbstractTaskMappingEntry extends TaskMappingEntry implements Cloneable {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java
index cc1510f1cd27ec64fc3da41bbe5b7e072bd838e1..80261101aba233dbaffae75f221689086bcb889b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java
@@ -34,11 +34,11 @@ import org.fortiss.af3.exploration.model.ExplorationTarget;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: A75683844D4FCD4BA58DA4CE35A68C5A
+ * @ConQAT.Rating RED Hash: B0DECAF3E8F577A789C92EE5B5730E57
  */
 @SuppressWarnings("javadoc")
-public class InternalReplicationConstraint extends EObjectImpl implements
-		ExplorationConstraint<Boolean> {
+public class InternalReplicationConstraint extends EObjectImpl
+		implements ExplorationConstraint<Boolean> {
 
 	private int id = 0;
 
@@ -170,7 +170,6 @@ public class InternalReplicationConstraint extends EObjectImpl implements
 	@Override
 	public void setExpression(IExpression value) {
 		// TODO Auto-generated method stub
-
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java
index f7722032a10dac8092f78ee857fab80f54615034..6f9a1f0c2c50a2687dce154766d1dd4fb0dd20e7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java
@@ -38,11 +38,11 @@ import org.fortiss.af3.platform.model.IPlatformResource;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 61AC18C4A081EA4D9310B99CE5D81846
+ * @ConQAT.Rating RED Hash: B3F05A763AD1A0D86111248365E5B88E
  */
 @SuppressWarnings("javadoc")
-public class InternalSeparationConstraint extends EObjectImpl implements
-		ExplorationConstraint<Boolean>, Cloneable {
+public class InternalSeparationConstraint extends EObjectImpl
+		implements ExplorationConstraint<Boolean>, Cloneable {
 
 	private int id = 0;
 
@@ -163,7 +163,6 @@ public class InternalSeparationConstraint extends EObjectImpl implements
 	@Override
 	public void setExpression(IExpression value) {
 		// TODO Auto-generated method stub
-
 	}
 
 	/** {@inheritDoc} */
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 1cc97e7ecd6df349c65939b756b7bc645af0afa1..db4310dac812a4757744ce596c02bd42c758eef0 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
@@ -34,10 +34,10 @@ import org.fortiss.af3.exploration.moea.model.DseSpecification;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 31E699F303C22A41CE74A6C9F70C0766
+ * @ConQAT.Rating RED Hash: 2E62819824C7A9E09F87A17227A6F9A0
  */
-public class FailSilentTaskMappingEncoding extends
-		InstantiatedTaskMappingEncoding<FailSilentTaskMappingEntry> {
+public class FailSilentTaskMappingEncoding
+		extends InstantiatedTaskMappingEncoding<FailSilentTaskMappingEntry> {
 
 	/**
 	 * Constructor that is initialized with a reference to the DSE specification and the input
@@ -83,7 +83,8 @@ public class FailSilentTaskMappingEncoding extends
 	 */
 	public FailSilentTaskMappingEncoding(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
-			AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) {
+			AbstractTaskGraphEncoding<?, ?> tgEncoding,
+			AbstractTaskMappingEncoding abstractEncoding) {
 		super(dse, systemModelAdapter, tgEncoding, abstractEncoding);
 	}
 
@@ -103,10 +104,7 @@ public class FailSilentTaskMappingEncoding extends
 	/** {@inheritDoc} */
 	@Override
 	public <S extends TaskMappingEntry> FailSilentTaskMappingEntry createEntry(S mapping) {
-		if(mapping instanceof AbstractTaskMappingEntry) {
-			return new FailSilentTaskMappingEntry((AbstractTaskMappingEntry)mapping);
-		}
-		return super.createEntry(mapping);
+		return new FailSilentTaskMappingEntry((AbstractTaskMappingEntry)mapping);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEntry.java
index f3be93fdac3f8298b6ad8933a43dcb755e556bbb..d44a86f352398df78ecc24975c6a54b18e713ff2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEntry.java
@@ -30,7 +30,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8BD1925CD7E8FAB425D80C4A640C3920
+ * @ConQAT.Rating RED Hash: 0846ADC9D6ECEB2917FAD88D690AE7F9
  */
 public class FailSilentTaskMappingEntry extends InstantiatedTaskMappingEntry implements Cloneable {
 
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 89a6fea7fc2c91226144b697bc575590125f8dff..20e905f86441e0d8a6d9ac733f00797aa4622fd6 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
@@ -34,7 +34,7 @@ import org.fortiss.af3.exploration.moea.model.DseSpecification;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 1E0FD84465E1CF615EB35DD7B0E88482
+ * @ConQAT.Rating RED Hash: FA6FA791FAE971C740953A0A9F1BCFC6
  */
 public class FaultDetectionVotingTaskMappingEncoding extends
 		InstantiatedTaskMappingEncoding<FaultDetectionVotingTaskMappingEntry> implements Cloneable {
@@ -85,7 +85,8 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 	 */
 	public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
-			AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) {
+			AbstractTaskGraphEncoding<?, ?> tgEncoding,
+			AbstractTaskMappingEncoding abstractEncoding) {
 		super(dse, systemModelAdapter, tgEncoding, abstractEncoding);
 	}
 
@@ -105,12 +106,10 @@ public class FaultDetectionVotingTaskMappingEncoding extends
 
 	/** {@inheritDoc} */
 	@Override
-	public <S extends TaskMappingEntry> FaultDetectionVotingTaskMappingEntry createEntry(S mapping) {
-		if(mapping instanceof AbstractTaskMappingEntry) {
-			// TODO: Do not use 0, magic constant.
-			return new FaultDetectionVotingTaskMappingEntry((AbstractTaskMappingEntry)mapping, 0);
-		}
-		return super.createEntry(mapping);
+	public <S extends TaskMappingEntry> FaultDetectionVotingTaskMappingEntry
+			createEntry(S mapping) {
+		// TODO: Do not use 0, magic constant.
+		return new FaultDetectionVotingTaskMappingEntry((AbstractTaskMappingEntry)mapping, 0);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEntry.java
index 7a0e11ea3e5bdb20dfaf8fd9cfad4d00638ffa20..ab5becc00371683b5dab905a4b8ea5437de35784 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEntry.java
@@ -30,7 +30,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: A3A454AB7D75346FD2EB5F86193905E6
+ * @ConQAT.Rating RED Hash: 5D45A4A9867B9CB8400DCC920B17A135
  */
 public class FaultDetectionVotingTaskMappingEntry extends InstantiatedTaskMappingEntry implements
 		Cloneable {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java
index 25d80697207f0443b83104a8d51e65075a6348a1..ea1d2be533cf363d8d63c4711385a915ed7c2a11 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java
@@ -41,10 +41,10 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 46FF32B4C28A6EA1581C3EDFBDA7755E
+ * @ConQAT.Rating RED Hash: F60E78EB982ECF95126490321C384FF3
  */
 public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTaskMappingEntry>
-		extends TaskMappingEncoding<T> implements ComposablePhenotype<AbstractTaskMappingEncoding> {
+		extends TaskMappingEncoding<T> {
 
 	/**
 	 * Constructor that is initialized with a reference to the DSE specification and the input
@@ -90,7 +90,8 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask
 	 */
 	public InstantiatedTaskMappingEncoding(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
-			AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) {
+			AbstractTaskGraphEncoding<?, ?> tgEncoding,
+			AbstractTaskMappingEncoding abstractEncoding) {
 		super(dse, systemModelAdapter, tgEncoding);
 		this.constraintMap = abstractEncoding.copyConstraintMap(null);
 		instantiateAbstractEntries(abstractEncoding);
@@ -113,8 +114,8 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask
 
 	/** {@inheritDoc} */
 	@Override
-	public Collection<IExecutionUnitAdapter<?>> getAllowedAllocations(
-			IDeployableComponentAdapter<?> deployableComponent) {
+	public Collection<IExecutionUnitAdapter<?>>
+			getAllowedAllocations(IDeployableComponentAdapter<?> deployableComponent) {
 		if(deployableComponent.isInstantiation()) {
 			deployableComponent = deployableComponent.getReplacedComponent();
 		}
@@ -123,8 +124,8 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask
 
 	/** {@inheritDoc} */
 	@Override
-	public Collection<IExecutionUnitAdapter<?>> getDisAllowedAllocations(
-			IDeployableComponentAdapter<?> deployableComponent) {
+	public Collection<IExecutionUnitAdapter<?>>
+			getDisAllowedAllocations(IDeployableComponentAdapter<?> deployableComponent) {
 		if(deployableComponent.isInstantiation()) {
 			deployableComponent = deployableComponent.getReplacedComponent();
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEntry.java
index 1d2c946069419ecf2144778d3d246712c460fe58..8c6d72c3137d41413ee0544bb348c038f41b6061 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEntry.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEntry.java
@@ -34,7 +34,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C54C99DE857B5AC431ECA573CCE888CF
+ * @ConQAT.Rating RED Hash: CBD09B1B0B5F0D70EDEAEDFF0136C555
  */
 public abstract class InstantiatedTaskMappingEntry extends TaskMappingEntry implements Cloneable {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreator.java
index 1d46c8257889c042b899e007d84af0386b97a153..08e0f4b205727b31be8973d2dad9bdc9ebec5626 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreator.java
@@ -41,7 +41,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 24500FD093C6678B0D693B1DD010EE88
+ * @ConQAT.Rating RED Hash: 9EB2DB98720AF14D93B9B9B43BCF11E5
  */
 public interface ComposableCreator<G extends ComposableGenotype> {
 
@@ -50,7 +50,9 @@ public interface ComposableCreator<G extends ComposableGenotype> {
 	 * {@link CompositeGenotype}.
 	 * 
 	 * @param createdGenotypes
-	 *            Map that lists already created {@link Genotype}s by their Type..
+	 *            Map that lists already created {@link Genotype}s by their Type.
+	 * @param decodedPhenotypes
+	 *            Map of already generated phenotypes.
 	 * @return The {@link ComposableGenotype}. May be a {@link CompositeGenotype} itself.
 	 * @throws ExplorationException
 	 */
@@ -67,9 +69,8 @@ public interface ComposableCreator<G extends ComposableGenotype> {
 	 * @param decoders
 	 *            List of {@link Decoder}s that are executed in the order of the List.
 	 */
-	void
-			registerAssocDecoders(
-					List<ComposableDecoder<G, ? extends ComposablePhenotype<G>>> decoders);
+	void registerAssocDecoders(
+			List<ComposableDecoder<G, ? extends ComposablePhenotype<G>>> decoders);
 
 	/**
 	 * Registers {@link Decoder}s that decode the {@link Genotype} created by {@code this}
@@ -99,8 +100,8 @@ public interface ComposableCreator<G extends ComposableGenotype> {
 	 *         {@link Decoder}s.
 	 * @throws DecodingException
 	 */
-	<P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> decodeCreatedGenotype(
-			G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes,
+	<P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> decodeCreatedGenotype(G genotype,
+			FlatPhenotypeMap<Phenotype> decodedPhenotypes,
 			Set<Class<? extends Genotype>> createdGenotypeTypeSet) throws DecodingException;
 
 	/**
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 ad7bd9ee7ebe2e959dda37ad28e6ae6470c6ab0a..1c8f559d82cb838c8be4c79206e80c27413aa4b3 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
@@ -48,7 +48,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: DEC9F11854A2A461F0D8D0CF71F53189
+ * @ConQAT.Rating RED Hash: 10ADB9907718BFF00670CC67B888C643
  */
 public abstract class ComposableCreatorBase<G extends ComposableGenotype> implements
 		ComposableCreator<G> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreator.java
index 9e06a2245df664f6683a33de27678a9ae04635da..e07c302548ed1e0b5847347a447ff591b42059d6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreator.java
@@ -30,7 +30,7 @@ import org.opt4j.core.problem.Creator;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 83F46DB21F94A75806E1E375A55888C3
+ * @ConQAT.Rating RED Hash: 312EB4EED46ACC4AA728A8567C0AF7D2
  */
 public interface CompositeCreator<G extends CompositeGenotype<Class<? extends ComposableGenotype>, ? extends ComposableGenotype>>
 		extends Creator<G> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java
index 5bfa767adb7c776ddbf7484cb911b03eef274ef0..19fd08aa5bc51f53257d561b01268929b43433f5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java
@@ -40,7 +40,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C371DC4355F8C83713605660BFA38B9C
+ * @ConQAT.Rating RED Hash: 4C185ED1B08430018EAEEC420BDA566C
  */
 public abstract class CompositeCreatorBase<G extends CompositeGenotype<Class<? extends ComposableGenotype>, ComposableGenotype>>
 		implements CompositeCreator<G> {
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 9b8e9d35aa3891ecbedfdfed1c40bd92b0723b33..300d89ab0e2d9eb4dfd6f8b01ed6fe8d2da44ac2 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,7 +36,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 22567921112B18F19227FDB1B9253433
+ * @ConQAT.Rating RED Hash: 62C4D78593B24C20FEC7B1D4BC3AEF56
  */
 public interface ComposableDecoder<G extends ComposableGenotype, P extends ComposablePhenotype<?>>
 		extends IDependencyModule<IExplorationEncoding, P> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoderBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoderBase.java
index 0b03cb8d0afd490dd66922792a8c84f6ffcfb2d2..717f4bbe277392045f5959fd14518875e8545c0d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoderBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoderBase.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: B0008945820EBAD3338FE8337FAC6C4F
+ * @ConQAT.Rating RED Hash: 378ECE4AEA793F48379C243CF11D0831
  */
 public abstract class ComposableDecoderBase<G extends ComposableGenotype, P extends ComposablePhenotype<?>>
 		implements ComposableDecoder<G, P> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoder.java
index 344a97d870f5563757d81c8ef0c3581a318b287e..1b41045a15a4add6170c2212f6b8fd34f3ba053f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoder.java
@@ -35,7 +35,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4AA2FD77827F0DB85FEB6A109FE6A126
+ * @ConQAT.Rating RED Hash: DAFC23705A3B35179489C6AF4798408F
  */
 public interface CompositeDecoder<C extends CompositeGenotype<Class<? extends ComposableGenotype>, ? extends ComposableGenotype>, P extends CompositePhenotype<? extends Genotype>>
 		extends Decoder<C, P> {
@@ -48,8 +48,8 @@ public interface CompositeDecoder<C extends CompositeGenotype<Class<? extends Co
 	 *            Map relating the sub-{@link Genotype}s with their decoding result (aka phenotype).
 	 * @return The {@link CompositeGenotype} {#link P} or {@code null} if the merge fails.
 	 */
-	<CP extends ComposablePhenotype<? extends Genotype>> P mergeSubPhenotypes(
-			Map<Class<CP>, CP> subPhenotypes);
+	<CP extends ComposablePhenotype<? extends Genotype>> P
+			mergeSubPhenotypes(Map<Class<CP>, CP> subPhenotypes);
 
 	/**
 	 * Adds a {@link ComposableDecoder} for the given {@link ComposablePhenotype}. The decoding
@@ -57,9 +57,9 @@ public interface CompositeDecoder<C extends CompositeGenotype<Class<? extends Co
 	 * {@link ComposablePhenotype} of this {@link ComposableDecoder}.
 	 * 
 	 * @throws CycleFoundException
+	 *             if a circular dependency between decoders exist.
 	 */
 	// TODO: add doc for exception.
-			<G extends ComposableGenotype, CP extends ComposablePhenotype<G>, D extends ComposableDecoder<G, CP>>
+	<G extends ComposableGenotype, CP extends ComposablePhenotype<G>, D extends ComposableDecoder<G, CP>>
 			void registerSubDecoder(Class<G> subGenotype, D subDecoder) throws CycleFoundException;
-
 }
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 72e78d085d2f920355c63f35466c9b0be9e3bc3d..ff2d472e2cb658765ae49d707869bbd7b9b63788 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
@@ -48,7 +48,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1A3B10C6B3813362635468586D38B9BD
+ * @ConQAT.Rating RED Hash: 29B7EB1096C939A3B9322F7DD992F588
  */
 public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? extends ComposableGenotype>, ComposableGenotype>, P extends CompositePhenotype<?>>
 		implements CompositeDecoder<C, P> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/PhenotypeDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/PhenotypeDecoder.java
index 1daef057fd8be96481f0bc4c3857f2ff90be5386..4370e32e7e573acd4fd2e1d4d5ff012fbd180484 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/PhenotypeDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/PhenotypeDecoder.java
@@ -36,7 +36,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 767E4DD764AACED0EA735D6993F84570
+ * @ConQAT.Rating RED Hash: D77A904562FFDE311FE44C006A0E67B0
  */
 public interface PhenotypeDecoder<P extends Phenotype> {
 
@@ -60,6 +60,8 @@ public interface PhenotypeDecoder<P extends Phenotype> {
 	 * {@link FlatPhenotypeMap} (which contains the already decoded {@link Phenotype}s) and returns
 	 * it.
 	 * 
+	 * @param outGenotype
+	 *            Hybrid phenotype to be updated.
 	 * @param decodedPhenotypes
 	 *            Map of already decoded {@link Phenotype}s.
 	 * 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/ComposableEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/ComposableEvaluator.java
index 416af2788f5643290fbc0e01e9068a6aa7642d95..c5806b08aba55b3a7a803f37020a178bc9c57d32 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/ComposableEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/ComposableEvaluator.java
@@ -32,7 +32,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8FDBC259F70B6576641CF38B3C5E7FB3
+ * @ConQAT.Rating RED Hash: D47347505A968014F1004269C3099AD5
  */
 public interface ComposableEvaluator<P extends Object> {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluator.java
index de07e9f95b03c818b5e775d8bf7bc41e9995f287..18fa28a87dc51a9f8cb650d764334c4d5de7b792 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluator.java
@@ -35,7 +35,7 @@ import org.opt4j.core.problem.Evaluator;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 587173231752D2D08E019963E7928748
+ * @ConQAT.Rating RED Hash: E54D706B912A419F3F8127FD5FACEABB
  */
 public interface CompositeEvaluator<P> extends Evaluator<P> {
 
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 db084f472e22aa25cf503cdbdad1b24c025d156a..d116fb72fe131794d650d60ff7bcdd4f44dac8b2 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
@@ -58,10 +58,10 @@ import com.google.common.collect.MutableClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: DBF4611C3C2578AB6531E0927F70BA0D
+ * @ConQAT.Rating RED Hash: 9922EBB4CFBD0A4E271732AD49D4B9C3
  */
-public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> implements
-		CompositeEvaluator<P> {
+public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>>
+		implements CompositeEvaluator<P> {
 
 	/** Representation of the input models. */
 	protected SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter;
@@ -87,7 +87,9 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> im
 			new SubClassToInstanceMultiMap<>(
 					(Class<? extends ComposablePhenotype<?>>)ComposablePhenotype.class);
 
-	/** Default constructor which requires a {@link SystemModelAdapter} to access the input models. */
+	/**
+	 * Default constructor which requires a {@link SystemModelAdapter} to access the input models.
+	 */
 	public CompositeEvaluatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		this.systemModelAdapter = systemModelAdapter;
 
@@ -114,8 +116,8 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> im
 					e -> allSubEvaluators.add(((EvaluatorWrapper<?, ?, ?>)e).getEvaluator()));
 
 			@SuppressWarnings("unchecked") Collection<Class<? extends EObject>> tempReqModels =
-					getService(IExplorationEvaluatationService.class).getRequiredTransformedModels(
-							allSubEvaluators);
+					getService(IExplorationEvaluatationService.class)
+							.getRequiredTransformedModels(allSubEvaluators);
 			requiredTransformedModelTypes = tempReqModels;
 		}
 	}
@@ -166,22 +168,20 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> im
 			@SuppressWarnings("unchecked") S subPhenotype = (S)phenoEntry.getValue();
 			@SuppressWarnings("unchecked") Class<S> key = (Class<S>)phenoEntry.getKey();
 			@SuppressWarnings("unchecked") Collection<ComposableEvaluator<? extends ComposablePhenotype<?>>> phenoSubEvaluators =
-					subEvaluators.get((Class<? extends ComposablePhenotype<?>>)phenoEntry
-							.getValue().getClass());
+					subEvaluators.get((Class<? extends ComposablePhenotype<?>>)phenoEntry.getValue()
+							.getClass());
 			if(phenoSubEvaluators != null) {
 				// If no subEvaluator is registered, only decoding shall be performed -> no
 				// evaluation.
 				Objectives evalResults = new Objectives();
 				for(ComposableEvaluator<? extends ComposablePhenotype<?>> subEvaluator : phenoSubEvaluators) {
-					evalResults =
-							subEvaluator.evaluateComposable(key, subPhenotype, phenotypeTypeMap,
-									transformedModels);
+					evalResults = subEvaluator.evaluateComposable(key, subPhenotype,
+							phenotypeTypeMap, transformedModels);
 					Iterator<Entry<Objective, Value<?>>> resultIterator = evalResults.iterator();
 					while(resultIterator.hasNext()) {
 						Entry<Objective, Value<?>> result = resultIterator.next();
 						objectiveContribPheno.put(result.getKey(), subPhenotype);
 						subObjectivesEvaluations.put(result.getKey(), result.getValue());
-
 					}
 				}
 			}
@@ -204,6 +204,12 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> im
 		return mergedObjectives;
 	}
 
+	// private Collection<CompositeEvaluator> getEvaluatorOf(Phenotype pheno) {
+	// for(CompositeEvaluator cEval : subEvaluators.values()) {
+	//
+	// }
+	// }
+
 	/** {@inheritDoc} */
 	@Override
 	public Objectives evaluate(P phenotype) {
@@ -251,8 +257,7 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> im
 	 * Constructs a flattened version of the given {@link CompositePhenotype}, i.e. a
 	 * {@link FlatPhenotypeMap}.
 	 */
-	private
-			<G extends Genotype, CP extends CompositePhenotype<?>, SP extends ComposablePhenotype<G>>
+	private <G extends Genotype, CP extends CompositePhenotype<?>, SP extends ComposablePhenotype<G>>
 			FlatPhenotypeMap<Phenotype> constructPhenotypeMap(CP phenotype) {
 		FlatPhenotypeMap<Phenotype> phenotypeTypeMap =
 				new FlatPhenotypeMap<Phenotype>(systemModelAdapter);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DecodingException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DecodingException.java
index 9d5a31e6425a2adb4b55cb87249097f5810e0838..74bdbf72a2492a675d28c6e54e7a134a9d5d3000 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DecodingException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DecodingException.java
@@ -28,7 +28,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: FD170169862E2688A4A2DA7D383ECE5C
+ * @ConQAT.Rating RED Hash: 3C84B0252388D8EADFEF818C0F2910DB
  */
 public class DecodingException extends ExplorationException {
 	/** Constructor specialized for decoding errors. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DependencyException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DependencyException.java
index f6af6d5c18da87cfcb06fe3be91c6128c1a7389b..a238e47f91d9b8394d033d99b81a51b283035747 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DependencyException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/DependencyException.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 981897709D5BE431526581521AD916AA
+ * @ConQAT.Rating RED Hash: A28B31975B79BEDA5BB28FFD02E26120
  */
 public class DependencyException extends ExplorationException {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/MissingDependencyException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/MissingDependencyException.java
index fcdde6475c8642b1339ac13fffa55bac61f4f73d..cb2429d2506666138e5018e3a6e086362886d55a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/MissingDependencyException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/exception/MissingDependencyException.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: AF680AD3172DD719E357BE92EC4BB5C9
+ * @ConQAT.Rating RED Hash: 980CBA6940BEF3047411EF9EF005BADC
  */
 public class MissingDependencyException extends DependencyException {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/ComposableGenotype.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/ComposableGenotype.java
index f4d3f6a90760104ad85ea142c7649ecb5237138f..33f538c4476a1f6a9e53a5cce423d0f1263f8cda 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/ComposableGenotype.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/ComposableGenotype.java
@@ -26,7 +26,7 @@ import org.opt4j.core.genotype.CompositeGenotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4447CB524315D54AB6DF7714179C9F26
+ * @ConQAT.Rating RED Hash: D8B5AFBB8BFDDAC1265E90086AC67A4D
  */
 public interface ComposableGenotype extends Genotype {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/FlatGenotypeMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/FlatGenotypeMap.java
index 39ad1bfc7af3aa67afeb3bdc6000959eda708015..21c4c840c1ca6ecd0ca39262be24ca028bcb5166 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/FlatGenotypeMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/genotype/FlatGenotypeMap.java
@@ -31,7 +31,7 @@ import org.opt4j.core.genotype.CompositeGenotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 83069AB05692D19F6A2DF564E9A81E31
+ * @ConQAT.Rating RED Hash: F18EE4BF8BD55B14AFED72D10A129213
  */
 public class FlatGenotypeMap extends CompositeGenotype<Class<? extends Genotype>, Genotype> {
 	// No "real" implementation required. The base class does this job.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java
index ec78f066a7bb8377e6584d6f081160cad14fb315..f3d4fff77d57f8dbde37d48486e0abc39307e2a9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java
@@ -40,7 +40,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 15A8F3DB3C18984E47A4D35D8F259EE1
+ * @ConQAT.Rating RED Hash: F21C1E8B3019427B78789FD3EE968BA7
  */
 public class DecoderDependencyGraph
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderEdge.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderEdge.java
index 7061ce7534b21ba126444ed028fcd5cd601065b5..4f3bbb77f21cad9c12aaab97182134323c89a18d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderEdge.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderEdge.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.graph.DependencyEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 67D82E36A9575DE3FD120CB2B0291FAE
+ * @ConQAT.Rating RED Hash: 64E3C97868042CCA97F591E915895C14
  */
 public class DecoderEdge<G extends ComposableGenotype, P extends ComposablePhenotype<?>> extends
 		DependencyEdge<ComposableDecoder<G, P>> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/ComposablePhenotype.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/ComposablePhenotype.java
index 90910b90084ce4b44823f53a26650cde0969cad8..25dc71a6f1bc2b36f3b229e73265b0dd0b73acb3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/ComposablePhenotype.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/ComposablePhenotype.java
@@ -27,7 +27,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 81AD202996AB9B1B88CC11FC3B7DD0BC
+ * @ConQAT.Rating RED Hash: E7831730F898048117BBACDB1CA242B0
  */
 public interface ComposablePhenotype<G extends Genotype> extends Phenotype {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotype.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotype.java
index de847321a407beef0c2a44374942e6c747cb85ad..aafe1c1765aecb42e577eb8d09ff1dee37c490d8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotype.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotype.java
@@ -32,7 +32,7 @@ import org.opt4j.core.genotype.CompositeGenotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 999DAF4F52D649AD17310136312D8855
+ * @ConQAT.Rating RED Hash: D900549C15CC8FC478E1ACB43598C19F
  */
 public interface CompositePhenotype<G extends Genotype>
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotypeBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotypeBase.java
index 02500cbd7a9771fe06461eec0a67fdff83e5e67f..56f666e4ed5b702cc0b538838ef2e1ba653ba60d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotypeBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/CompositePhenotypeBase.java
@@ -32,7 +32,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D1A6182BD43F1AC2C61006966EFC0B35
+ * @ConQAT.Rating RED Hash: 031F7511012F0AAF6A3F3D9ED53B493E
  */
 public abstract class CompositePhenotypeBase<G extends Genotype> implements CompositePhenotype<G> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java
index 56d581467ff80f48925147c5f45650f2b53cc5f8..345f4c9f648fad82e84a8421268d6423dd31982c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java
@@ -32,7 +32,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B568C33B362BE17DD68E29B6570BB8FA
+ * @ConQAT.Rating RED Hash: E96855061F4A94C84D2AE992FF86D03C
  */
 public class FlatPhenotypeMap<T extends Phenotype> extends ExplorationEncodingMap<T> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/Phenotype.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/Phenotype.java
index eea2c545d5a91ac4526363d23e515edfc027c6b5..b96c6520565ec11abbff24d32fe5d302756fda96 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/Phenotype.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/Phenotype.java
@@ -25,7 +25,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: CDE7DC203CF0D61FE90C2F6862294319
+ * @ConQAT.Rating RED Hash: CF18332ABFE93B0A6963E2AD1EF119E5
  */
 public interface Phenotype extends IExplorationEncoding {
 	// Marker interface.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java
index 3476cd0c1daa0a7cf02d1f74ef45c13f74f2a53a..e3c091bf7d683eab2a9644819ca1b47e6481d016 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java
@@ -54,7 +54,7 @@ import com.google.inject.name.Named;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 206852AA1B3F5A6364D8FD49E6CD11BB
+ * @ConQAT.Rating RED Hash: 61353E5AB421A8456F8BD8517C8C971D
  */
 public class MatingCrossoverMutateRepair extends MatingCrossoverMutate {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java
index cef6860cacfc5a7c4fd4ef03b8050764d894da1f..f86b6b1fb3fee7dcfd6c4b30495a0bac5faa98d1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java
@@ -32,7 +32,7 @@ import com.google.inject.name.Names;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: CFFD90BAF277128B00F834AA90D384F7
+ * @ConQAT.Rating RED Hash: 6444B42A03FC91F3C8FB63EF09DD8E36
  */
 public class MatingCrossoverMutateRepairModule extends MatingModule {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/ComposableOperatorClassPredicate.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/ComposableOperatorClassPredicate.java
index d909c0f387ae2808f4f60bf289a10a4d43867b92..8de38013cf114f005a03784c6da834b74fcbe18d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/ComposableOperatorClassPredicate.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/ComposableOperatorClassPredicate.java
@@ -33,7 +33,7 @@ import org.opt4j.operators.AbstractGenericOperator.OperatorClassPredicate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 2615B86A96909781752E9997878C07F5
+ * @ConQAT.Rating RED Hash: C7B291D145E13629754295FDF09E31E4
  */
 public class ComposableOperatorClassPredicate extends OperatorClassPredicate {
 
@@ -54,7 +54,7 @@ public class ComposableOperatorClassPredicate extends OperatorClassPredicate {
 	 * again, since some non-deterministic behaviour could be observed when using it. Using the
 	 * class-only-based predicate instead is not an option due to our implementation of the
 	 * operators (and the selector).
-	 * */
+	 */
 	@Override
 	public int hashCode() {
 		return Objects.hash(clazz);
@@ -89,8 +89,7 @@ public class ComposableOperatorClassPredicate extends OperatorClassPredicate {
 		if(clazz.equals(obj.getClass())) {
 			return true;
 		}
-		// Here, we always obtain a list of classes. For unknown reasons, this not already
-		// defined as such in apache commons...
+		// Here, we always obtain a list of classes.
 		@SuppressWarnings("unchecked") List<Class<?>> superclassList =
 				ClassUtils.getAllSuperclasses(obj.getClass());
 		for(Class<?> currentSuperclass : superclassList) {
@@ -104,22 +103,18 @@ public class ComposableOperatorClassPredicate extends OperatorClassPredicate {
 			}
 		}
 
-		// Here, we always obtain a list of classes. For unknown reasons, this not already
-		// defined as such in apache commons...
+		// Here, we always obtain a list of classes.
 		@SuppressWarnings("unchecked") List<Class<?>> implementedInterfaces =
 				ClassUtils.getAllInterfaces(obj.getClass());
 		for(Class<?> currentInterface : implementedInterfaces) {
-			// if(Genotype.class.isAssignableFrom(currentInterface)) {
 			@SuppressWarnings({"unchecked"}) ComposableOperatorClassPredicate superPredicate =
 					new ComposableOperatorClassPredicate(
 							(Class<? extends Genotype>)currentInterface);
 			if(this.equals(superPredicate)) {
 				return true;
 			}
-			// }
 		}
 
 		return false;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/OperatorUtil.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/OperatorUtil.java
index d9809ffd6b28d1c3ff06c511aecd05c89b42e87a..5bb4e28562fc0bc56ef3937c265162d85d440222 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/OperatorUtil.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/OperatorUtil.java
@@ -36,7 +36,7 @@ import com.google.inject.multibindings.MapBinder;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: FBF3846E5788445D3C73223D86F8BC78
+ * @ConQAT.Rating RED Hash: DDCC5E6C8C5BE9951DE4A5546F27D114
  */
 public class OperatorUtil {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArch.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArch.java
index 9aa5223ef80703d4c12f8bf6483bce44fd4af593..5841480efd7cb905728cd26e2995d68774f28224 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArch.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArch.java
@@ -26,7 +26,7 @@ import org.opt4j.operators.copy.Copy;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F3EBE9E7AB1F0AFAE45A98EA0AE7526B
+ * @ConQAT.Rating RED Hash: AEB159C26237DB308778A312705CE363
  */
 public class CopySafetyFunctionArch implements Copy<SafetyFunctionArchEncoding<?>> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArchModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArchModule.java
index 838895aafbc20c962d877bca85ae6a732ceaa208..21dfe9a9339c89a37e817c03da5711370e13851f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArchModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/safetyfunctionarch/CopySafetyFunctionArchModule.java
@@ -26,7 +26,7 @@ import org.opt4j.operators.copy.CopyModule;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 0C4D1912C9F9FF041788CE5AB36D79E5
+ * @ConQAT.Rating RED Hash: D4570F673FCD314E8A75337E3675DE79
  */
 public class CopySafetyFunctionArchModule extends CopyModule {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyAbstractTaskMapping.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyAbstractTaskMapping.java
index 41cc87e11e42ecfc2d4c21d434f03a9b9af4cc9a..d997d93460180828830ec44de40cd6b8835f5d19 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyAbstractTaskMapping.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyAbstractTaskMapping.java
@@ -27,7 +27,7 @@ import org.opt4j.operators.copy.Copy;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 8EF33B880554FD8BB2386FFDC32BB775
+ * @ConQAT.Rating RED Hash: 2F82DB5417A0EC3DBE08815181CBCE65
  */
 public class CopyAbstractTaskMapping implements Copy<AbstractTaskMappingEncoding> {
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyInstanceTaskMapping.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyInstanceTaskMapping.java
index 15515acc87e53241ba744ceeafd67e4e20cb6d0c..eb025b21655ceef50c9e62cb368b5c8ae51a8a11 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyInstanceTaskMapping.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyInstanceTaskMapping.java
@@ -27,7 +27,7 @@ import org.opt4j.operators.copy.Copy;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F2E82A32BDB0402FB5CCCF026B9C2E57
+ * @ConQAT.Rating RED Hash: E5C2EBB2C415EF144F959F4FB7D04AF7
  */
 public class CopyInstanceTaskMapping implements Copy<InstantiatedTaskMappingEncoding<?>> {
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyTaskMappingModule.java
index 518d988e2088c9c3021f0fb413aa83e77abd1ac5..4cb916fd5648c05fac49ea17dc0dba379825b1df 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyTaskMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/CopyTaskMappingModule.java
@@ -26,7 +26,7 @@ import org.opt4j.operators.copy.CopyModule;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 94D0820C8064C2B31F31A35C620CA7D2
+ * @ConQAT.Rating RED Hash: A9768F7453202508B2E8773736F2F58E
  */
 public class CopyTaskMappingModule extends CopyModule {
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java
index 7181a83bf85f408906cf90d480d21240d4f32b52..f373d9189b6c257ea3ee8e062eef2206b5427d6d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: AB046BE4BB327E6EA4F65A2D2E61C433
+ * @ConQAT.Rating RED Hash: 50C0A8E171D19E506A8D065333E5372D
  */
 public class CrossoverAbstractTaskMappingModule extends CrossoverOperatorModuleBase {
 	/** Crossover rate */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java
index 5e5b0501edea765380b943679258c8c8e27140a5..84914bd36f6348362963b1ff665a019ed7e3fc24 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java
@@ -44,7 +44,7 @@ import com.google.common.collect.HashBiMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: DC301374C5C205D88591FC60A1C1B2C9
+ * @ConQAT.Rating RED Hash: 174AC325675EB3679369664F9985048D
  */
 public abstract class CrossoverAllocationBase<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		implements Crossover<T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverOperatorModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverOperatorModuleBase.java
index 82b935d552a4809f8084489aa34a3e620f7e1aec..ee32451925a4dbcf3fa302fcba9480de5f3ef812 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverOperatorModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverOperatorModuleBase.java
@@ -32,7 +32,7 @@ import org.opt4j.operators.crossover.Crossover;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B91A5AC706B6AA50BA3CD0B69DD87C33
+ * @ConQAT.Rating RED Hash: 21908DA2D5DD2AA7D9A72FACF1B2AE0C
  */
 public abstract class CrossoverOperatorModuleBase extends BasicCrossoverModule implements
 		IMultiSelectorOperatorModule<Crossover<?>> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java
index 4eaa7a1453f5e1fac11fd6df16f316259cc9102d..89fbbc0967e76fe9f07ac7473678701990750b89 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java
@@ -33,7 +33,7 @@ import org.opt4j.operators.crossover.Pair;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 97966775B1ABA8E1DAE3305283299629
+ * @ConQAT.Rating RED Hash: 07FECF5FE2DAA99C4E5D48B8530DA03B
  */
 public class CrossoverRandManyAllocation<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends CrossoverAllocationBase<S, T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java
index e1d1aa4a287fd2ff8a33252650805da7aace7b5d..3ce870e8914e5b75b0f398a117fcf2e4c3446c79 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java
@@ -32,7 +32,7 @@ import org.opt4j.operators.crossover.Pair;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: AEB444D869D29CFA7A77A1E60D5C0EB7
+ * @ConQAT.Rating RED Hash: 5AAE02D8C401D79ABA8552B700C459FA
  */
 public class CrossoverSingleAllocation<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends CrossoverAllocationBase<S, T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossover.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossover.java
index c511184f0307390534e3be012d32cc4160dc9c46..4fe7cecd2f3d4924ccb5f5846440b1e62506529e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossover.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossover.java
@@ -30,7 +30,7 @@ import org.opt4j.operators.crossover.Pair;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C2C746DD18134FFC69D3A1CA7886713F
+ * @ConQAT.Rating RED Hash: B54DDFF5C70AD37E8EE3AEF0571D316F
  */
 public class NopCrossover implements Crossover<Genotype> {
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverInstantiatedTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverInstantiatedTaskMappingModule.java
index 916b4db87285c57db46343860064844ee416878a..0fd539f0c1a99cfa4f760fac70117a4bfb2797ee 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverInstantiatedTaskMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverInstantiatedTaskMappingModule.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.in
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 33F335B49775CF3562E4DECF3DF2B37F
+ * @ConQAT.Rating RED Hash: 31DA03F0F41CDD7FED4B0D961D80DB62
  */
 public class NopCrossoverInstantiatedTaskMappingModule extends CrossoverOperatorModuleBase {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverSFArchModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverSFArchModule.java
index c917e20e54086c7be3a13b532dab12980e414986..d1300f248f4edfc1bfd0a969b12100ea06835442 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverSFArchModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/NopCrossoverSFArchModule.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunction
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: CBE83E121865A892DB07C3EE7906ECE5
+ * @ConQAT.Rating RED Hash: 6C8ED47DBDDB6A586C43DF7BC1BB3374
  */
 public class NopCrossoverSFArchModule extends CrossoverOperatorModuleBase {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java
index 70b33a235875999999e69f7271d148572ee86f34..1496901d6d43aaae076e0ca6b5fed4c469bd66aa 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java
@@ -29,7 +29,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3081A26BD3602E36911A851277FCE18B
+ * @ConQAT.Rating RED Hash: 50A28CFFB773ACE1EDD57017A07CBF65
  */
 public class CrossoverAllocationFailSilent extends
 		CrossoverRandManyAllocation<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java
index 79ec63064755204607e8b2bebde220de0e0e7144..13480dd995c19038cc8a6a60ccda60c20a8648f3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java
@@ -29,7 +29,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: AE8536162EA6AA41F4E14C588914FA75
+ * @ConQAT.Rating RED Hash: 6E0E6014E4C2771CF9030C91363F04CE
  */
 public class CrossoverAllocationFaultDetectionVoting
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java
index 1e989804a2f843f78b3a469c95db8ff98544b6d1..7dbea494f248c992b10c15ffc1b065b568e405b3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java
@@ -29,7 +29,7 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 6BAE93DA8B941B44C562EE042078DE6F
+ * @ConQAT.Rating RED Hash: FE76A883F5AFE8524FDC5ADB495ED106
  */
 public abstract class MutateBase<T extends Genotype> implements Mutate<T> {
 	/** Random generator */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateOperatorModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateOperatorModuleBase.java
index 955ddd56235a52030fa04792fcae2ab033608b14..fdaaff449c96c8c51bca23cc560abf86b3e14577 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateOperatorModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateOperatorModuleBase.java
@@ -36,10 +36,10 @@ import org.opt4j.operators.mutate.Mutate;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 646BE33B3011AFACCDADEFCDF6030C14
+ * @ConQAT.Rating RED Hash: C4B10495D5E711BB8C62EBB6D7282D93
  */
-public abstract class MutateOperatorModuleBase extends BasicMutateModule implements
-		IMultiSelectorOperatorModule<Mutate<?>> {
+public abstract class MutateOperatorModuleBase extends BasicMutateModule
+		implements IMultiSelectorOperatorModule<Mutate<?>> {
 	/**
 	 * Contains the correspondences between the {@link Genotype}s and the {@link IOperatorSelector}
 	 * selecting the {@link Operator}s used to modify the {@link Genotype}s.
@@ -49,14 +49,13 @@ public abstract class MutateOperatorModuleBase extends BasicMutateModule impleme
 
 	/** {@inheritDoc} */
 	@Override
-	public void
-			addOperatorInstance(Class<? extends Genotype> genotypeType, Mutate<?> mutateOperator) {
+	public void addOperatorInstance(Class<? extends Genotype> genotypeType,
+			Mutate<?> mutateOperator) {
 		if(selectorForGenotype.get(genotypeType) == null) {
 			selectorForGenotype.put(genotypeType, new RoundRobinOperatorSelector());
 		}
 		OperatorUtil.addOperatorInstance(genotypeType, mutateOperator,
 				selectorForGenotype.get(genotypeType), binder(), getOperatorTypeLiteral());
-
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java
index 8c182671a68da8076d0f81a8b29586ea1a10e696..40f3faa457184e59a1e8e4f1303411d17311368d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java
@@ -30,7 +30,7 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5D1E5C8BEE5A641F2488ACAC50EA0AD7
+ * @ConQAT.Rating RED Hash: E57496C8DAA01405C14BC25FB891B36B
  */
 public class MutateChannelNumber<C> extends MutateSafetyArchBase<C> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java
index c629f1aa6b6b6ca557094c8ff53d493836f63555..69b0e8891009a10ddc7b601e58434e6df5536bf9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java
@@ -31,7 +31,7 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D579745244D294840600338F94EDD499
+ * @ConQAT.Rating RED Hash: 68DE5435A078310C3187F32C39AEF629
  */
 public class MutateConnectedDiagnosisPresent<C> extends MutateSafetyArchBase<C> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java
index 668a90a83546259ce516a6faee667400b8aacc46..49fae7bf0a0a2266d40d4998532b284cd7740ffb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java
@@ -33,7 +33,7 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4F060D6A5A435DDC2914C17EA33372F3
+ * @ConQAT.Rating RED Hash: 7FCF5518D97A47C58590789B74DF80ED
  */
 public abstract class MutateSafetyArchBase<C> extends MutateBase<SafetyFunctionArchEncoding<C>> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java
index e94615efd3d390f95009c7d210b36b2b5f876c5c..b317228c75bc678d5eed087120ac4ebf2ec498d6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java
@@ -32,7 +32,7 @@ import com.google.inject.Module;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D0C0552AD6F8171AED48FB05964ED74A
+ * @ConQAT.Rating RED Hash: D672A42F8B0E0CB7A166C0092B8B95CA
  */
 public class MutateSafetyFunctionArchitectureModule extends MutateOperatorModuleBase {
 	/** Representation of input system */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java
index d45d57d1bf16a4abc97ac53b4976e986f7f2f13e..e20e1054b374b03db469d696dd0ee61e022fb57d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java
@@ -31,7 +31,7 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3E543DF3CDC466AC759C826D5E0374EC
+ * @ConQAT.Rating RED Hash: 39213A7EE823E895B246664DAB083865
  */
 public class MutateSafetyTriggerSignalNumber<C> extends MutateSafetyArchBase<C> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java
index 735af97e5bc53b05fcc8cdf020b0790d6d5b6f96..5adf8f23a839133b34f23c804f89834e079c1638 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java
@@ -41,7 +41,7 @@ import org.opt4j.operators.mutate.Mutate;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C7CAC9AB38FE349AE20F6A81BF40E149
+ * @ConQAT.Rating RED Hash: C0C772FB0600C5FFD1AB80E7635A9E36
  */
 public class MutateTaskInstance
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java
index d6029a9d2914690fa30f0987adff57f1ca7a6175..25aab79a1dd1ad16755ea3c15b1c8524fa051c8c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java
@@ -37,7 +37,7 @@ import com.google.inject.Module;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F90DC38B06D5B858F25B31906E684DDD
+ * @ConQAT.Rating RED Hash: A35691096EA5E331A854BCAAC328C20A
  */
 public class MutateTaskInstanceModule extends MutateOperatorModuleBase {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java
index 32463e74299f30cf1546fabb28ee4ef1a8461013..83811a4708f2542a099be8feda93be35cc10d421 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java
@@ -37,10 +37,10 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B3D45AA858400837A1DF9216E5BC36B1
+ * @ConQAT.Rating RED Hash: 57E95817D65E433129AEF0CC11A04F9B
  */
-public class MutateAllocation<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>> extends
-		MutateTasksBase<S, T> {
+public class MutateAllocation<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
+		extends MutateTasksBase<S, T> {
 
 	/** Constructs a new allocation mutation operator for a given exploration run */
 	public MutateAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
@@ -100,7 +100,7 @@ public class MutateAllocation<S extends TaskMappingEntry, T extends TaskMappingE
 			IDeployableComponentAdapter<?> deployableComponent) throws ExplorationException {
 		// The assigned resources must be an indexed list, such that randomly determined allocations
 		// can be directly removed using a random number generator.
-		List<S> assignedResources = (List<S>)encoding.getMappingEntriesOf(deployableComponent);
+		List<S> assignedResources = encoding.getMappingEntriesOf(deployableComponent);
 		if(assignedResources.isEmpty()) {
 			return;
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java
index 0734a6691c01aacd86f6eb04929bd9cef3ba51fa..dc8f6aa9afaaf3ba2e732ef9474925cbe4bbdd63 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java
@@ -33,7 +33,7 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 1E3C0D12B2649275ABC0CE3B663351A0
+ * @ConQAT.Rating RED Hash: A6BFB8593C826A07693CB273D3577A2E
  */
 public abstract class MutateRedundancy<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends MutateTasksBase<S, T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java
index 3302999a7edfcee4022edcafdbafa8e958780e98..545a5ce612c59ce5f55927251dab17e4d0343458 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java
@@ -17,7 +17,7 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping;
 
-import java.util.Collection;
+import java.util.List;
 
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry;
@@ -30,7 +30,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 04A4E99964EE38F3954ECFD65A1FABC0
+ * @ConQAT.Rating RED Hash: F6F6AD70CD8A4BC9D1C3876D9C3A3789
  */
 public class MutateRedundancyDecrement<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends MutateRedundancy<S, T> {
@@ -44,7 +44,7 @@ public class MutateRedundancyDecrement<S extends TaskMappingEntry, T extends Tas
 	@Override
 	protected void mutate(T encoding, IDeployableComponentAdapter<?> deployableComponent,
 			int minReplicatation, int maxReplication) {
-		Collection<S> assignedResources = encoding.getMappingEntriesOf(deployableComponent);
+		List<S> assignedResources = encoding.getMappingEntriesOf(deployableComponent);
 		assert (assignedResources != null);
 
 		// Decrease redundancy: keep at least the minimum number of required deployments
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java
index e44985c21cad397834c7fc238af2ae73966296b8..d6f20f52c47036476d3cd8f151c9c72b2d4c5c5b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java
@@ -32,7 +32,7 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5EBABB34B023F162A628CD048A50E2B7
+ * @ConQAT.Rating RED Hash: 711FED961D96E5D8F42368FECA874ECA
  */
 public class MutateRedundancyIncrement<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends MutateRedundancy<S, T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java
index 3418b3dd756fd531e6554782231a8b8ed7c2c4f7..c8af9d7e4180d3a183fd37cb93c30c7bf33eb609 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java
@@ -34,7 +34,7 @@ import com.google.inject.Module;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F044290C11029BD1CFC6304985EBA82B
+ * @ConQAT.Rating RED Hash: 194BD37098F9831E6E02D36D7A9E092B
  */
 public class MutateTaskMappingModule extends MutateOperatorModuleBase {
 	/** Representation of input system */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java
index 5d918479d7ee8472bf774ff87e18931131917e88..2704c447e2b2b0381f52f2bcd5d34ac0323c355f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: ED87F7974E00D2AA380E05EDE65AD7C8
+ * @ConQAT.Rating RED Hash: AECD623B84E8B899B5A30E4774DA4636
  */
 public abstract class MutateTasksBase<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends MutateBase<T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IMultiSelectorOperatorModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IMultiSelectorOperatorModule.java
index 6d2ddae3654e931d4d16c3081e02c232e2278244..6005e4c778dd0e748175e3fd0a12e41aa4d865b4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IMultiSelectorOperatorModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IMultiSelectorOperatorModule.java
@@ -29,7 +29,7 @@ import org.opt4j.operators.OperatorModule;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F3541295A76D228E962F2C5E09FE3C17
+ * @ConQAT.Rating RED Hash: 097375C36BCCBAEAA7DD25A18D594877
  */
 public interface IMultiSelectorOperatorModule<O extends Operator<?>> {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IOperatorSelector.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IOperatorSelector.java
index 1e0587817f16617f18173deb1efdb5f887f816fa..5838948eeca554adf617a4f1e9e8b93dee39f0a7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IOperatorSelector.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/IOperatorSelector.java
@@ -29,7 +29,7 @@ import org.opt4j.operators.AbstractGenericOperator;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F20FAF60D6317E85A9B282C3144D3160
+ * @ConQAT.Rating RED Hash: DE3E74531167C41F8FF007676599165B
  */
 public interface IOperatorSelector {
 
@@ -49,5 +49,4 @@ public interface IOperatorSelector {
 	 * {@link OperatorSelectorPredicate#OperatorSelectorPredicate(Operator, IOperatorSelector)}.
 	 */
 	public abstract void register(Operator<?> operator);
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/ISelectorOperatorModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/ISelectorOperatorModule.java
index 56ae2ce0a97b7798dcea81545ccdaa1c6ea586fa..3dca8479951b47e9e9980f6d029f76d21a9f1be2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/ISelectorOperatorModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/ISelectorOperatorModule.java
@@ -28,7 +28,7 @@ import org.opt4j.operators.OperatorModule;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 42BBF35CB6965DDD2306F8C3067BA0CD
+ * @ConQAT.Rating RED Hash: 7E6C141236799E4FA0828A99A2D8D9AC
  */
 public interface ISelectorOperatorModule<O extends Operator<?>> {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorBase.java
index 60efa3e41659674b49ae10de3384dad84f455d9e..723c6c83301cce1b03229eb7722ada4345b36c5b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorBase.java
@@ -39,7 +39,7 @@ import org.opt4j.operators.AbstractGenericOperator;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 0689E596DB701109A2E14778906CE43A
+ * @ConQAT.Rating RED Hash: B6A705EEDD2826487247BEAE1B755D99
  */
 public abstract class OperatorSelectorBase implements IOperatorSelector {
 	/** Map: Operator -> 0-based index */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorPredicate.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorPredicate.java
index 2b45b167310c963a9ff57efd48c6af0ccd3d35b8..5aeb7acfece39a8ef058ecb40768086aad5f0cf3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorPredicate.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/OperatorSelectorPredicate.java
@@ -31,7 +31,7 @@ import org.opt4j.operators.AbstractGenericOperator.OperatorPredicate;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1F51DC0D8906904EF802F89A85E07DC5
+ * @ConQAT.Rating RED Hash: 7E2395C0700DC998A73A71F609F228A1
  */
 public class OperatorSelectorPredicate implements OperatorPredicate {
 	/** Operator whose selection is determined by this {@link OperatorSelectorPredicate}. */
@@ -61,7 +61,8 @@ public class OperatorSelectorPredicate implements OperatorPredicate {
 	 * {@link IOperatorSelector} object.
 	 */
 	public OperatorSelectorPredicate(Operator<?> operator,
-			ComposableOperatorClassPredicate genotypePredicate, IOperatorSelector operatorSelector) {
+			ComposableOperatorClassPredicate genotypePredicate,
+			IOperatorSelector operatorSelector) {
 		this.operator = operator;
 		this.genotypePredicate = genotypePredicate;
 		this.operatorSelector = operatorSelector;
@@ -79,5 +80,4 @@ public class OperatorSelectorPredicate implements OperatorPredicate {
 
 		return (geneMatch != null) ? (geneMatch && opMatch) : opMatch;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RandomOperatorSelector.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RandomOperatorSelector.java
index cf1196d6d57b2c3d8e12a2ff4b8cbe85f4311457..da965919e180b4e941763a8b83694aa7fa473ce3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RandomOperatorSelector.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RandomOperatorSelector.java
@@ -27,7 +27,7 @@ import org.opt4j.core.optimizer.Operator;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 6CF50A0DF6BC7FAD0AE17F2E24915321
+ * @ConQAT.Rating RED Hash: 34CE4F16434138D0DF2147E7A71CC0DE
  */
 public class RandomOperatorSelector extends OperatorSelectorBase {
 	/** Random generator */
@@ -54,5 +54,4 @@ public class RandomOperatorSelector extends OperatorSelectorBase {
 	protected void finalizeSelectionRoundInternal() {
 		currentOperator = rand.nextInt(operatorToIndexMap.size());
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RoundRobinOperatorSelector.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RoundRobinOperatorSelector.java
index a0dea8000a3a8cc03cfd0150c30ed00dcd21cdc1..5d411a5af4deb4ed1b4ee5061d0759f3336b62e9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RoundRobinOperatorSelector.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/selection/RoundRobinOperatorSelector.java
@@ -26,7 +26,7 @@ import org.opt4j.core.optimizer.Operator;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: FA30BC49FBE6CB59BAD642DDEC3AD865
+ * @ConQAT.Rating RED Hash: 3763E14FA05909AEA072F868B6474606
  */
 public class RoundRobinOperatorSelector extends OperatorSelectorBase {
 	/** Operator selected for the current round */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchExpSubDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchExpSubDecoder.java
index d4c776418ba39b07eb18b494aa66ef1a35c1b4fd..260c7f7b728cc86614dac79ee27bbb42dd5e4618 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchExpSubDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchExpSubDecoder.java
@@ -27,7 +27,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: BEB67D7B543BEE65B168FC93B75A73A4
+ * @ConQAT.Rating RED Hash: 3D22E7F33D861F29FD53A03A8C51E684
  */
 public interface ArchExpSubDecoder {
 	// Marker interface.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java
index 50ae6caab4b1f6390361c810bbe16d549fcf8af9..7d3e99f8f8a3b372209e7eb9f3be662c0088f481 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java
@@ -39,7 +39,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3DBF478ECB5D1D59961A3B57D28EE932
+ * @ConQAT.Rating RED Hash: 3A8C3057677972437CD31CB11BAB34B1
  */
 public class ArchitectureDecoder extends
 		CompositeDecoderBase<ArchitectureExplorationEncoding, ArchitectureSolution> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java
index a0d00f207d6ce2ed8da8b5afa24ba90d54ed472c..e18d6a7837c79dc19196ac0d08a7e28e9cc02e32 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java
@@ -37,7 +37,7 @@ import org.fortiss.af3.exploration.moea.model.DseSpecification;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 0E5505267317C1117CE01B50853BFC50
+ * @ConQAT.Rating RED Hash: DF257256D8BCA2D43CC3127E0423D5DA
  */
 public class ArchitectureExplorationProblemModule
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java
index 48c2e754768da513f1fbce06905d5e889e12c247..859be70c5aee05a7ae25eb8a35f49db8d05622de 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java
@@ -23,7 +23,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import org.apache.commons.lang.IllegalClassException;
 import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.CompositeDecoder;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.evaluate.ComposableEvaluator;
@@ -41,6 +40,7 @@ import org.fortiss.af3.exploration.model.ExplorationObjective;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
 import org.fortiss.af3.exploration.model.MOExplorationObjective;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
+import org.fortiss.af3.exploration.smt.model.SMTObjective;
 import org.opt4j.core.Objective;
 import org.opt4j.core.genotype.CompositeGenotype;
 import org.opt4j.core.problem.Evaluator;
@@ -53,7 +53,7 @@ import org.opt4j.core.problem.Evaluator;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 40E95589D9A42B5800E037497E51E2F6
+ * @ConQAT.Rating RED Hash: 999678964CBDFA6168700D3555370B3B
  */
 public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? extends ComposableGenotype>, ComposableGenotype>, P extends CompositePhenotype<?>, CD extends CompositeDecoder<C, P>>
 		extends CompositeProblemModuleBase<C, P, CD> {
@@ -102,6 +102,18 @@ public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? e
 			}
 		}
 
+		Collection<ExplorationObjective<?>> smtObjectives =
+				targets.stream().filter(t -> t instanceof SMTObjective)
+						.map(ExplorationObjective.class::cast).collect(Collectors.toList());
+		for(ExplorationObjective<?> currObjective : smtObjectives) {
+			if(!priorityMap.containsKey(currObjective.getClass())) {
+				@SuppressWarnings("unchecked") Class<? extends ExplorationTarget<?>> objectiveType =
+						(Class<? extends ExplorationTarget<?>>)currObjective.getClass();
+				priorityMap.put(objectiveType, currentConstrPrio);
+				currentConstrPrio++;
+			}
+		}
+
 		int objectivePrioOffset = currentConstrPrio;
 		Collection<ExplorationObjective<?>> objectives =
 				targets.stream().filter(t -> t instanceof ExplorationObjective<?>)
@@ -114,10 +126,13 @@ public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? e
 							(Class<? extends ExplorationTarget<?>>)currObjective.getClass();
 					priorityMap.put(objectiveType, objectivePrioOffset + objPrio);
 				}
-			} else {
-				throw new IllegalClassException(
-						"Objectives that are not MOExplorationObjectives are currently not supported by this backend.");
-			}
+			} /*
+				 * else {
+				 * throw new IllegalClassException(
+				 * "Objectives that are not MOExplorationObjectives are currently not supported by this backend."
+				 * );
+				 * }
+				 */
 		}
 
 		for(ExplorationTarget<?> target : targets) {
@@ -134,8 +149,7 @@ public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? e
 	 * 
 	 * @throws Exception
 	 */
-	protected
-			<RT, T extends ExplorationTarget<RT>, S extends ComposablePhenotype<?>, E extends ComposableEvaluator<S>>
+	protected <RT, T extends ExplorationTarget<RT>, S extends ComposablePhenotype<?>, E extends ComposableEvaluator<S>>
 			EvaluatorWrapper<?, RT, T> addGoalEvaluator(CompositeEvaluator<P> dseEvaluator, T goal,
 					int priority) throws Exception {
 		@SuppressWarnings("unchecked") EvaluatorWrapper<?, RT, T> wrappedEvaluator =
@@ -174,8 +188,8 @@ public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? e
 				} else {
 					throw new Exception();
 				}
-			} else if(!(ComposablePhenotype.class.isAssignableFrom(wrappedEvaluator
-					.getTargetPhenotypeType()))) {
+			} else if(!(ComposablePhenotype.class
+					.isAssignableFrom(wrappedEvaluator.getTargetPhenotypeType()))) {
 				// Otherwise, a "simple" goal evaluator is created
 				addEvaluator(wrappedEvaluator);
 			} else {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java
index c90d6700e6618002429c035fec0bcc7518550ba1..622da73cedd97493e9974d8bf985871b1ac02c17 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java
@@ -23,15 +23,22 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.evaluator.ArchExpSubEvaluator;
 import org.fortiss.af3.exploration.alg.dse.evaluator.ExplorationTargetEvaluatorBase;
+import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
 import org.fortiss.af3.exploration.dsl.model.MOEAExplorationExpression;
 import org.fortiss.af3.exploration.dsl.model.expressions.Expression;
 import org.fortiss.af3.exploration.dsl.model.operators.OptimizationDirection;
 import org.fortiss.af3.exploration.dsl.model.operators.OptimizationDirectionEnum;
+import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression;
+import org.fortiss.af3.exploration.dsl_v2.model.function.Maximize;
+import org.fortiss.af3.exploration.dsl_v2.model.function.Minimize;
+import org.fortiss.af3.exploration.model.ExplorationObjective;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
+import org.opt4j.core.DoubleValue;
 import org.opt4j.core.Objective;
 import org.opt4j.core.Objective.Sign;
 import org.opt4j.core.Objectives;
+import org.opt4j.core.Value;
 import org.opt4j.core.problem.Evaluator;
 
 import com.google.common.collect.ClassToInstanceMap;
@@ -43,7 +50,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 3C64B8316B0C8468C8FBD3CDF6941F91
+ * @ConQAT.Rating RED Hash: FF60522059CC98B16B0B8A3D80BB5D49
  */
 public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 		ArchExpSubEvaluator<P>, Evaluator<P> {
@@ -55,7 +62,7 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 	private IExplorationTargetEvaluator<P, RT, T> evaluator;
 
 	/** Goal specification */
-	private T goal;
+	private T explorationTarget;
 
 	/** Contains the priority of the {@link ExplorationTarget} of the {@link EvaluatorWrapper}. */
 	private int targetPriority;
@@ -70,12 +77,25 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 		// Construct EA objectives and register it in objective map. Do not give an
 		// "optimization direction" (min/max) in case of constraints. They default to minimization.
 		OptimizationDirectionEnum direction = OptimizationDirectionEnum.MIN;
+		// TODO: Remove after deprecation of the MoeaExpression. Check first to handle this special
+		// case.
 		if(goal instanceof MOEAExplorationExpression) {
 			Expression moExpr = ((MOEAExplorationExpression)goal).getMoeaExpression();
 			if(moExpr instanceof OptimizationDirection) {
 				direction = ((OptimizationDirection)moExpr).getOperator();
 			}
+		} else if(goal instanceof ExplorationObjective) {
+			// TODO: Reconsider the wrapping / passing to the ExpressionEvaluators. Probably, the
+			// evaluators only need to be aware of the systemModelAdapter and the exploration
+			// expression.
+			IExpression expr = goal.getExpression();
+			if(expr instanceof Minimize) {
+				direction = OptimizationDirectionEnum.MIN;
+			} else if(expr instanceof Maximize) {
+				direction = OptimizationDirectionEnum.MAX;
+			}
 		}
+
 		String objectiveName =
 				goal.getName() == null ? goal.getClass().toString() +
 						Integer.toString(goal.getId()) : goal.getName() +
@@ -84,7 +104,7 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 				new Objective(objectiveName, direction == OptimizationDirectionEnum.MIN ? Sign.MIN
 						: Sign.MAX);
 
-		this.goal = goal;
+		this.explorationTarget = goal;
 		this.evaluator = evaluator;
 		this.targetPriority = priority;
 		@SuppressWarnings("unchecked") Class<P> targetPhenotypeType = (Class<P>)primaryInputType;
@@ -106,9 +126,20 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 			ClassToInstanceMap<EObject> transformedModels) {
 		Objectives objectives = new Objectives();
 
+		// TODO: Do we really need the evalu
 		@SuppressWarnings("unchecked") P castedPhenotype = (P)phenotype;
-		objectives.add(objective,
-				evaluator.evaluateGoal(castedPhenotype, phenotypes, transformedModels));
+
+		Value<?> evalResult = new DoubleValue(Double.MAX_VALUE);
+		try {
+			evalResult = evaluator.evaluateGoal(castedPhenotype, phenotypes, transformedModels);
+		} catch(Exception e) {
+			// The Opt4J framework only allows us to throw runtime exceptions.
+			throw new RuntimeException(new ExplorationException("The evaluatior " +
+					this.toString() + " failed to evaluate the ExplorationTarget " +
+					explorationTarget.getName() + ".", e));
+		}
+
+		objectives.add(objective, evalResult);
 
 		return objectives;
 	}
@@ -120,7 +151,17 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 		assert (false);
 		Objectives objectives = new Objectives();
 
-		objectives.add(objective, evaluator.evaluateGoal(phenotype, null, null));
+		Value<?> evalResult = new DoubleValue(Double.MAX_VALUE);
+		try {
+			evalResult = evaluator.evaluateGoal(phenotype, null, null);
+		} catch(Exception e) {
+			// The Opt4J framework only allows us to throw runtime exceptions.
+			throw new RuntimeException(new ExplorationException("The evaluatior " +
+					this.toString() + " failed to evaluate the ExplorationTarget " +
+					explorationTarget.getName() + ".", e));
+		}
+
+		objectives.add(objective, evalResult);
 
 		return objectives;
 	}
@@ -128,7 +169,7 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements
 	/** Returns the type of the goal this evaluator is built for. */
 	@SuppressWarnings("unchecked")
 	public Class<T> getTargetType() {
-		return (Class<T>)goal.getClass();
+		return (Class<T>)explorationTarget.getClass();
 	}
 
 	/** Returns the underlying (actual) evaluator. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ExplorationGoalPriorityMultiEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ExplorationGoalPriorityMultiEvaluator.java
index 4b3965b18b02431f42cb5c6497eabe79e713fdb0..11fc05e880841a543ec68b78baacc11b71dcba1b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ExplorationGoalPriorityMultiEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ExplorationGoalPriorityMultiEvaluator.java
@@ -36,7 +36,7 @@ import com.google.inject.Provider;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 795807E67963B718BC0AAD530BB65629
+ * @ConQAT.Rating RED Hash: 22B82A2A194E1AC276EECF094BAF2E4F
  */
 public class ExplorationGoalPriorityMultiEvaluator extends MultiEvaluator {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ProblemModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ProblemModuleBase.java
index e7f7e062bb50add9513fc15075b2f69af5b48f30..23d407872c74a45121e02fc31d7f4ca10d54a846 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ProblemModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ProblemModuleBase.java
@@ -41,7 +41,7 @@ import com.google.inject.multibindings.Multibinder;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 8E674475C4D99A713B8346B7BD1B08F5
+ * @ConQAT.Rating RED Hash: DB64E6F1AAFB963A6FDA0B91F995040A
  */
 public abstract class ProblemModuleBase<G extends Genotype, R extends Creator<G>, D extends Decoder<G, ?>>
 		extends org.opt4j.core.problem.ProblemModule {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java
index fb1f77d23c136325b47eb30084b0b61db030144f..f0060c010ea2b500ff393c9e968eb690b3b05011 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java
@@ -46,7 +46,7 @@ import com.google.inject.Inject;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: DCAF53BE53DFBC899772D913124BF223
+ * @ConQAT.Rating RED Hash: C440850DACC98279C11EE14FBA06270F
  */
 public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ComposableDecoderBase<T, StrictTTSchedule<S, T>> implements ArchExpSubDecoder {
@@ -75,10 +75,8 @@ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends I
 		simpleEDFScheduler =
 				(EDFSchedulerBase<S, T>)tmFactory.createEDFScheduler(systemModelAdapter,
 						explorationDefinition.getTargetSpecification());
-		simpleBusScheduler =
-				new TDMABusScheduler<S, T>(systemModelAdapter,
-						explorationDefinition.getTargetSpecification());
-
+		simpleBusScheduler = new TDMABusScheduler<S, T>(systemModelAdapter,
+				explorationDefinition.getTargetSpecification());
 	}
 
 	/** {@inheritDoc} */
@@ -114,9 +112,8 @@ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends I
 	 *             see {@link ComposableDecoderBase}
 	 */
 	@Override
-	public StrictTTSchedule<S, T> updateComposable(T inGenotype,
-			StrictTTSchedule<S, T> outGenotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes)
-			throws DecodingException {
+	public StrictTTSchedule<S, T> updateComposable(T inGenotype, StrictTTSchedule<S, T> outGenotype,
+			FlatPhenotypeMap<Phenotype> decodedPhenotypes) throws DecodingException {
 		// Not required: The message encoding is a Phenotype only.
 		return null;
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
index 85f2026ecdff90eec23f56d98b4b05f13d9e00ec..b066ae2d484f73c83ab02f6509535c4ef66f2d72 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
@@ -51,7 +51,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: CC88FA7AA78A4CA44ECE52723336AF3B
+ * @ConQAT.Rating RED Hash: 1AFE09EC4655ABFD18208EC432F94EFD
  */
 public class MessageDecoder<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>> extends
 		ComposableDecoderBase<T, MessageEncoding<S, T>> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/AbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/AbstractTaskMappingDecoder.java
index db98582efde339b23eed20687962ac98a34f9490..4dae1825f7fe351488ac0424a438b9ddadfec4f6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/AbstractTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/AbstractTaskMappingDecoder.java
@@ -39,7 +39,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: CC1C65F250235568EF3A854EEC671521
+ * @ConQAT.Rating RED Hash: 2B7108C6BC3ED12670B0F1ADBA4581FE
  */
 public abstract class AbstractTaskMappingDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ComposableDecoderBase<AbstractTaskMappingEncoding, T> implements ArchExpSubDecoder {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FailSilentAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FailSilentAbstractTaskMappingDecoder.java
index c54288d352c942c2472333401506295973d0fd33..3fa3b26e5234835efa78c466f0bb6740982af6c7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FailSilentAbstractTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FailSilentAbstractTaskMappingDecoder.java
@@ -42,7 +42,7 @@ import org.fortiss.af3.exploration.moea.model.DseSpecification;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7CC06B7FB0D1C8532D086328B0759454
+ * @ConQAT.Rating RED Hash: FFF6DB78536966B06844B1EE6DE14032
  */
 public class FailSilentAbstractTaskMappingDecoder extends
 		AbstractTaskMappingDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FaultDetectionVotingAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FaultDetectionVotingAbstractTaskMappingDecoder.java
index c512c88db6adddbee29861afc3bc24f588348f1a..e942446625b831784eae92a2c6c8738311b81602 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FaultDetectionVotingAbstractTaskMappingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/FaultDetectionVotingAbstractTaskMappingDecoder.java
@@ -42,7 +42,7 @@ import org.opt4j.core.problem.Decoder;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 5E7E9C6D48A981289747E9A9AB800CC2
+ * @ConQAT.Rating RED Hash: A11EB549445EF79FAD86C627FB25FF6D
  */
 public class FaultDetectionVotingAbstractTaskMappingDecoder
 		extends
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 897f3bb5bcea7ed0d1a4707a556fa7a1f566faa9..d3ee1c1bddd7f68a899a20d85ddc44051a7398a4 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
@@ -39,6 +39,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAda
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.ChannelAdapterWeightedEdge;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraphInstantiator;
 
 import com.google.inject.Inject;
@@ -50,10 +51,9 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 2CABBE8D1AD73618A728B6B80A45D73C
+ * @ConQAT.Rating RED Hash: A2C6A36D1C4C25D1A0A5B465300F395C
  */
-public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEntry, C>
-		extends
+public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEntry, C> extends
 		ComposableDecoderBase<InstantiatedTaskMappingEncoding<T>, InstantiatedTaskGraphEncoding<T, C>> {
 
 	/** Representation of input system model */
@@ -80,9 +80,8 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 		Collection<DefaultTaskGraph> tgColl = atgEnc.getTaskGraphs();
 		TaskGraphInstantiator<DefaultTaskGraph> tgInstatiator =
 				new TaskGraphInstantiator<>(tgColl, genotype);
-		InstantiatedTaskGraphEncoding<T, C> itgEnc =
-				new InstantiatedTaskGraphEncoding<T, C>(systemModelAdapter,
-						tgInstatiator.createMultipleInstanceTaskGraphs(tgColl));
+		InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>(
+				systemModelAdapter, tgInstatiator.createMultipleInstanceTaskGraphs(tgColl));
 
 		if(sfEnc != null) {
 			removeInterSafetyChannelSignals(sfEnc, itgEnc);
@@ -110,7 +109,8 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 			// since we don't know which one was instantiated (or it would be more costly to find
 			// out).
 			DefaultTaskGraph sfTG = null;
-			for(IDeployableComponentAdapter<?> curSFCompAdp : sfCompAdp.getReplacementComponents()) {
+			for(IDeployableComponentAdapter<?> curSFCompAdp : sfCompAdp
+					.getReplacementComponents()) {
 				sfTG = itgEnc.getTaskGraphOf(curSFCompAdp);
 				if(sfTG != null) {
 					break;
@@ -121,35 +121,6 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 						" of the Component Adapter " + sfCompAdp.getName() + ".");
 			}
 
-			// TODO: Remove non-allowed communication using the commented out code below to obtain
-			// a more consistent and generic solution.
-			// for(InternalIsolatedCommunicationSet isoCommSet : genotype
-			// .getConstraintsOf(InternalIsolatedCommunicationSet.class)) {
-			// Collection<IMappingEntry> entries = isoCommSet.getIsolatedCommunicationSet();
-			// Collection<IDeployableComponentAdapter<?>> compAdps =
-			// map(entries, e -> e.getDeployableComponent());
-			// for(IMappingEntry entry : entries) {
-			// IMappingEntry instEntry = entry.getAssociatedElement().stream().findAny().get();
-			// IDeployableComponentAdapter<?> currComp = instEntry.getDeployableComponent();
-			// Collection<InternalIsolatedCommunicationSet> others =
-			// getOtherIsolationCommConstraints(genotype, entry);
-			// Collection<IDeployableComponentAdapter<?>> connComps =
-			// Graphs.successorListOf(sfTG.getGraph(), currComp);
-			// for(IDeployableComponentAdapter<?> connCompAdp : connComps) {
-			// if(isPartOfOtherIsolationCommConstraint(others, connCompAdp)) {
-			// sfTG.getGraph().removeEdge(currComp, connCompAdp);
-			// }
-			// }
-			//
-			// connComps = Graphs.predecessorListOf(sfTG.getGraph(), currComp);
-			// for(IDeployableComponentAdapter<?> connCompAdp : connComps) {
-			// if(isPartOfOtherIsolationCommConstraint(others, connCompAdp)) {
-			// sfTG.getGraph().removeEdge(connCompAdp, currComp);
-			// }
-			// }
-			// }
-			// }
-
 			Collection<IDeployableComponentAdapter<?>> connectedSFUnits = new ArrayList<>();
 			Collection<IDeployableComponentAdapter<?>> connectedDiagUnits = new ArrayList<>();
 			Collection<IDeployableComponentAdapter<?>> connectedOutUnit = new ArrayList<>();
@@ -209,76 +180,72 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt
 					}
 				}
 
-				for(IDeployableComponentAdapter<?> curSFUnit : realizingSFUnits) {
-					if(currentChannelSFUnit != curSFUnit) {
-						// Eliminate all other signals to different channels.
-						ChannelAdapterWeightedEdge interChannelSignal =
-								sfTG.getGraph().getEdge(currentChannelDiagUnit, curSFUnit);
-						sfTG.getGraph().removeEdge(interChannelSignal);
-						interChannelSignal =
-								sfTG.getGraph().getEdge(currentChannelOutputUnit, curSFUnit);
-						sfTG.getGraph().removeEdge(interChannelSignal);
-					}
-				}
-				for(IDeployableComponentAdapter<?> curDiagUnit : realizingDiagUnits) {
-					if(currentChannelDiagUnit != curDiagUnit) {
-						// Eliminate all other signals to different channels.
-						ChannelAdapterWeightedEdge interChannelSignal =
-								sfTG.getGraph().getEdge(currentChannelSFUnit, curDiagUnit);
-						sfTG.getGraph().removeEdge(interChannelSignal);
-						interChannelSignal =
-								sfTG.getGraph().getEdge(currentChannelOutputUnit, curDiagUnit);
-						sfTG.getGraph().removeEdge(interChannelSignal);
-					}
-				}
-				for(IDeployableComponentAdapter<?> curOutUnit : outComps) {
-					if(currentChannelOutputUnit != curOutUnit) {
-						// Eliminate all other signals to different channels.
-						ChannelAdapterWeightedEdge interChannelSignal =
-								sfTG.getGraph().getEdge(currentChannelSFUnit, curOutUnit);
-						sfTG.getGraph().removeEdge(interChannelSignal);
-						interChannelSignal =
-								sfTG.getGraph().getEdge(currentChannelDiagUnit, curOutUnit);
-						sfTG.getGraph().removeEdge(interChannelSignal);
-					}
-				}
+				updateTaskGraph(sfTG, realizingSFUnits, realizingDiagUnits, outComps,
+						currentChannelSFUnit, currentChannelDiagUnit, currentChannelOutputUnit);
 			}
 		}
 	}
 
-	// TODO: Remove non-allowed communication using the commented out code above and below to obtain
-	// a more consistent and generic solution.
-	// private Collection<InternalIsolatedCommunicationSet> getOtherIsolationCommConstraints(
-	// TaskMappingEncoding<?> encoding, IMappingEntry entry) {
-	// // TODO: here we use the knowledge that we have instantiated task mapping entries.
-	// IMappingEntry actualEntry = entry.getAssociatedElement(AbstractTaskMappingEntry.class);
-	//
-	// Collection<InternalIsolatedCommunicationSet> otherConstraints = new HashSet<>();
-	// Collection<InternalIsolatedCommunicationSet> isoComm =
-	// encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class);
-	// for(InternalIsolatedCommunicationSet constr : isoComm) {
-	// if(!constr.getIsolatedCommunicationSet().contains(actualEntry)) {
-	// otherConstraints.add(constr);
-	// }
-	// }
-	//
-	// return otherConstraints;
-	// }
-	//
-	// private boolean isPartOfOtherIsolationCommConstraint(
-	// Collection<InternalIsolatedCommunicationSet> other,
-	// IDeployableComponentAdapter<?> compAdp) {
-	// for(InternalIsolatedCommunicationSet constr : other) {
-	// for(IMappingEntry entry : constr.getIsolatedCommunicationSet()) {
-	// if(entry.getAssociatedElement().stream().findAny().get().getDeployableComponent() == compAdp)
-	// {
-	// return true;
-	// }
-	// }
-	// }
-	//
-	// return false;
-	// }
+	/**
+	 * Updates the given {@link DefaultTaskGraph} to match the number of channels.
+	 * 
+	 * @param sfTG
+	 *            {@link TaskGraph} containing the safety function instances.
+	 * @param realizingSFUnits
+	 *            {@link IDeployableComponentAdapter}s realizing the safety function's protection
+	 *            element.
+	 * @param realizingDiagUnits
+	 *            {@link IDeployableComponentAdapter}s realizing the safety function's diagnostic
+	 *            element.
+	 * @param outComps
+	 *            {@link IDeployableComponentAdapter}s realizing the safety function's output
+	 *            aggregation element, e.g., a voter.
+	 * @param currentChannelSFUnit
+	 *            {@link IDeployableComponentAdapter} of the currently processed protection element.
+	 * @param currentChannelDiagUnit
+	 *            {@link IDeployableComponentAdapter} of the currently processed diagnostic element.
+	 * @param currentChannelOutputUnit
+	 *            {@link IDeployableComponentAdapter} of the currently processed output aggregation
+	 *            element.
+	 */
+	private void updateTaskGraph(DefaultTaskGraph sfTG,
+			Collection<IDeployableComponentAdapter<?>> realizingSFUnits,
+			Collection<IDeployableComponentAdapter<?>> realizingDiagUnits,
+			Collection<IDeployableComponentAdapter<?>> outComps,
+			IDeployableComponentAdapter<?> currentChannelSFUnit,
+			IDeployableComponentAdapter<?> currentChannelDiagUnit,
+			IDeployableComponentAdapter<?> currentChannelOutputUnit) {
+		for(IDeployableComponentAdapter<?> curSFUnit : realizingSFUnits) {
+			if(currentChannelSFUnit != curSFUnit) {
+				// Eliminate all other signals to different channels.
+				ChannelAdapterWeightedEdge interChannelSignal =
+						sfTG.getGraph().getEdge(currentChannelDiagUnit, curSFUnit);
+				sfTG.getGraph().removeEdge(interChannelSignal);
+				interChannelSignal = sfTG.getGraph().getEdge(currentChannelOutputUnit, curSFUnit);
+				sfTG.getGraph().removeEdge(interChannelSignal);
+			}
+		}
+		for(IDeployableComponentAdapter<?> curDiagUnit : realizingDiagUnits) {
+			if(currentChannelDiagUnit != curDiagUnit) {
+				// Eliminate all other signals to different channels.
+				ChannelAdapterWeightedEdge interChannelSignal =
+						sfTG.getGraph().getEdge(currentChannelSFUnit, curDiagUnit);
+				sfTG.getGraph().removeEdge(interChannelSignal);
+				interChannelSignal = sfTG.getGraph().getEdge(currentChannelOutputUnit, curDiagUnit);
+				sfTG.getGraph().removeEdge(interChannelSignal);
+			}
+		}
+		for(IDeployableComponentAdapter<?> curOutUnit : outComps) {
+			if(currentChannelOutputUnit != curOutUnit) {
+				// Eliminate all other signals to different channels.
+				ChannelAdapterWeightedEdge interChannelSignal =
+						sfTG.getGraph().getEdge(currentChannelSFUnit, curOutUnit);
+				sfTG.getGraph().removeEdge(interChannelSignal);
+				interChannelSignal = sfTG.getGraph().getEdge(currentChannelDiagUnit, curOutUnit);
+				sfTG.getGraph().removeEdge(interChannelSignal);
+			}
+		}
+	}
 
 	/**
 	 * {@inheritDoc}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java
index ee84da1b09ba943b3c6b604fc3767acfe93f5578..7c40b2caa29c294e1c38ea979c80902432d039d4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java
@@ -42,7 +42,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 0B02396AF05E1BC519AA16A848BBD291
+ * @ConQAT.Rating RED Hash: 40DCEDA0CAD2CBC88189576F8F4EC089
  */
 public class InstantiatedTaskMappingDecoderAcyclic<T extends InstantiatedTaskMappingEntry, C>
 		extends
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFEncodingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFEncodingDecoder.java
index 8db7accac1118aead8a42867cb0b8aabe80a8ba1..83af065016bf4e32c11b109ee57d2236b5b1be9f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFEncodingDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFEncodingDecoder.java
@@ -36,7 +36,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchExpSubDecod
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 35F8CADA2BDF8313D268D04DD4D3B4AE
+ * @ConQAT.Rating RED Hash: D593D50BC45DD092931F3AA73FA628C0
  */
 public class SFEncodingDecoder<C> extends
 		ComposableDecoderBase<SafetyFunctionArchEncoding<C>, SafetyFunctionArchEncoding<C>>
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java
index 4744d74f8a83284ce4dea39faae045c6504bdb50..36abb475e79a2955ae19392efef74d79854e12d2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java
@@ -46,7 +46,7 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 45A6D4C10AD00BF2D6ED61F9117FE40C
+ * @ConQAT.Rating RED Hash: 0443FC28E6F94A9A6BA5ADA92F01BBFF
  */
 public class SFGraphDecoder<C> extends
 		ComposableDecoderBase<SafetyFunctionArchEncoding<C>, SafeTaskGraphEncoding<C>> implements
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java
index 6e47572c4846e1a45de240454ef9c8376051954d..0ff636fb38411b09bb124d2bca51b90e08689117 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java
@@ -44,11 +44,11 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 73B91D74FB8917858F69A78E9B98CE51
+ * @ConQAT.Rating RED Hash: FD352BE664B41E2CD4FBEC70BF56C81D
  */
-public class SFMappingConstraintDecoder<C> extends
-		ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding> implements
-		ConstraintGenerationDecoder {
+public class SFMappingConstraintDecoder<C>
+		extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding>
+		implements ConstraintGenerationDecoder {
 
 	// TODO: replace with a dynamic mechanism for the retrieval of deployable components.
 	/** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */
@@ -70,7 +70,8 @@ public class SFMappingConstraintDecoder<C> extends
 	/** {@inheritDoc} */
 	@Override
 	public AbstractTaskMappingEncoding updateComposable(SafetyFunctionArchEncoding<C> inGenotype,
-			AbstractTaskMappingEncoding outGenotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes) {
+			AbstractTaskMappingEncoding outGenotype,
+			FlatPhenotypeMap<Phenotype> decodedPhenotypes) {
 		Collection<IDeployableComponentAdapter<C>> deplComps = new HashSet<>();
 		deplComps.addAll(systemModelAdapter.getDeployableComponents());
 		for(SafetyFunctionArchEntry<C> sFAEntry : inGenotype.getAllEntries()) {
@@ -79,8 +80,8 @@ public class SFMappingConstraintDecoder<C> extends
 			Collection<InternalReplicationConstraint> replicationConstraints = new HashSet<>();
 			for(IDeployableComponentAdapter<?> comp : sFAEntry.getSafetyFunctionAdapter()
 					.getAllComponents()) {
-				replicationConstraints.add(new InternalReplicationConstraint(comp, channelNumber,
-						channelNumber));
+				replicationConstraints
+						.add(new InternalReplicationConstraint(comp, channelNumber, channelNumber));
 			}
 
 			outGenotype.replaceConstraints(InternalReplicationConstraint.class,
@@ -97,8 +98,8 @@ public class SFMappingConstraintDecoder<C> extends
 	 * Creates {@link InternalSeparationConstraint}s for the sets of realizing, diagnostic, and
 	 * output units of each safety function.
 	 */
-	private Collection<InternalSeparationConstraint> createSeparationConstraints(
-			SafetyFunctionArchEncoding<C> sfEnc) {
+	private Collection<InternalSeparationConstraint>
+			createSeparationConstraints(SafetyFunctionArchEncoding<C> sfEnc) {
 		Collection<InternalSeparationConstraint> sepConstraints = new HashSet<>();
 
 		for(SafetyFunctionArchEntry<C> sfEntry : sfEnc.getAllEntries()) {
@@ -109,8 +110,9 @@ public class SFMappingConstraintDecoder<C> extends
 					systemModelAdapter.getFaultContainmentRegion()));
 			sepConstraints.add(new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(),
 					systemModelAdapter.getFaultContainmentRegion()));
-			sepConstraints.add(new InternalSeparationConstraint(Arrays.asList(sfAdp
-					.getOutputComponent()), systemModelAdapter.getFaultContainmentRegion()));
+			sepConstraints
+					.add(new InternalSeparationConstraint(Arrays.asList(sfAdp.getOutputComponent()),
+							systemModelAdapter.getFaultContainmentRegion()));
 		}
 
 		return sepConstraints;
@@ -135,5 +137,4 @@ public class SFMappingConstraintDecoder<C> extends
 	public Class<? super AbstractTaskMappingEncoding> getOutputType() {
 		return AbstractTaskMappingEncoding.class;
 	}
-
 }
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 601de83cac42886a78fce1354920d40c8025fded..9951e5a55230a8bcdf1f41e447bb0ff03ee46f65 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
@@ -52,11 +52,11 @@ import com.google.inject.Inject;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 7126BAD300304543E77EE1F1F430A2C9
+ * @ConQAT.Rating RED Hash: F9AB4D996C8985AC1939B5FAD7D34721
  */
-public class SFMappingDecoder<C> extends
-		ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding> implements
-		ConstraintGenerationDecoder {
+public class SFMappingDecoder<C>
+		extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding>
+		implements ConstraintGenerationDecoder {
 
 	// TODO: replace with a dynamic mechanism for the retrieval of deployable components.
 	/** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */
@@ -140,9 +140,7 @@ public class SFMappingDecoder<C> extends
 				try {
 					addMissingDiagUnits(outGenotype, diagComps, entryNumber);
 				} catch(ExplorationException e) {
-					throw new DecodingException(
-							inGenotype,
-							this,
+					throw new DecodingException(inGenotype, this,
 							"Error adding diagnostic components to match the number of safety channels.",
 							e);
 				}
@@ -163,22 +161,20 @@ public class SFMappingDecoder<C> extends
 					outGenotype.putConstraint(InternalIsolatedCommunicationSet.class,
 							new InternalIsolatedCommunicationSet(createdEntries));
 				} catch(ExplorationException e) {
-					throw new DecodingException(
-							inGenotype,
-							this,
+					throw new DecodingException(inGenotype, this,
 							"Error adding safety components to match the number of safety channels.",
 							null);
 				}
 			}
-			List<InternalIsolatedCommunicationSet> isoCommSet =
-					new ArrayList<>(
-							outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class));
+			List<InternalIsolatedCommunicationSet> isoCommSet = new ArrayList<>(
+					outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class));
 			for(int i = entryNumber - 1; i > channelNumber; i--) {
 				Collection<IMappingEntry> rmEntries =
 						isoCommSet.get(i).getIsolatedCommunicationSet();
 
 				removeSFEntries(outGenotype, rmEntries);
-				removeMatchingConstraint(outGenotype, getFirst(rmEntries, (s) -> true).orElse(null));
+				removeMatchingConstraint(outGenotype,
+						getFirst(rmEntries, (s) -> true).orElse(null));
 			}
 
 			if(!diagPresent) {
@@ -201,9 +197,8 @@ public class SFMappingDecoder<C> extends
 	private void addMissingDiagUnits(AbstractTaskMappingEncoding outGenotype,
 			Collection<IDeployableComponentAdapter<C>> diagComps, int entryNumber)
 			throws ExplorationException {
-		List<InternalIsolatedCommunicationSet> isoComm =
-				new ArrayList<>(
-						outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class));
+		List<InternalIsolatedCommunicationSet> isoComm = new ArrayList<>(
+				outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class));
 		for(int i = 0; i < entryNumber; i++) {
 			Set<IMappingEntry> createdEntries = addSFComponents(outGenotype, diagComps);
 			InternalIsolatedCommunicationSet curConstr = isoComm.get(i);
@@ -224,7 +219,6 @@ public class SFMappingDecoder<C> extends
 				isoCommConstrs.forEach(c -> c.removeFromIsolatedCommunicationSet(removedEntries));
 			}
 		}
-
 	}
 
 	/**
@@ -307,5 +301,4 @@ public class SFMappingDecoder<C> extends
 	public Class<AbstractTaskMappingEncoding> getOutputType() {
 		return AbstractTaskMappingEncoding.class;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/AbstractTaskMappingIdentityDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/AbstractTaskMappingIdentityDecoder.java
index 6370f4d61c7fd2e3ef12e44cc3e4078f9ae5ea7d..50e8407f980ec62668042b8c3e7c0c1bfc9ee710 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/AbstractTaskMappingIdentityDecoder.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/AbstractTaskMappingIdentityDecoder.java
@@ -35,7 +35,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchExpSubDecod
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 72358BBDF71DA7EA959AA8B918D0589D
+ * @ConQAT.Rating RED Hash: 7405E05AC5D4882BCCD3C5259DF0DB37
  */
 public class AbstractTaskMappingIdentityDecoder extends
 		ComposableDecoderBase<AbstractTaskMappingEncoding, AbstractTaskMappingEncoding> implements
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java
index c4f063b2407ef97438df907c91bbb7a247944add..5f8ac50370cf7a2445b298285c566520aaaac5ea 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java
@@ -27,7 +27,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 068065BA3D7424C9DB4EC1549EA61C94
+ * @ConQAT.Rating RED Hash: 1C6AB865197AA02BD93923719CA17CC0
  */
 public abstract class RepairModuleBase<T extends Genotype> implements IRepairModule<T> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchExpSubSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchExpSubSolution.java
index a4256d47d40ef50758555ca2638243031ab4f381..f6644867e907836b50d67c62185ed51a0fd298a3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchExpSubSolution.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchExpSubSolution.java
@@ -26,7 +26,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: EA5730C42ED75FE5BA04B1D63AB10E5B
+ * @ConQAT.Rating RED Hash: 80ABC7AF9FE060F077DCE78F6C51AA76
  */
 public interface ArchExpSubSolution<S extends Genotype> extends ComposablePhenotype<S> {
 	// Marker interface.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchitectureSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchitectureSolution.java
index b333b390bda8a722f81168a4f08246b59a99b8bb..8a9054d7d0eb559b8d44890ae72ff1b406f49069 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchitectureSolution.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/ArchitectureSolution.java
@@ -33,7 +33,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: AB2E1D37257D6A2B673EA740B8287C9E
+ * @ConQAT.Rating RED Hash: 29EED7BB1B7BC04D5E8A35B8C849523D
  */
 // TODO: Check commonalities of this class with the FlatPhenotypeMap.
 // TODO: Check whether it would be beneficial to create a IExplorationSolutionBase Class.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IExplorationSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IExplorationSolution.java
index f8e3e6661f1304634cc73053707993cc8857187f..8cca2e43d2386f6a96913ed9e419ac5bed567e0f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IExplorationSolution.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IExplorationSolution.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: CA6625707A46825355CA3ED12C940CAB
+ * @ConQAT.Rating RED Hash: 8861F305866BC4C6516C0DEDD7F70EBE
  */
 public interface IExplorationSolution<P extends Phenotype> {
 
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 1ace185e1f22cb886609d842e89764fe722eb981..9f356a8ef5235e254b277e37f70fac3a48c420e2 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
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1C52DC8BE3A51C71F895C58091AC286C
+ * @ConQAT.Rating RED Hash: BEF13F6E4A66E4AE99F246EF71C20ED2
  */
 public interface IScheduleSolution<P extends Phenotype> extends IExplorationEncoding {
 
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 b655724e1fd6bbb7ecb0a684c4eb2d5ad6214fde..8507c5dad5b132e78325058643cb55dcf266b686 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
@@ -47,7 +47,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.ScheduleRuntimeExcepti
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 4226C4E0D8781333BA62329C6CA6293A
+ * @ConQAT.Rating RED Hash: 05D3AC94CC90DEE9B3BFDD0B76136A34
  */
 
 public class StrictTTSchedule<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/TimeSlot.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/TimeSlot.java
index 5b66b62eecb8d8b892d7fdc0c83f274ef3507707..b75217a31253ccf52baefb97f744ad4a221cd2de 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/TimeSlot.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/TimeSlot.java
@@ -34,7 +34,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 31A6A942AA3B8E0C8D441A6F5D2871D1
+ * @ConQAT.Rating RED Hash: 9F0AE9D9CDA6C6B5D507F9C5BC4D54DE
  */
 
 public class TimeSlot implements java.lang.Comparable<TimeSlot> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchExpSubEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchExpSubEvaluator.java
index 40ecaf1f25f95dc017f3590f3b5a0a6e1c858fde..6a401973e089f8ac5545c4b088ee0f476e62512c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchExpSubEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchExpSubEvaluator.java
@@ -25,7 +25,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C83BDB401B3009BC0D859A5E4FF5D3A8
+ * @ConQAT.Rating RED Hash: 226E6AB9A2A5AE259C8CBBB49906848F
  */
 public interface ArchExpSubEvaluator<P> extends ComposableEvaluator<P> {
 	// Marker interface.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExplorationTargetEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExplorationTargetEvaluatorBase.java
index cd99c94f93353eee7b8e5c0ca73fbe4186613f7f..06386b5e0e2ea2547ef4abd1735ac0670e2280e9 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExplorationTargetEvaluatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExplorationTargetEvaluatorBase.java
@@ -23,6 +23,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.exception.ExplorationException;
 import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
 import org.fortiss.af3.exploration.model.ExplorationConstraint;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
@@ -40,7 +41,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D88780841EF1C966921AC012DE64F562
+ * @ConQAT.Rating RED Hash: 082A732192F133686D806C91B08EDB34
  */
 public abstract class ExplorationTargetEvaluatorBase<P, RT, T extends ExplorationTarget<RT>>
 		implements IExplorationTargetEvaluator<P, RT, T> {
@@ -49,7 +50,7 @@ public abstract class ExplorationTargetEvaluatorBase<P, RT, T extends Exploratio
 	protected SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter;
 
 	/** Exploration goal evaluated by this evaluator */
-	protected T optTarget;
+	protected T explorationTarget;
 
 	/** Prototype constructor. */
 	protected ExplorationTargetEvaluatorBase() {
@@ -65,17 +66,12 @@ public abstract class ExplorationTargetEvaluatorBase<P, RT, T extends Exploratio
 	protected ExplorationTargetEvaluatorBase(
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, T optTarget) throws Exception {
 		this.systemModelAdapter = systemModelAdapter;
-		this.optTarget = optTarget;
+		this.explorationTarget = optTarget;
 
 		validateInputs();
 	}
 
-	/**
-	 * Wrapper method for the original evaluate function.
-	 * 
-	 * @param transformedModels
-	 *            TODO
-	 */
+	/** Wrapper method for the original evaluate function. */
 	public Value<?> evaluate(P phenotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
 			ClassToInstanceMap<EObject> transformedModels) {
 		if(phenotype == null) {
@@ -83,7 +79,15 @@ public abstract class ExplorationTargetEvaluatorBase<P, RT, T extends Exploratio
 		}
 		// TODO #checking: Add an check here to ensure that the evaluators don't mess around with
 		// the encodings.
-		Value<?> evalResult = evaluateGoal(phenotype, phenotypeTypeMap, transformedModels);
+		Value<?> evalResult = new DoubleValue(Double.MAX_VALUE);
+		try {
+			evalResult = evaluateGoal(phenotype, phenotypeTypeMap, transformedModels);
+		} catch(Exception e) {
+			// The Opt4J framework only allows us to throw runtime exceptions.
+			throw new RuntimeException(new ExplorationException("The evaluatior " +
+					this.toString() + " failed to evaluate the ExplorationTarget " +
+					explorationTarget.getName() + ".", e));
+		}
 		return evalResult;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd24572f3bb9147a564122320a074f277d7818f0
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
@@ -0,0 +1,128 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2017 fortiss GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.evaluator;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.exception.ExplorationException;
+import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
+import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression;
+import org.fortiss.af3.exploration.lang.ExplorationExpressionEvaluator;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
+import org.fortiss.af3.exploration.model.ExplorationTargetExpression;
+import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem;
+import org.fortiss.tooling.kernel.introspection.IIntrospectionItem;
+import org.opt4j.core.DoubleValue;
+import org.opt4j.core.Value;
+
+import com.google.common.collect.ClassToInstanceMap;
+
+/**
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: E9F263EB7D73B2B6DC00CC835F1B9ADB
+ */
+public abstract class ExpressionEvaluatorBase<P extends Phenotype, RT, T extends ExplorationTarget<RT>>
+		extends ExplorationExpressionEvaluator implements IExplorationTargetEvaluator<P, RT, T> {
+
+	/** Representation of system model */
+	protected SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter;
+
+	/** Exploration goal evaluated by this evaluator */
+	protected T explorationTarget;
+
+	/** DSML expression defining the evaluation to be performed. */
+	protected IExpression expression;
+
+	/** Prototype constructor. */
+	protected ExpressionEvaluatorBase() {
+	}
+
+	/**
+	 * Creates an evaluator for a given exploration goal
+	 * 
+	 * @throws Exception
+	 *             if the input validation fails (has to be implemented by the concrete
+	 *             {@link ExplorationTarget} evaluators.
+	 */
+	protected ExpressionEvaluatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+			T explorationTarget) throws Exception {
+		if(!(explorationTarget instanceof ExplorationTargetExpression<?>)) {
+			throw new Exception("The exploration target " + explorationTarget.getName() + " is" +
+					" not of the ExplorationTargetExpression. Thus, it cannot be evaluated by " +
+					getClass().getSimpleName() + ".");
+		}
+
+		this.systemModelAdapter = systemModelAdapter;
+		this.explorationTarget = explorationTarget;
+		this.expression = explorationTarget.getExpression();
+
+		validateInputs();
+	}
+
+	/** Wrapper method for the original evaluate function. */
+	public Value<?> evaluate(P phenotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
+			ClassToInstanceMap<EObject> transformedModels) {
+		if(phenotype == null) {
+			return new DoubleValue(Double.MAX_VALUE);
+		}
+		// TODO #checking: Add an check here to ensure that the evaluators don't mess around with
+		// the encodings.
+		Value<?> evalResult = new DoubleValue(Double.MAX_VALUE);
+		try {
+			evalResult = evaluateGoal(phenotype, phenotypeTypeMap, transformedModels);
+		} catch(Exception e) {
+			// The Opt4J framework only allows us to throw runtime exceptions.
+			throw new RuntimeException(new ExplorationException("The evaluatior " +
+					this.toString() + " failed to evaluate the ExplorationTarget " +
+					explorationTarget.getName() + ".", e));
+		}
+		return evalResult;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String getIntrospectionLabel() {
+		return getClass().getSimpleName();
+	}
+
+	// TODO: Add the introspection information.
+	/** {@inheritDoc} */
+	@Override
+	public boolean showInIntrospectionNavigation() {
+		return true;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Collection<IIntrospectionItem> getIntrospectionItems() {
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public IIntrospectionDetailsItem getDetailsItem() {
+		return null;
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ITopLevelEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ITopLevelEvaluator.java
index 9f19734412c3e6f0f7de331b7069840759e8950c..a725426635f94b39d9a5667efcb103f397012ccf 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ITopLevelEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ITopLevelEvaluator.java
@@ -27,7 +27,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4C184FA2E6CB51AF82E6ED76D335E0DC
+ * @ConQAT.Rating RED Hash: 6DC462263531029626D77BC230F49BE1
  */
 public interface ITopLevelEvaluator {
 	// Marker interface.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/MappingEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/MappingEvaluator.java
new file mode 100644
index 0000000000000000000000000000000000000000..5eb2581b92d354fb7745f5f6843e6d9990d12470
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/MappingEvaluator.java
@@ -0,0 +1,125 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2017 fortiss GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.evaluator;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding;
+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;
+import org.fortiss.af3.exploration.dsl_v2.model.booleanp.Implies;
+import org.fortiss.af3.exploration.dsl_v2.model.booleanp.allocation.Allocation;
+import org.fortiss.af3.exploration.dsl_v2.model.booleanp.allocation.Dislocation;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
+import org.fortiss.tooling.base.model.element.IModelElement;
+
+/**
+ * An expression evaluator which is able to handle the location operators and the internal mapping
+ * representation.
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 0340CA212CF3BAE019B7FB369F2888EE
+ */
+public abstract class MappingEvaluator
+		extends ExpressionEvaluatorBase<MappingEncoding, Double, ExplorationTarget<Double>> {
+
+	/** Reference to the mapping which shall be evaluated here. */
+	protected MappingEncoding mapping;
+
+	/** Empty prototype constructor. */
+	public MappingEvaluator() {
+		super();
+	}
+
+	/** Constructor. */
+	public MappingEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+			ExplorationTarget<Double> explorationTarget) throws Exception {
+		super(systemModelAdapter, explorationTarget);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Allocation alloc) throws Exception {
+		// TODO: Here, we could use the requester / resource framework for the return types. In
+		// addition we would obtain a generic mapping evaluator.
+		IModelElement requester = alloc.getLeft().accept(this, IModelElement.class);
+		IModelElement resource = alloc.getRight().accept(this, IModelElement.class);
+
+		IRequestAdapter<?> requestAdp = systemModelAdapter.getDeployableComponentOf(requester);
+
+		Collection<IResourceAdapter<?>> allocResourceAdps =
+				mapping.getAllocatedResourcesFor(requestAdp);
+		for(IResourceAdapter<?> allocResource : allocResourceAdps) {
+			if(allocResource.getObject() == resource) {
+				return Boolean.valueOf(true);
+			}
+		}
+
+		return Boolean.valueOf(false);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Dislocation disLoc) throws Exception {
+		IModelElement requester = disLoc.getLeft().accept(this, IModelElement.class);
+		IModelElement resource = disLoc.getRight().accept(this, IModelElement.class);
+
+		IRequestAdapter<?> requestAdp = systemModelAdapter.getDeployableComponentOf(requester);
+
+		Collection<IResourceAdapter<?>> allocResourceAdps =
+				mapping.getAllocatedResourcesFor(requestAdp);
+		for(IResourceAdapter<?> allocResource : allocResourceAdps) {
+			if(allocResource.getObject() == resource) {
+				return Boolean.valueOf(false);
+			}
+		}
+
+		return Boolean.valueOf(true);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Implies implies) throws Exception {
+		// FIXME: How to implement implies?
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean validateInputs() throws Exception {
+		return true;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Collection<Class<?>> getRequiredInputTypes() {
+		Collection<Class<?>> requiredTypes = new ArrayList<>();
+		requiredTypes.add(MappingEncoding.class);
+		return requiredTypes;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Class<?> getPrimaryInputType() {
+		return MappingEncoding.class;
+	}
+}
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 9374ec407fa0fc8fb5d42516c5651a2d2c5d8df4..4219c4acaac8faa5514fc95b8465daafe8abf5d6 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
@@ -49,7 +49,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: DCFC61B150B0DE35C808242C1D743496
+ * @ConQAT.Rating RED Hash: 8B04BA6CAB4F08B0AEDDA9D8B750D6B7
  */
 // TODO: Register this evaluator for AstractTaskMappings.
 public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
@@ -67,8 +67,8 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 	public DoubleValue evaluateGoal(T phenotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
 			ClassToInstanceMap<EObject> transformedModels) {
 		for(IMappingEntry mappingEntry : phenotype.getIMappingEntries()) {
-			if(optTarget.getAllRightMultiLocationModelElements().contains(
-					mappingEntry.getDeployableComponent().getObject())) {
+			if(explorationTarget.getAllRightMultiLocationModelElements()
+					.contains(mappingEntry.getDeployableComponent().getObject())) {
 				return new DoubleValue(Double.MAX_VALUE);
 			}
 		}
@@ -85,19 +85,19 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 	 */
 	@Override
 	public boolean validateInputs() throws Exception {
-		if(optTarget.getComponent() == null ||
-				systemModelAdapter.getDeployableComponentOf(optTarget.getComponent()) == null) {
+		if(explorationTarget.getComponent() == null || systemModelAdapter
+				.getDeployableComponentOf(explorationTarget.getComponent()) == null) {
 			throw new Exception("The referenced component of the dislocation constraint " +
-					optTarget.getName() + "(id: " + optTarget.getId() +
+					explorationTarget.getName() + "(id: " + explorationTarget.getId() +
 					") is not correctly specified." +
 					" Either it is missing, or not part of the set of deployable components.");
 		}
 
-		if(optTarget.getExecutionUnits().isEmpty() ||
+		if(explorationTarget.getExecutionUnits().isEmpty() ||
 				!mapInOut(systemModelAdapter.getDeploymentTargets(), t -> t.getObject(),
-						ArrayList::new).containsAll(optTarget.getExecutionUnits())) {
+						ArrayList::new).containsAll(explorationTarget.getExecutionUnits())) {
 			throw new Exception("The referenced execution unit of the dislocation constraint " +
-					optTarget.getName() + "(id: " + optTarget.getId() +
+					explorationTarget.getName() + "(id: " + explorationTarget.getId() +
 					") is not correctly specified." +
 					" Either it is missing, or not part of the set of deployment targets.");
 		}
@@ -107,7 +107,8 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 
 	/** {@inheritDoc} */
 	@Override
-	public boolean validateInternal(ExplorationConstraint<?> expTarget, T solution, Value<?> value) {
+	public boolean validateInternal(ExplorationConstraint<?> expTarget, T solution,
+			Value<?> value) {
 		Component constrComp = ((ComponentMultiAllocationConstraint)expTarget).getComponent();
 
 		Collection<IMappingEntry> entries = new ArrayList<>();
@@ -117,7 +118,6 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 				entries.add(mappingEntry);
 			} else if(compAdp.isInstantiation() &&
 					compAdp.getReplacedComponent().getObject() == constrComp) {
-				// CompocompAdp.getReplacedComponent().getObject();
 				entries.add(mappingEntry);
 			}
 		}
@@ -127,8 +127,8 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 		}
 
 		for(IMappingEntry entry : entries) {
-			if(!((ComponentMultiAllocationConstraint)expTarget).getExecutionUnits().contains(
-					entry.getTarget().getObject())) {
+			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/ComponentMultiDislocationConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiDislocationConstraintEvaluator.java
index 6aec895d026b46fd16f98e57fddbdbacf5ad7da5..008aeb4cbb17656dd91caff07c9bdc0f3f7788a6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiDislocationConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiDislocationConstraintEvaluator.java
@@ -46,7 +46,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: ABC9A0A3E83AE32E03E9451A8729C77C
+ * @ConQAT.Rating RED Hash: F515C13FCF10224B96BC3504A9493BC6
  */
 // TODO: Register this evaluator for AstractTaskMappings.
 public class ComponentMultiDislocationConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
@@ -77,19 +77,19 @@ public class ComponentMultiDislocationConstraintEvaluator<S extends Instantiated
 	 */
 	@Override
 	public boolean validateInputs() throws Exception {
-		if(optTarget.getComponent() == null ||
-				systemModelAdapter.getDeployableComponentOf(optTarget.getComponent()) == null) {
+		if(explorationTarget.getComponent() == null ||
+				systemModelAdapter.getDeployableComponentOf(explorationTarget.getComponent()) == null) {
 			throw new Exception("The referenced component of the dislocation constraint " +
-					optTarget.getName() + "(id: " + optTarget.getId() +
+					explorationTarget.getName() + "(id: " + explorationTarget.getId() +
 					") is not correctly specified." +
 					" Either it is missing, or not part of the set of deployable components.");
 		}
 
-		if(optTarget.getExecutionUnits().isEmpty() ||
+		if(explorationTarget.getExecutionUnits().isEmpty() ||
 				!mapInOut(systemModelAdapter.getDeploymentTargets(), t -> t.getObject(),
-						ArrayList::new).containsAll(optTarget.getExecutionUnits())) {
+						ArrayList::new).containsAll(explorationTarget.getExecutionUnits())) {
 			throw new Exception("The referenced execution unit of the dislocation constraint " +
-					optTarget.getName() + "(id: " + optTarget.getId() +
+					explorationTarget.getName() + "(id: " + explorationTarget.getId() +
 					") is not correctly specified." +
 					" Either it is missing, or not part of the set of deployment targets.");
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ConstraintEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ConstraintEvaluatorBase.java
index b4008725e3468712a1ea5401606dfa4bf435fbf0..5cd0d9dbc0ba3d5221995718c1fd3732f3549e43 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ConstraintEvaluatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ConstraintEvaluatorBase.java
@@ -30,7 +30,7 @@ import org.opt4j.core.problem.Evaluator;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 00ED0D9712C2665804E6E3C809151A63
+ * @ConQAT.Rating RED Hash: 0B434E33B9C4DB5CAB207D4F382ED1B2
  */
 public abstract class ConstraintEvaluatorBase<P extends Phenotype, RT, T extends ExplorationConstraint<RT>>
 		extends ExplorationTargetEvaluatorBase<P, RT, T> implements IConstraintEvaluator<P, RT, T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/DeadlineConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/DeadlineConstraintEvaluator.java
index 64111106dd9c847553f1b24d4af47b61ff7379e0..53639ffd86a62ec707cf2af0222ca32ff96bbbdf 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/DeadlineConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/DeadlineConstraintEvaluator.java
@@ -50,7 +50,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 5FF34C26ED6ADE0E046B80DD866B71EF
+ * @ConQAT.Rating RED Hash: CC305857496D18F71932E80CF4D14AB4
  */
 public class DeadlineConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ConstraintEvaluatorBase<StrictTTSchedule<S, T>, Double, DeadlineConstraint> {
@@ -79,17 +79,17 @@ public class DeadlineConstraintEvaluator<S extends InstantiatedTaskMappingEntry,
 
 		sourceDeployableComponent.add(systemModelAdapter.getDeployableComponentOf(optGoal
 				.getStartComponent()));
-		targetDeployableComponent.add(systemModelAdapter.getDeployableComponentOf(optTarget
+		targetDeployableComponent.add(systemModelAdapter.getDeployableComponentOf(explorationTarget
 				.getEndComponent()));
 
-		deadline = optTarget.getDeadline();
+		deadline = explorationTarget.getDeadline();
 
 		// TODO: AD: The cast to the AF3 systemmodeladapter breaks the abstration the goals. It
 		// would be rather required to define the source and sink components as
 		// IDeployableComponents in the ecore model. The transformation from AF3 components to the
 		// IDeployableCompontes should be done when the data from the GUI is written to the model.
 		IDeployableComponentAdapter<?> origStartComponent =
-				((AF3SystemModelAdapter)systemModelAdapter).getDeployableComponentAdapter(optTarget
+				((AF3SystemModelAdapter)systemModelAdapter).getDeployableComponentAdapter(explorationTarget
 						.getStartComponent());
 		if(origStartComponent.isInstantiation()) {
 			sourceDeployableComponent.add(origStartComponent);
@@ -98,7 +98,7 @@ public class DeadlineConstraintEvaluator<S extends InstantiatedTaskMappingEntry,
 		}
 
 		IDeployableComponentAdapter<?> origTargetComponent =
-				((AF3SystemModelAdapter)systemModelAdapter).getDeployableComponentAdapter(optTarget
+				((AF3SystemModelAdapter)systemModelAdapter).getDeployableComponentAdapter(explorationTarget
 						.getEndComponent());
 		if(origStartComponent.isInstantiation()) {
 			targetDeployableComponent.add(origTargetComponent);
@@ -170,8 +170,8 @@ public class DeadlineConstraintEvaluator<S extends InstantiatedTaskMappingEntry,
 	public boolean validateInputs() {
 		// TODO: AD: is this check really required here? Shouldn't this be done by the
 		// inputvalidator?
-		if(optTarget.getStartComponent() == null || optTarget.getEndComponent() == null ||
-				optTarget.getDeadline() <= 0) {
+		if(explorationTarget.getStartComponent() == null || explorationTarget.getEndComponent() == null ||
+				explorationTarget.getDeadline() <= 0) {
 			return false;
 		}
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/IConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/IConstraintEvaluator.java
index 2d81b283a1c43f95090ed68cd120cfe0f3229731..6ee14f880fa01f550853944db2a5c1b78797290b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/IConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/IConstraintEvaluator.java
@@ -29,7 +29,7 @@ import org.opt4j.core.problem.Evaluator;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 78D9D28E5DDB7FE8AC17A6CC1E19F364
+ * @ConQAT.Rating RED Hash: 80C2AAB7C0FE278EF7459453A884BBA9
  */
 public interface IConstraintEvaluator<P, RT, T extends ExplorationConstraint<RT>> {
 
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
new file mode 100644
index 0000000000000000000000000000000000000000..f31af5f2801bb4c34372d31964680f42231608db
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java
@@ -0,0 +1,118 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2017 fortiss GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.evaluator.constraint;
+
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding;
+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.MappingEvaluator;
+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;
+import org.fortiss.af3.exploration.dsl_v2.model.function.Minimize;
+import org.fortiss.af3.exploration.model.ExplorationConstraint;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
+import org.opt4j.core.IntegerValue;
+import org.opt4j.core.Value;
+
+import com.google.common.collect.ClassToInstanceMap;
+
+/**
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 00CE729931755B0423D57E26FAA2E4C1
+ */
+public class MappingEvaluatorConstraint extends MappingEvaluator
+		implements IConstraintEvaluator<MappingEncoding, Boolean, ExplorationConstraint<Boolean>> {
+
+	/** Prototype constructor. */
+	public MappingEvaluatorConstraint() {
+	}
+
+	/**
+	 * Constructor for execution: Defines the systemModelAdapter abstraction and the
+	 * {@link ExplorationTarget} to evaluate.
+	 */
+	public MappingEvaluatorConstraint(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+			ExplorationTarget<Double> explorationTarget) throws Exception {
+		super(systemModelAdapter, explorationTarget);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Value<?> evaluateGoal(MappingEncoding phenotype,
+			FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
+			ClassToInstanceMap<EObject> transformedModels) {
+		mapping = phenotype;
+
+		Boolean retVal = null;
+		// FIXME: pass parsing exception to upper layers.
+		try {
+			retVal = expression.accept(this, Boolean.class);
+		} catch(Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			return new IntegerValue(Integer.MIN_VALUE);
+		}
+
+		// TODO Auto-generated method stub
+		return new IntegerValue(retVal == true ? 1 : 0);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Maximize max) throws Exception {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Minimize min) throws Exception {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public IExplorationTargetEvaluator<MappingEncoding, Double, ExplorationTarget<Double>>
+			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+					ExplorationTarget<Double> explorationTarget)
+					throws InstantiationException, Exception {
+		return new MappingEvaluatorConstraint(systemModelAdapter, explorationTarget);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public <M> boolean validate(ExplorationConstraint<?> expTarget, M solution,
+			Class<M> solutionType, Value<?> value) {
+		// FIXME: For porting
+		if(value == null) {
+			return true;
+		}
+
+		Double evalValue = value.getDouble();
+		if(evalValue > 0.0) {
+			return false;
+		}
+		return true;
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/PeriodConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/PeriodConstraintEvaluator.java
index 3fc196ebe70b818c9e993e630ad3ad5e4fc6aeb0..b8e075706c885affbba5701300f4b7ce9e05105f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/PeriodConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/PeriodConstraintEvaluator.java
@@ -49,7 +49,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B61EF5F65C7BCE908207CE4FD3DC3ED5
+ * @ConQAT.Rating RED Hash: 032C0F97466EE71EF882E2C6F00EE2E7
  */
 public class PeriodConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ConstraintEvaluatorBase<StrictTTSchedule<S, T>, Double, PeriodConstraint> {
@@ -85,7 +85,8 @@ public class PeriodConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T
 			TaskGraph taskGraph = itgEnc.getTaskGraphOf(deployableComponent);
 			// we need to check each iteration in the hyper period
 			if(taskGraph != null) {
-				for(int i = 0; i < systemModelAdapter.getHyperPeriod() / taskGraph.getPeriod(); i++) {
+				for(int i = 0; i < systemModelAdapter.getHyperPeriod() /
+						taskGraph.getPeriod(); i++) {
 					double periodEnd = (i + 1) * taskGraph.getPeriod();
 					double end = schedule.getLastEndTime(deployableComponent, i);
 					if(end > periodEnd) {
@@ -108,7 +109,8 @@ public class PeriodConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T
 	@Override
 	public boolean validateInputs() throws Exception {
 		// Each deployable component has a period.
-		for(IDeployableComponentAdapter<?> component : systemModelAdapter.getDeployableComponents()) {
+		for(IDeployableComponentAdapter<?> component : systemModelAdapter
+				.getDeployableComponents()) {
 			if(component.getTimingRequirementPeriod() == null) {
 				throw new Exception("The component " + component.getName() +
 						" has no period specified. Each component that shall be considered" +
@@ -118,7 +120,8 @@ public class PeriodConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T
 		}
 
 		// Check WCETs of each component/execution unit combination.
-		for(IDeployableComponentAdapter<?> component : systemModelAdapter.getDeployableComponents()) {
+		for(IDeployableComponentAdapter<?> component : systemModelAdapter
+				.getDeployableComponents()) {
 			for(IExecutionUnitAdapter<?> execUnit : systemModelAdapter.getDeploymentTargets()) {
 				if(component.getWcet(execUnit) == null) {
 					throw new Exception("The combination of the component " + component.getName() +
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 9056de2dcd5537ba225401f48ed93b2b38f025bb..65b98a73f04722673cc8accf9c4714786bad9f17 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
@@ -55,7 +55,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: EFAD8CF49AEA47FF284FAA505216E3FA
+ * @ConQAT.Rating RED Hash: DCFC97CEFE58C3184FF07F8435EB1EB4
  */
 public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends ConstraintEvaluatorBase<T, SIL, SafetyIntegrityLevelConstraint> {
@@ -84,7 +84,7 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM
 		Map<IDeployableComponentAdapter<?>, Collection<S>> allocationMap =
 				mapping.getAllocationMap();
 		List<IDeployableComponentAdapter<?>> silComponents = getSILComponentAdapters();
-		List<SIL> silBounds = optTarget.getLimitation();
+		List<SIL> silBounds = explorationTarget.getLimitation();
 		for(int idx = 0; idx < silComponents.size(); idx++) {
 			SIL actualSIL = detectSIL(silComponents.get(idx), allocationMap);
 			if(actualSIL.getValue() < silBounds.get(idx).getValue()) {
@@ -108,7 +108,8 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM
 	private List<IDeployableComponentAdapter<?>> getSILComponentAdapters() {
 		Collection<IDeployableComponentAdapter<?>> deplComp =
 				castToRawColl(systemModelAdapter.getDeployableComponents());
-		return deplComp.stream().filter(c -> optTarget.getComponents().contains(c))
+		return deplComp.stream()
+				.filter(c -> explorationTarget.getComponents().contains(c.getObject()))
 				.collect(Collectors.toList());
 	}
 
@@ -123,7 +124,7 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM
 		Map<IDeployableComponentAdapter<?>, Collection<S>> allocationMap =
 				mapping.getAllocationMap();
 		List<IDeployableComponentAdapter<?>> silComponents = getSILComponentAdapters();
-		List<SIL> silBounds = optTarget.getLimitation();
+		List<SIL> silBounds = explorationTarget.getLimitation();
 		for(int idx = 0; idx < silComponents.size(); idx++) {
 			SIL actualSIL = detectSIL(silComponents.get(idx), allocationMap);
 			silViolations.add(calculateSILViolation(silBounds.get(idx), actualSIL));
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 5332e9bc914f050877631027f91ad5df25fbea33..3fb81c5b988c6eb21bac1ead4a9b49fb007ff816 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
@@ -48,7 +48,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 22A0CB4CE45AAD148AB6234873859C4A
+ * @ConQAT.Rating RED Hash: 8ED9AAE58C86441161E642DC30FE526A
  */
 public class EnergyObjectiveEvaluator<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>>
 		extends ExplorationTargetEvaluatorBase<StrictTTSchedule<S, T>, Double, EnergyMinObjective> {
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 4d8de168fcc3ab31c16341c664eeee431da0307c..47bc95f54b6f047be270e6ca85630e73e7529127 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
@@ -37,7 +37,7 @@ import org.fortiss.af3.exploration.moea.model.predefined.FailureType;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 6BBBF52FB22B53051771801FE87CAFB9
+ * @ConQAT.Rating RED Hash: 64B2599A4B72C4B93EEA66D461531DE9
  */
 public class FailSilentReliabilityEvaluator extends
 		ReliabilityEvaluatorBase<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
@@ -80,7 +80,6 @@ public class FailSilentReliabilityEvaluator extends
 					// ASSUMPTIN: fail-silence
 					taskFailureRate = taskFailureRate.multiply(fr);
 				}
-
 			}
 			// the overall application succeeds only if all of its tasks succeed
 			Apfloat taskSuccRate = one.subtract(taskFailureRate);
@@ -107,8 +106,7 @@ public class FailSilentReliabilityEvaluator extends
 
 	/** {@inheritDoc} */
 	@Override
-	public
-			IExplorationTargetEvaluator<StrictTTSchedule<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>, Double, FailureMinObjective>
+	public IExplorationTargetEvaluator<StrictTTSchedule<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>, Double, FailureMinObjective>
 			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					FailureMinObjective explorationTarget) throws InstantiationException {
 		try {
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 270fefda8437db8a5acb28c1b419428f026ae028..fb4e92408f5ccb01e4e2d5c0c1da3cc67ae2670a 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
@@ -29,6 +29,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu
 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.dse.sysmodel.arch.taskgraph.DefaultTaskGraph;
+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.alg.service.IExplorationTargetEvaluator;
 import org.fortiss.af3.exploration.moea.model.predefined.FailureMinObjective;
@@ -40,10 +41,9 @@ import org.fortiss.af3.exploration.moea.model.predefined.FailureType;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: D34DAC14DD62C7902063BBE414FF8194
+ * @ConQAT.Rating RED Hash: 6B2DB446BF5E4B90032D6907E8CD3BF8
  */
-public class FaultDetectionVotingReliabilityEvaluator
-		extends
+public class FaultDetectionVotingReliabilityEvaluator extends
 		ReliabilityEvaluatorBase<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> {
 
 	/** Helper class to save the reliability information */
@@ -60,8 +60,8 @@ public class FaultDetectionVotingReliabilityEvaluator
 
 		/** Constructs a new {@link ReliabilityMeasure} (initialized to all zero). */
 		public ReliabilityMeasure() {
-			this(new Apfloat(0, FP_PRECISION), new Apfloat(0, FP_PRECISION), new Apfloat(0,
-					FP_PRECISION));
+			this(new Apfloat(0, FP_PRECISION), new Apfloat(0, FP_PRECISION),
+					new Apfloat(0, FP_PRECISION));
 		}
 
 		/** Constructs a new {@link ReliabilityMeasure} (initialized to user supplied values) */
@@ -133,12 +133,10 @@ public class FaultDetectionVotingReliabilityEvaluator
 	 * voting).
 	 */
 	@Override
-	public
-			double
-			evaluateInternal(
-					StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> schedule,
-					FaultDetectionVotingTaskMappingEncoding itmEnc, DefaultTaskGraph taskGraph,
-					FailureType failureProbabilityType) {
+	public double evaluateInternal(
+			StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> schedule,
+			FaultDetectionVotingTaskMappingEncoding itmEnc, DefaultTaskGraph taskGraph,
+			FailureType failureProbabilityType) {
 
 		// TODO: Implement this caching in a safer way, and potentially extend it to other cases.
 		// first of all, see if the scenario was just analyzed
@@ -214,17 +212,14 @@ public class FaultDetectionVotingReliabilityEvaluator
 
 		// the start node
 		if(current.level < 0) {
-			ActorAnalysisNode suc =
-					new ActorAnalysisNode(current, 1, new Apfloat(1, FP_PRECISION),
-							current.level + 1);
+			ActorAnalysisNode suc = new ActorAnalysisNode(current, 1, new Apfloat(1, FP_PRECISION),
+					current.level + 1);
 			taskAnalysis(deployableComponent, suc, taskgraph, rm, mappings);
-			ActorAnalysisNode due =
-					new ActorAnalysisNode(current, 0, new Apfloat(1, FP_PRECISION),
-							current.level + 1);
+			ActorAnalysisNode due = new ActorAnalysisNode(current, 0, new Apfloat(1, FP_PRECISION),
+					current.level + 1);
 			taskAnalysis(deployableComponent, due, taskgraph, rm, mappings);
-			ActorAnalysisNode sdc =
-					new ActorAnalysisNode(current, -1, new Apfloat(1, FP_PRECISION),
-							current.level + 1);
+			ActorAnalysisNode sdc = new ActorAnalysisNode(current, -1, new Apfloat(1, FP_PRECISION),
+					current.level + 1);
 			taskAnalysis(deployableComponent, sdc, taskgraph, rm, mappings);
 		} else {
 			// compute the local probabilities
@@ -271,17 +266,14 @@ public class FaultDetectionVotingReliabilityEvaluator
 				}
 			} else {
 				// create the children
-				ActorAnalysisNode suc =
-						new ActorAnalysisNode(current, 1, current.probability.multiply(localPr),
-								current.level + 1);
+				ActorAnalysisNode suc = new ActorAnalysisNode(current, 1,
+						current.probability.multiply(localPr), current.level + 1);
 				taskAnalysis(deployableComponent, suc, taskgraph, rm, mappings);
-				ActorAnalysisNode due =
-						new ActorAnalysisNode(current, 0, current.probability.multiply(localPr),
-								current.level + 1);
+				ActorAnalysisNode due = new ActorAnalysisNode(current, 0,
+						current.probability.multiply(localPr), current.level + 1);
 				taskAnalysis(deployableComponent, due, taskgraph, rm, mappings);
-				ActorAnalysisNode sdc =
-						new ActorAnalysisNode(current, -1, current.probability.multiply(localPr),
-								current.level + 1);
+				ActorAnalysisNode sdc = new ActorAnalysisNode(current, -1,
+						current.probability.multiply(localPr), current.level + 1);
 				taskAnalysis(deployableComponent, sdc, taskgraph, rm, mappings);
 			}
 		}
@@ -292,6 +284,9 @@ public class FaultDetectionVotingReliabilityEvaluator
 	 * 
 	 * @param tg
 	 *            {@link DefaultTaskGraph} representing the application
+	 * @param actorReliabilities
+	 *            Defines the reliability value assigned to the logical components.
+	 * @return {@link ReliabilityMeasure} for the given {@link TaskGraph}.
 	 */
 	private ReliabilityMeasure appAnalysis(DefaultTaskGraph tg,
 			Map<IDeployableComponentAdapter<?>, ReliabilityMeasure> actorReliabilities) {
@@ -315,7 +310,7 @@ public class FaultDetectionVotingReliabilityEvaluator
 	}
 
 	/** Computes the success probability of a task */
-	private Apfloat computeTaskSuc(
+	private static Apfloat computeTaskSuc(
 			Map<IDeployableComponentAdapter<?>, ReliabilityMeasure> actorReliabilities) {
 		// SUC: the task is successful, iff all actors are successful
 		Apfloat taskSuc = new Apfloat(1, FP_PRECISION);
@@ -355,7 +350,7 @@ public class FaultDetectionVotingReliabilityEvaluator
 	}
 
 	/** Converts an analysis result according to the selected {@link FailureType}. */
-	private double convertResult(ReliabilityMeasure measure, FailureType type) {
+	private static double convertResult(ReliabilityMeasure measure, FailureType type) {
 		if(type == FailureType.DUF) {
 			// return measure.duf.doubleValue();
 			return measure.duf.floatValue();
@@ -387,8 +382,7 @@ public class FaultDetectionVotingReliabilityEvaluator
 
 	/** {@inheritDoc} */
 	@Override
-	public
-			IExplorationTargetEvaluator<StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>, Double, FailureMinObjective>
+	public IExplorationTargetEvaluator<StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>, Double, FailureMinObjective>
 			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					FailureMinObjective explorationTarget) throws InstantiationException {
 		try {
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
new file mode 100644
index 0000000000000000000000000000000000000000..fd0879ce81cc3fef67107a3db0733733180651f3
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
@@ -0,0 +1,115 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2017 fortiss GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.evaluator.objective;
+
+import java.math.BigInteger;
+
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding;
+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.MappingEvaluator;
+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;
+import org.fortiss.af3.exploration.dsl_v2.model.function.Maximize;
+import org.fortiss.af3.exploration.dsl_v2.model.function.Minimize;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
+import org.opt4j.core.DoubleValue;
+import org.opt4j.core.IntegerValue;
+import org.opt4j.core.Value;
+import org.opt4j.core.problem.Evaluator;
+
+import com.google.common.collect.ClassToInstanceMap;
+
+/**
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: CCCFAB5F12B1325E566E78B8DE4606B0
+ */
+public class MappingEvaluatorObjective extends MappingEvaluator {
+
+	/** Prototype Constructor. */
+	public MappingEvaluatorObjective() {
+	}
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param systemModelAdapter
+	 *            abstracts the input models.
+	 * @param explorationTarget
+	 *            Target for which the {@link Evaluator} is constructed.
+	 * @throws Exception
+	 *             if the inputs don't satisfy the {@link Evaluator}'s requirements.
+	 */
+	public MappingEvaluatorObjective(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+			ExplorationTarget<Double> explorationTarget) throws Exception {
+		super(systemModelAdapter, explorationTarget);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Value<?> evaluateGoal(MappingEncoding phenotype,
+			FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
+			ClassToInstanceMap<EObject> transformedModels) throws Exception {
+		mapping = phenotype;
+
+		// For ExplorationObjectives the expression begins either with a Minimize or Maximize
+		// operation.
+		// FIXME: bad dsl design...
+		IArithmeticExpression minMaxTerm = null;
+		if(expression instanceof Minimize) {
+			minMaxTerm = ((Minimize)expression).getArgs();
+		} else if(expression instanceof Maximize) {
+			minMaxTerm = ((Maximize)expression).getArgs();
+		}
+		assert (minMaxTerm != null);
+
+		// The minMax Term is always non-zero.
+		Number retVal = minMaxTerm.accept(this, Number.class);
+
+		return retVal instanceof BigInteger ? new IntegerValue(retVal.intValue())
+				: new DoubleValue(retVal.doubleValue());
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Maximize max) throws Exception {
+		// Max/Min operators are handled in the EvaluationWrapper (pre-processing).
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Object visit(Minimize min) throws Exception {
+		// Max/Min operators are handled in the EvaluationWrapper (pre-processing).
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public IExplorationTargetEvaluator<MappingEncoding, Double, ExplorationTarget<Double>>
+			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+					ExplorationTarget<Double> explorationTarget)
+					throws InstantiationException, Exception {
+		return new MappingEvaluatorObjective(systemModelAdapter, explorationTarget);
+	}
+}
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 2a1c1ff4b7e00aee135ca616a3fb399343c3508e..2a575a5ab4a30711655393ebd8c13d0621018728 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
@@ -57,10 +57,11 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: B6AB3F41E6887DC41DA11C537A0142CA
+ * @ConQAT.Rating RED Hash: 5EC80AF0AF800B7EE95D1F643E511D5B
  */
 public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
-		extends ExplorationTargetEvaluatorBase<StrictTTSchedule<S, T>, Double, FailureMinObjective> {
+		extends
+		ExplorationTargetEvaluatorBase<StrictTTSchedule<S, T>, Double, FailureMinObjective> {
 
 	/** Precision of floating point values */
 	protected final static int FP_PRECISION = 50;
@@ -70,8 +71,8 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 			new HashMap<IDeployableComponentAdapter<?>, Map<IExecutionUnitAdapter<?>, Apfloat>>();
 
 	/** Helper required to perform {@link org.apfloat.Apfloat}-based calculations. */
-	private FixedPrecisionApfloatHelper apfloatHelper = new FixedPrecisionApfloatHelper(
-			FP_PRECISION);
+	private FixedPrecisionApfloatHelper apfloatHelper =
+			new FixedPrecisionApfloatHelper(FP_PRECISION);
 
 	/**
 	 * References the "target" {@link Component} in the original input model. This is the
@@ -79,24 +80,18 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 	 */
 	IDeployableComponentAdapter<?> targetComponent;
 
-	/**
-	 * Constructor.
-	 * 
-	 * @throws Exception
-	 *             if the {@link IDeployableComponentAdapter} specifying the component to minimize
-	 *             the failure rate for is missing.
-	 */
+	/** Constructor. */
 	public ReliabilityEvaluatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 			FailureMinObjective target) throws Exception {
 		super(systemModelAdapter, target);
 
 		targetComponent =
-				systemModelAdapter.getDeployableComponentOf(optTarget.getTargetComponent());
+				systemModelAdapter.getDeployableComponentOf(explorationTarget.getTargetComponent());
 		if(targetComponent == null) {
 			throw new Exception("The Component for which to minimize the failure rate is not" +
 					" correctly specified. It is either not defined, or it is not part of the" +
-					" set of deployable Components. The error is caused by " + optTarget.getName() +
-					"(id: " + optTarget.getId() + ").");
+					" set of deployable Components. The error is caused by " +
+					explorationTarget.getName() + "(id: " + explorationTarget.getId() + ").");
 		}
 
 		// TODO: Check for different implementation of this single initialization for different
@@ -110,15 +105,11 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 		// do initialization
 		System.out.println("initialize reliability analyzer.");
 		componentReliability.clear();
-		// set up the replication bounds
 
 		// extract the detector annotations
 		for(IDeployableComponentAdapter<?> deployableComponent : systemModelAdapter
 				.getDeployableComponents()) {
 			TaskGraph tg = systemModelAdapter.getTaskGraph(deployableComponent);
-			// TODO: Finalize decoupling of system model
-			// IRequestAdapter comp = (IRequestAdapter)deployableComponent;
-
 			// TODO: re-add the consideration of fault detector annotations here after the
 			// annotations (or specifications) are defined
 			// This block adds a predefined fault detector that has has a specified delay
@@ -153,22 +144,10 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 			// for each core that may execute the task, compute the reliability
 			for(IExecutionUnitAdapter<?> deploymentTarget : systemModelAdapter
 					.getDeploymentTargets()) {
-				// if(deploymentTarget instanceof IExecutionUnitAdapter) {
-				// Component core = (Component)deploymentTarget;
-				// get the failure rate of this component
-				double coreFailureRate = -1;
-
-				// TODO: re-add the consideration of fault detector annotations here after the
-				// annotations (or specifications) are defined.
-				// For now the failure rate of deployment targets is modeled with a fixed value
-				coreFailureRate = deploymentTarget.getFailureRate();
-
-				// coreFailureRate = 0.001;
+				double coreFailureRate = deploymentTarget.getFailureRate();
 
 				if(coreFailureRate < 0) {
 					// this core is not supported, do not map to this core
-					// to do this, eliminate this core from the list of possible
-					// mappings in explorer object
 					targetsToBeRemoved.add(deploymentTarget);
 					continue;
 				}
@@ -176,7 +155,6 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 				storeComponentFailureRate(taskmap, deployableComponent, deploymentTarget,
 						coreFailureRate);
 				// } else {
-				// TODO: Finalize decoupling of system model
 				// // the resource is not a component but an allocation of a resource
 				// // we look into its parents to look for the reliability annotation
 				// TODO: re-add the consideration of fault detector annotations here after the
@@ -213,8 +191,8 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 		}
 
 		if(!targetsToBeRemoved.isEmpty()) {
-			System.out
-					.println("WARNING: ignoring the following mapping locations due to lack of reliability annotation:");
+			System.out.println(
+					"WARNING: ignoring the following mapping locations due to lack of reliability annotation:");
 			for(IExecutionUnitAdapter<?> deploymentTarget : targetsToBeRemoved) {
 				systemModelAdapter.getDeploymentTargets().remove(deploymentTarget);
 				System.out.print(deploymentTarget.getName() + ",");
@@ -264,7 +242,7 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 		// TODO: It seems that 'comp' is used to identify the task graph for which the analysis is
 		// performed.
 		return new DoubleValue(evaluateInternal(schedule, itmEnc,
-				atgEnc.getTaskGraphOf(targetComponent), optTarget.getType()));
+				atgEnc.getTaskGraphOf(targetComponent), explorationTarget.getType()));
 		// ((AF3SystemModelAdapter)systemModelAdapter).getTaskGraph(optGoal.getComponent()),
 		// optGoal.getType());
 	}
@@ -327,20 +305,19 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 		taskmap.put(deploymentTarget, reliability);
 		Apfloat one = new Apfloat(1, FP_PRECISION);
 		NumberFormat formatter = new DecimalFormat("0.######E0");
-		System.out.println("Task " + deployableComponent.getName() + " on " +
-				deploymentTarget.getName() + " : " +
-				formatter.format(one.subtract(reliability).doubleValue()));
+		System.out.println(
+				"Task " + deployableComponent.getName() + " on " + deploymentTarget.getName() +
+						" : " + formatter.format(one.subtract(reliability).doubleValue()));
 	}
 
 	/**
-	 * Computes the failure probability of a task w.r.t. the exponential reliability
-	 * model.
+	 * Computes the failure probability of a task w.r.t. the exponential reliability model.
 	 * 
 	 * @param coreFailureRate
 	 *            Execution units failure rate
-	 * 
 	 * @param executionTime
 	 *            Task's execution time.
+	 * @return {@link Apfloat} value of the tasks' failure probability.
 	 */
 	private Apfloat exponentialReliabilityModel(double coreFailureRate, double executionTime) {
 		Apfloat zero = new Apfloat(0, FP_PRECISION);
@@ -356,15 +333,13 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping
 	protected Apfloat getComponentFailureRate(IDeployableComponentAdapter<?> deployableComponent,
 			IExecutionUnitAdapter<?> deploymentTarget) {
 		if(deployableComponent.getObject() instanceof EObject) {
-			deployableComponent =
-					systemModelAdapter
-							.getRealizeableDeployableComponentOf((EObject)deployableComponent
-									.getObject());
+			deployableComponent = systemModelAdapter
+					.getRealizeableDeployableComponentOf((EObject)deployableComponent.getObject());
 			if(componentReliability.get(deployableComponent) != null &&
 					componentReliability.get(deployableComponent).get(deploymentTarget) != null) {
 				Apfloat one = new Apfloat(1, FP_PRECISION);
-				return one.subtract(componentReliability.get(deployableComponent).get(
-						deploymentTarget));
+				return one.subtract(
+						componentReliability.get(deployableComponent).get(deploymentTarget));
 			}
 		}
 		return null;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/DeprecatedModelGeneratorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/DeprecatedModelGeneratorBase.java
index 338045a04f6b2a60aceb0b35fabc5182eb1d4e8e..74780f94ec54172d227b21a74c0aee6b7d477c41 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/DeprecatedModelGeneratorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/DeprecatedModelGeneratorBase.java
@@ -33,7 +33,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: BE2694C788903159D4E50932D8AA3588
+ * @ConQAT.Rating RED Hash: 33CC9F6CDD91F4FE43213230C881FF6A
  */
 public abstract class DeprecatedModelGeneratorBase<T extends EObject> implements
 		ITransformationStrategy<T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/EMFModelConcurrencyHandler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/EMFModelConcurrencyHandler.java
index 4ac44b897a0946def25719ae83b5ddfc266c9055..f44d15b692144b89606cc68cb9da85ea305d56dd 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/EMFModelConcurrencyHandler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/EMFModelConcurrencyHandler.java
@@ -36,7 +36,7 @@ import org.fortiss.tooling.base.model.element.IModelElementReference;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 35A393A265FBA6F620B13C76EF1E63E6
+ * @ConQAT.Rating RED Hash: F2C64AE29624AA8355ACFCBF095CA1F9
  */
 public class EMFModelConcurrencyHandler {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationModule.java
index b115ef08aef347707a2105321d2ccf754696359c..31dc72e9b947e18fcf6a54ca2c734d3affc1f960 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationModule.java
@@ -52,10 +52,10 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 170C06301BDCD08A8EBDD8B91368197E
+ * @ConQAT.Rating RED Hash: 22BB1871B67167AA2711C6F12491543F
  */
-public interface ITransformationModule<T extends EObject> extends IEObjectAware<T>,
-		IExplorationModule, IDependencyModule<T, T> {
+public interface ITransformationModule<T extends EObject>
+		extends IEObjectAware<T>, IExplorationModule, IDependencyModule<T, T> {
 
 	/** Defines the state of a Generation/Transformation module for single element types. */
 	enum TransformationState {
@@ -193,12 +193,14 @@ public interface ITransformationModule<T extends EObject> extends IEObjectAware<
 	 *            Associates original input model elements with generated ones.
 	 * @param genToOrigElemAssocs
 	 *            Associates generated model elements with those provided by the input models.
+	 * @param genToGenElemAssocs
+	 *            Map that defines which elements from previous steps are related to which elements
+	 *            from one of the successor steps (1:n relation).
 	 */
-	void
-			loadElementAssociations(TypedBiMap<Object, EObject> encEntryToGenElemAssocs,
-					Multimap<EObject, EObject> origToGenElemAssocs,
-					Map<EObject, EObject> genToOrigElemAssocs,
-					Multimap<EObject, EObject> genToGenElemAssocs);
+	void loadElementAssociations(TypedBiMap<Object, EObject> encEntryToGenElemAssocs,
+			Multimap<EObject, EObject> origToGenElemAssocs,
+			Map<EObject, EObject> genToOrigElemAssocs,
+			Multimap<EObject, EObject> genToGenElemAssocs);
 
 	/**
 	 * Updates the given associative maps that allow to trace objects between the original and the
@@ -217,6 +219,8 @@ public interface ITransformationModule<T extends EObject> extends IEObjectAware<
 	 * 
 	 * @param encEntry
 	 *            The entry of an {@link IExplorationEncoding} to search for.
+	 * @param type
+	 *            Type of the associated element.
 	 * @return The associated {@link EObject} of the generated/transformed model.
 	 */
 	EObject getModelElementByEncEntry(Object encEntry, Class<EObject> type);
@@ -256,10 +260,16 @@ public interface ITransformationModule<T extends EObject> extends IEObjectAware<
 	 * Generates a model of type {@code T} from the input {@code baseModels} and
 	 * {@code exploraionEncodings}.
 	 * 
+	 * @param state
+	 *            The state of the transformation engine, e.g., replication.
+	 * @param context
+	 *            The model context.
 	 * @param baseModels
 	 *            Input EMF models.
 	 * @param explorationEncodings
 	 *            {@link IExplorationEncoding}s resulting from the DSE.
+	 * @param transformedModels
+	 *            Container map of all the transformed models.
 	 * @param outputModel
 	 *            The output EMF model which includes the transformation result. It is passed to
 	 *            each submodule. May be {@code null} if a new model is created in the
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationStrategy.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationStrategy.java
index 0f28a4f617c066b3b0420aad3a36aa08f15f6734..462915dfcb7758833c1d910cb9fdf60523d2a0ef 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationStrategy.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/ITransformationStrategy.java
@@ -29,7 +29,7 @@ import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: BFA97B7D2A97E5D1579C5D75FFA06119
+ * @ConQAT.Rating RED Hash: 9A9B814200D640F8977AE6ACCD315EC0
  */
 public interface ITransformationStrategy<T extends EObject> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationModuleBase.java
index 7207758b266b5331652ed688407eb2ffead5776d..c32347eb423ebbf1ad7a9c0e96161e7555e34b75 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationModuleBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationModuleBase.java
@@ -17,6 +17,8 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.modeltransformation.base;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -44,10 +46,10 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 562F85DBC63F29B578E66BB7EF257CF1
+ * @ConQAT.Rating RED Hash: 59410B4F96699C94CE05CBA1A28A0DC3
  */
-public abstract class TransformationModuleBase<T extends EObject> implements
-		ITransformationModule<T> {
+public abstract class TransformationModuleBase<T extends EObject>
+		implements ITransformationModule<T> {
 
 	/**
 	 * Holds associations between elements comprising an exploration encoding and their
@@ -77,7 +79,9 @@ public abstract class TransformationModuleBase<T extends EObject> implements
 	/** Maintains references to the submodules of {@code this} {@link ITransformationModule}. */
 	protected List<ITransformationModule<?>> subModules = new LinkedList<>();
 
-	/** Set of sub {@link ITransformationModule}s that shall not be executed in one particular run. */
+	/**
+	 * Set of sub {@link ITransformationModule}s that shall not be executed in one particular run.
+	 */
 	private Collection<Class<? extends ITransformationModule<?>>> blacklistedModules =
 			new HashSet<>();
 
@@ -97,10 +101,13 @@ public abstract class TransformationModuleBase<T extends EObject> implements
 	@SuppressWarnings("unchecked")
 	@Override
 	public ITransformationModule<T> createModuleInstance() throws TransformationModuleException {
-		ITransformationModule<T> moduleInstance;
+		Constructor<ITransformationModule<T>> transCtor = null;
+		ITransformationModule<T> moduleInstance = null;
 		try {
-			moduleInstance = getClass().newInstance();
-		} catch(InstantiationException | IllegalAccessException e) {
+			transCtor = (Constructor<ITransformationModule<T>>)getClass().getDeclaredConstructor();
+			moduleInstance = transCtor.newInstance();
+		} catch(NoSuchMethodException | SecurityException | IllegalArgumentException |
+				InvocationTargetException | InstantiationException | IllegalAccessException e) {
 			throw new TransformationModuleException(this,
 					"Could not create an instance of this module.", e);
 		}
@@ -118,11 +125,10 @@ public abstract class TransformationModuleBase<T extends EObject> implements
 
 	/** {@inheritDoc} */
 	@Override
-	public void
-			loadElementAssociations(TypedBiMap<Object, EObject> encEntryToGenElemAssocs,
-					Multimap<EObject, EObject> origToGenElemAssocs,
-					Map<EObject, EObject> genToOrigElemAssocs,
-					Multimap<EObject, EObject> genToGenElemAssocs) {
+	public void loadElementAssociations(TypedBiMap<Object, EObject> encEntryToGenElemAssocs,
+			Multimap<EObject, EObject> origToGenElemAssocs,
+			Map<EObject, EObject> genToOrigElemAssocs,
+			Multimap<EObject, EObject> genToGenElemAssocs) {
 		this.encEntryModelElemAssoc = encEntryToGenElemAssocs;
 		this.genToOrigAssocMap = genToOrigElemAssocs;
 		this.origToGenAssocMap = origToGenElemAssocs;
@@ -153,8 +159,7 @@ public abstract class TransformationModuleBase<T extends EObject> implements
 	/** {@inheritDoc} */
 	@Override
 	// TODO: rename to removeGenModelElement.
-			public
-			void removeGenModelElement(EObject element) {
+	public void removeGenModelElement(EObject element) {
 		removeModelElementAssociations(element);
 		EcoreUtil.delete(element);
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationStrategyBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationStrategyBase.java
index 6841114f38a25303ec1a8b00d39f614f111f0447..893d1e5f7c6331af6a8c8ce09522d204fa98e231 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationStrategyBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/base/TransformationStrategyBase.java
@@ -53,7 +53,7 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 2DFD9EEB0815370D7E46CCAFC133EE26
+ * @ConQAT.Rating RED Hash: 2D1C7319F7A4462D4505C8907C039B71
  */
 public abstract class TransformationStrategyBase<T extends EObject> extends
 		TransformationModuleBase<T> implements ITransformationStrategy<T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureFinalizer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureFinalizer.java
index c1adf0afd585231c784cb3134c28e6baa2d21f8c..19a3823a22c1150c624397f8ab5971c9b9a5028a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureFinalizer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureFinalizer.java
@@ -45,7 +45,7 @@ import org.fortiss.tooling.base.model.element.IModelElementSpecification;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: DAD447FF7FC43ECD450315A960525E1D
+ * @ConQAT.Rating RED Hash: 074E05A44C88E0BD6B068B069239D364
  */
 public class ComponentArchitectureFinalizer extends TransformationModuleBase<ComponentArchitecture> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInitializer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInitializer.java
index 9a96e70e8cd38d4a3c3eeca5e7b871b90b725bc6..f07b302d82e722dc25dd408e91f3a1ebc2c0f6c5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInitializer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInitializer.java
@@ -49,7 +49,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 17C56B41BEE4D74EEC86F0BD51680335
+ * @ConQAT.Rating RED Hash: BF2E2ED46BCC8E410760CC922F0897FE
  */
 public class ComponentArchitectureInitializer extends
 		TransformationModuleBase<ComponentArchitecture> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInserter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInserter.java
index bc4d87e10a41278c24a4758131773a3e80e7c9f6..825f71690b62fe9199aab3e1aaa31eff31f004fe 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInserter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInserter.java
@@ -57,7 +57,7 @@ import org.fortiss.tooling.base.model.layout.Point;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E4F4F66ACD90F1346160A73F400C2AFA
+ * @ConQAT.Rating RED Hash: 795A9CA1275395A9FE6CD2C5F61AE55E
  */
 public class ComponentArchitectureInserter extends TransformationModuleBase<ComponentArchitecture> {
 
@@ -131,8 +131,8 @@ public class ComponentArchitectureInserter extends TransformationModuleBase<Comp
 	 * the signals of the original {@link Component} and its replica as an input and forwards the
 	 * result of the voting to the actual receiver {@link Component}.
 	 */
-	private Map<Component, IPlatformResource> insertVoters(
-			ComponentArchitecture replicaAwareComponentArchitecture) {
+	private Map<Component, IPlatformResource>
+			insertVoters(ComponentArchitecture replicaAwareComponentArchitecture) {
 		Map<Component, IPlatformResource> voterAllocations =
 				new HashMap<Component, IPlatformResource>();
 
@@ -166,12 +166,12 @@ public class ComponentArchitectureInserter extends TransformationModuleBase<Comp
 					// TODO: assumption that the container is a Component.
 					Component replicatedComponent = currentTargetPort.getComponent();
 
-					Component voter =
-							createVoter(currentTargetPort, sourcePortToTargetChannelMap,
-									sourcePorts, replicatedComponent);
+					Component voter = createVoter(currentTargetPort, sourcePortToTargetChannelMap,
+							sourcePorts, replicatedComponent);
 
 					// A voter has exactly one output port
 					assert (voter.getOutputPorts().size() == 1);
+					// Hence, get(0) always returns a value.
 					OutputPort voterOutput = voter.getOutputPorts().get(0);
 
 					// Connect voter to "original" Component
@@ -191,12 +191,13 @@ public class ComponentArchitectureInserter extends TransformationModuleBase<Comp
 	private Component createVoter(InputPort currentTargetPort,
 			Map<Port, Channel> sourcePortToTargetChannelMap, Collection<Port> sourcePorts,
 			Component replicatedComponent) {
-		Component voter =
-				ComponentModelElementFactory.createComponentAndAttach(
-						(Component)replicatedComponent.getContainer(), "Voter_" +
-								replicatedComponent.getName(), false);
+		Component voter = ComponentModelElementFactory.createComponentAndAttach(
+				(Component)replicatedComponent.getContainer(),
+				"Voter_" + replicatedComponent.getName(), false);
 
+		// Components only use the first element of layout data list.
 		if(replicatedComponent.getLayoutData().get(0) instanceof Point) {
+			// Components only use the first element of layout data list.
 			Point p = (Point)EcoreUtil.copy(replicatedComponent.getLayoutData().get(0));
 			p = calulateOffset(p, replicatedComponent, -10, true, false);
 			voter.getLayoutData().set(0, p);
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 4e61bd2cdf5b4868610636a67a02f149299be42d..39d0dd4f0ece6d4d894989b87687a276617979bc 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
@@ -61,7 +61,7 @@ import org.fortiss.tooling.kernel.utils.EcoreUtils;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 603FF1F81BD8FA022DB969FB111DE07F
+ * @ConQAT.Rating RED Hash: 18A75AA578DD57E5BC5C3C4D5790DC5D
  */
 public class ComponentArchitectureInstantiator extends
 		TransformationModuleBase<ComponentArchitecture> {
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 c635bb6de741fc1a8df739306108cb7065da2f78..3e5278628368048d64fc9e8e282c4bf9c68843c6 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
@@ -72,23 +72,22 @@ import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.af3.platform.model.IPlatformResource;
 import org.fortiss.tooling.kernel.model.INamedElement;
 import org.fortiss.tooling.kernel.utils.EcoreUtils;
-import org.omg.IOP.MultipleComponentProfileHelper;
 
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Multimap;
 
 /**
  * Replicates {@link Component}s in the generated {@link ComponentArchitecture} if
- * {@link MultipleComponentProfileHelper} {@link IMappingEntry}s of the input
- * {@link AbstractTaskMappingEncoding} point to the same {@link Component}.
+ * {@link IMappingEntry}s of the input {@link AbstractTaskMappingEncoding} point to the same
+ * {@link Component}.
  * 
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: D79D56E06B1EF10C66BC1BFC599A696C
+ * @ConQAT.Rating RED Hash: D73EB836C694A8869533E23874552E95
  */
-public class ComponentArchitectureReplicator extends
-		TransformationModuleBase<ComponentArchitecture> {
+public class ComponentArchitectureReplicator
+		extends TransformationModuleBase<ComponentArchitecture> {
 
 	/** Collection of {@link Component}s that can be allocated to {@link IPlatformResource}. */
 	private Collection<IDeployableComponentAdapter<Component>> deployableComponentCollection =
@@ -157,7 +156,6 @@ public class ComponentArchitectureReplicator extends
 			throw new TransformationModuleException(this,
 					"Could not retrieve the generated Component Architecture.");
 		}
-
 		originalCA = (ComponentArchitecture)baseModels.get(ComponentArchitecture.class);
 		if(originalCA == null) {
 			throw new TransformationModuleException(this,
@@ -170,23 +168,19 @@ public class ComponentArchitectureReplicator extends
 			throw new TransformationModuleException(this,
 					"An IMappingEncoding is required for this module to operate properly.");
 		}
-
 		deployableComponentCollection = retrieveDeployableComponents(this, mapping);
 		Map<IDeployableComponentAdapter<Component>, Component> genCompAssoc =
 				getDeployableComponentMap(this, origToGenAssocMap, deployableComponentCollection);
-
 		EList<Port> replicatedPorts = new BasicEList<Port>();
 
 		for(Entry<IDeployableComponentAdapter<Component>, Component> deployedComponentPair : genCompAssoc
 				.entrySet()) {
 			Component currentDeployableAf3Component = deployedComponentPair.getValue();
-
 			Collection<ExecutionUnit> allocatedExecutionUnits =
-					getExecutionUnitAllocationsFromMapping(mapping
-							.getAllocatedResourcesFor(deployedComponentPair.getKey()));
+					getExecutionUnitAllocationsFromMapping(
+							mapping.getAllocatedResourcesFor(deployedComponentPair.getKey()));
 			Collection<IMappingEntry> currentMappingEntries =
 					mapping.getIMappingEntriesOf(deployedComponentPair.getKey());
-
 			List<Component> generatedAndReplicatedComponents = new ArrayList<Component>();
 			generatedAndReplicatedComponents.add(currentDeployableAf3Component);
 
@@ -194,22 +188,16 @@ public class ComponentArchitectureReplicator extends
 			// beautiful code.
 			// Create an iterator which is used to handle the allocations of the replicated
 			// components.
-			assert (!allocatedExecutionUnits.isEmpty()) : "Each Component must be allocated to at least one ExecutionUnit.";
+			assert (!allocatedExecutionUnits
+					.isEmpty()) : "Each Component must be allocated to at least one ExecutionUnit.";
 			Iterator<IMappingEntry> mappingEntryIt = currentMappingEntries.iterator();
 			IMappingEntry mappingEntry = mappingEntryIt.next();
-			deploymentComponents.put(currentDeployableAf3Component, (ExecutionUnit)mappingEntry
-					.getTarget().getObject());
-			encEntryModelElemAssoc.put(mappingEntry, Component.class,
-					currentDeployableAf3Component, AbstractTaskMappingEntry.class);
-			// TODO: If we would use 'e.getClass()' here, we would get a specialization of the
-			// originally wanted InstantiatedtaskMappingEntry. Use another mechanism to define the
-			// type of the associated elements.
+			deploymentComponents.put(currentDeployableAf3Component,
+					(ExecutionUnit)mappingEntry.getTarget().getObject());
+			encEntryModelElemAssoc.put(mappingEntry, Component.class, currentDeployableAf3Component,
+					AbstractTaskMappingEntry.class);
 			genToGenAssocMap.put(currentDeployableAf3Component, currentDeployableAf3Component);
 
-			// TODO: A mechanism to retrieve optional solutions from the DSE is needed here. Then,
-			// we could dynamically "plug in" the detection of required implementsXY specifications,
-			// e.g. for parts of a safety function.
-
 			if(allocatedExecutionUnits.size() > 1) {
 				// Collect the InputPorts and the sources of their connectors to restore the
 				// original connections for the replicated components (incoming part).
@@ -221,22 +209,17 @@ public class ComponentArchitectureReplicator extends
 				Map<OutputPort, Collection<Port>> originalComponentOutputTargets =
 						getComponentPortToConnectedPortMap(currentDeployableAf3Component,
 								OutputPort.class);
-
 				Multimap<Port, Port> assocGenWithReplPort = HashMultimap.create();
 
 				// Create replica of the current component based on the number of target resources.
 				for(int i = 1; i < allocatedExecutionUnits.size(); i++) {
 					Component replicatedComponent =
 							replicateComponent(replicatedPorts, currentDeployableAf3Component,
-									generatedAndReplicatedComponents,
-									originalComponentInputSources, originalComponentOutputTargets,
-									assocGenWithReplPort, i);
-
+									generatedAndReplicatedComponents, originalComponentInputSources,
+									originalComponentOutputTargets, assocGenWithReplPort, i);
 					allocateReplicatedComponent(deploymentComponents, mappingEntryIt,
 							replicatedComponent);
-
 					genToGenAssocMap.put(currentDeployableAf3Component, replicatedComponent);
-
 				}
 			}
 			// Remember the association between the replicated component and the "original".
@@ -250,8 +233,7 @@ public class ComponentArchitectureReplicator extends
 		try {
 			createReplicaAwareChannelWiring(genCA, replicatedPorts, deploymentComponents.keySet());
 		} catch(InvalidTimingModelException e) {
-			throw new TransformationModuleException(
-					this,
+			throw new TransformationModuleException(this,
 					"Could not complete the replication transformation step due to an (probably) invalid timing model.",
 					e);
 		}
@@ -295,8 +277,8 @@ public class ComponentArchitectureReplicator extends
 	 * Returns a collection of all {@link InternalIsolatedCommunicationSet} constraints that do not
 	 * include the given {@link IMappingEntry}.
 	 */
-	private Collection<InternalIsolatedCommunicationSet> getOtherIsolationCommConstraints(
-			TaskMappingEncoding<?> encoding, IMappingEntry entry) {
+	private static Collection<InternalIsolatedCommunicationSet>
+			getOtherIsolationCommConstraints(TaskMappingEncoding<?> encoding, IMappingEntry entry) {
 		Collection<InternalIsolatedCommunicationSet> otherConstraints = new HashSet<>();
 		Collection<InternalIsolatedCommunicationSet> isoComm =
 				encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class);
@@ -313,7 +295,7 @@ public class ComponentArchitectureReplicator extends
 	 * Returns whether the given {@link IMappingEntry} is included in any of the given
 	 * {@link InternalIsolatedCommunicationSet}s.
 	 */
-	private boolean isPartOfIsolationCommConstraint(
+	private static boolean isPartOfIsolationCommConstraint(
 			Collection<InternalIsolatedCommunicationSet> isoComm, IMappingEntry entry) {
 		for(InternalIsolatedCommunicationSet constr : isoComm) {
 			if(constr.contains(entry)) {
@@ -328,11 +310,12 @@ public class ComponentArchitectureReplicator extends
 	 * Transforms a {@link Collection} of {@link IResourceAdapter} that is the result of a mapping
 	 * of a single {@link Component} into a {@link Collection} of {@link ExecutionUnit}s.
 	 */
-	private Collection<ExecutionUnit> getExecutionUnitAllocationsFromMapping(
+	private static Collection<ExecutionUnit> getExecutionUnitAllocationsFromMapping(
 			Collection<IResourceAdapter<?>> mappingEntriesOfRequester) {
 		Collection<ExecutionUnit> allocatedExecutionUnits = new ArrayList<ExecutionUnit>();
 		for(IResourceAdapter<?> currentAllocationTarget : mappingEntriesOfRequester) {
-			assert (currentAllocationTarget.getObject() instanceof ExecutionUnit) : "There are currently no other deployment targets than ExecutionUnits allowed.";
+			assert (currentAllocationTarget
+					.getObject() instanceof ExecutionUnit) : "There are currently no other deployment targets than ExecutionUnits allowed.";
 			allocatedExecutionUnits.add((ExecutionUnit)currentAllocationTarget.getObject());
 		}
 		return allocatedExecutionUnits;
@@ -344,7 +327,7 @@ public class ComponentArchitectureReplicator extends
 	 * and their connected {@link Port}s.
 	 */
 	@SuppressWarnings("unchecked")
-	private <T extends Port> Map<T, Collection<Port>> getComponentPortToConnectedPortMap(
+	private static <T extends Port> Map<T, Collection<Port>> getComponentPortToConnectedPortMap(
 			Component deployableAF3Component, Class<? extends Port> componentPortType) {
 		EList<T> originalComponentInputPorts = new BasicEList<T>();
 		if(InputPort.class.isAssignableFrom(componentPortType)) {
@@ -390,19 +373,6 @@ public class ComponentArchitectureReplicator extends
 			Multimap<Port, Port> assocGenWithReplPort, int i) {
 		Component replicatedComponent = EcoreUtils.copy(currentDeployableAf3Component);
 
-		// FIXME: remove IOServer hack.
-		// if(replicatedComponent.getName().contains("IOServer")) {
-		// for(InputPort inP : replicatedComponent.getInputPorts()) {
-		// if(inP.getName().contains("InpSupervisionD") ||
-		// inP.getName().contains("InpSupervisionE")) {
-		// for(Channel inCh : inP.getIncomingChannels()) {
-		// EcoreUtil.remove(inCh);
-		// }
-		// EcoreUtil.remove(inP);
-		// }
-		// }
-		// }
-
 		// TODO: Cleanup, use the new assoc map, the old implementation is buggy.
 		List<Component> replSubComponents =
 				getChildrenWithType(replicatedComponent, Component.class);
@@ -410,8 +380,8 @@ public class ComponentArchitectureReplicator extends
 		origAndReplicatedComponents.addAll(replSubComponents);
 
 		replicatedComponent.setContainer(currentDeployableAf3Component.getParentComponent());
-		replicatedComponent.setName(currentDeployableAf3Component.getName() + "_" +
-				Integer.toString(i));
+		replicatedComponent
+				.setName(currentDeployableAf3Component.getName() + "_" + Integer.toString(i));
 
 		setGenComponentPos(currentDeployableAf3Component, replicatedComponent);
 
@@ -436,9 +406,8 @@ public class ComponentArchitectureReplicator extends
 		// TODO: Generalize: It should be possible to create the association based on a
 		// copy from the pool, not the generated architecture -> Decoupling.
 		EObject origComponent = genToOrigAssocMap.get(currentDeployableAf3Component);
-		Map<INamedElement, INamedElement> assocMap =
-				updateGenToOrigElementMapById(origComponent, currentDeployableAf3Component,
-						replicatedComponent, INamedElement.class);
+		Map<INamedElement, INamedElement> assocMap = updateGenToOrigElementMapById(origComponent,
+				currentDeployableAf3Component, replicatedComponent, INamedElement.class);
 		genToOrigAssocMap.putAll(assocMap);
 		assocMap.entrySet().stream().forEach(e -> origToGenAssocMap.put(e.getValue(), e.getKey()));
 
@@ -459,13 +428,12 @@ public class ComponentArchitectureReplicator extends
 	 * replicated {@link Port}s are created. Thus, the original data flow is maintained.
 	 */
 	// TODO: rework documentation.
-	private <T extends Port, S extends Port> void connectReplicatedPorts(
+	private static <T extends Port, S extends Port> void connectReplicatedPorts(
 			Map<T, Collection<S>> connectedPortMap, Component replicatedComponent) {
 		Collection<T> portReplicationCollection = connectedPortMap.keySet();
 		for(T currentPort : portReplicationCollection) {
 			@SuppressWarnings("unchecked") T replicatedPort =
 					(T)findElementById(currentPort.getId(), replicatedComponent);
-
 			if(replicatedPort != null) {
 				connectPort(replicatedPort, connectedPortMap.get(currentPort), replicatedComponent);
 			}
@@ -486,14 +454,12 @@ public class ComponentArchitectureReplicator extends
 		Map<T, T> assocOrigToGenElements = new HashMap<>();
 		List<T> origElementList = getChildrenWithType(originalElement, elementType);
 		origElementList.add((T)originalElement);
-
 		List<T> genElementList = getChildrenWithType(generatedElement, elementType);
 		genElementList.add((T)generatedElement);
 
 		for(T origElement : origElementList) {
-			Optional<T> equivElem =
-					genElementList.stream().filter(c -> (c.getId() == origElement.getId()))
-							.findAny();
+			Optional<T> equivElem = genElementList.stream()
+					.filter(c -> (c.getId() == origElement.getId())).findAny();
 			if(equivElem.isPresent()) {
 				genToOrigAssocMap.put(equivElem.get(), origElement);
 				origToGenAssocMap.put(origElement, equivElem.get());
@@ -509,14 +475,13 @@ public class ComponentArchitectureReplicator extends
 	 * {@link IPlatformResource} indicated by the given {@link IMappingEncoding}. The result is
 	 * stored in the given {@code deployableComponent} Map.
 	 */
-	private void allocateReplicatedComponent(
-			Map<Component, IPlatformResource> deploymentComponents,
+	private void allocateReplicatedComponent(Map<Component, IPlatformResource> deploymentComponents,
 			Iterator<IMappingEntry> mappingEntryIt, Component replicatedComponent) {
 		IMappingEntry mappingEntry;
 		// Allocate the replica of the original component to the ExecutionUnits.
 		mappingEntry = mappingEntryIt.next();
-		deploymentComponents.put(replicatedComponent, (ExecutionUnit)mappingEntry.getTarget()
-				.getObject());
+		deploymentComponents.put(replicatedComponent,
+				(ExecutionUnit)mappingEntry.getTarget().getObject());
 		encEntryModelElemAssoc.put(mappingEntry, Component.class, replicatedComponent,
 				AbstractTaskMappingEntry.class);
 	}
@@ -564,7 +529,8 @@ public class ComponentArchitectureReplicator extends
 	 */
 	private void createReplicaAwareChannelWiring(
 			ComponentArchitecture replicaAwareComponentArchitecture, EList<Port> replicatedPorts,
-			Set<Component> deployableComponentsOfReplicatedArch) throws InvalidTimingModelException {
+			Set<Component> deployableComponentsOfReplicatedArch)
+			throws InvalidTimingModelException {
 
 		// Create a list of Components that contain deployment targets.
 		EList<Component> allComponentsOfReplicatedAf3Architecture =
@@ -598,7 +564,6 @@ public class ComponentArchitectureReplicator extends
 						Port replicatedPort = EcoreUtil.copy(currentTargetPort);
 						replicatedPort.setOwner(currentTargetPort.getOwner());
 						currentOutgoingChannel.setTarget(replicatedPort);
-
 						String replicatedPortName =
 								extractReplicatedPortName(currentPortToConnect, replicatedPort);
 						replicatedPort.setName(replicatedPortName);
@@ -635,7 +600,7 @@ public class ComponentArchitectureReplicator extends
 	 * @throws InvalidTimingModelException
 	 *             if the timing specification of any traversed element is inconsistent.
 	 */
-	private EList<Port> getReplicatedSourcePorts(
+	private static EList<Port> getReplicatedSourcePorts(
 			ComponentArchitecture replicaAwareComponentArchitecture, EList<Port> replicatedPorts)
 			throws InvalidTimingModelException {
 		// Get the source ports from the replicated and the original ComponentArchitecture
@@ -656,7 +621,8 @@ public class ComponentArchitectureReplicator extends
 	 * replicated logical architecture and to have unique port naming of "hull" components
 	 * (otherwise the model was invalid).
 	 */
-	private String extractReplicatedPortName(Port currentPortToConnect, Port replicatedPort) {
+	private static String extractReplicatedPortName(Port currentPortToConnect,
+			Port replicatedPort) {
 		String[] replicatedPortNumber;
 		// The port number can be derived from the component of the port to connect, or the port
 		// itself (for hull components).
@@ -665,7 +631,6 @@ public class ComponentArchitectureReplicator extends
 		} else {
 			replicatedPortNumber = currentPortToConnect.getName().split("_");
 		}
-
 		return replicatedPort.getName() + "_" +
 				replicatedPortNumber[replicatedPortNumber.length - 1];
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureTransformer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureTransformer.java
index 2e1286f18fd7b29c80091ac0421d14d0480b5a11..624009deb79675bcce848808c8a91397acb39726 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureTransformer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureTransformer.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.modeltransformation.ITransformationSt
 import org.fortiss.af3.exploration.alg.dse.modeltransformation.base.TransformationStrategyBase;
 import org.fortiss.af3.exploration.alg.dse.modeltransformation.deployment.ExplorationSolutionToDeployment;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding;
-import org.fortiss.af3.exploration.moea.model.solutions.SingleExplorationSolutionMap;
+import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolutionMap;
 import org.fortiss.tooling.kernel.model.INamedElement;
 
 /**
@@ -38,12 +38,14 @@ import org.fortiss.tooling.kernel.model.INamedElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 9D75B2FF23F90C9A75922E66F23568C1
+ * @ConQAT.Rating RED Hash: AC9D3D286EEEC95E46617316779BD059
  */
-public class ComponentArchitectureTransformer extends
-		TransformationStrategyBase<ComponentArchitecture> {
+public class ComponentArchitectureTransformer
+		extends TransformationStrategyBase<ComponentArchitecture> {
 
-	/** Returns the list of elements that were instantiated in this generation/transformation step. */
+	/**
+	 * Returns the list of elements that were instantiated in this generation/transformation step.
+	 */
 	public Collection<EObject> getInstantiatedElements() {
 		return instantiatedElements;
 	}
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 3ef00ed81ab77219338b3521fccd6f3ce4d6e269..622d9819148fd7d1d46fb8ce7862ff807706dea7 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
@@ -63,7 +63,7 @@ import org.fortiss.tooling.kernel.utils.EcoreUtils;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: DD31B30D577F35527815FDB295256E1C
+ * @ConQAT.Rating RED Hash: 395F0240A2D552DA2BCE34D5C33DA7E1
  */
 public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 
@@ -127,8 +127,7 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 		if(transformedCA == null) {
 			transformedCA = (ComponentArchitecture)baseModels.get(ComponentArchitecture.class);
 			if(transformedCA == null) {
-				throw new TransformationModuleException(
-						this,
+				throw new TransformationModuleException(this,
 						"Neither a transformed, nor an input component architecture has been found that shall be referenced by the transformed deployment.");
 			}
 		}
@@ -136,16 +135,14 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 		ComponentArchitecture originalCA =
 				(ComponentArchitecture)baseModels.get(ComponentArchitecture.class);
 		if(originalCA == null) {
-			throw new TransformationModuleException(
-					this,
+			throw new TransformationModuleException(this,
 					"Could not retrieve the original component architecture from the set of base models. Be sure to add it to the required input types.");
 		}
 
 		PlatformArchitecture originalPA =
 				(PlatformArchitecture)baseModels.get(PlatformArchitecture.class);
 		if(originalPA == null) {
-			throw new TransformationModuleException(
-					this,
+			throw new TransformationModuleException(this,
 					"Could not retrieve the original platform architecture from the set of base models. Be sure to add it to the required input types.");
 		}
 
@@ -155,8 +152,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 		EMFModelConcurrencyHandler.getInstance().setReference(caRef, transformedCA);
 
 		// TODO: Maybe distribute the generation of component allocation over the various modules.
-		((Deployment)outputModel).getComponentAllocations().addAll(
-				allocateComponentsToExecutionUnits(mapping));
+		((Deployment)outputModel).getComponentAllocations()
+				.addAll(allocateComponentsToExecutionUnits(mapping));
 
 		createDeploymentParameterMap(originalCA, originalPA, (Deployment)outputModel, mapping);
 
@@ -171,8 +168,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 	 * methods uses the DeploymentUtils and returns a {@link ComponentAllocation} that can be
 	 * processed in an AF3 compatible {@link Deployment}.
 	 */
-	private List<ComponentAllocation> allocateComponentsToExecutionUnits(
-			IMappingEncoding mappingEncoding) {
+	private List<ComponentAllocation>
+			allocateComponentsToExecutionUnits(IMappingEncoding mappingEncoding) {
 		List<ComponentAllocation> componentToExecutionUnitAllocations =
 				new ArrayList<ComponentAllocation>();
 		for(IMappingEntry curEntry : mappingEncoding.getIMappingEntries()) {
@@ -195,8 +192,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 
 			ExecutionUnit curExecUnit = (ExecutionUnit)curEntry.getTarget().getObject();
 			assert (curComponent != null && curExecUnit != null);
-			componentToExecutionUnitAllocations.add(createComponentAllocation(curComponent,
-					curExecUnit));
+			componentToExecutionUnitAllocations
+					.add(createComponentAllocation(curComponent, curExecUnit));
 		}
 		return componentToExecutionUnitAllocations;
 	}
@@ -223,6 +220,7 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 			Deployment deploymentWithParameters = allDeploymentsWithParameters.get(0);
 			Deployment poolParameterDeployment = null;
 			if(poolParameterDeployments.size() > 0) {
+				// Get(0) safe due to if clause.
 				poolParameterDeployment = poolParameterDeployments.get(0);
 			}
 
@@ -233,17 +231,17 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 		}
 	}
 
-	/** Adds the map of deployment specific parameters to the transformed {@link Deployment} model. */
+	/**
+	 * Adds the map of deployment specific parameters to the transformed {@link Deployment} model.
+	 */
 	private void fillDeploymentParameterMap(Deployment deployment, Deployment paramDeployment) {
 		if(paramDeployment == null) {
 			return;
 		}
-
 		for(Entry<DeploymentParameterKey, DeploymentParameterValue> deploymentParameter : paramDeployment
 				.getDeploymentParameterMap().entrySet()) {
 			DeploymentParameterValue value = deploymentParameter.getValue();
 			Component parameterComponent = value.getComponent();
-
 			for(EObject genComp : origToGenAssocMap.get(parameterComponent)) {
 				replicateDeploymentParameterEntry(deployment, value, (Component)genComp);
 			}
@@ -256,9 +254,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> {
 	 */
 	private void replicateDeploymentParameterEntry(Deployment deployment,
 			DeploymentParameterValue parameterValue, Component component) {
-		DeploymentParameterKey replicaKey =
-				DeploymentModelElementFactory.createDeploymentParameterKey(component,
-						parameterValue.getExecutionUnit());
+		DeploymentParameterKey replicaKey = DeploymentModelElementFactory
+				.createDeploymentParameterKey(component, parameterValue.getExecutionUnit());
 		DeploymentParameterValue copiedValue = EcoreUtils.copy(parameterValue);
 		copiedValue.setComponent(component);
 		resetIds(copiedValue);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentInitializer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentInitializer.java
index f0a7977c2a58e24af8f07cfcc882be54f4e026e7..486d6671f44bb6d5cf8becadb34e1f1703cc19ba 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentInitializer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentInitializer.java
@@ -46,7 +46,7 @@ import org.fortiss.af3.platform.model.PlatformArchitecture;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: FEB89D2A26DC84FBA6B84FA846A748BF
+ * @ConQAT.Rating RED Hash: 13F29ADB2E9292ADF060C64876B12389
  */
 public class DeploymentInitializer extends TransformationModuleBase<Deployment> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentReplicator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentReplicator.java
index a7d6d0f0474b51e0f7a82321094b6c16ecf9f503..41222f92de150dbe590da3d1fa0b074887b1ceae 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentReplicator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentReplicator.java
@@ -43,7 +43,7 @@ import org.fortiss.af3.platform.model.PlatformArchitecture;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 37920C32E42F302F6C7C2EFEC791B172
+ * @ConQAT.Rating RED Hash: 669DE68E282331C843578F1B689FC00B
  */
 public class DeploymentReplicator extends TransformationModuleBase<Deployment> {
 
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 b0f19f9227810db2b3e9a7cca281639a095eef13..ef11c50b2028183c8446400f1289140d96c1508e 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
@@ -49,7 +49,7 @@ import org.fortiss.af3.platform.model.PlatformArchitecture;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: BFCA1A5516CF95A05FFA20513CE21D86
+ * @ConQAT.Rating RED Hash: 18833446FE89D6A93B1DD8644415C72E
  */
 public class ExplorationSolutionToDeployment extends TransformationStrategyBase<Deployment> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/element/IElementTransformationModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/element/IElementTransformationModule.java
index 594780ce4d00977b08e1ece83288b424edce06f8..372de1983e42c291d6b54afcb7ac8d23d5825c22 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/element/IElementTransformationModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/element/IElementTransformationModule.java
@@ -32,10 +32,10 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A8DA5CEA74CB27A246D23EABE03A61E0
+ * @ConQAT.Rating RED Hash: 758B6FF19EC926C10894B50BBD59CFC8
  */
-public interface IElementTransformationModule<T extends EObject, O extends EObject> extends
-		ITransformationModule<T>, IDependencyModule<T, T> {
+public interface IElementTransformationModule<T extends EObject, O extends EObject>
+		extends ITransformationModule<T>, IDependencyModule<T, T> {
 
 	/** Returns the Class (type) on which a concrete module operates. */
 	Class<T> getElementClass();
@@ -58,6 +58,8 @@ public interface IElementTransformationModule<T extends EObject, O extends EObje
 	 *            Encodings calculated by the DSE.
 	 * @param transformedModels
 	 *            Set of transformed/already manipulated models.
+	 * @param outputModel
+	 *            Equivalent to the returned model.
 	 * @return Identical to {@code outputModel}.
 	 * @throws TransformationModuleException
 	 *             If any operation during the transformation of the given model element fails.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/graph/ElementTransformationModuleEdge.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/graph/ElementTransformationModuleEdge.java
index 47db470a94a0663aeebdfebb549ce1f9e274db58..a91757a23c4bcb7fd260ada347171ccb74dd5c5c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/graph/ElementTransformationModuleEdge.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/graph/ElementTransformationModuleEdge.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.exploration.alg.graph.DependencyEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A027901562B399218A48FC11CEABDDFC
+ * @ConQAT.Rating RED Hash: 009035FE7A7B34CBDF8648C5B288513F
  */
 public class ElementTransformationModuleEdge<T extends EObject, O extends EObject> extends
 		DependencyEdge<IElementTransformationModule<T, O>> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/safety/SafetyDiagUnitRemover.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/safety/SafetyDiagUnitRemover.java
index 569c7742ba2ef4574eb72138b2694b38daca51b7..4b44fcd435f36617cbcbcd20facd131cb54d6d89 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/safety/SafetyDiagUnitRemover.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/safety/SafetyDiagUnitRemover.java
@@ -45,7 +45,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationTransformationService
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 9D78AF758DCD0F5E7C4F745CCC5F915F
+ * @ConQAT.Rating RED Hash: DDAA602872ECECEBBE8D47728CB98F3F
  */
 public class SafetyDiagUnitRemover extends TransformationModuleBase<ComponentArchitecture> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java
index a32f6e07c10a90bc648dcfdfa997b9c22077626c..570975e3a48b751255e04c8771a2f1003d7c71d8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java
@@ -65,10 +65,10 @@ import com.google.inject.TypeLiteral;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: C1870E496AFD69E7768A422E5585FCA8
+ * @ConQAT.Rating RED Hash: 3A4BACA3B93A5055FE1EBA81A7043C6F
  */
-public class FailSilentExecModelFactory extends
-		TaskMappingFactory<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
+public class FailSilentExecModelFactory
+		extends TaskMappingFactory<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
 
 	/** The instance (singleton) of the EvaluatorWrapper factory. */
 	public static TaskMappingFactory<?, ?> getInstance() {
@@ -78,10 +78,6 @@ public class FailSilentExecModelFactory extends
 		return instance;
 	}
 
-	/*
-	 * Construct Creators for the task mapping
-	 */
-
 	/** {@inheritDoc} */
 	@Override
 	public TypeLiteral<FailSilentTaskMappingEncoding> createGenotypeTypeLiteral() {
@@ -99,9 +95,7 @@ public class FailSilentExecModelFactory extends
 		return new FailSilentTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
 	}
 
-	/*
-	 * Construct execution model specific operators
-	 */
+	/* Construct execution model specific operators. */
 
 	/** {@inheritDoc} */
 	@Override
@@ -143,9 +137,7 @@ public class FailSilentExecModelFactory extends
 				systemModelAdapter, rate);
 	}
 
-	/*
-	 * Construct Decoders for the genotypes, aka task mappings.
-	 */
+	/* Construct Decoders for the genotypes, aka task mappings. */
 
 	/** {@inheritDoc} */
 	@Override
@@ -160,8 +152,7 @@ public class FailSilentExecModelFactory extends
 	@SuppressWarnings({"rawtypes", "unchecked"})
 	@Override
 	// TODO: identify why a warning is generated here.
-	public
-			InstantiatedTaskMappingDecoderAcyclic<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
+	public InstantiatedTaskMappingDecoderAcyclic<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>
 			createAbstractToAcyclicTaskGraphDecoder(
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		return new InstantiatedTaskMappingDecoderAcyclic(systemModelAdapter);
@@ -195,9 +186,7 @@ public class FailSilentExecModelFactory extends
 		return new FailSilentEDFScheduler(systemModelAdapter, expSpec);
 	}
 
-	/*
-	 * Construct Evaluators for Optimization Goals
-	 */
+	/* Construct Evaluators for Optimization Goals. */
 
 	/** {@inheritDoc} */
 	@Override
@@ -245,14 +234,13 @@ public class FailSilentExecModelFactory extends
 	@Override
 	public <RT, ET extends ExplorationTarget<RT>>
 			EvaluatorWrapper<?, Boolean, ComponentMultiAllocationConstraint>
-			createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal,
-					int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter)
-					throws Exception {
+			createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal, int priority,
+					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception {
 		return new EvaluatorWrapper<FailSilentTaskMappingEncoding, Boolean, ComponentMultiAllocationConstraint>(
 				(ComponentMultiAllocationConstraint)goal,
 				new ComponentMultiAllocationConstraintEvaluator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>(
-						systemModelAdapter, (ComponentMultiAllocationConstraint)goal), priority,
-				FailSilentTaskMappingEncoding.class);
+						systemModelAdapter, (ComponentMultiAllocationConstraint)goal),
+				priority, FailSilentTaskMappingEncoding.class);
 	}
 
 	/** {@inheritDoc} */
@@ -266,8 +254,8 @@ public class FailSilentExecModelFactory extends
 		return new EvaluatorWrapper<FailSilentTaskMappingEncoding, Boolean, ComponentMultiDislocationConstraint>(
 				(ComponentMultiDislocationConstraint)goal,
 				new ComponentMultiDislocationConstraintEvaluator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>(
-						systemModelAdapter, (ComponentMultiDislocationConstraint)goal), priority,
-				FailSilentTaskMappingEncoding.class);
+						systemModelAdapter, (ComponentMultiDislocationConstraint)goal),
+				priority, FailSilentTaskMappingEncoding.class);
 	}
 
 	/** {@inheritDoc} */
@@ -279,7 +267,7 @@ public class FailSilentExecModelFactory extends
 		return new EvaluatorWrapper<FailSilentTaskMappingEncoding, SIL, SafetyIntegrityLevelConstraint>(
 				(SafetyIntegrityLevelConstraint)goal,
 				new SafetyIntegrityLevelConstraintEvaluator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>(
-						systemModelAdapter, (SafetyIntegrityLevelConstraint)goal), priority,
-				FailSilentTaskMappingEncoding.class);
+						systemModelAdapter, (SafetyIntegrityLevelConstraint)goal),
+				priority, FailSilentTaskMappingEncoding.class);
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java
index 66b552a74fd87638d7bb3c41df7bf0b11a44ec23..bfeb970b3ad7d45ac9b0fe0c8fcf35f16aea9ebc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java
@@ -66,10 +66,9 @@ import com.google.inject.TypeLiteral;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 9B770D7782113C8EB1B7470E86CECB85
+ * @ConQAT.Rating RED Hash: 82B2C4D752FCC3A3FB7095E14F99D12F
  */
-public class FaultDetectionVotingExecModelFactory
-		extends
+public class FaultDetectionVotingExecModelFactory extends
 		TaskMappingFactory<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> {
 
 	/** The instance (singleton) of the EvaluatorWrapper factory. */
@@ -80,9 +79,7 @@ public class FaultDetectionVotingExecModelFactory
 		return instance;
 	}
 
-	/*
-	 * Construct Creators for the task mapping
-	 */
+	/* Construct Creators for the task mapping. */
 
 	/** {@inheritDoc} */
 	@Override
@@ -94,17 +91,14 @@ public class FaultDetectionVotingExecModelFactory
 
 	/** Creates a TaskMappingCreator that matches the given execution model. */
 	@Override
-	public
-			TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
+	public TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
 			createTaskMappingCreator(DseSpecification dse,
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DecoderDependencyGraph execDepGraph) {
 		return new FaultDetectionVotingTaskMappingCreator(dse, systemModelAdapter, execDepGraph);
 	}
 
-	/*
-	 * Construct execution model specific operators
-	 */
+	/* Construct execution model specific operators. */
 
 	/** {@inheritDoc} */
 	@Override
@@ -152,8 +146,7 @@ public class FaultDetectionVotingExecModelFactory
 
 	/** {@inheritDoc} */
 	@Override
-	public
-			AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
+	public AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
 			createAbstractTaskMappingDecoder(
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DseSpecification explorationDefinition) {
@@ -165,8 +158,7 @@ public class FaultDetectionVotingExecModelFactory
 	@SuppressWarnings({"rawtypes", "unchecked"})
 	@Override
 	// TODO: identify why a warning is generated here.
-	public
-			InstantiatedTaskMappingDecoderAcyclic<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
+	public InstantiatedTaskMappingDecoderAcyclic<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
 			createAbstractToAcyclicTaskGraphDecoder(
 					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		return new InstantiatedTaskMappingDecoderAcyclic(systemModelAdapter);
@@ -174,8 +166,7 @@ public class FaultDetectionVotingExecModelFactory
 
 	/** {@inheritDoc} */
 	@Override
-	public
-			MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
+	public MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
 			createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		return new MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
 				systemModelAdapter);
@@ -183,8 +174,7 @@ public class FaultDetectionVotingExecModelFactory
 
 	/** {@inheritDoc} */
 	@Override
-	public
-			StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
+	public StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>
 			createStrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 					DseSpecification explorationDefinition) {
 		return new StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
@@ -199,9 +189,7 @@ public class FaultDetectionVotingExecModelFactory
 		return new FaultDetectionVotingEDFScheduler(systemModelAdapter, expSpec);
 	}
 
-	/*
-	 * Construct Evaluators for Optimization Goals
-	 */
+	/* Construct Evaluators for Optimization Goals. */
 
 	/** {@inheritDoc} */
 	@SuppressWarnings("unchecked")
@@ -250,14 +238,13 @@ public class FaultDetectionVotingExecModelFactory
 	@Override
 	public <RT, ET extends ExplorationTarget<RT>>
 			EvaluatorWrapper<?, Boolean, ComponentMultiAllocationConstraint>
-			createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal,
-					int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter)
-					throws Exception {
+			createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal, int priority,
+					SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception {
 		return new EvaluatorWrapper<FaultDetectionVotingTaskMappingEncoding, Boolean, ComponentMultiAllocationConstraint>(
 				(ComponentMultiAllocationConstraint)goal,
 				new ComponentMultiAllocationConstraintEvaluator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
-						systemModelAdapter, (ComponentMultiAllocationConstraint)goal), priority,
-				FaultDetectionVotingTaskMappingEncoding.class);
+						systemModelAdapter, (ComponentMultiAllocationConstraint)goal),
+				priority, FaultDetectionVotingTaskMappingEncoding.class);
 	}
 
 	/** {@inheritDoc} */
@@ -271,8 +258,8 @@ public class FaultDetectionVotingExecModelFactory
 		return new EvaluatorWrapper<FaultDetectionVotingTaskMappingEncoding, Boolean, ComponentMultiDislocationConstraint>(
 				(ComponentMultiDislocationConstraint)goal,
 				new ComponentMultiDislocationConstraintEvaluator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
-						systemModelAdapter, (ComponentMultiDislocationConstraint)goal), priority,
-				FaultDetectionVotingTaskMappingEncoding.class);
+						systemModelAdapter, (ComponentMultiDislocationConstraint)goal),
+				priority, FaultDetectionVotingTaskMappingEncoding.class);
 	}
 
 	/** {@inheritDoc} */
@@ -284,7 +271,7 @@ public class FaultDetectionVotingExecModelFactory
 		return new EvaluatorWrapper<FaultDetectionVotingTaskMappingEncoding, SIL, SafetyIntegrityLevelConstraint>(
 				(SafetyIntegrityLevelConstraint)goal,
 				new SafetyIntegrityLevelConstraintEvaluator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(
-						systemModelAdapter, (SafetyIntegrityLevelConstraint)goal), priority,
-				FaultDetectionVotingTaskMappingEncoding.class);
+						systemModelAdapter, (SafetyIntegrityLevelConstraint)goal),
+				priority, FaultDetectionVotingTaskMappingEncoding.class);
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ICommunicationResourceAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ICommunicationResourceAdapter.java
index 0b0f8701e0609e3d6d81558a62e479af5236c3fe..11caa4bf50e1cce413d03637b778091527a68807 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ICommunicationResourceAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ICommunicationResourceAdapter.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1C0D054DD10FAD9DDC8E0371EAE9C277
+ * @ConQAT.Rating RED Hash: 9BE602663942089732D0AE6F15487C7C
  */
 public interface ICommunicationResourceAdapter<T> extends IResourceAdapter<T> {
 	/** Returns the power consumed by transfering a message of the given size via this resource. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IDeployableComponentAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IDeployableComponentAdapter.java
index ef81dae565ec0b815ced0d7cca7d1b8ead5544ee..a150bcf6228378e4afd623bd6deeff7083803a01 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IDeployableComponentAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IDeployableComponentAdapter.java
@@ -29,7 +29,7 @@ import org.fortiss.af3.component.model.Component;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: ACA1B1678A37FBACEFB6DC4666A75860
+ * @ConQAT.Rating RED Hash: 007670AB8CFB76B65557C8B71B489691
  */
 public interface IDeployableComponentAdapter<T> extends IRequestAdapter<T>, Cloneable {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java
index eea40ddd1429c992059bb188b4d5b97fa22bdebe..dd369538f8261758f15024588600d7049ec848c8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IExecutionUnitAdapter.java
@@ -24,7 +24,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 73C18E52E3E9E6F8CC8B674ED8A64458
+ * @ConQAT.Rating RED Hash: 472B54CE1884D4B90D2C2320484F6C03
  */
 public interface IExecutionUnitAdapter<T> extends IResourceAdapter<T> {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IGatewayUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IGatewayUnitAdapter.java
index 3602f789b02cbdb8c52ef8a095e640fa897fffb1..f82ecd4ef835c8027d40ba546c08791e177143c7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IGatewayUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IGatewayUnitAdapter.java
@@ -24,11 +24,10 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1AA320145DB47A1C59BA9118030BFF68
+ * @ConQAT.Rating RED Hash: A12CFC616EEAB18E9AE0F265AA678AD3
  */
 public interface IGatewayUnitAdapter<T> extends ICommunicationResourceAdapter<T> {
 
 	/** Returns the worst-case time required to process a single message forwarding request. */
-	public double getWCFT();
-
+	double getWCFT();
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ILogicalArchitectureAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ILogicalArchitectureAdapter.java
index bbae866caaca117cba7a852f1d90a51362f64fcb..3663ee0c18c9bcf8ca5216fccfbb6b5dd3d7eb47 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ILogicalArchitectureAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ILogicalArchitectureAdapter.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 947688640FE33B71C1F8F530D5F63A9D
+ * @ConQAT.Rating RED Hash: 4BF33C0B683C342171C451A2C56C0A21
  */
 public interface ILogicalArchitectureAdapter<T> extends IModelElementAdapter<T> {
 	// nothing to be done here, yet
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IMemoryUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IMemoryUnitAdapter.java
index 3004af4e7bbeb7d6fe333daa3f568bcc1bb81119..7f3a4f880137fafd6c0896b1207ffbc69b73b1f8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IMemoryUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IMemoryUnitAdapter.java
@@ -23,10 +23,10 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C34EA4A2DE49D472C0DDE528889B74B6
+ * @ConQAT.Rating RED Hash: 49FD24B02C3D9EC10BC913678C60DE35
  */
 public interface IMemoryUnitAdapter<T> extends IResourceAdapter<T> {
 
 	/** Returns the capacity, i.e. size, of the {@link IMemoryUnitAdapter} in bytes. */
-	public long getSizeInBytes();
+	long getSizeInBytes();
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IModelElementAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IModelElementAdapter.java
index 536950484e66846f2372aedc491a3876ec961598..6deb36e2c9b00931a2e5778488edc819c4c112d3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IModelElementAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IModelElementAdapter.java
@@ -17,23 +17,22 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
 
-
 /**
  * Base interface for adapters between system model elements, and the DSE.
  * 
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 6BA22C3DA933AE50D529559B901C02E3
+ * @ConQAT.Rating RED Hash: B7D09CE3FC1404F1ED650CE826756918
  */
 public interface IModelElementAdapter<T> {
 
 	/** Returns the model element's name. */
-	public String getName();
+	String getName();
 
 	/**
 	 * Returns a reference to the model element wrapped by this {@link IModelElementAdapter}.
 	 * Use with care!
 	 */
-	public T getObject();
+	T getObject();
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IPlatformArchitectureAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IPlatformArchitectureAdapter.java
index a7dad2d55d477c4356e4a97b82fda20eec3c090a..8ced7d07cb94c003df5ba6f52d80bd192d7e1164 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IPlatformArchitectureAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IPlatformArchitectureAdapter.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7A02857DC2692DD0CB08C771DEDC7EC0
+ * @ConQAT.Rating RED Hash: EE7A5410FB665E7E8F2A95A915780E87
  */
 public interface IPlatformArchitectureAdapter<T> extends IModelElementAdapter<T> {
 	// nothing to be done here, yet
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IRequestAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IRequestAdapter.java
index 32c77f3ceff61260d68aa4ce7d0f76e7aee1ee78..66a92da68c699434594f998542e52363bcab7f30 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IRequestAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IRequestAdapter.java
@@ -24,7 +24,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4623E43FE59B4C2C4252939FBF6336F6
+ * @ConQAT.Rating RED Hash: 393CD3F591A1DC207503BC45431BB2B9
  */
 public interface IRequestAdapter<T> extends IModelElementAdapter<T> {
 	// Empty
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceAdapter.java
index db650340b8c16a5b72f34effab7fe30cfaa15972..fca90e6469c6e6226d11d706aeb22d33c969c5e4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceAdapter.java
@@ -24,7 +24,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: DC64328CEBAFBE1391D36F20D349779B
+ * @ConQAT.Rating RED Hash: E67441EFF61DF1B53CAE496A98578647
  */
 public interface IResourceAdapter<T> extends IModelElementAdapter<T> {
 	/** Predicate if the resource is a virtual or a HW resource. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceConnectionAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceConnectionAdapter.java
index 7a28f67e499525be9db9b8e5eef429da170871d3..ee1589aa0074bdc8c798d8e0b114345bfed6e034 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceConnectionAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/IResourceConnectionAdapter.java
@@ -26,12 +26,12 @@ import java.util.Collection;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 640FF76A51C6F6F5AB1A85EF660CA7A5
+ * @ConQAT.Rating RED Hash: A1A5276F3146DB773D417674E103F37E
  */
 public interface IResourceConnectionAdapter {
 
 	/** Enum which captures the direction to a target of this adapter. */
-	public static enum ConnectionType {
+	static enum ConnectionType {
 		@SuppressWarnings({"javadoc"})
 		INCOMING, @SuppressWarnings({"javadoc"})
 		OUTGOING, @SuppressWarnings({"javadoc"})
@@ -39,12 +39,11 @@ public interface IResourceConnectionAdapter {
 	}
 
 	/** Returns the source element of a connection of the technical architecture. */
-	public IResourceAdapter<?> getSourceResource();
+	IResourceAdapter<?> getSourceResource();
 
 	/** Returns the target element of a connection of the technical architecture. */
-	public Collection<IResourceAdapter<?>> getTargetResources();
+	Collection<IResourceAdapter<?>> getTargetResources();
 
 	/** Returns the direction from the source element of this adapter to the given target. */
-	public ConnectionType getConnectionType(IResourceAdapter<?> targetResource);
-
+	ConnectionType getConnectionType(IResourceAdapter<?> targetResource);
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISafetyFunctionAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISafetyFunctionAdapter.java
index 490fff78db196936f50956fc76c9aacd7c5da517..4775e467bf46c59ae2dbc56c13ae276dd8238995 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISafetyFunctionAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISafetyFunctionAdapter.java
@@ -27,7 +27,7 @@ import org.fortiss.af3.safety.model.SafetyArchitecture;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: C87D33335CE8AED4799BB5CC5F4B202A
+ * @ConQAT.Rating RED Hash: 852BD44C8D9FCDE946D53DF07D234496
  */
 public interface ISafetyFunctionAdapter<T> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISignalAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISignalAdapter.java
index c34894bf0cfcc978b12883faea0c5284351748a2..712d7cdb5b01475d48ff1f9a3aebec18e1eb08ff 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISignalAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ISignalAdapter.java
@@ -19,7 +19,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
 
 import java.util.Collection;
 
-import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.SignalType;
 
 /**
  * Adapter between logical channels of the system meta-model used in the modeling
@@ -28,31 +28,31 @@ import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 84B4884F77B75CAB0E723336E9300C44
+ * @ConQAT.Rating RED Hash: F42BC7240030518CD51926158DBF5AC7
  */
 public interface ISignalAdapter<T> extends IRequestAdapter<T> {
 
 	/** Returns the source component of this {@link ISignalAdapter}. */
-	public IDeployableComponentAdapter<?> getSource();
+	IDeployableComponentAdapter<?> getSource();
 
 	/** Returns the collection of target components of this {@link ISignalAdapter}. */
-	public Collection<IDeployableComponentAdapter<?>> getTargets();
+	Collection<IDeployableComponentAdapter<?>> getTargets();
 
 	/**
 	 * Returns the size of the message sent via this {@link ISignalAdapter} if it was deployed onto
 	 * the given {@link ICommunicationResourceAdapter}.
 	 */
-	public long getSignalSize();
+	long getSignalSize();
 
 	/**
 	 * Returns the {@link SignalType} of a message if it were constructed from this
 	 * {@link ISignalAdapter}.
 	 */
-	public SignalType getSignalType();
+	SignalType getSignalType();
 
 	/**
 	 * Returns the transmission time of a message sent via this {@link ISignalAdapter} if it was
 	 * deployed onto the given {@link ITransmissionUnitAdapter}.
 	 */
-	public double getTransmissionTime(ITransmissionUnitAdapter<?> transmissionUnit);
+	double getTransmissionTime(ITransmissionUnitAdapter<?> transmissionUnit);
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ITransmissionUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ITransmissionUnitAdapter.java
index d059cb7f2cc5a1d9ebbb96f8e6c114cc0e978df2..e04e05d18b135cfaf83003b6a883ad30ba227557 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ITransmissionUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/ITransmissionUnitAdapter.java
@@ -24,7 +24,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 99E2616175A5B05F6B9828A09DA6E643
+ * @ConQAT.Rating RED Hash: 2B6D7A2BC90B491A66F0CD4ABCDCF131
  */
 public interface ITransmissionUnitAdapter<T> extends ICommunicationResourceAdapter<T> {
 
@@ -32,5 +32,5 @@ public interface ITransmissionUnitAdapter<T> extends ICommunicationResourceAdapt
 	 * Returns the duration of a transmission of a given number of MB via this
 	 * {@link ITransmissionUnitAdapter}.
 	 */
-	public double getTransmissionDuration(double messageSizeMB);
+	double getTransmissionDuration(double messageSizeMB);
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/InternalComponentParameters.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/InternalComponentParameters.java
index dcadbdc15a473ded4efb4d6cb7447d09ff77fcc7..c58335ee2d34e46cce4db9b4eefcc7c0d4a3f354 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/InternalComponentParameters.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/InternalComponentParameters.java
@@ -30,7 +30,7 @@ import org.fortiss.af3.component.model.Component;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7491AA925020A646DED070A427CBE719
+ * @ConQAT.Rating RED Hash: 3F7EE8076CAF4B5B0DFEE76FE25F0868
  */
 public class InternalComponentParameters {
 
@@ -70,8 +70,8 @@ public class InternalComponentParameters {
 	 * Sets a map that contains the energy consumption values of the {@link Component} subject to
 	 * the {@link IExecutionUnitAdapter}.
 	 */
-	public void setEnergyConsumptionMap(Map<IExecutionUnitAdapter<?>, Double> energyConsumptionMap) {
+	public void
+			setEnergyConsumptionMap(Map<IExecutionUnitAdapter<?>, Double> energyConsumptionMap) {
 		this.energyConsumptionMap = energyConsumptionMap;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/PlatformCommunicationGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/PlatformCommunicationGraph.java
index c6ee45eb1e8cfcd86a577c03a51726465034f442..7c761cd5d434f534a061da2f45e99ce75e60b814 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/PlatformCommunicationGraph.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/PlatformCommunicationGraph.java
@@ -35,7 +35,7 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 9ABA58EF4FFD588CDA28D13701904A06
+ * @ConQAT.Rating RED Hash: DEA30F3F5355B574E2C0AA6B1B8AE287
  */
 public class PlatformCommunicationGraph {
 
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 582b1f8aaf0ab013adb73b0242ec4b8f372d2c39..f4436b6ac1a72a560b44cd6e843210feded8cba7 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
@@ -19,6 +19,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.arch;
 
 import static org.fortiss.af3.exploration.util.ExplorationUtils.isDebugVerboseEnabled;
 import static org.fortiss.af3.schedule.utils.MathUtils.lcmDoubleCollection;
+import static org.fortiss.af3.task.util.TaskAllocationUtils.getAllocatedComponentsTo;
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf;
 
 import java.util.ArrayList;
@@ -50,7 +51,7 @@ import org.fortiss.af3.exploration.alg.exception.InvalidTimingModelException;
 import org.fortiss.af3.exploration.alg.guava.MutableSubClassToInstanceMap;
 import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMap;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
-import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.SignalType;
 import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.af3.platform.model.IPlatformArchitectureElement;
 import org.fortiss.af3.platform.model.IPlatformCommunicationResource;
@@ -59,6 +60,8 @@ import org.fortiss.af3.platform.model.IPlatformResource;
 import org.fortiss.af3.platform.model.PlatformArchitecture;
 import org.fortiss.af3.platform.model.annotation.ResourceLink;
 import org.fortiss.af3.platform.utils.PlatformArchitectureUtils;
+import org.fortiss.af3.task.model.Task;
+import org.fortiss.af3.task.model.TaskArchitecture;
 import org.fortiss.tooling.base.model.element.IConnection;
 import org.fortiss.tooling.base.model.element.IConnector;
 import org.fortiss.tooling.base.model.element.IHierarchicElement;
@@ -72,7 +75,7 @@ import org.jgrapht.alg.ConnectivityInspector;
  * @author barner, huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 76FA02DDFC402839F901BD6402B11521
+ * @ConQAT.Rating RED Hash: 2DE767131B5246032DA71817BE4F70AE
  */
 public class SystemModelAdapter<C, E, S, G, TR, M> {
 
@@ -236,7 +239,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	/** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */
 	protected <T extends IExplorationEncoding> void registerInputEncoding(T encoding) {
 		@SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass();
-		assert (!inputEncodings.containsKey(encodingType)) : "You are trying to add an encoding to the input encoding whose type is already registered. This is not supported";
+		assert (!inputEncodings.containsKey(
+				encodingType)) : "You are trying to add an encoding to the input encoding whose type is already registered. This is not supported";
 		inputEncodings.put(encodingType, encoding);
 	}
 
@@ -329,9 +333,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 		componentInGraph = registerTaskGraphsForComponents(taskGraphs);
 
 		// Construct an Directed Acyclic TaskGraph (e.g., utilized in scheduling).
-		acyclicTaskGraphs =
-				taskGraphs.stream().map(tg -> new AcyclicTaskGraph(tg))
-						.collect(Collectors.toList());
+		acyclicTaskGraphs = taskGraphs.stream().map(tg -> new AcyclicTaskGraph(tg))
+				.collect(Collectors.toList());
 		removeInvalidTaskGraphs(acyclicTaskGraphs);
 		componentInAcyclicGraph = registerTaskGraphsForComponents(acyclicTaskGraphs);
 
@@ -456,10 +459,10 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 		// TODO: Move these checks to a model validation framework
 		// Remove tasks with invalid specification
 		if(!tasksToBeRemoved.isEmpty()) {
-			System.out
-					.println("The following deployable components are ignored during design exploration due to lack of timing annotations.");
-			System.out
-					.println("Each deployable component must be annotated with delay (execution time) and the source commpoent must be annotated with a period!");
+			System.out.println(
+					"The following deployable components are ignored during design exploration due to lack of timing annotations.");
+			System.out.println(
+					"Each deployable component must be annotated with delay (execution time) and the source commpoent must be annotated with a period!");
 			for(IDeployableComponentAdapter<?> deployableComponent : tasksToBeRemoved) {
 				System.out.print(deployableComponent.getName() + " , ");
 				deployableComponents.remove(deployableComponent);
@@ -497,8 +500,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 */
 	private <T extends TaskGraph> void printAndDisplayTaskGraphs(Collection<T> taskGraphs) {
 		for(T taskGraph : taskGraphs) {
-			System.out.println("Application " + taskGraph + ":" + " period = " +
-					taskGraph.getPeriod());
+			System.out.println(
+					"Application " + taskGraph + ":" + " period = " + taskGraph.getPeriod());
 			System.out.println(taskGraph);
 			System.out.println("");
 
@@ -612,8 +615,15 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * @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) {
+		// FIXME: HACK to work around the missing consideration of the Task Architecture ATM.
+		if(originalEObject instanceof Task) {
+			TaskArchitecture ta = (TaskArchitecture)((Task)originalEObject).getContainer();
+			Collection<Component> cCol = getAllocatedComponentsTo(ta, (Task)originalEObject);
+			originalEObject = cCol.iterator().next();
+		}
+
 		for(IDeployableComponentAdapter<C> deployableComponentAdapter : deployableComponents) {
 			if(deployableComponentAdapter.getObject() == originalEObject) {
 				return deployableComponentAdapter;
@@ -627,8 +637,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * only those {@link IDeployableComponentAdapter} are searched which can be actually executed on
 	 * {@link ExecutionUnit}s, i.e. "abstract" components are not considered.
 	 */
-	public synchronized IDeployableComponentAdapter<C> getRealizeableDeployableComponentOf(
-			EObject originalEObject) {
+	public synchronized IDeployableComponentAdapter<C>
+			getRealizeableDeployableComponentOf(EObject originalEObject) {
 		for(IDeployableComponentAdapter<C> deployableComponentAdapter : realizableDeployableComponents) {
 			if(deployableComponentAdapter.getObject() == originalEObject) {
 				return deployableComponentAdapter;
@@ -645,7 +655,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 			IDeployableComponentAdapter<C> target) {
 		// TODO: Currently, top-level components are considered as deployable components (=tasks)
 		for(ISignalAdapter<S> currentChannel : messages) {
-			if(currentChannel.getSource() == source && currentChannel.getTargets().contains(target)) {
+			if(currentChannel.getSource() == source &&
+					currentChannel.getTargets().contains(target)) {
 				return currentChannel;
 			}
 		}
@@ -750,7 +761,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * Returns the {@link DefaultTaskGraph} in which a given deployable component (=task) is
 	 * contained.
 	 */
-	public DefaultTaskGraph getAcyclicTaskGraph(IDeployableComponentAdapter<?> deployableComponent) {
+	public DefaultTaskGraph
+			getAcyclicTaskGraph(IDeployableComponentAdapter<?> deployableComponent) {
 		return componentInAcyclicGraph.get(deployableComponent);
 	}
 
@@ -759,7 +771,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * {@link IDeployableComponentAdapter}. Returns an empty collection if the given
 	 * {@link IDeployableComponentAdapter} does not emit anything.
 	 */
-	public Collection<ISignalAdapter<S>> getEmmittedMessages(IDeployableComponentAdapter<?> sender) {
+	public Collection<ISignalAdapter<S>>
+			getEmmittedMessages(IDeployableComponentAdapter<?> sender) {
 		// TODO: use another representation ro make an access via the reference obsolete
 		if(sender.isInstantiation()) {
 			sender = sender.getReplacedComponent();
@@ -847,9 +860,9 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 
 			// This section handles the traversal between the elements of the same platform
 			// architecture.
-			targetConnectors.addAll(seekIntraPlatformTargetConnectors(sourceConnector,
-					possibleTargetConnectors, visitedTargetConnectors, nextTargetConnector,
-					af3DeploymentTargets));
+			targetConnectors.addAll(
+					seekIntraPlatformTargetConnectors(sourceConnector, possibleTargetConnectors,
+							visitedTargetConnectors, nextTargetConnector, af3DeploymentTargets));
 
 			// This section handles the traversal between a virtual and a hardware platform
 			// architecture.
@@ -915,9 +928,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 			// Do not traverse back (to same connector) & not to the same IHierarchicElement.
 			if(!visitedTargetConnectors.contains(connectorTgt) &&
 					tgtElement != sourceConnector.getOwner()) {
-				if(tgtElement instanceof IPlatformArchitectureElement &&
-						isValidConnectionTarget((IPlatformArchitectureElement)tgtElement,
-								deploymentTargets)) {
+				if(tgtElement instanceof IPlatformArchitectureElement && isValidConnectionTarget(
+						(IPlatformArchitectureElement)tgtElement, deploymentTargets)) {
 					targetConnectors.add(connectorTgt);
 				} else if(tgtElement == connectorSrc.getOwner().getContainer() &&
 						!(nextTargetConnector instanceof IPlatformExport)) {
@@ -1031,9 +1043,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 			assert (referencedElement instanceof IPlatformArchitectureElement) : "A non-platform model element has been referenced.";
 			IPlatformArchitectureElement referencedPlatformElement =
 					(IPlatformArchitectureElement)referencedElement;
-			IPlatformExport driverExport =
-					pickFirstInstanceOf(IPlatformExport.class,
-							referencedPlatformElement.getConnectors());
+			IPlatformExport driverExport = pickFirstInstanceOf(IPlatformExport.class,
+					referencedPlatformElement.getConnectors());
 
 			if(driverExport.getOwner() instanceof IPlatformArchitectureElement &&
 					isValidConnectionTarget((IPlatformArchitectureElement)driverExport.getOwner(),
@@ -1041,8 +1052,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 				identifiedTargets.add(driverExport);
 			} else {
 				// TODO: dead code path? Is not called for any recent model.
-				possibleTargetConnectors.addAll(referencedPlatformElement
-						.getPlatformConnectorUnits());
+				possibleTargetConnectors
+						.addAll(referencedPlatformElement.getPlatformConnectorUnits());
 			}
 		}
 
@@ -1070,7 +1081,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 			if(connector != null) {
 				IHierarchicElement parent = connector.getOwner();
 				// Second: physical counter part of inter-platform connection.
-				if(platformInterconnectTypes.getSecond().isAssignableFrom(parent.getClass()) &&
+				if(platformInterconnectTypes != null &&
+						platformInterconnectTypes.getSecond().isAssignableFrom(parent.getClass()) &&
 						invNetDriverRef.get(parent) != null) {
 					return true;
 				}
@@ -1090,9 +1102,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> {
 	 * Map<NetworkInterface, OnChipNetworkDriver>)}.
 	 */
 	protected boolean connectsSwHwPlatform(IConnector connector) {
-		if(connector instanceof IPlatformExport &&
-				platformInterconnectTypes.getFirst().isAssignableFrom(
-						connector.getOwner().getClass())) {
+		if(connector instanceof IPlatformExport && platformInterconnectTypes.getFirst()
+				.isAssignableFrom(connector.getOwner().getClass())) {
 			return true;
 		}
 		return false;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemParameterContainer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemParameterContainer.java
index 2147a31d16d01957b34d4beb739c5e03a9a5e623..4761fb117982739031a56d023cd764a91c97dca0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemParameterContainer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemParameterContainer.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.component.model.ComponentArchitecture;
 import org.fortiss.af3.component.model.OutputPort;
 import org.fortiss.af3.component.model.Port;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType;
-import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.SignalType;
 import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.af3.platform.model.IPlatformArchitectureElement;
 import org.fortiss.af3.platform.model.IPlatformResource;
@@ -42,7 +42,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 4A757BEFD4DC271BCA27A8E131953CC4
+ * @ConQAT.Rating RED Hash: 7D08F7A5637C41AB7AF2D28F31E77A53
  */
 public class SystemParameterContainer {
 
@@ -107,10 +107,8 @@ public class SystemParameterContainer {
 	private Class<? extends IPlatformResource> faultContainmentRegion;
 
 	/** Constructor. */
-	public SystemParameterContainer(
-			Collection<Component> deployableComponents,
-			Map<Port, SignalType> portSignalTypes,
-			Collection<ExecutionUnit> deploymentTargets,
+	public SystemParameterContainer(Collection<Component> deployableComponents,
+			Map<Port, SignalType> portSignalTypes, Collection<ExecutionUnit> deploymentTargets,
 			Map<Component, Double> componentPeriodMap,
 			Multimap<Component, Component> replacementComponents,
 			Map<Component, Pair<Integer, Integer>> componentReplicationBounds,
@@ -132,7 +130,6 @@ public class SystemParameterContainer {
 		this.connectionTypeLUT = connectionTypeLUT;
 		this.platfromInterconnectTypes = platfromInterconnectTypes;
 		this.faultContainmentRegion = faultContainmentRegion;
-
 	}
 
 	/** Returns the deployable {@link Component}s. */
@@ -184,7 +181,9 @@ public class SystemParameterContainer {
 		return resourceFailureProbabilities;
 	}
 
-	/** Returns the associations between platform elements and their mean active power consumption. */
+	/**
+	 * Returns the associations between platform elements and their mean active power consumption.
+	 */
 	public Map<IPlatformResource, Double> getResourcePowerConsumption() {
 		return resourcePowerConsumption;
 	}
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 d78b5596b2bf00def23d23a83a52c222a0c19015..debd158a01b561bad96079ba45b740481155f89e 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,10 +36,10 @@ import org.fortiss.af3.safety.model.annotation.SafetyIntegrityLevel;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 0076A472847522AEEEE16A347661D7C1
+ * @ConQAT.Rating RED Hash: 23A1CB2A46A8562DBFFE3B01977C544C
  */
-public class AF3DeployableComponentAdapter extends AF3RequestAdapter<Component> implements
-		IDeployableComponentAdapter<Component> {
+public class AF3DeployableComponentAdapter extends AF3RequestAdapter<Component>
+		implements IDeployableComponentAdapter<Component> {
 	/** Map of possible Wcets defined by the deployment target. */
 	private Map<IExecutionUnitAdapter<?>, Double> wcetMap;
 
@@ -77,8 +77,10 @@ public class AF3DeployableComponentAdapter extends AF3RequestAdapter<Component>
 		super(deployableComponent);
 
 		// TODO: possible NPE
-		this.wcetMap = internalParameters.get(deployableComponent).getWcetMap();
-		this.energyMap = internalParameters.get(deployableComponent).getEnergyConsumptionMap();
+		if(internalParameters.get(deployableComponent) != null) {
+			this.wcetMap = internalParameters.get(deployableComponent).getWcetMap();
+			this.energyMap = internalParameters.get(deployableComponent).getEnergyConsumptionMap();
+		}
 
 		// Default value.
 		period = 0.0;
@@ -124,19 +126,13 @@ public class AF3DeployableComponentAdapter extends AF3RequestAdapter<Component>
 	/**
 	 * Creates an "concrete" {@link IDeployableComponentAdapter} for an {@link Component} with the
 	 * given period.
-	 * 
-	 * @param replacedComponent
-	 *            References the {@link IDeployableComponentAdapter} which the to be constructed
-	 *            {@link IDeployableComponentAdapter} instantiates.
-	 * 
-	 * @throws Exception
 	 */
 	public AF3DeployableComponentAdapter(Component deployableComponent,
 			Map<Component, InternalComponentParameters> internalParameters,
 			IDeployableComponentAdapter<Component> replacedComponent) throws Exception {
 		this(deployableComponent, internalParameters, replacedComponent.getMinReplication(),
-				replacedComponent.getMaxReplication(), replacedComponent
-						.getTimingRequirementPeriod());
+				replacedComponent.getMaxReplication(),
+				replacedComponent.getTimingRequirementPeriod());
 
 		this.replacedComponent = replacedComponent;
 	}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java
index 3f9607ad613f4267105bb45e6503472e0a22fab6..ba288281be3d0470d456e71bcd7c8e81d9ae8358 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ExecutionUnitAdapter.java
@@ -31,7 +31,7 @@ import org.fortiss.af3.safety.model.annotation.SafeFailureFraction;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 10411F2D6EB02AA92451248E47C0E2A6
+ * @ConQAT.Rating RED Hash: B30952C061FD25245811BD8A946F9C9C
  */
 public class AF3ExecutionUnitAdapter extends AF3ResourceAdapter<ExecutionUnit> implements
 		IExecutionUnitAdapter<ExecutionUnit> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3GatewayAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3GatewayAdapter.java
index a47c4fbe12c0157d165da6b07cacf09f5f3aedcf..5bfbe0ea20fe6e2650b68ade9c4bf37790c62b53 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3GatewayAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3GatewayAdapter.java
@@ -33,10 +33,10 @@ import org.fortiss.af3.platform.model.annotation.ResourceLink;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 83E5DB861E9058EB370CB6B8A8D5CEF0
+ * @ConQAT.Rating RED Hash: 8166E311B85AB0C501ED6FFA5B3592A3
  */
-public class AF3GatewayAdapter extends AF3ResourceAdapter<GatewayUnit> implements
-		IGatewayUnitAdapter<GatewayUnit> {
+public class AF3GatewayAdapter extends AF3ResourceAdapter<GatewayUnit>
+		implements IGatewayUnitAdapter<GatewayUnit> {
 
 	/** Power consumption to transfer a message of n bits via this {@link GatewayUnit}. */
 	private Double power;
@@ -48,6 +48,8 @@ public class AF3GatewayAdapter extends AF3ResourceAdapter<GatewayUnit> implement
 	 *            {@link GatewayUnit} to create an adapter for.
 	 * @param failureProb
 	 *            failure probability of the {@link GatewayUnit}.
+	 * @param power
+	 *            Power consumption of the Gateway.
 	 * 
 	 * @throws Exception
 	 *             if the {@link GatewayUnit} is part of the virtual platform (e.g., a driver) that
@@ -66,8 +68,7 @@ public class AF3GatewayAdapter extends AF3ResourceAdapter<GatewayUnit> implement
 			}
 
 			if(resLink.getResources() != null && resLink.getResources().size() == 0) {
-				throw new InvalidPlatformModelException(
-						gatewayUnit,
+				throw new InvalidPlatformModelException(gatewayUnit,
 						"One (or even more) gateway units must be referenced by an OnChipNetworkDriver in the Resource Link annotation. Each driver must be associated with at least one hardware element that is managed by the driver.");
 			}
 		}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3LogicalArchitectureAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3LogicalArchitectureAdapter.java
index 4af05c3d47445fc1bf21a3b54a36672c320ab9a6..5299b4c74ebc486f0803ba90dbb8bcbbe8a9100a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3LogicalArchitectureAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3LogicalArchitectureAdapter.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ILogicalArchitectureAda
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: E9A076CDFA20BC4B6EB4BB5162825409
+ * @ConQAT.Rating RED Hash: 2C387880D9B47259D33539C6C062C404
  */
 public class AF3LogicalArchitectureAdapter extends AF3ModelElementAdapter<ComponentArchitecture>
 		implements ILogicalArchitectureAdapter<ComponentArchitecture> {
@@ -35,5 +35,4 @@ public class AF3LogicalArchitectureAdapter extends AF3ModelElementAdapter<Compon
 	public AF3LogicalArchitectureAdapter(ComponentArchitecture componentArchitecture) {
 		super(componentArchitecture);
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3MemoryUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3MemoryUnitAdapter.java
index 29ef8f03e085e00c05896403be5851b0e027a018..1dcba8c2a492b56050b2c8747533552c7fe6c1e0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3MemoryUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3MemoryUnitAdapter.java
@@ -30,10 +30,10 @@ import org.fortiss.af3.platform.model.annotation.MemorySize;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: BBFE26C95D003DEE24AECDA3586F9C3E
+ * @ConQAT.Rating RED Hash: 9CC5B61DC141BA18E35569D8E47E2B44
  */
-public class AF3MemoryUnitAdapter extends AF3ResourceAdapter<MemoryUnit> implements
-		IMemoryUnitAdapter<MemoryUnit> {
+public class AF3MemoryUnitAdapter extends AF3ResourceAdapter<MemoryUnit>
+		implements IMemoryUnitAdapter<MemoryUnit> {
 
 	/** References the {@link MemorySize} annotation. */
 	private MemorySize memorySizeSpec;
@@ -65,5 +65,4 @@ public class AF3MemoryUnitAdapter extends AF3ResourceAdapter<MemoryUnit> impleme
 	public long getSizeInBytes() {
 		return memorySizeSpec.getSize();
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ModelElementAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ModelElementAdapter.java
index 5d1d3677a36fd4b7ad5bc2091b44254b4d30a999..316a30002d6bb52c1ae05c0494f11704baf646bb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ModelElementAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ModelElementAdapter.java
@@ -29,7 +29,7 @@ import org.fortiss.tooling.kernel.model.INamedElement;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7E5558C5819EB922831EED51AD7A32A0
+ * @ConQAT.Rating RED Hash: 6AB1826234EBF3C4152EA29AC444B607
  */
 public class AF3ModelElementAdapter<T extends IModelElement> implements IModelElementAdapter<T> {
 	/** Reference to underlying model element */
@@ -40,7 +40,6 @@ public class AF3ModelElementAdapter<T extends IModelElement> implements IModelEl
 	 */
 	public AF3ModelElementAdapter(T modelElement) {
 		this.modelElement = modelElement;
-
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3PlatformArchitectureAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3PlatformArchitectureAdapter.java
index b4a4d51db373104a7ec788aa2680dd64a5013690..a0a9d8e39d019486daab3e492c03d54c936491db 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3PlatformArchitectureAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3PlatformArchitectureAdapter.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.platform.model.PlatformArchitecture;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 36418DE9FA7E3F0396A951F123076788
+ * @ConQAT.Rating RED Hash: 712DCE109F035CD5E2271A5133DD8F26
  */
 public class AF3PlatformArchitectureAdapter extends AF3ModelElementAdapter<PlatformArchitecture>
 		implements IPlatformArchitectureAdapter<PlatformArchitecture> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3RequestAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3RequestAdapter.java
index 3dc3282747caafc2f5a06c33fda37d54085d2ccb..b174cd4ecab96d4d3a6341fd5f32016074774d16 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3RequestAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3RequestAdapter.java
@@ -26,7 +26,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: AD15B304A55F4F054DF0C4E9225DCC3E
+ * @ConQAT.Rating RED Hash: 360D590C83C0AA1ED8FC93514115B4B8
  */
 public class AF3RequestAdapter<T extends IModelElement> extends AF3ModelElementAdapter<T> implements
 		IRequestAdapter<T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceAdapter.java
index d199b888684a9735bcb5a12a602bc717e15216dc..e051c445830c9a5ad83117972cb5774ac2a2af6d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceAdapter.java
@@ -29,7 +29,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 7984539958C5188198BDBAF55F6D6EBD
+ * @ConQAT.Rating RED Hash: D20BB819CB380872F92D22A43BF00405
  */
 // TODO: Use extends IResource, here? Same would apply to Requester/resource.
 public class AF3ResourceAdapter<T extends IModelElement> extends AF3ModelElementAdapter<T>
@@ -44,7 +44,6 @@ public class AF3ResourceAdapter<T extends IModelElement> extends AF3ModelElement
 		super(modelElement);
 
 		this.failureRate = failureRate;
-
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceConnectionAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceConnectionAdapter.java
index 9687d2b4507c7f038fe38600dcbba8ba4f2d9cc2..7aa2025a2c0ebe2e3a636adba5802c519cec113e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceConnectionAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3ResourceConnectionAdapter.java
@@ -30,7 +30,7 @@ import org.fortiss.tooling.base.model.element.IConnection;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: FE4026BB3486B47590E187A1A4F4D0AD
+ * @ConQAT.Rating RED Hash: A8BBE07D7959022EE9EB83874CFEC5D7
  */
 public class AF3ResourceConnectionAdapter implements IResourceConnectionAdapter {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SignalAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SignalAdapter.java
index abf5769cef0fc72e9fc16e40cef564ae4f4b79ed..de9ea724320221cc251bfb828c9716cca0960ef3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SignalAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SignalAdapter.java
@@ -27,7 +27,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAda
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISignalAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
-import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.SignalType;
 
 /**
  * Adapter between the AF3 {@link Channel} and the DSE.
@@ -35,10 +35,10 @@ import org.fortiss.af3.exploration.extension.IDseInputParameters.SignalType;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E429AAA9A9E22807767EE4090F465731
+ * @ConQAT.Rating RED Hash: A4B145951DB4ED551A9B6212B9DA91D3
  */
-public class AF3SignalAdapter extends AF3RequestAdapter<OutputPort> implements
-		ISignalAdapter<OutputPort> {
+public class AF3SignalAdapter extends AF3RequestAdapter<OutputPort>
+		implements ISignalAdapter<OutputPort> {
 	/** Conversion constant for the message size. */
 	private static final long MBYTES_TO_BYTES = 1000 * 1000;
 
@@ -113,7 +113,9 @@ public class AF3SignalAdapter extends AF3RequestAdapter<OutputPort> implements
 		return getObject();
 	}
 
-	/** Returns the AF3 {@link InputPort} that is that receives the {@link Message} (if required). */
+	/**
+	 * Returns the AF3 {@link InputPort} that is that receives the {@link Message} (if required).
+	 */
 	public Collection<InputPort> getTargetPorts() {
 		return targetPorts;
 	}
@@ -134,8 +136,8 @@ public class AF3SignalAdapter extends AF3RequestAdapter<OutputPort> implements
 	@Override
 	public String getName() {
 		String targetNameList = "";
-		for(Iterator<IDeployableComponentAdapter<?>> targetIterator = targets.iterator(); targetIterator
-				.hasNext();) {
+		for(Iterator<IDeployableComponentAdapter<?>> targetIterator =
+				targets.iterator(); targetIterator.hasNext();) {
 			targetNameList += targetIterator.next().getName();
 			if(targetIterator.hasNext()) {
 				targetNameList += ", ";
@@ -156,5 +158,4 @@ public class AF3SignalAdapter extends AF3RequestAdapter<OutputPort> implements
 	public SignalType getSignalType() {
 		return signalType;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java
index 1717fd03cdd5ce2dcee6a0aed312f87ec5f3a80f..ea7415f8e93fef99a4f803dd87b8a351449f532b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java
@@ -37,6 +37,7 @@ import static org.fortiss.tooling.kernel.utils.KernelModelElementUtils.getParent
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -91,10 +92,9 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: E100772C43B2D42B14ADF9AB2164EEDE
+ * @ConQAT.Rating RED Hash: 10FBD083A332854BDB51E5FEAF835AE1
  */
-public class AF3SystemModelAdapter
-		extends
+public class AF3SystemModelAdapter extends
 		SystemModelAdapter<Component, ExecutionUnit, OutputPort, GatewayUnit, TransmissionUnit, MemoryUnit> {
 
 	/** References the AF3 {@link PlatformArchitecture} that is adapted. */
@@ -159,21 +159,17 @@ public class AF3SystemModelAdapter
 		// of a virtual platform.
 		hardwarePlatformArchitecture = getPhysicalPlatformArchitecture(platformArchitecture);
 
-		this.deploymentTargets =
-				createDeploymentTargets(systemParameters.getDeploymentTargets(),
-						systemParameters.getResourceFailureProbabilities());
-
-		memoryUnits =
-				createMemoryUnits(platformArchitecture,
-						systemParameters.getResourceFailureProbabilities());
-		gatewayUnits =
-				createGatewayUnits(platformArchitecture,
-						systemParameters.getResourceFailureProbabilities(),
-						systemParameters.getResourcePowerConsumption());
-		transmissionUnits =
-				createTransmissionUnits(platformArchitecture,
-						systemParameters.getResourceFailureProbabilities(),
-						systemParameters.getResourcePowerConsumption());
+		this.deploymentTargets = createDeploymentTargets(systemParameters.getDeploymentTargets(),
+				systemParameters.getResourceFailureProbabilities());
+
+		memoryUnits = createMemoryUnits(platformArchitecture,
+				systemParameters.getResourceFailureProbabilities());
+		gatewayUnits = createGatewayUnits(platformArchitecture,
+				systemParameters.getResourceFailureProbabilities(),
+				systemParameters.getResourcePowerConsumption());
+		transmissionUnits = createTransmissionUnits(platformArchitecture,
+				systemParameters.getResourceFailureProbabilities(),
+				systemParameters.getResourcePowerConsumption());
 		if(platformArchitecture != hardwarePlatformArchitecture) {
 			memoryUnits.addAll(createMemoryUnits(hardwarePlatformArchitecture,
 					systemParameters.getResourceFailureProbabilities()));
@@ -187,25 +183,22 @@ public class AF3SystemModelAdapter
 
 		availableResources = createAvailableResources();
 
-		parameterAdapter =
-				createDeploymentParameterMap(componentArchitecture, platformArchitecture,
-						systemParameters.getReplacementComponents());
+		parameterAdapter = createDeploymentParameterMap(componentArchitecture, platformArchitecture,
+				systemParameters.getReplacementComponents());
 		deploymentTargetConnectors =
 				createDeploymentTargetConnectors(systemParameters.getDeploymentTargets());
 		Multimap<Component, IDeployableComponentAdapter<Component>> componentToReplacementAdapter =
 				createComponentReplacementAdapters(systemParameters.getReplacementComponents());
-		deployableComponents =
-				createDeployableComponents(componentToReplacementAdapter,
-						systemParameters.getComponentPeriodMap(),
-						systemParameters.getComponentReplicationBounds());
+		deployableComponents = createDeployableComponents(componentToReplacementAdapter,
+				systemParameters.getComponentPeriodMap(),
+				systemParameters.getComponentReplicationBounds());
 		componentReplacementAdapters = componentToReplacementAdapter.values();
 		replicableComponents = new HashSet<>(deployableComponents);
 		realizableDeployableComponents = createRealizableDeployableComponents(deployableComponents);
 		Collection<ISignalAdapter<OutputPort>> unsortedMessages =
 				createSignalAdapters(systemParameters.getPortMessageSizes());
-		messages =
-				sortMessagesByExpectedOrder(unsortedMessages,
-						systemParameters.getComponentPeriodMap());
+		messages = sortMessagesByExpectedOrder(unsortedMessages,
+				systemParameters.getComponentPeriodMap());
 
 		virtualResourceToHardwareResourceMap = createVirtualResourceToHardwareResourceMap();
 
@@ -236,8 +229,7 @@ public class AF3SystemModelAdapter
 	 * {@link IDeployableComponentAdapter}s which are referenced by {@link Component}s of the input
 	 * {@link ComponentArchitecture} are included in the collection.
 	 */
-	private
-			Multimap<Component, IDeployableComponentAdapter<Component>>
+	private Multimap<Component, IDeployableComponentAdapter<Component>>
 			createComponentReplacementAdapters(Multimap<Component, Component> replacementComponents)
 					throws Exception {
 		Multimap<Component, IDeployableComponentAdapter<Component>> rval = HashMultimap.create();
@@ -260,13 +252,10 @@ public class AF3SystemModelAdapter
 	 * 
 	 * @throws Exception
 	 */
-	private
-			Collection<IDeployableComponentAdapter<Component>>
-			createDeployableComponents(
-					Multimap<Component, IDeployableComponentAdapter<Component>> componentReplacementAdapters,
-					Map<Component, Double> componentPeriodMap,
-					Map<Component, Pair<Integer, Integer>> componentReplicationBounds)
-					throws Exception {
+	private Collection<IDeployableComponentAdapter<Component>> createDeployableComponents(
+			Multimap<Component, IDeployableComponentAdapter<Component>> componentReplacementAdapters,
+			Map<Component, Double> componentPeriodMap,
+			Map<Component, Pair<Integer, Integer>> componentReplicationBounds) throws Exception {
 		Collection<IDeployableComponentAdapter<Component>> rval = new HashSet<>();
 
 		Map<Component, InternalComponentParameters> internalParameterMap =
@@ -304,10 +293,9 @@ public class AF3SystemModelAdapter
 	 *             Components that are concrete implementations of "abstract" {@link Component}s
 	 *             defined in the {@link ComponentArchitecture}.
 	 */
-	private Collection<IDeployableComponentAdapter<Component>>
-			createRealizableDeployableComponents(
-					Collection<IDeployableComponentAdapter<Component>> deployableComponents)
-					throws Exception {
+	private Collection<IDeployableComponentAdapter<Component>> createRealizableDeployableComponents(
+			Collection<IDeployableComponentAdapter<Component>> deployableComponents)
+			throws Exception {
 		Collection<IDeployableComponentAdapter<Component>> rval =
 				new ArrayList<IDeployableComponentAdapter<Component>>();
 
@@ -327,8 +315,12 @@ public class AF3SystemModelAdapter
 	 * of each given component using the {@link AF3DeploymentParameterMapAdapter} and transforms
 	 * them into a {@link InternalComponentParameters} representation.
 	 */
-	private Map<Component, InternalComponentParameters> createInternalParameterMaps(
-			Collection<Component> deployableComponents) {
+	private Map<Component, InternalComponentParameters>
+			createInternalParameterMaps(Collection<Component> deployableComponents) {
+		if(parameterAdapter == null) {
+			return Collections.emptyMap();
+		}
+
 		Map<Component, InternalComponentParameters> internalParameterMap =
 				new HashMap<Component, InternalComponentParameters>();
 
@@ -339,8 +331,8 @@ public class AF3SystemModelAdapter
 					new HashMap<IExecutionUnitAdapter<?>, Double>();
 			for(IExecutionUnitAdapter<?> execUnit : deploymentTargets) {
 				wcetMap.put(execUnit, parameterAdapter.getWcet(currentComponent, execUnit));
-				energyConsumptionMap.put(execUnit,
-						parameterAdapter.getEnergyConsumption(currentComponent, execUnit));
+				// energyConsumptionMap.put(execUnit,
+				// parameterAdapter.getEnergyConsumption(currentComponent, execUnit));
 			}
 
 			InternalComponentParameters parameterMap = new InternalComponentParameters();
@@ -502,8 +494,8 @@ public class AF3SystemModelAdapter
 	 * 
 	 * @throws Exception
 	 */
-	private Collection<ISignalAdapter<OutputPort>> createSignalAdapters(
-			Map<OutputPort, Long> messageSizes) throws Exception {
+	private Collection<ISignalAdapter<OutputPort>>
+			createSignalAdapters(Map<OutputPort, Long> messageSizes) throws Exception {
 		Collection<ISignalAdapter<OutputPort>> rval = new ArrayList<ISignalAdapter<OutputPort>>();
 
 		Collection<Component> af3DeployableComponents = new ArrayList<>();
@@ -526,10 +518,9 @@ public class AF3SystemModelAdapter
 					// Do not consider unconnected Ports
 					Collection<InputPort> filteredRecvPorts =
 							pickInstanceOf(InputPort.class, new ArrayList<>(targetPorts));
-					AF3SignalAdapter sigAdp =
-							new AF3SignalAdapter(currentSenderPort, currentSenderComponentAdapter,
-									filteredRecvPorts, receiverComponentAdapters,
-									messageSizes.get(currentSenderPort));
+					AF3SignalAdapter sigAdp = new AF3SignalAdapter(currentSenderPort,
+							currentSenderComponentAdapter, filteredRecvPorts,
+							receiverComponentAdapters, messageSizes.get(currentSenderPort));
 					sigAdp.setSignalType(portSignalTypes.get(currentSenderPort));
 					rval.add(sigAdp);
 				}
@@ -694,8 +685,8 @@ public class AF3SystemModelAdapter
 		Collection<ITransmissionUnitAdapter<TransmissionUnit>> rval =
 				new ArrayList<ITransmissionUnitAdapter<TransmissionUnit>>();
 
-		for(TransmissionUnit transmissionUnit : EcoreUtils.getChildrenWithType(
-				platformArchitecture, TransmissionUnit.class)) {
+		for(TransmissionUnit transmissionUnit : EcoreUtils.getChildrenWithType(platformArchitecture,
+				TransmissionUnit.class)) {
 			Double failureRate = resourceFailureRates.get(transmissionUnit);
 			// TODO: Virtual TransmissionUnits currently do not have ResourceLinks to their physical
 			// counterparts.
@@ -770,10 +761,8 @@ public class AF3SystemModelAdapter
 
 		// Create a map that captures the inverse link of from one IModelElement to another
 		// IModelelement.
-		Map<IModelElement, IModelElement> invElementReferences =
-				getInverseIntraPlatformReferences(
-						(PlatformArchitecture)platformArchitecture.getObject(),
-						platformInterconnectTypes);
+		Map<IModelElement, IModelElement> invElementReferences = getInverseIntraPlatformReferences(
+				(PlatformArchitecture)platformArchitecture.getObject(), platformInterconnectTypes);
 
 		// Initial traversal list of IConnectors attached to ExecutionUnits selected as deployment
 		// targets.
@@ -798,9 +787,8 @@ public class AF3SystemModelAdapter
 				// Path walk to determine the *real* connection targets, i.e. ignore hull elements
 				// like Tiles whose contained Cores (or partitions) were selected as deployment
 				// targets.
-				Collection<IConnector> targetConnectors =
-						getEffectiveConnectionTargets(currentConnector, invElementReferences,
-								af3DeploymentTargets);
+				Collection<IConnector> targetConnectors = getEffectiveConnectionTargets(
+						currentConnector, invElementReferences, af3DeploymentTargets);
 
 				// Create an IResourceConnectionAdapter between the sourceElement of the traversal
 				// and the *real* targets.
@@ -864,8 +852,7 @@ public class AF3SystemModelAdapter
 
 							// TODO: consider moving this check to the input model validation.
 							if(referencedNetworkInterfaces.size() == 0) {
-								throw new InvalidPlatformModelException(
-										currentNetworkDriver,
+								throw new InvalidPlatformModelException(currentNetworkDriver,
 										"No Network Interface is referenced in the ResourceLink annotation. Please specify at least one reference.");
 							}
 
@@ -885,16 +872,13 @@ public class AF3SystemModelAdapter
 								}
 							}
 							visitedConnectors.add(connectorAtTarget);
-
 						} else if(invElementReferences.get(connectorAtTarget.getOwner()) != null) {
 							// Special treatment for the connection between the physical platform
 							// and the virtual platform.
-							GatewayUnit currentNetworkDriver =
-									(GatewayUnit)invElementReferences.get(connectorAtTarget
-											.getOwner());
-							IPlatformExport driverExport =
-									pickFirstInstanceOf(IPlatformExport.class,
-											currentNetworkDriver.getConnectors());
+							GatewayUnit currentNetworkDriver = (GatewayUnit)invElementReferences
+									.get(connectorAtTarget.getOwner());
+							IPlatformExport driverExport = pickFirstInstanceOf(
+									IPlatformExport.class, currentNetworkDriver.getConnectors());
 
 							if(!visitedConnectors.contains(driverExport)) {
 								Collection<IHierarchicElement> targets =
@@ -1019,7 +1003,8 @@ public class AF3SystemModelAdapter
 	 * matching {@link Deployment} to the given list.
 	 */
 	private void addMatchingParameterDeploymentTo(Set<Deployment> paramDeployments,
-			ComponentArchitecture componentArchitecture, PlatformArchitecture platformArchitecture) {
+			ComponentArchitecture componentArchitecture,
+			PlatformArchitecture platformArchitecture) {
 		List<Deployment> matchingDeployments =
 				getDeploymentsWithParametersOf(componentArchitecture, platformArchitecture);
 		if(matchingDeployments != null && matchingDeployments.size() > 0) {
@@ -1033,8 +1018,8 @@ public class AF3SystemModelAdapter
 	 * Returns the set of {@link ComponentArchitecture}s that contain the referenced
 	 * {@link Component}s given by the {@code replacementComponents} map.
 	 */
-	private Set<ComponentArchitecture> getReferencedCompArchs(
-			Multimap<Component, Component> replacementComponents) {
+	private Set<ComponentArchitecture>
+			getReferencedCompArchs(Multimap<Component, Component> replacementComponents) {
 		Set<ComponentArchitecture> referencedCompArchs = new HashSet<ComponentArchitecture>();
 		for(Component diverseComponent : replacementComponents.values()) {
 			ComponentArchitecture diversityCompArch =
@@ -1065,9 +1050,7 @@ public class AF3SystemModelAdapter
 		}
 
 		assert (executionUnitAdapter == null) : "No IExecutionUnitAdapter found for the ExecutionUnit " +
-				af3ExecutionUnit.getName() +
-				"(ID: " +
-				af3ExecutionUnit.getId() +
+				af3ExecutionUnit.getName() + "(ID: " + af3ExecutionUnit.getId() +
 				"). Every AF3-ExecutionUnit should have a IExecutionUnitAdapter equivalent.";
 
 		return executionUnitAdapter;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3TransmissionUnitAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3TransmissionUnitAdapter.java
index 101f5d5506b4f95da20f61f2eb9d878ddb2bffba..2c2bc60b04a6fea066816d4229e0e0452ca5c5e4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3TransmissionUnitAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3TransmissionUnitAdapter.java
@@ -33,7 +33,7 @@ import org.fortiss.af3.timing.model.annotation.TransmissionUnitBandwidth;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: EB10B05AE1CBC476F39A55E4E3846B90
+ * @ConQAT.Rating RED Hash: DB265BE931A866509C4A948684EE132A
  */
 public class AF3TransmissionUnitAdapter extends AF3ResourceAdapter<TransmissionUnit> implements
 		ITransmissionUnitAdapter<TransmissionUnit> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/helper/AF3DeploymentParameterMapAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/helper/AF3DeploymentParameterMapAdapter.java
index 2a3fd3ec1dc0994d189b31fcbe52b35ad58f9d62..d69b89d23306aa050860e2c7f62c5c2577b41428 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/helper/AF3DeploymentParameterMapAdapter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/helper/AF3DeploymentParameterMapAdapter.java
@@ -39,7 +39,7 @@ import org.fortiss.af3.timing.model.annotation.Wcet;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 6763A8EBAF38A1520B60B684543C1B8C
+ * @ConQAT.Rating RED Hash: 5B2194AAB45AEA8678173086F4BBC6EE
  */
 public class AF3DeploymentParameterMapAdapter {
 	/**
@@ -52,9 +52,8 @@ public class AF3DeploymentParameterMapAdapter {
 	public AF3DeploymentParameterMapAdapter(Set<Deployment> af3DeploymentList) {
 		componentParamDeploymentMap = new HashMap<Component, Deployment>();
 		for(Deployment singleParamDeployment : af3DeploymentList) {
-			ComponentArchitecture refCompArch =
-					(ComponentArchitecture)singleParamDeployment
-							.getComponentArchitectureReference().getReference();
+			ComponentArchitecture refCompArch = (ComponentArchitecture)singleParamDeployment
+					.getComponentArchitectureReference().getReference();
 			Collection<Component> containedComponents =
 					getChildrenWithType(refCompArch, Component.class);
 			for(Component currentComponent : containedComponents) {
@@ -69,9 +68,8 @@ public class AF3DeploymentParameterMapAdapter {
 		boolean validAf3Elements = (af3Component != null && af3ExecutionUnit != null);
 
 		Deployment associatedParamDeployment = componentParamDeploymentMap.get(af3Component);
-		Object wcetValue =
-				associatedParamDeployment.getDeploymentParameter(af3Component, af3ExecutionUnit,
-						Wcet.class, null);
+		Object wcetValue = associatedParamDeployment.getDeploymentParameter(af3Component,
+				af3ExecutionUnit, Wcet.class, null);
 		return (validAf3Elements && wcetValue != null) ? ((BigDecimal)wcetValue).doubleValue()
 				: -1.0;
 	}
@@ -83,16 +81,16 @@ public class AF3DeploymentParameterMapAdapter {
 		boolean validAf3Elements = (af3Component != null && af3ExecutionUnit != null);
 
 		Deployment associatedParamDeployment = componentParamDeploymentMap.get(af3Component);
-		Object energyValue =
-				associatedParamDeployment.getDeploymentParameter(af3Component, af3ExecutionUnit,
-						EnergyConsumption.class, null);
+		Object energyValue = associatedParamDeployment.getDeploymentParameter(af3Component,
+				af3ExecutionUnit, EnergyConsumption.class, null);
 		return (validAf3Elements && energyValue != null) ? (Double)energyValue : -1.0;
 	}
 
-	/** Returns the corresponding {@link ExecutionUnit} of the given {@link IExecutionUnitAdapter}. */
+	/**
+	 * Returns the corresponding {@link ExecutionUnit} of the given {@link IExecutionUnitAdapter}.
+	 */
 	private ExecutionUnit getAf3ExecutionUnit(IExecutionUnitAdapter<?> deploymentTarget) {
 		Object executionUnit = deploymentTarget.getObject();
 		return (executionUnit instanceof ExecutionUnit) ? (ExecutionUnit)executionUnit : null;
 	}
-
 }
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 0417c7b3c84f3cfce35c9fbd7f06c9fad62b3adb..37bd47b0b69d66dd09f428a77fffdb3f1f6257c1 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
@@ -34,9 +34,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
@@ -48,7 +51,7 @@ import org.jgrapht.graph.ListenableDirectedWeightedGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F7CCB3BD4D73FC50E18801342EE28E30
+ * @ConQAT.Rating RED Hash: FEB51F6C508DBB356751270DAEF1DCA4
  */
 public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph {
 
@@ -88,6 +91,7 @@ public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph {
 	}
 
 	/** {@inheritDoc} */
+	@SuppressWarnings("unchecked")
 	@Override
 	public AcyclicTaskGraph copy() {
 		AcyclicTaskGraph clonedTaskGraph;
@@ -111,8 +115,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/ChannelAdapterWeightedEdge.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/ChannelAdapterWeightedEdge.java
index a7a93b53a83d11b96d0dae1ce7d307db874c8529..25c932fc0bdbd6a552e48bdd059292df91ad29bc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/ChannelAdapterWeightedEdge.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/ChannelAdapterWeightedEdge.java
@@ -27,7 +27,7 @@ import org.jgrapht.graph.DefaultWeightedEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 6EDF7F1A74B9CF6C7F01D64071FEC3DB
+ * @ConQAT.Rating RED Hash: 3A8084865E632376419B536D6A749F0F
  */
 public class ChannelAdapterWeightedEdge extends DefaultWeightedEdge {
 	/** {@link ISignalAdapter} represented by this edge. */
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 e371848f7b335477107b81a50ebd7edc483bfbde..67e98c3952076fffc920e07eb03b5a212b4c4a42 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
@@ -56,7 +56,7 @@ import com.google.common.collect.Multimap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 381F4A453BC383B82EB3EA6AF0463B69
+ * @ConQAT.Rating RED Hash: 33EFBE844FCFB9357C1A74239F1EAA6B
  */
 
 public class DefaultTaskGraph implements TaskGraph, Cloneable {
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 e4b1f331381ace715776144059e859ce4436c75f..c11d270889514fdd4498794eaf52b17609ff58f9 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
@@ -34,7 +34,7 @@ import org.jgrapht.graph.ListenableDirectedWeightedGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 1A77DB8F1A9DB7D52AA66EEA283A0CB6
+ * @ConQAT.Rating RED Hash: 4F59C3F451E5B93C26979ECB988961CD
  */
 public interface TaskGraph {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraphInstantiator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraphInstantiator.java
index c372a28d9ee1ed6a78b38a0f8150bd0ede954d8f..65ec969bfe63098dcf5e63e514008f5e44943dc7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraphInstantiator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraphInstantiator.java
@@ -37,7 +37,7 @@ import org.jgrapht.graph.ListenableDirectedWeightedGraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3D9D425E5623FEBBF910BC5C7897819D
+ * @ConQAT.Rating RED Hash: 1A1A0F4F180366BE93A6BC9B30E28C3E
  */
 public class TaskGraphInstantiator<T extends TaskGraph> {
 
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 f7ae0600b7e2673547bad9b00f876e8ef29570d8..ad118389e0a738cd6c8dbde1bfc9475d995a94d0 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
@@ -48,7 +48,7 @@ import org.jgrapht.graph.DefaultEdge;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 4A21564BD59BC7C8313EB87D9527DE34
+ * @ConQAT.Rating RED Hash: 915C92CFE08F605A2E1D1A5E25941AFC
  */
 public class Message implements Comparable<Message> {
 
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 c473a4516a8ef5f33c21f2de9a7aa1f7df37ad05..f22ac882db83c5983641c7f877b447fe2b1a928a 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
@@ -41,7 +41,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3000F882B2E200E6258040B17C0D790D
+ * @ConQAT.Rating RED Hash: 3DC72E01DAA810BB02C17F77FF868FB1
  */
 public class MessageGenerator<S extends TaskMappingEntry, T extends TaskMappingEncoding<S>> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/faultmodel/FaultDetector.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/faultmodel/FaultDetector.java
index b0ffa2fb5e31b14f13024864469259501aeecf75..5873d738ea97b5ae215067e9811f0b27373841dc 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/faultmodel/FaultDetector.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/faultmodel/FaultDetector.java
@@ -24,7 +24,7 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 136B4E4F1C88232A96EAE17240724A50
+ * @ConQAT.Rating RED Hash: 78332B5EF499ADEADA289AEF620A74C6
  */
 public class FaultDetector implements java.lang.Comparable<FaultDetector> {
 
@@ -69,5 +69,4 @@ public class FaultDetector implements java.lang.Comparable<FaultDetector> {
 
 		return "(" + overhead + "," + coverage + ")";
 	}
-
 }
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 4d16eff92355324645ce6b5e14f29a3799a00cf8..4eaa4893695dfda186e4448616d0bbfe05ec8f9f 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
@@ -31,7 +31,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 9B94F8118D5063A0E06F0A615BFD1199
+ * @ConQAT.Rating RED Hash: 884953D9058F7E1B31B4131B21BC2C90
  */
 public interface IMappingEncoding extends IExplorationEncoding {
 
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 3b98654df10b60cf2083e9aaa32e6930019d8051..5f36a25216fa285412f25a0eca1d6a49dec8534b 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
@@ -27,7 +27,7 @@ import org.fortiss.af3.exploration.alg.guava.IAssociativeElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4AF6E3B6A7E704A3A728131D76C903F8
+ * @ConQAT.Rating RED Hash: BF7C1120AAA8DA2FDA560144FAD21A27
  */
 public interface IMappingEntry extends IAssociativeElement<IMappingEntry> {
 
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 948f0c1238ad77f30c57b380eb2b96b8a4599c58..64f084d4712491168499d0a7bdd73731e6275c03 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
@@ -32,7 +32,7 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: FA5520FE767C8CFCBB8DB765DDCEE7A3
+ * @ConQAT.Rating RED Hash: 5F0B78D029247AC29FA251D735077ED3
  */
 public interface IMessageRouter {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouterBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouterBase.java
index 0c237f2edc65ddd3798037a4dbfda33598026b88..50ce9e480afc081e843cf0b33ee7bd893b9b75a4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouterBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouterBase.java
@@ -36,7 +36,7 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 2945C8FBB00A6399D9C77DB177644AEA
+ * @ConQAT.Rating RED Hash: 894341A61C2055313F5094D54B266862
  */
 public abstract class MessageRouterBase implements IMessageRouter {
 
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 276c90a4f2ffa2ceed7fec690556e1509c18b7bd..3de6bd8f73287f75d8a7e01a0baa9ddd4f3a07a3 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
@@ -43,7 +43,7 @@ import org.jgrapht.graph.DirectedSubgraph;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: EDA740D1D7CD3FACA8D7280C77D2E0E1
+ * @ConQAT.Rating RED Hash: 20D3874505D5F1F82D9865AEFE65733F
  */
 public class ShortestPathRouter extends MessageRouterBase {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/random/RandomExploration.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/random/RandomExploration.java
index 5cee2833b9d100eff9b801b9cb854608118f1696..31b3c76c310391c68f060672bb0293bca3613f6d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/random/RandomExploration.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/random/RandomExploration.java
@@ -17,6 +17,7 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.sysmodel.random;
 
+import java.lang.reflect.Constructor;
 import java.security.SecureRandom;
 import java.util.Random;
 
@@ -34,7 +35,7 @@ import com.google.common.primitives.Longs;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1AE32FA77D7C6E17C7DE8EC54B16A19E
+ * @ConQAT.Rating RED Hash: A8CF5A58F11968C8E73771EF598928A8
  */
 public class RandomExploration {
 
@@ -83,7 +84,7 @@ public class RandomExploration {
 	 * @throws Exception
 	 *             if the centralized random number generator has been initialized before.
 	 */
-	public boolean init(RandomnessType randType, long seed) throws Exception {
+	public void init(RandomnessType randType, long seed) throws Exception {
 		if(isInitialized) {
 			throw new Exception("The RandomExploration singleton can only be initialized once.");
 		}
@@ -95,8 +96,6 @@ public class RandomExploration {
 			randGenerator = new SecureRandom(Longs.toByteArray(seed));
 		}
 		isInitialized = true;
-
-		return true;
 	}
 
 	/**
@@ -112,7 +111,9 @@ public class RandomExploration {
 			throw new Exception(
 					"The RandomExploration singleton can only be reinitialized if init(...) has been called before.");
 		}
-		randGenerator = randGenerator.getClass().newInstance();
+		Constructor<? extends Random> randomGenCtor =
+				randGenerator.getClass().getDeclaredConstructor();
+		randGenerator = randomGenCtor.newInstance();
 	}
 
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/ScheduleRuntimeException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/ScheduleRuntimeException.java
index 7b0a9ff2223e41c23958f660c6a75262e8e95235..3074654979b25502ea3eb7adaece30fa6832f378 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/ScheduleRuntimeException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/ScheduleRuntimeException.java
@@ -21,7 +21,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu
 
 /**
  * {@link RuntimeException} that is specific for errors in the scheduling. It allows to obtain the
- * faulty {@link StrictTTSchedule} via getter method such that it can be displayed in the schedule
+ * faulty {@link StrictTTSchedule} via a getter method such that it can be displayed in the schedule
  * plotter.
  * <p>
  * Since Opt4J does not allow to throw exceptions in the decoding phase, the only "clean" way to
@@ -30,7 +30,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F59DECC44AC18F346664D4DF462D81AB
+ * @ConQAT.Rating RED Hash: 2A82A37B1512904C928BD99AE90436B6
  */
 public class ScheduleRuntimeException extends RuntimeException {
 
@@ -59,5 +59,4 @@ public class ScheduleRuntimeException extends RuntimeException {
 	public StrictTTSchedule<?, ?> getSchedule() {
 		return schedule;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java
index 71227d427312daa80327bb37d0c140904a22f07c..fcb7b24526c7f92cd47cd725549f6968d967762b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java
@@ -34,7 +34,7 @@ import org.fortiss.af3.exploration.model.time.DeadlineConstraint;
  * @author barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 2156D85F82DEBD6A5BFAB39FC7719B87
+ * @ConQAT.Rating RED Hash: 5D9B8619C180BEC70FE003273BF660D7
  */
 public class SchedulerBase {
 	/** Precision for double */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
index 286d3ddf3a6de14fd6147e5a5bf0d87a55a923ad..907d67393f8c6e8d08fcbea09d5206ca7bfda0db 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
@@ -51,7 +51,6 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.IMessageRouter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.ShortestPathRouter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.SchedulerBase;
-import org.fortiss.af3.exploration.alg.graph.display.JGraphTVisualizer;
 import org.fortiss.af3.exploration.model.ExplorationSpecification;
 import org.jgrapht.DirectedGraph;
 import org.jgrapht.Graphs;
@@ -67,7 +66,7 @@ import com.google.common.collect.Multimap;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 6B5BB58A19C9E61BFC0AC678521DAE29
+ * @ConQAT.Rating RED Hash: FD93A0CFC7A0D3513D2179F87F236778
  */
 public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends SchedulerBase {
@@ -102,7 +101,6 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 				// Message is not schedulable (e.g. an RC message) --> Skip scheduling this message.
 				continue;
 			}
-
 			IDeployableComponentAdapter<?> senderComponent =
 					senderSlot.getDeployedRequester().getDeployableComponent();
 			message.addMessageSenderTimeSlot(senderSlot);
@@ -113,14 +111,12 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 				// consider this receiver here.
 				AcyclicTaskGraph correspondingTaskGraph =
 						acycItgEnc.getTaskGraphOf(senderComponent);
-
 				IDeployableComponentAdapter<?> receiverComponent =
 						receiverEntry.getDeployableComponent();
 				if(correspondingTaskGraph.getGraph().containsEdge(senderComponent,
 						receiverComponent)) {
 					TimeSlot recvTimeSlot = schedule.getTimeSlotOf(receiverEntry);
 					message.addMessageReceiverTimeSlots(recvTimeSlot);
-
 					Integer numReqMsgs = reqRecvMsgsPerSlot.get(recvTimeSlot);
 					if(numReqMsgs == null) {
 						numReqMsgs = Integer.valueOf(0);
@@ -129,9 +125,8 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 					reqRecvMsgsPerSlot.put(recvTimeSlot, numReqMsgs);
 				}
 			}
-
-			messageRoutes.put(message, messageRouter.calculateMessageRoute(message
-					.getSenderTimeSlot().getResource(), message.getReceiverResources()));
+			messageRoutes.put(message, messageRouter.calculateMessageRoute(
+					message.getSenderTimeSlot().getResource(), message.getReceiverResources()));
 		}
 
 		// Construct a message queue whose ordering defines the type of scheduling, i.e. ESF, EDF
@@ -170,17 +165,10 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 
 			Set<DefaultEdge> senderResourceEdges =
 					messageGraph.edgesOf(currentMessage.getSenderTimeSlot().getResource());
-
-			// Debug code.
-			if(senderResourceEdges.size() != 1) {
-				JGraphTVisualizer<IResourceAdapter<?>, DefaultEdge> taskViz =
-						new JGraphTVisualizer<IResourceAdapter<?>, DefaultEdge>(messageGraph);
-				taskViz.displayGraph("Invalid message path");
-			}
-
 			// Here, we assume that a message may have only one source element. This assumption fits
 			// to multi-cast messaging and the principle how new messages are generated.
-			assert senderResourceEdges.size() == 1 : "Each message must have exactly one source slot!";
+			assert senderResourceEdges
+					.size() == 1 : "Each message must have exactly one source slot!";
 			ICommunicationResourceAdapter<?> communicationResource =
 					(ICommunicationResourceAdapter<?>)messageGraph
 							.getEdgeTarget(senderResourceEdges.iterator().next());
@@ -196,41 +184,26 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 				senderSlot.replaceSuccessor(successorSlot, communicationSlot);
 				successorSlot.replacePredecessor(senderSlot, communicationSlot);
 			}
-
 			// It is required to shift the receiver tasks by the amount of time
 			// that the communicationSlot requires for transmission. This is needed to
 			// maintain causality.
 			shiftReceiverSlot(schedule, currentMessage, communicationSlot);
-
 			// Determine and generate successor messages from the current one.
 			// TODO: remove dependency on the TimeSlot
 			Collection<TimeSlot> reachedReceiverSlots = new HashSet<TimeSlot>();
-			Collection<Message> succMessages =
-					generateSuccessorMessages(schedule, currentMessage, messageGraph,
-							communicationResource, communicationSlot, messageRoutes,
-							reqRecvMsgsPerSlot, reachedReceiverSlots);
+			Collection<Message> succMessages = generateSuccessorMessages(schedule, currentMessage,
+					messageGraph, communicationResource, communicationSlot, messageRoutes,
+					reqRecvMsgsPerSlot, reachedReceiverSlots);
 			messageReadyQueue.addAll(succMessages);
-
 			// The ready and release queues are updated for the next iteration.
-			List<TimeSlot> readySenderSlots =
-					findNextSenderSlots(reachedReceiverSlots, reqRecvMsgsPerSlot,
-							emitableMessagesPerSlot);
+			List<TimeSlot> readySenderSlots = findNextSenderSlots(reachedReceiverSlots,
+					reqRecvMsgsPerSlot, emitableMessagesPerSlot);
 			updateMessageQueues(readySenderSlots, emitableMessagesPerSlot, messageReleaseQueue,
 					messageReadyQueue);
 		}
-
 		if(!messageReleaseQueue.isEmpty()) {
 			schedule = null;
 		}
-
-		// if(isDebugVerboseEnabled() && !messageReleaseQueue.isEmpty()) {
-		// JGraphTVisualizer<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> acycInst =
-		// new JGraphTVisualizer<>(acycItgEnc.getTaskGraphs().stream().findAny().get()
-		// .getGraph());
-		// acycInst.displayGraph("Acyc Inst TDMA");
-		// }
-		//
-		// assert (messageReleaseQueue.isEmpty());
 	}
 
 	/**
@@ -301,6 +274,8 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 	 *            slot-shifting.
 	 * @param reachedReceiverSlots
 	 *            Collection of {@link TimeSlot}s that received a message.
+	 * @return Collection of {@link Message}s that must be sent from the currently traversed
+	 *         Resource such that the signal arrives at the target.
 	 */
 	private Collection<Message> generateSuccessorMessages(StrictTTSchedule<S, T> schedule,
 			Message currentMessage,
@@ -325,8 +300,8 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 				messageRouter.getRemainingMessageGraphs(currentMessage, communicationResource,
 						currentMessageGraph);
 		// Generate a new message for each direct successor in the communication graph.
-		for(IResourceAdapter<?> nextCommunicationResource : Graphs.successorListOf(
-				currentMessageGraph, communicationResource)) {
+		for(IResourceAdapter<?> nextCommunicationResource : Graphs
+				.successorListOf(currentMessageGraph, communicationResource)) {
 			// Check, if a new message is required, i.e. the current direct successor is no receiver
 			// of the message.
 			if(!currentMessageReceiverResources.contains(nextCommunicationResource)) {
@@ -343,9 +318,8 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 
 				// Finally, generate the message.
 				if(!successorReceiverSlots.isEmpty()) {
-					Message successorMessage =
-							new Message(currentMessage.getSignalAdapter(), communicationSlot,
-									successorReceiverSlots);
+					Message successorMessage = new Message(currentMessage.getSignalAdapter(),
+							communicationSlot, successorReceiverSlots);
 					generatedMessages.add(successorMessage);
 					messageRoutes.put(successorMessage, successorRoute);
 				}
@@ -462,18 +436,16 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 		// time is added to avoid time slots with a duration of zero.
 		double resourceWCTT = 0.0;
 		if(communicationResource instanceof ITransmissionUnitAdapter) {
-			resourceWCTT =
-					((ITransmissionUnitAdapter<?>)communicationResource)
-							.getTransmissionDuration(message.getMessageSize() / bitsPerMByte);
+			resourceWCTT = ((ITransmissionUnitAdapter<?>)communicationResource)
+					.getTransmissionDuration(message.getMessageSize() / bitsPerMByte);
 		} else if(communicationResource instanceof IGatewayUnitAdapter) {
 			resourceWCTT = ((IGatewayUnitAdapter<?>)communicationResource).getWCFT();
 		}
 		// resourceWCTT = Math.max(resourceWCTT, minTransmissionDuration);
 
 		// Create a new slot for the message.
-		TimeSlot communicationSlot =
-				new TimeSlot(message, communicationResource, messageStartTime, messageStartTime +
-						resourceWCTT);
+		TimeSlot communicationSlot = new TimeSlot(message, communicationResource, messageStartTime,
+				messageStartTime + resourceWCTT);
 
 		// Insert the created slot into the schedule of the communication resource.
 		if(schedule.getResourceSchedule(communicationResource) != null) {
@@ -581,9 +553,8 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends
 				// to shifting other TimeSlots on the same resource.
 				if(shiftTime > 0) {
 					// Shift slots of causality violating slot.
-					HashSet<TimeSlot> shiftedSlots =
-							shiftResourceSlots(successorSlot, shiftTime,
-									schedule.getResourceSchedule(successorSlot.getResource()));
+					HashSet<TimeSlot> shiftedSlots = shiftResourceSlots(successorSlot, shiftTime,
+							schedule.getResourceSchedule(successorSlot.getResource()));
 					assert (schedule.getResourceSchedule(successorSlot.getResource())
 							.validateResourceSchedule());
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
index e86ae08e57f8b01a90727a4ee92c900f0cb6768b..10ce4333dcff8dc7e3d9ff27f37082029670cd65 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
@@ -62,7 +62,7 @@ import com.google.common.collect.Sets;
  * @author huang
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 632E4CD1D8D00E46F757D4A888B4B529
+ * @ConQAT.Rating RED Hash: FF84855C21F320AC46FF3EE7C4484355
  */
 public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
 		extends SchedulerBase {
@@ -92,7 +92,9 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 		/** Unscheduled predecessor {@link SchedulingObject}s of this {@link SchedulingObject}. */
 		protected LinkedList<SchedulingObject> unscheduledPredecessors;
 
-		/** Comparator defining the priority of {@link SchedulingObject}s based on their deadline. */
+		/**
+		 * Comparator defining the priority of {@link SchedulingObject}s based on their deadline.
+		 */
 		SchedulingObjectComparator comparator;
 
 		/**
@@ -100,7 +102,8 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 		 * deadline.
 		 */
 		public SchedulingObject(SchedulingObjectComparator comparator,
-				IDeployableComponentAdapter<?> deployableComponent, double release, double deadline) {
+				IDeployableComponentAdapter<?> deployableComponent, double release,
+				double deadline) {
 			this.comparator = comparator;
 			this.deployableComponent = deployableComponent;
 			this.release = release;
@@ -244,9 +247,9 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 
 				// TODO: This used to be based on TaskGraph.index. Check if the implementation based
 				// on the {@link TaskGraph}s {@link #hashCode} is also correct.
-				return Integer
-						.compare(acycItgEnc.getTaskGraphOf(obj1.deployableComponent).hashCode(),
-								acycItgEnc.getTaskGraphOf(obj2.deployableComponent).hashCode());
+				return Integer.compare(
+						acycItgEnc.getTaskGraphOf(obj1.deployableComponent).hashCode(),
+						acycItgEnc.getTaskGraphOf(obj2.deployableComponent).hashCode());
 			}
 		}
 	}
@@ -279,18 +282,18 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			while(iter.hasNext()) {
 				IDeployableComponentAdapter<?> deployableComponent = iter.next();
 				// create the instance of each hyper-period
-				for(int i = 0; i < systemModelAdapter.getHyperPeriod() / taskGraph.getPeriod(); i++) {
+				for(int i = 0; i < systemModelAdapter.getHyperPeriod() /
+						taskGraph.getPeriod(); i++) {
 					double releasetime = i * taskGraph.getPeriod();
 					double effectiveDeadline = releasetime + taskGraph.getPeriod();
 
-					SchedulingObject sobject =
-							new SchedulingObject(EDFTopologicalComparator, deployableComponent,
-									releasetime, effectiveDeadline);
+					SchedulingObject sobject = new SchedulingObject(EDFTopologicalComparator,
+							deployableComponent, releasetime, effectiveDeadline);
 					// set the topological index
 					sobject.index = index++;
 					// add the predecessor list
-					for(ChannelAdapterWeightedEdge edge : taskGraph.getGraph().incomingEdgesOf(
-							deployableComponent)) {
+					for(ChannelAdapterWeightedEdge edge : taskGraph.getGraph()
+							.incomingEdgesOf(deployableComponent)) {
 						IDeployableComponentAdapter<?> sourceComponent =
 								taskGraph.getGraph().getEdgeSource(edge);
 						// look into the previous allocated scheduling objects
@@ -346,7 +349,6 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 		for(SchedulingObject obj : releaseQueueLocal) {
 			obj.adjustSchedObjReferences(releaseQueueLocal);
 		}
-
 		// Initialize ready queue
 		SortedSet<SchedulingObject> readyQueue =
 				new TreeSet<SchedulingObject>(new SchedulingObjectComparator(acycItgEnc));
@@ -356,11 +358,9 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			}
 		}
 		releaseQueueLocal.removeAll(readyQueue);
-
 		// maintain the current time on each resource
 		Map<IExecutionUnitAdapter<?>, Apfloat> currenttimes =
 				new HashMap<IExecutionUnitAdapter<?>, Apfloat>();
-
 		// This map contains the information which scheduling object represents which
 		// IDeployableComponentAdapter
 		Map<IDeployableComponentAdapter<?>, SchedulingObject> schedulingComponentMap =
@@ -371,7 +371,6 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 
 		// This map remembers which slot is added for which entry.
 		Map<S, TimeSlot> mappingEntryToTimeSlot = new HashMap<S, TimeSlot>();
-
 		// This map associated each SchedulingObject with the TimeSlots that have been generated for
 		// it.
 		Multimap<SchedulingObject, TimeSlot> generatedTimeSlots = LinkedListMultimap.create();
@@ -380,9 +379,8 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 		while(!readyQueue.isEmpty()) {
 			// Add and resort ready queue acc. to deadlines (they can appear dynamically after the
 			// execution of another component)
-			Collection<IDeployableComponentAdapter<?>> componentsWithDeadlines =
-					Sets.intersection(schedulingComponentMap.keySet(),
-							componentDeadlineSourceMap.keySet());
+			Collection<IDeployableComponentAdapter<?>> componentsWithDeadlines = Sets.intersection(
+					schedulingComponentMap.keySet(), componentDeadlineSourceMap.keySet());
 			if(!componentsWithDeadlines.isEmpty()) {
 				for(IDeployableComponentAdapter<?> currentDeadlineComponent : componentsWithDeadlines) {
 					// Retrieve the IDeployableComponentAdapter that is the target of the current
@@ -413,47 +411,39 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 					}
 				}
 			}
-
 			// Pick first task in the ready queue...
 			SchedulingObject schedulingObject = readyQueue.first();
-
 			// ...and schedule it
-			Apfloat finishTime =
-					scheduleObject(schedulingObject, acycItgEnc, taskMapping, schedule,
-							currenttimes, mappingEntryToTimeSlot, generatedTimeSlots);
+			Apfloat finishTime = scheduleObject(schedulingObject, acycItgEnc, taskMapping, schedule,
+					currenttimes, mappingEntryToTimeSlot, generatedTimeSlots);
 
 			// Check if any successor becomes ready
 			List<SchedulingObject> toBeRemoved = new ArrayList<SchedulingObject>();
 			for(SchedulingObject object : releaseQueueLocal) {
 				if(object.predecessors.contains(schedulingObject)) {
-					object.ready =
-							(object.ready > finishTime.doubleValue() ? object.ready : finishTime
-									.doubleValue());
+					object.ready = (object.ready > finishTime.doubleValue() ? object.ready
+							: finishTime.doubleValue());
 					object.unscheduledPredecessors.remove(schedulingObject);
 					if(object.unscheduledPredecessors.isEmpty()) {
 						toBeRemoved.add(object);
 					}
 				}
 			}
-
 			// Move the ready scheduling objects to the ready queue
 			readyQueue.addAll(toBeRemoved);
 			releaseQueueLocal.removeAll(toBeRemoved);
-
 			// Remove current scheduling object
 			readyQueue.remove(schedulingObject);
 		}
-
 		if(!releaseQueueLocal.isEmpty()) {
 			for(SchedulingObject schObj : releaseQueueLocal) {
 				Double compPeriod = schObj.deployableComponent.getTimingRequirementPeriod();
 				if(compPeriod != null) {
-					throw new RuntimeException("The Components " + releaseQueueLocal +
-							" were not scheduled...");
+					throw new RuntimeException(
+							"The Components " + releaseQueueLocal + " were not scheduled...");
 				}
 			}
 		}
-
 		if(!schedule.validateSchedule(true)) {
 			throw new RuntimeException("Schedule is not valid...");
 		}
@@ -465,16 +455,8 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			StrictTTSchedule<S, T> schedule, Map<IExecutionUnitAdapter<?>, Apfloat> currentTimeMap,
 			Map<S, TimeSlot> mappingEntryToTimeSlot,
 			Multimap<SchedulingObject, TimeSlot> generatedTimeSlots) {
-
-		// TODO: use another representation ro make an access via the reference obsolete
-		// IDeployableComponentAdapter deployableComponent = schedulingObject.deployableComponent;
-		// if(deployableComponent.isInstantiation()) {
-		// deployableComponent = deployableComponent.getReplacedComponent();
-		// }
 		Collection<S> entries = encoding.getMappingEntriesOf(schedulingObject.deployableComponent);
-
 		TaskGraph taskGraph = acycItgEnc.getTaskGraphOf(schedulingObject.deployableComponent);
-
 		Apfloat startTime = new Apfloat(-1, DOUBLE_PRECISION);
 		Apfloat finishTime = new Apfloat(-1, DOUBLE_PRECISION);
 
@@ -502,9 +484,8 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			}
 
 			// Add execution time
-			Apfloat deployableComponentExecutionTime =
-					getExecutionTime(encoding, acycItgEnc, schedulingObject.deployableComponent,
-							entry);
+			Apfloat deployableComponentExecutionTime = getExecutionTime(encoding, acycItgEnc,
+					schedulingObject.deployableComponent, entry);
 			if(deployableComponentExecutionTime.compareTo(Apcomplex.ZERO) == -1) {
 				throw new ScheduleRuntimeException(schedule,
 						"Could not determine the runtime execution time for the Component " +
@@ -525,10 +506,9 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			// Build time slot
 			long iteration = java.lang.Math.round(schedulingObject.release / taskGraph.getPeriod());
 			iteration = iteration >= 0 ? iteration : 0;
-			TimeSlot deployableComponentSlot =
-					schedule.createTimeSlot(entry, deploymentTarget, predecessorSlots,
-							startTime.floatValue(), deployableComponentEndTime.floatValue(),
-							iteration);
+			TimeSlot deployableComponentSlot = schedule.createTimeSlot(entry, deploymentTarget,
+					predecessorSlots, startTime.floatValue(),
+					deployableComponentEndTime.floatValue(), iteration);
 
 			// Register the generated TimeSlot at its predecessors.
 			for(SchedulingObject predecessor : schedulingObject.getPredecessors()) {
@@ -547,10 +527,9 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 			// the current deployableComponentSlot.
 			// Add the information about the sender and the receiver TimeSlots which contain the
 			// start and end times of the Message.
-			Apfloat delay =
-					registerIncomingMessagesWithSchedule(encoding, acycItgEnc, schedule,
-							mappingEntryToTimeSlot, schedulingObject.deployableComponent,
-							startTime, entry.getTarget(), iteration, deployableComponentSlot);
+			Apfloat delay = registerIncomingMessagesWithSchedule(encoding, acycItgEnc, schedule,
+					mappingEntryToTimeSlot, schedulingObject.deployableComponent, startTime,
+					entry.getTarget(), iteration, deployableComponentSlot);
 
 			deployableComponentSlot.shift(delay.floatValue());
 			deployableComponentEndTime =
@@ -565,9 +544,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T
 				finishTime = deployableComponentEndTime;
 			}
 		}
-
 		return finishTime;
-
 	}
 
 	/** Returns the execution time for the given {@link IDeployableComponentAdapter}. */
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java
index 30e8c68bdce77a3fd3d7ad81eca0bf1b41568bf3..b6c1b9df942f80dc9bc19d44f6c6cf10731bacf5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java
@@ -39,7 +39,7 @@ import org.fortiss.af3.exploration.model.ExplorationSpecification;
  * @author huang, barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: FA94B385E6898EA117C43DFF7A90982C
+ * @ConQAT.Rating RED Hash: 21ACBD17F086C199D5C3980D653CF1D8
  */
 public class FailSilentEDFScheduler extends
 		EDFSchedulerBase<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> {
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 277e670cf67dfa0d386d77b5c11521f4d15d7c8e..bd1ce7401944eeac3adc619ce1174820be9dda38 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
@@ -41,15 +41,13 @@ import org.fortiss.af3.exploration.model.ExplorationSpecification;
  * @author huang, barner
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: DE3830D2F2585C406513F8918AE57716
+ * @ConQAT.Rating RED Hash: 44B8FB0DC59D2D4E937A988892764F4E
  */
-public class FaultDetectionVotingEDFScheduler
-		extends
+public class FaultDetectionVotingEDFScheduler extends
 		EDFSchedulerBase<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> {
 
 	/** Constructs a simple EDF scheduler for a given exploration run */
-	public FaultDetectionVotingEDFScheduler(
-			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
+	public FaultDetectionVotingEDFScheduler(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter,
 			ExplorationSpecification expSpec) {
 		super(systemModelAdapter, expSpec);
 	}
@@ -63,15 +61,13 @@ public class FaultDetectionVotingEDFScheduler
 	 * </p>
 	 */
 	@Override
-	protected
-			Apfloat
-			registerIncomingMessagesWithSchedule(
-					FaultDetectionVotingTaskMappingEncoding encoding,
-					InstantiatedAcyclicTaskGraphEncoding<FaultDetectionVotingTaskMappingEntry, ?> acycItgEnc,
-					StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> schedule,
-					Map<FaultDetectionVotingTaskMappingEntry, TimeSlot> mappingEntryToTimeSlot,
-					IDeployableComponentAdapter<?> receiver, Apfloat deployableComponentStartTime,
-					IExecutionUnitAdapter<?> deploymentTarget, long iteration, TimeSlot slot) {
+	protected Apfloat registerIncomingMessagesWithSchedule(
+			FaultDetectionVotingTaskMappingEncoding encoding,
+			InstantiatedAcyclicTaskGraphEncoding<FaultDetectionVotingTaskMappingEntry, ?> acycItgEnc,
+			StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> schedule,
+			Map<FaultDetectionVotingTaskMappingEntry, TimeSlot> mappingEntryToTimeSlot,
+			IDeployableComponentAdapter<?> receiver, Apfloat deployableComponentStartTime,
+			IExecutionUnitAdapter<?> deploymentTarget, long iteration, TimeSlot slot) {
 
 		Apfloat voterDelay = new Apfloat(0, DOUBLE_PRECISION);
 
@@ -102,35 +98,28 @@ public class FaultDetectionVotingEDFScheduler
 
 				// TODO: Create a class that represents voters similar to
 				// IDeployableComponentAdapter.
-				@SuppressWarnings("unused") TimeSlot voterSlot =
-						schedule.createVoterSlot(null, deploymentTarget,
-								deployableComponentStartTime.add(voterDelay).floatValue(),
-								tempTimp.floatValue(), iteration);
-
+				@SuppressWarnings("unused") TimeSlot voterSlot = schedule.createVoterSlot(null,
+						deploymentTarget, deployableComponentStartTime.add(voterDelay).floatValue(),
+						tempTimp.floatValue(), iteration);
 			}
 		}
-
 		return voterDelay;
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	protected
-			Apfloat
-			getExecutionTime(
-					TaskMappingEncoding<? extends TaskMappingEntry> encoding,
-					InstantiatedAcyclicTaskGraphEncoding<FaultDetectionVotingTaskMappingEntry, ?> acycItgEnc,
-					IDeployableComponentAdapter<?> deployableComponent,
-					FaultDetectionVotingTaskMappingEntry entry) {
+	protected Apfloat getExecutionTime(TaskMappingEncoding<? extends TaskMappingEntry> encoding,
+			InstantiatedAcyclicTaskGraphEncoding<FaultDetectionVotingTaskMappingEntry, ?> acycItgEnc,
+			IDeployableComponentAdapter<?> deployableComponent,
+			FaultDetectionVotingTaskMappingEntry entry) {
 
 		// Base execution time
 		Apfloat executionTime =
 				new Apfloat(deployableComponent.getWcet(entry.getTarget()), DOUBLE_PRECISION);
 
 		// Scale with fault-detector overhead
-		FaultDetector detector =
-				acycItgEnc.getTaskGraphOf(deployableComponent).getFaultDetector(
-						deployableComponent, entry.getFaultDetectorID());
+		FaultDetector detector = acycItgEnc.getTaskGraphOf(deployableComponent)
+				.getFaultDetector(deployableComponent, entry.getFaultDetectorID());
 		Apfloat overhead = new Apfloat(1.0 + detector.getOverhead(), DOUBLE_PRECISION);
 
 		executionTime = executionTime.multiply(overhead);
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ConstraintGenerationException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ConstraintGenerationException.java
index 93b699cd4f42df58240ba143066f867d8a301e51..360f2309b50fb51db7575189636f58cd1e6c2456 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ConstraintGenerationException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ConstraintGenerationException.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.model.ExplorationConstraint;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 79658FBB26C0A20ED075431B2630D80A
+ * @ConQAT.Rating RED Hash: 06BEABDBFFDF545A4AD61AE4CB7B291C
  */
 public class ConstraintGenerationException extends ExplorationException {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationException.java
index dd7b4761838ed5f31d986cba0dd84be83f94a18e..76548280671ac7f1843af3c434254b7cb1818549 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationException.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.exception;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C13DBD388F0D8D44077E6FCC28D7E1EB
+ * @ConQAT.Rating RED Hash: 2D4E3A121A6206178E049DB5F3E78C01
  */
 public class ExplorationException extends Exception {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationServiceException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationServiceException.java
index ec03e730416171b9df94a062ac3d4a3874e2cca2..e3e99b0cd06f3bbfd3412db42a5b7b3a95379027 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationServiceException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/ExplorationServiceException.java
@@ -25,7 +25,7 @@ import org.fortiss.af3.exploration.alg.service.IExplorationService;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4FF1660E90CFDBCFC2C6CD588BC07EDF
+ * @ConQAT.Rating RED Hash: DDF848903BB908E18D06F9C70BF4F800
  */
 public class ExplorationServiceException extends ExplorationException {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidPlatformModelException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidPlatformModelException.java
index 9e7a882bf22da4b6a344279960e7507d8c7e1be7..8b18e5540be01318d98aa9609e78491b5e8ae822 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidPlatformModelException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidPlatformModelException.java
@@ -28,7 +28,7 @@ import org.fortiss.af3.platform.model.PlatformConnectorUnit;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: CE0822F07AC2CF9DB2CE941650C88FD3
+ * @ConQAT.Rating RED Hash: 7ED78C34875421F8F10F00D08A0B88B3
  */
 public class InvalidPlatformModelException extends Exception {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidTimingModelException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidTimingModelException.java
index 26a478129dca798a10a575086cb1cd68441ecdd1..d928eacf815113d315cb5536fd0f7855bf50bf18 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidTimingModelException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/InvalidTimingModelException.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.exception;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: B1E181EC9F434BB8642191B0BB7FA91D
+ * @ConQAT.Rating RED Hash: 859D59665309F360498315DB741603A3
  */
 public class InvalidTimingModelException extends ExplorationException {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/TransformationModuleException.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/TransformationModuleException.java
index 9cbd9d21bb2343c51b5dd975a227597a571c5e28..f97d869efa26e9ad3f5f959c164d70722e2cf840 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/TransformationModuleException.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/exception/TransformationModuleException.java
@@ -25,7 +25,7 @@ import org.fortiss.af3.exploration.alg.dse.modeltransformation.ITransformationMo
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3D8C3BCB9A5CEB71CB6CF58B95619D03
+ * @ConQAT.Rating RED Hash: 730EECECFC68E0037214F56F3C9EBB57
  */
 public class TransformationModuleException extends ExplorationException {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyEdge.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyEdge.java
index 62e074b7d6b88d587411ebdf90ec253a4adfc442..2fb7e0729bcee9ffea2a6cc022f68694b6696f67 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyEdge.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyEdge.java
@@ -30,7 +30,7 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 1DD493E4F20A9D987560F41F06F4F9BD
+ * @ConQAT.Rating RED Hash: F6601B178D6393FD17C6C74C2D34043A
  */
 public class DependencyEdge<T> extends DefaultEdge {
 
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 02514f7ae1e053cffc7227bff31da5d15177e45b..e23649fa24e49fea8f5c43015c8b00662970867f 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
@@ -56,7 +56,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: C11F453835A7E96EA09709EF201FC330
+ * @ConQAT.Rating RED Hash: 8596106CB7E41FE2577F1CCBAF9DED58
  */
 // TODO: extend documentation.
 // TODO: extend for the evaluator registration.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/IDependencyModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/IDependencyModule.java
index ee7be1504977c3679f38f6843c10589a794ac463..49c50abad5b864e4f0700dbfa3bc5292b0159a93 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/IDependencyModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/IDependencyModule.java
@@ -26,7 +26,7 @@ import java.util.Collection;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: F91CB15D24A7B070298A4A2A2C96065D
+ * @ConQAT.Rating RED Hash: 67E0B43053EED579C5476BECE8F4BD0C
  */
 // TODO: the Generic "I" is intended to define the input types. Unfortunately, using it in the
 // transformation framework, causes some issues. In a future version, check the possibilities to use
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/AF3JGraphTVisualizer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/AF3JGraphTVisualizer.java
index 0f3cd80c16293f2d0649a98bf2d090cacbf46401..15c319574726d7eb63e1969ae3443b2cfa812e41 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/AF3JGraphTVisualizer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/AF3JGraphTVisualizer.java
@@ -47,7 +47,7 @@ import com.mxgraph.util.mxConstants;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 9A8E553C1BBE3801EF8EE1DB746D9174
+ * @ConQAT.Rating RED Hash: 4143D97A7629D710B21A4F56991A4ABA
  */
 public class AF3JGraphTVisualizer<V extends IModelElement, E extends DefaultEdge> {
 
@@ -92,8 +92,8 @@ public class AF3JGraphTVisualizer<V extends IModelElement, E extends DefaultEdge
 	 * Converts the given graph to graph that has {@link NamedVertex}-Nodes instead of the original
 	 * vertices. Displaying those is more convenient.
 	 */
-	private DirectedGraph<NamedAF3Vertex<V>, DefaultEdge> constructNamedGraph(
-			Graph<V, E> originalGraph) {
+	private DirectedGraph<NamedAF3Vertex<V>, DefaultEdge>
+			constructNamedGraph(Graph<V, E> originalGraph) {
 		DirectedGraph<NamedAF3Vertex<V>, DefaultEdge> namedGraph =
 				new DefaultDirectedGraph<NamedAF3Vertex<V>, DefaultEdge>(DefaultEdge.class);
 		Set<E> originalEdgeSet = originalGraph.edgeSet();
@@ -112,5 +112,4 @@ public class AF3JGraphTVisualizer<V extends IModelElement, E extends DefaultEdge
 
 		return namedGraph;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/JGraphTVisualizer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/JGraphTVisualizer.java
index a3985bcf71d79c585fa853f59abc3ed60d4f2583..e41d86317ea683ed19b94eaaaf6fde24605da08d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/JGraphTVisualizer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/JGraphTVisualizer.java
@@ -47,7 +47,7 @@ import com.mxgraph.util.mxConstants;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 137ABEDE5AAC3E67676806ED70E3B75B
+ * @ConQAT.Rating RED Hash: 1BB223CBA3AA550A67309766174D9C6C
  */
 public class JGraphTVisualizer<V extends IModelElementAdapter<?>, E extends DefaultEdge> {
 
@@ -86,11 +86,6 @@ public class JGraphTVisualizer<V extends IModelElementAdapter<?>, E extends Defa
 		frame.getContentPane().add(graphComponent);
 		frame.pack();
 		frame.setVisible(true);
-
-		// mxGraphView view = graphComponent.getGraph().getView();
-		// int compLen = graphComponent.getWidth();
-		// int viewLen = (int)view.getGraphBounds().getWidth();
-		// view.setScale((double)compLen / viewLen * view.getScale());
 	}
 
 	/**
@@ -117,5 +112,4 @@ public class JGraphTVisualizer<V extends IModelElementAdapter<?>, E extends Defa
 
 		return namedGraph;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedAF3Vertex.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedAF3Vertex.java
index 156e0a24e713cf92da0e305e11992c1bf80f3562..725c94c68de1d6b4ce7ee3c95cdb7c4088a42462 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedAF3Vertex.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedAF3Vertex.java
@@ -30,7 +30,7 @@ import org.fortiss.tooling.kernel.model.INamedElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 16B746AE0EF1E2D3088C47D77E2AE711
+ * @ConQAT.Rating RED Hash: 4A7ACFD903986FE7649D5CD3CD2539B6
  */
 public class NamedAF3Vertex<V extends IModelElement> implements Serializable {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedVertex.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedVertex.java
index cb37faa13da265e70bc4ac44e8d9ac9a0425c1c2..e7cd8c0a67d9f6468a5cfb609c99b0ccbfe80db3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedVertex.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/NamedVertex.java
@@ -29,7 +29,7 @@ import org.fortiss.tooling.kernel.model.INamedElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 4076D1873F0ED1DF903FBA1E64512BB1
+ * @ConQAT.Rating RED Hash: 9907E0B5FFFA80715FA2FEC540FF1DD1
  */
 public class NamedVertex<V extends IModelElementAdapter<?>> implements Serializable {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectJGraphTVisualizer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectJGraphTVisualizer.java
index 335934300d3fa6ce9f27b26e9ccf903608e25e8f..8a441a59302cacc92f890491e39880a08ef24b78 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectJGraphTVisualizer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectJGraphTVisualizer.java
@@ -47,7 +47,7 @@ import com.mxgraph.util.mxConstants;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: AF7DE016F64BD089300DB13C81607FE5
+ * @ConQAT.Rating RED Hash: F753263776205745750713A4C8B8D88D
  */
 public class ObjectJGraphTVisualizer<V, E extends DefaultEdge> {
 
@@ -85,19 +85,14 @@ public class ObjectJGraphTVisualizer<V, E extends DefaultEdge> {
 		frame.getContentPane().add(graphComponent);
 		frame.pack();
 		frame.setVisible(true);
-
-		// mxGraphView view = graphComponent.getGraph().getView();
-		// int compLen = graphComponent.getWidth();
-		// int viewLen = (int)view.getGraphBounds().getWidth();
-		// view.setScale((double)compLen / viewLen * view.getScale());
 	}
 
 	/**
 	 * Converts the given graph to graph that has {@link NamedVertex}-Nodes instead of the original
 	 * vertices. Displaying those is more convenient.
 	 */
-	private DirectedGraph<ObjectVertex<V>, DefaultEdge> constructNamedGraph(
-			Graph<V, E> originalGraph) {
+	private DirectedGraph<ObjectVertex<V>, DefaultEdge>
+			constructNamedGraph(Graph<V, E> originalGraph) {
 		DirectedGraph<ObjectVertex<V>, DefaultEdge> namedGraph =
 				new DefaultDirectedGraph<>(DefaultEdge.class);
 		Set<E> originalEdgeSet = originalGraph.edgeSet();
@@ -108,13 +103,10 @@ public class ObjectJGraphTVisualizer<V, E extends DefaultEdge> {
 			namedGraph.addVertex(currentNamedVertex);
 			relateVertexToNamedElement.put(currentVertex, currentNamedVertex);
 		}
-
 		for(E edge : originalEdgeSet) {
 			namedGraph.addEdge(relateVertexToNamedElement.get(originalGraph.getEdgeSource(edge)),
 					relateVertexToNamedElement.get(originalGraph.getEdgeTarget(edge)));
 		}
-
 		return namedGraph;
 	}
-
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectVertex.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectVertex.java
index 5e346909c9f38013012479575338a6f689c929cf..41f129c8f831d918c00e190a776958befe307ef4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectVertex.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/ObjectVertex.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.graph.display;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D8F08CDD4D8231B5D06A1251D2A2D997
+ * @ConQAT.Rating RED Hash: 8458522DFDB8E0C35A7CE894B95F8DE4
  */
 public class ObjectVertex<V> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/HashTypedBiMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/HashTypedBiMap.java
index 784275f3f12131f8db9cc269135945f7161fb1bb..6f3c0f7696578058a1326a274d15ebd6374c8b11 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/HashTypedBiMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/HashTypedBiMap.java
@@ -35,10 +35,10 @@ import com.google.common.collect.HashBiMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 61D141A942DCC63BB01CCCB03E96D8C0
+ * @ConQAT.Rating RED Hash: 664A2460DB42C8315FE2849BBE70672C
  */
-public class HashTypedBiMap<K, V> extends ForwardingMap<TypedPair<K, V>, TypedPair<V, K>> implements
-		TypedBiMap<K, V>/* , BiMap<TypedPair<K, V>, TypedPair<V, K>> */{
+public class HashTypedBiMap<K, V> extends ForwardingMap<TypedPair<K, V>, TypedPair<V, K>>
+		implements TypedBiMap<K, V>/* , BiMap<TypedPair<K, V>, TypedPair<V, K>> */ {
 
 	/**
 	 * Returns a new, empty {@code HashBiMap} with the default initial capacity (16).
@@ -52,6 +52,7 @@ public class HashTypedBiMap<K, V> extends ForwardingMap<TypedPair<K, V>, TypedPa
 	 *
 	 * @param expectedSize
 	 *            the expected number of entries
+	 * @return instance of a {@link HashTypedBiMap}.
 	 * @throws IllegalArgumentException
 	 *             if the specified expected size is negative
 	 */
@@ -64,8 +65,8 @@ public class HashTypedBiMap<K, V> extends ForwardingMap<TypedPair<K, V>, TypedPa
 	 * an
 	 * initial capacity sufficient to hold the mappings in the specified map.
 	 */
-	public static <K, V> HashTypedBiMap<K, V> create(
-			Map<? extends TypedPair<K, V>, ? extends TypedPair<V, K>> map) {
+	public static <K, V> HashTypedBiMap<K, V>
+			create(Map<? extends TypedPair<K, V>, ? extends TypedPair<V, K>> map) {
 		HashTypedBiMap<K, V> bimap = create(map.size());
 		bimap.putAll(map);
 		return bimap;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/ImmutableSubClassToInstanceMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/ImmutableSubClassToInstanceMap.java
index 081ebe39441095ac62112d55484370cde85c5685..9fa0f0efa80596f14156d8830d195bdc3f78f36d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/ImmutableSubClassToInstanceMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/ImmutableSubClassToInstanceMap.java
@@ -34,7 +34,7 @@ import com.google.common.primitives.Primitives;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 3DD193EF295E916128C525B60577C7FE
+ * @ConQAT.Rating RED Hash: 5799B3F8B07B48DE4742FFBA3F02E28F
  */
 @SuppressWarnings("javadoc")
 @GwtIncompatible(value = "")
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/MutableSubClassToInstanceMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/MutableSubClassToInstanceMap.java
index f1c78baddf4c01f4467d852148dfea38b58c4148..7b2888f616a146f712db4b710fb5724cba1e0288 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/MutableSubClassToInstanceMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/MutableSubClassToInstanceMap.java
@@ -33,7 +33,7 @@ import com.google.common.primitives.Primitives;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 00067028F8780E9ABCC61E835814E132
+ * @ConQAT.Rating RED Hash: 8468901743C15A9207F471E7DA9C5982
  */
 // using writeReplace instead of standard serialization
 public final class MutableSubClassToInstanceMap<B> extends ForwardingMap<Class<? extends B>, B>
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/SubClassToInstanceMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/SubClassToInstanceMap.java
index 4e217e1a8a520d9de7baa376e4c867b6648feed8..fd99dfd6bf3e37ff00b22358207e1f7d401054d7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/SubClassToInstanceMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/guava/SubClassToInstanceMap.java
@@ -28,7 +28,7 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 23C11759241AD2F32712A6AAAC18B0FB
+ * @ConQAT.Rating RED Hash: F1956060FD1344C790EFC4E91D9E93DE
  */
 public interface SubClassToInstanceMap<B> extends ClassToInstanceMap<B> {
 	// Marker interface.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/DSEPortingUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/DSEPortingUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..47765e42f57d935c6f7fe78808ee80eccf0f3745
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/DSEPortingUtils.java
@@ -0,0 +1,409 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2017 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port;
+
+import static org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType.BIDIRECTIONAL;
+import static org.fortiss.af3.platform.utils.PlatformArchitectureUtils.getReferencedElementsWithType;
+import static org.fortiss.tooling.common.util.LambdaUtils.filterStream;
+import static org.fortiss.tooling.kernel.utils.EcoreUtils.getChildrenWithType;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.conqat.lib.commons.collections.Pair;
+import org.fortiss.af3.component.model.Component;
+import org.fortiss.af3.component.model.OutputPort;
+import org.fortiss.af3.component.model.Port;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemParameterContainer;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.DeployableComponents;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.SignalType;
+import org.fortiss.af3.exploration.backend.IDseInputContainer.TemporalTriggers;
+import org.fortiss.af3.exploration.dsl_v2.model.booleanp.allocation.Allocation;
+import org.fortiss.af3.exploration.model.ExplorationSpecification;
+import org.fortiss.af3.exploration.moea.model.annotation.ComponentDiverseImplRef;
+import org.fortiss.af3.expression.model.types.TBool;
+import org.fortiss.af3.expression.model.types.TDouble;
+import org.fortiss.af3.expression.model.types.TInt;
+import org.fortiss.af3.platform.model.ExecutionUnit;
+import org.fortiss.af3.platform.model.IPhysicalPlatformArchitectureElement;
+import org.fortiss.af3.platform.model.IPlatformArchitectureElement;
+import org.fortiss.af3.platform.model.IPlatformResource;
+import org.fortiss.af3.platform.model.IVirtualizationPlatformArchitectureElement;
+import org.fortiss.af3.platform.model.PlatformArchitecture;
+import org.fortiss.af3.platform.model.TransmissionUnit;
+import org.fortiss.af3.platform.utils.PlatformArchitectureUtils;
+import org.fortiss.af3.project.model.typesystem.IType;
+import org.fortiss.af3.task.model.TaskAllocation;
+import org.fortiss.af3.task.model.TaskArchitecture;
+import org.fortiss.tooling.base.model.element.IConnector;
+import org.fortiss.tooling.base.model.element.IModelElement;
+import org.fortiss.tooling.kernel.utils.EcoreUtils;
+
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+
+/**
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 5D9F2FFE693AD671D03FBB8DB89D5E2C
+ */
+public class DSEPortingUtils {
+	/**
+	 * Lookup table for to determine the direction of a connection by the type of the target
+	 * {@link IConnector}.
+	 */
+	// TODO: UsePlatformPort?
+	public static Map<Class<? extends IConnector>, ConnectionType> connectionTypeLUT =
+			Collections.unmodifiableMap(new HashMap<Class<? extends IConnector>, ConnectionType>() {
+				{
+				}
+			});
+
+	/**
+	 * Returns the type of communication the given port can handle: incoming, outgoing, or
+	 * bidirectional traffic.
+	 * 
+	 * @param sourceConnector
+	 *            {@link IConnector} to be examined.
+	 * @return The port type (default = bidirectional).
+	 */
+	public static ConnectionType getPortDirection(IConnector sourceConnector) {
+		ConnectionType connectionTypeSource = connectionTypeLUT.get(sourceConnector.getClass());
+		return connectionTypeSource != null ? connectionTypeSource : BIDIRECTIONAL;
+	}
+
+	/**
+	 * Creates a collection of deployment targets (that are {@link ExecutionUnit}s) from the given
+	 * collection of {@code platformArchitecture}s.
+	 */
+	// TODO: Outdated Comment, the identification
+	public static Collection<ExecutionUnit>
+			createDeploymentTargets(ExplorationSpecification expSpec) throws Exception {
+		Collection<ExecutionUnit> rval = new HashSet<>();
+
+		Collection<Allocation> allocConstrSet =
+				EcoreUtils.getChildrenWithType(expSpec, Allocation.class);
+		for(Allocation alloc : allocConstrSet) {
+			Collection<IModelElement> targetElementSet =
+					alloc.getRight().getSetReference().getEntries();
+			filterStream(targetElementSet, e -> e instanceof ExecutionUnit)
+					.map(ExecutionUnit.class::cast).forEach(e -> rval.add(e));
+		}
+
+		// for(PlatformArchitecture curPA : platformArchitectures) {
+		// for(DeploymentGranularity deplAnn : getChildrenWithType(curPA,
+		// DeploymentGranularity.class)) {
+		// IModelElement execUnit = deplAnn.getSpecificationOf();
+		//
+		// // If the current deployment target is a virtual ExecutionUnit, e.g. a partition,
+		// // ensure that none its referenced physical ExecutionUnits (or any of theri parents)
+		// // are also selected as deployment targets.
+		// if(execUnit instanceof IVirtualizationPlatformArchitectureElement &&
+		// execUnit instanceof ExecutionUnit) {
+		// for(IHierarchicElement currentHardwareResource : getReferencedElementsWithType(
+		// execUnit, IHierarchicElement.class)) {
+		// if(isAnyParentDeploymentTarget(currentHardwareResource)) {
+		// String refHwResourceName = currentHardwareResource.toString();
+		// if(currentHardwareResource instanceof INamedElement) {
+		// refHwResourceName =
+		// ((INamedElement)currentHardwareResource).getName() +
+		// "(id: " +
+		// ((INamedElement)currentHardwareResource).getId() +
+		// ")";
+		// }
+		// throw new Exception("The referenced hardware resource " +
+		// refHwResourceName +
+		// " or one of its containers of the virtual element " +
+		// ((ExecutionUnit)execUnit).getName() + "(id: " +
+		// ((ExecutionUnit)execUnit).getId() +
+		// ") has been chosen as a deployment target.\n" +
+		// "This is not allowed for elements with a virtualization layer.");
+		// }
+		// }
+		// }
+		//
+		// if(execUnit instanceof ExecutionUnit && deplAnn.isIsDeploymentTarget()) {
+		// rval.add((ExecutionUnit)execUnit);
+		// }
+		// }
+		// }
+
+		if(rval.isEmpty()) {
+			throw new Exception(
+					"No deployment targets have been specified in the target platform architecture(s)." +
+							" Please check whether the correct platform architecture was selected and whether" +
+							" the desired Execution Units were selected as deployment targets" +
+							" (Platform Model --> Annotation View --> Deployment Target)");
+		}
+
+		return rval;
+	}
+
+	// TODO: Why is the FailureRate annotation bound to IPhysicalPlatformElement instead of
+	// IPlatformResource?
+	/**
+	 * Creates a Map that relates all annotated {@link IPlatformArchitectureElement}s with their
+	 * specified failure rate.
+	 */
+	public static Map<IPlatformArchitectureElement, Double> createFailureRateMap(
+			Collection<PlatformArchitecture> platformArchitectures) throws Exception {
+		Map<IPlatformArchitectureElement, Double> failureRateMap = new HashMap<>();
+		for(PlatformArchitecture pa : platformArchitectures) {
+			for(IPlatformArchitectureElement platformElement : getChildrenWithType(pa,
+					IPlatformArchitectureElement.class)) {
+				failureRateMap.put(platformElement, getResourceFailureRate(platformElement));
+			}
+		}
+
+		return failureRateMap;
+	}
+
+	/**
+	 * Extracts the failure probability of a given {@link IPlatformResource}. If the
+	 * {@code resourceElement} is a {@link IVirtualizationPlatformArchitectureElement}, the average
+	 * value of the referenced {@link IPhysicalPlatformArchitectureElement}s is used.
+	 * 
+	 * @param resourceElement
+	 *            resource for which to determine the failure probability.
+	 * @return failure probability of the given {@code resourceElement}.
+	 * @throws Exception
+	 *             if the failure probability is not correctly defined in the model.
+	 */
+	// TODO: check, whether it make sense to move the failure rate annotation to the AF3 platform
+	// since it would allow a simple analysis of hierarchical platforms.
+	public static Double getResourceFailureRate(IPlatformArchitectureElement resourceElement)
+			throws Exception {
+
+		// If the annotated element is a part of the system software, the resource links are used to
+		// determine the speed of the associated resources.
+		if(resourceElement instanceof IVirtualizationPlatformArchitectureElement) {
+			Collection<IPhysicalPlatformArchitectureElement> associatedResources =
+					getReferencedElementsWithType(resourceElement,
+							IPhysicalPlatformArchitectureElement.class);
+
+			if(!(associatedResources.isEmpty())) {
+				Double avgFailureRate = Double.valueOf(0);
+				for(IPhysicalPlatformArchitectureElement currentAssociatedResource : associatedResources) {
+					if(currentAssociatedResource instanceof IModelElement) {
+						// TODO: For now, just use a default value.
+						return 10E-6;
+						// FailureRate failureRateAnnotation =
+						// getAnnotation((IModelElement)currentAssociatedResource,
+						// FailureRate.class);
+						//
+						// if(failureRateAnnotation != null) {
+						// avgFailureRate += failureRateAnnotation.getFailureRate_FIT();
+						// } else {
+						// throw new Exception("The platform resource " +
+						// currentAssociatedResource +
+						// " does not have a failure rate annotation.");
+						// }
+					}
+				}
+
+				return avgFailureRate / associatedResources.size();
+			} else if(resourceElement instanceof ExecutionUnit) {
+				// For now the failure rates are only evaluated for ExecutionUnits, so the failure
+				// rate annotation is only required for these resources.
+				throw new Exception("The virtual resource " + resourceElement.toString() +
+						" does not reference a physical resource");
+			}
+		} else {
+			// TODO: For now, just use a default value.
+			return 10E-6;
+			// FailureRate failureRateAnnotation =
+			// pickFirstInstanceOf(FailureRate.class,
+			// ((IModelElement)resourceElement).getSpecifications());
+			//
+			// if(failureRateAnnotation != null) {
+			// return failureRateAnnotation.getFailureRate_FIT();
+			// }
+			// throw new Exception("The platform resource " + resourceElement +
+			// " does not have a failure rate annotation.");
+		}
+
+		return null;
+		// throw new Exception("The failure rate for the platform resource " + resourceElement +
+		// " coult not be determined.");
+	}
+
+	/**
+	 * Creates a map of all {@link IPlatformResource} which have an annotated power consumption
+	 * value and their specified value.
+	 */
+	public static Map<IPlatformResource, Double> createPowerConsumptionMap(
+			Collection<PlatformArchitecture> platformArchitectures) throws Exception {
+		Map<IPlatformResource, Double> powerConsumptionMap = new HashMap<>();
+		powerConsumptionMap.putAll(getTransmissionUnitPowerConsumption(platformArchitectures));
+		return powerConsumptionMap;
+	}
+
+	/** Maps all {@link TransmissionUnit}s to their annotated power consumption value. */
+	// TODO: We need a way to define the energy consumed by transmission units like busses: stand-by
+	// + active. Currently, we hard-code the consumed energy while a transmission Unit is active
+	// while we assue that it does not consume energy in the idle state.
+	public static Map<IPlatformResource, Double> getTransmissionUnitPowerConsumption(
+			Collection<PlatformArchitecture> platformArchitectures) {
+		Map<IPlatformResource, Double> powerConsumptionMap = new HashMap<>();
+		for(PlatformArchitecture pa : platformArchitectures) {
+			for(TransmissionUnit tu : getChildrenWithType(pa, TransmissionUnit.class)) {
+				powerConsumptionMap.put(tu, 1.0);
+			}
+		}
+
+		return powerConsumptionMap;
+	}
+
+	/**
+	 * Maps all deployable {@link Component}s to their specified periodicities. Non-periodic
+	 * {@link Component} are not supported.
+	 */
+	// TODO: The period is hard-coded here. It must be taken from the yet-to-come timing model.
+	public static Map<Component, Double>
+			createComponentPeriodMap(Collection<Component> deployableComponents) {
+		Map<Component, Double> componentPeriodMap = new HashMap<>();
+		for(Component deployableComponent : deployableComponents) {
+			componentPeriodMap.put(deployableComponent, 10.0);
+		}
+		return componentPeriodMap;
+	}
+
+	/**
+	 * Maps all "abstract" and deployable {@link Component}s the set of {@link Component}s which are
+	 * selected as their diverse implementations by means of the {@link ComponentDiverseImplRef}
+	 * annotation.
+	 */
+	public static Multimap<Component, Component>
+			createComponentReplacementMap(Collection<Component> deployableComponent) {
+		Multimap<Component, Component> replacementComponentMap = HashMultimap.create();
+		for(Component component : deployableComponent) {
+			// ComponentDiverseImplRef componentReplacementRef =
+			// AnnotationUtils.getAnnotation(component, ComponentDiverseImplRef.class);
+			// replacementComponentMap.putAll(component, componentReplacementRef.getComponentRef());
+			replacementComponentMap.putAll(component, Collections.emptyList());
+		}
+		return replacementComponentMap;
+	}
+
+	/**
+	 * Maps all deployable {@link Component}s to their amount of minimal required and maximally
+	 * allowed replicas. A value of 1 implies that the component is present only once (without
+	 * actual replica in the resulting solution calculated by the DSE).
+	 */
+	// TODO: How to handle replication? Will be done on the Task level. Annotation can be registered
+	// in THIS exploration plugin.
+	public static Map<Component, Pair<Integer, Integer>> createComponentReplicationMap(
+			Collection<Component> deployableComponents) throws Exception {
+		Map<Component, Pair<Integer, Integer>> replicationBoundMap = new HashMap<>();
+		for(Component component : deployableComponents) {
+			// ReplicationBounds replicationBounds = getAnnotation(component,
+			// ReplicationBounds.class);
+			// if(replicationBounds == null) {
+			// throw new Exception("The replication bounds of the component " +
+			// component.getName() + " is not defined.");
+			// }
+			Pair<Integer, Integer> minMaxBounds = new Pair<>(1, 1);
+			replicationBoundMap.put(component, minMaxBounds);
+		}
+
+		return replicationBoundMap;
+	}
+
+	/**
+	 * Returns the temporal triggers of the deployable {@link Component}s' {@link Port}s.
+	 * 
+	 * @param deployableComponents
+	 *            Collection of {@link Component}s tthat shall be deployed.
+	 * @return Map of the ports with a temporal trigger.
+	 */
+	public static TemporalTriggers
+			getPortTimingProperties(DeployableComponents deployableComponents) {
+		TemporalTriggers portSignalTypes = new TemporalTriggers();
+		Collection<Port> allPorts = new ArrayList<>();
+		for(Component currComp : deployableComponents) {
+			allPorts.addAll(getChildrenWithType(currComp, Port.class));
+		}
+		allPorts.parallelStream().forEach(p -> portSignalTypes.put(p, SignalType.PERIODIC));
+		return portSignalTypes;
+	}
+
+	/** Maps the {@link OutputPort}s of {@link Component}s to their respective bit size. */
+	public static Map<OutputPort, Long>
+			createMessageSizeMap(Collection<Component> deployableComponents) throws Exception {
+		Map<OutputPort, Long> messageSizes = new HashMap<>();
+		for(Component component : deployableComponents) {
+			for(OutputPort port : component.getOutputPorts()) {
+				IType outType = port.getVariableType();
+				// TODO: Primitive fixed bit length assignments for the types. Should be done based
+				// on the platform.
+				if(outType instanceof TBool) {
+					messageSizes.put(port, (long)1);
+				} else if(outType instanceof TInt) {
+					messageSizes.put(port, (long)32);
+				} else if(outType instanceof TDouble) {
+					messageSizes.put(port, (long)64);
+				} else {
+					throw new Exception("No type has been defined for the output port" + port +
+							" that is compatible with the MOEA-based DSE exploration.");
+				}
+			}
+		}
+
+		return messageSizes;
+	}
+
+	/**
+	 * Creates a container that contains all required and optional information to execute the
+	 * MOEA-based DSE which are not AF3 standard parameters.
+	 */
+	public static SystemParameterContainer createSystemParameterContainer(
+			PlatformArchitecture platformArchitecture, TaskArchitecture taskArchitecture,
+			ExplorationSpecification expSpec) throws Exception {
+		DeployableComponents deployableComponents = new DeployableComponents();
+		// TODO: We select the atomic components from the ComponentArchitecture to be deployed at
+		// the moment. Instead, the TaskArchitecture should be used here.
+		for(TaskAllocation taskAlloc : taskArchitecture.getTaskAllocations()) {
+			deployableComponents.addAll(taskAlloc.getComponents());
+		}
+
+		// Set: if we have only a hardware platform, then it will be returned by getHardwarePlatform
+		// --> no duplicates.
+		Set<PlatformArchitecture> targetPlatforms = new HashSet<>();
+		targetPlatforms.add(platformArchitecture);
+		targetPlatforms.add(
+				PlatformArchitectureUtils.getPhysicalPlatformArchitecture(platformArchitecture));
+
+		Collection<ExecutionUnit> deploymentTargets = createDeploymentTargets(expSpec);
+
+		return new SystemParameterContainer(deployableComponents,
+				getPortTimingProperties(deployableComponents), deploymentTargets,
+				createComponentPeriodMap(deployableComponents),
+				createComponentReplacementMap(deployableComponents),
+				createComponentReplicationMap(deployableComponents),
+				createMessageSizeMap(deployableComponents), createFailureRateMap(targetPlatforms),
+				createPowerConsumptionMap(targetPlatforms), connectionTypeLUT, null, null);
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/DO_NOT_REVIEW_PACKAGE b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/DO_NOT_REVIEW_PACKAGE
new file mode 100644
index 0000000000000000000000000000000000000000..7c7218aa8099789d1e4c4fe84d9987f75ee8859b
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/DO_NOT_REVIEW_PACKAGE
@@ -0,0 +1,3 @@
+DO NOT REVIEW THIS PACKAGE!
+
+It will be removed soon, when the integration of the MOEA-based exploration is integrated with the visualization framework of the tooling kernel.
\ No newline at end of file
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/MessagePathOnClicked.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/MessagePathOnClicked.java
new file mode 100644
index 0000000000000000000000000000000000000000..f752a422266ad765f99a0fd2f38fb2d81636f630
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/MessagePathOnClicked.java
@@ -0,0 +1,311 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2015 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Shape;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule.ResourceSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ICommunicationResourceAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
+import org.jfree.chart.ChartMouseEvent;
+import org.jfree.chart.ChartMouseListener;
+import org.jfree.chart.ChartPanel;
+import org.jfree.chart.annotations.CategoryLineAnnotation;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.entity.CategoryItemEntity;
+import org.jfree.chart.entity.ChartEntity;
+import org.jfree.chart.plot.CategoryPlot;
+
+/**
+ * Draws lines between the sender {@link TimeSlot}s, the participating {@link TimeSlot}s of
+ * communication resource and the receiver {@link TimeSlot}s, if a {@link TimeSlot} of a
+ * communication resource is clicked.
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: A7854F995B88D2CF93ED07CE68354537
+ */
+public class MessagePathOnClicked implements ChartMouseListener {
+
+	/** Holds the schedule that has been calculated for the selected solution. */
+	private StrictTTSchedule<?, ?> schedule;
+
+	/** The plot of the data (includes the data area and the naming etc.). */
+	CategoryPlot plot;
+
+	/** The actual "visual" element class showing the dataset. */
+	ChartPanel chartPanel;
+
+	/**
+	 * Contains the path of all predecessor {@link TimeSlot}s for each {@link TimeSlot} reserved at
+	 * {@link ICommunicationResourceAdapter}s.
+	 */
+	private Map<TimeSlot, List<TimeSlot>> predescessorMsgPath;
+
+	/**
+	 * Cache that remembers the {@link CategoryLineAnnotation}s such that they can be deleted again.
+	 */
+	Collection<CategoryLineAnnotation> paintedMessagePaths;
+
+	/** Constructor. */
+	public MessagePathOnClicked(CategoryPlot plot, ChartPanel chartPanel,
+			StrictTTSchedule<?, ?> schedule) {
+		paintedMessagePaths = new ArrayList<CategoryLineAnnotation>();
+		this.plot = plot;
+		this.chartPanel = chartPanel;
+		this.schedule = schedule;
+
+		predescessorMsgPath = new HashMap<TimeSlot, List<TimeSlot>>();
+
+		List<TimeSlot> communicationSlotDescending = getCommSlotInDescendingOrder(schedule);
+
+		for(TimeSlot currentSlot : communicationSlotDescending) {
+			predescessorMsgPath.put(currentSlot, getTimeSlotPredecessorsOf(currentSlot));
+		}
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void chartMouseClicked(ChartMouseEvent event) {
+		ChartEntity entity = event.getEntity();
+		if(entity == null)
+			return;
+
+		deleteDrawnMessagePath();
+
+		double timeToPixel = getTimeToPixelRatio();
+		Double relativeItemXPos = getPositionOfSelectedItem(entity);
+		if(relativeItemXPos == null) {
+			// No TimeSlot selected.
+			return;
+		}
+
+		/* Select the resource that corresponds to the given row */
+		IResourceAdapter<?> resource = getResourceOf(entity);
+
+		if(resource != null) {
+			ResourceSchedule localSchedule = schedule.getResourceSchedule(resource);
+			TimeSlot selectedSlot =
+					getSelectedTimeSlot(timeToPixel, relativeItemXPos, localSchedule);
+
+			if(selectedSlot != null) {
+				// Traverse predecessor TimeSlots.
+				paintedMessagePaths.addAll(drawLinesToPredecessors(selectedSlot,
+						predescessorMsgPath.get(selectedSlot), plot));
+
+				// Traverse the successors.
+				paintedMessagePaths.addAll(drawLinesToSuccessors(selectedSlot, plot));
+			}
+		}
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void chartMouseMoved(ChartMouseEvent event) {
+		// Nothing to be done here...
+	}
+
+	/**
+	 * Returns a list of {@link TimeSlot}s that are predecessors of the given {@link TimeSlot}, if
+	 * the the Slot is associated with a {@link Message}, i.e. it is placed on a
+	 * {@link ICommunicationResourceAdapter}.
+	 * 
+	 * @returns List of predecessors or an empty list if the given Slot does not refer to a
+	 *          {@link Message}.
+	 */
+	private List<TimeSlot> getTimeSlotPredecessorsOf(TimeSlot currentSlot) {
+		List<TimeSlot> predecessorSlots = new ArrayList<TimeSlot>();
+		Message msg = currentSlot.getDeployedMessage();
+		while(msg != null) {
+			TimeSlot slot = msg.getSenderTimeSlot();
+			msg = slot.getDeployedMessage();
+			predecessorSlots.add(slot);
+		}
+		return predecessorSlots;
+	}
+
+	/**
+	 * For a given {@link StrictTTSchedule}, this method returns all {@link TimeSlot}s of
+	 * {@link ICommunicationResourceAdapter}s in descending order w.r.t. the {@link TimeSlot}s start
+	 * times.
+	 */
+	private List<TimeSlot> getCommSlotInDescendingOrder(StrictTTSchedule<?, ?> schedule) {
+		LinkedList<TimeSlot> communicationSlotDescending = new LinkedList<TimeSlot>();
+		for(IResourceAdapter<?> currentResource : schedule.getResources()) {
+			if(currentResource instanceof ICommunicationResourceAdapter) {
+				ResourceSchedule resourceSchedule = schedule.getResourceSchedule(currentResource);
+				communicationSlotDescending.addAll(resourceSchedule.keySet());
+			}
+		}
+		if(!communicationSlotDescending.isEmpty()) {
+			Collections.sort(communicationSlotDescending,
+					new TimeSlot.ReverseStartTimeSlotComparator());
+		}
+		return communicationSlotDescending;
+	}
+
+	/**
+	 * Determines the ratio of time to the pixels, i.e. which time interval a single pixel
+	 * represents.
+	 */
+	private double getTimeToPixelRatio() {
+		// Determine the Ratio between the time and the pixels (to calculate the time of the
+		// slot by the position in the chart).
+		ValueAxis axis = plot.getRangeAxis(0);
+		double rangeAxis = axis.getRange().getUpperBound();
+		double range = chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea().getWidth();
+		double timeToPixel = rangeAxis / range;
+		return timeToPixel;
+	}
+
+	/** Returns the resource which is referred to by the given {@link ChartEntity}. */
+	private IResourceAdapter<?> getResourceOf(ChartEntity entity) {
+		Comparable<?> ckey = ((CategoryItemEntity)entity).getColumnKey();
+		IResourceAdapter<?> resource = null;
+		for(IResourceAdapter<?> currentResource : schedule.getResources()) {
+			if(currentResource.getName().equals(ckey)) {
+				resource = currentResource;
+				break;
+			}
+		}
+		return resource;
+	}
+
+	/** Determines the position of the given {@link ChartEntity} in the data plot. */
+	private Double getPositionOfSelectedItem(ChartEntity entity) {
+		Double relativeItemXPos = null;
+		// Get the offset of the data cart relative to the overall plot (the position of the
+		// entity is given in relatively to the overall plot).
+		Rectangle2D plotArea = chartPanel.getChartRenderingInfo().getPlotInfo().getPlotArea();
+		Rectangle2D dataArea = chartPanel.getChartRenderingInfo().getPlotInfo().getDataArea();
+		double dataXOffset = dataArea.getX() - plotArea.getX();
+
+		// Get the item's position and calculate its position in the data chart.
+		// Thereby, ensure that the graphical representation of a datapoint has been clicked
+		// (instanceof check).
+		if(entity instanceof CategoryItemEntity) {
+			Shape area = ((CategoryItemEntity)entity).getArea();
+			relativeItemXPos = area.getBounds2D().getX() - dataXOffset;
+		}
+		return relativeItemXPos;
+	}
+
+	/**
+	 * Determines and returns the selected {@link TimeSlot} utilizing the time to pixel ratio and
+	 * the relative x coordinate (in pixel).
+	 * 
+	 * @returns The selected {@link TimeSlot} or {@code null} if no matching {@link TimeSlot} could
+	 *          be identified.
+	 */
+	private TimeSlot getSelectedTimeSlot(double timeToPixel, double relativeItemXPos,
+			ResourceSchedule localSchedule) {
+		TimeSlot selectedSlot = null;
+
+		double startXPosOfSlot = relativeItemXPos * timeToPixel;
+		for(TimeSlot slot : localSchedule.keySet()) {
+			if(slot.getStartTime() <= startXPosOfSlot && slot.getEndTime() >= startXPosOfSlot) {
+				selectedSlot = slot;
+				break;
+			}
+		}
+		return selectedSlot;
+	}
+
+	/**
+	 * Draws lines to predecessor {@link TimeSlot}s of the given {@link TimeSlot}. The
+	 * {@link CategoryLineAnnotation}s that were drawn are returned by this method.
+	 */
+	private Collection<CategoryLineAnnotation> drawLinesToPredecessors(TimeSlot selectedSlot,
+			List<TimeSlot> predecessorSlots, CategoryPlot plot) {
+		Collection<CategoryLineAnnotation> paintedLines = new ArrayList<CategoryLineAnnotation>();
+		TimeSlot currentSlot = selectedSlot;
+		if(predecessorSlots != null) {
+			for(TimeSlot predSlot : predecessorSlots) {
+				paintedLines.add(drawTimeSlotLine(plot, predSlot, currentSlot));
+				currentSlot = predSlot;
+			}
+		}
+		return paintedLines;
+	}
+
+	/**
+	 * Draws lines iteratively to successor {@link TimeSlot}s of the given {@link TimeSlot}. The
+	 * {@link CategoryLineAnnotation}s that were drawn are returned by this method.
+	 */
+	private Collection<CategoryLineAnnotation> drawLinesToSuccessors(TimeSlot selectedSlot,
+			CategoryPlot plot) {
+		Collection<CategoryLineAnnotation> paintedLines = new ArrayList<CategoryLineAnnotation>();
+
+		Queue<TimeSlot> successorSenderQueue = new LinkedList<TimeSlot>();
+		successorSenderQueue.add(selectedSlot);
+		while(!successorSenderQueue.isEmpty()) {
+			TimeSlot senderToSuccessorSlot = successorSenderQueue.poll();
+			Collection<TimeSlot> successorSlots = senderToSuccessorSlot.getSuccessors();
+			if(successorSlots != null && (senderToSuccessorSlot
+					.getResource() instanceof ICommunicationResourceAdapter)) {
+				for(TimeSlot succSlot : successorSlots) {
+					paintedLines.add(drawTimeSlotLine(plot, senderToSuccessorSlot, succSlot));
+
+					if(!successorSenderQueue.contains(succSlot)) {
+						successorSenderQueue.add(succSlot);
+					}
+				}
+			}
+		}
+
+		return paintedLines;
+	}
+
+	/**
+	 * Removes all previously drawn message paths of the selected communication {@link TimeSlot}.
+	 */
+	private void deleteDrawnMessagePath() {
+		for(CategoryLineAnnotation line : paintedMessagePaths) {
+			plot.removeAnnotation(line);
+		}
+		paintedMessagePaths.clear();
+	}
+
+	/** Draws a line between the Two given {@link TimeSlot}s. */
+	private CategoryLineAnnotation drawTimeSlotLine(CategoryPlot plot, TimeSlot fromSlot,
+			TimeSlot toSlot) {
+		CategoryLineAnnotation messageLine =
+				new CategoryLineAnnotation(fromSlot.getResource().getName(), fromSlot.getEndTime(),
+						toSlot.getResource().getName(), toSlot.getStartTime(), Color.green,
+						new BasicStroke(1.0f));
+
+		plot.addAnnotation(messageLine);
+
+		return messageLine;
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleGanttRenderer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleGanttRenderer.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f82d30f391b221d647e1cdffc53827742ab11ba
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleGanttRenderer.java
@@ -0,0 +1,280 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2014 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Paint;
+import java.awt.geom.Rectangle2D;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule.ResourceSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.entity.CategoryItemEntity;
+import org.jfree.chart.entity.EntityCollection;
+import org.jfree.chart.labels.CategoryItemLabelGenerator;
+import org.jfree.chart.labels.ItemLabelAnchor;
+import org.jfree.chart.labels.ItemLabelPosition;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRendererState;
+import org.jfree.chart.renderer.category.GanttRenderer;
+import org.jfree.data.category.CategoryDataset;
+import org.jfree.data.gantt.GanttCategoryDataset;
+import org.jfree.ui.RectangleEdge;
+import org.jfree.ui.TextAnchor;
+
+/**
+ * Renders a Gantt chart for a {@link StrictTTSchedule}.
+ * 
+ * // TODO: generalize to common schedule class
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 6C1B58BCD1CC1EFB57CD71B7109B661F
+ */
+public class ScheduleGanttRenderer extends GanttRenderer {
+
+	/** Holds the schedule that has been calculated for the selected solution. */
+	private StrictTTSchedule<?, ?> schedule;
+
+	// TODO: These variables are state trackers. Remove them.
+	/** holds row from previous call */
+	private int row;
+	/** holds column from previous call */
+	private int col;
+	/** holds the time slot index */
+	private int index;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param schedule
+	 *            The scheduler provided by the solution
+	 */
+	public ScheduleGanttRenderer(final StrictTTSchedule<?, ?> schedule) {
+		super();
+		this.schedule = schedule;
+
+		setBaseItemLabelGenerator(new ScheduleLabelGenerator(schedule));
+		setSeriesToolTipGenerator(0, new ScheduleToolTipGenerator(schedule));
+		setBaseItemLabelsVisible(true);
+		setBaseItemLabelPaint(Color.BLACK);
+		setDrawBarOutline(true);
+		setBasePositiveItemLabelPosition(
+				new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER));
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Paint getItemPaint(int row, int col) {
+		CategoryDataset dataset = super.getPlot().getDataset();
+
+		// TODO: These variables are state trackers. Remove them. The index should be set
+		// externally.
+		if(this.row != row || this.col != col) {
+			this.row = row;
+			this.col = col;
+			index = 0;
+		}
+
+		Comparable<?> rkey = dataset.getRowKey(row);
+		Comparable<?> ckey = dataset.getColumnKey(col);
+		// set default
+		Color color = (Color)super.getItemPaint(row, col);
+
+		/*
+		 * Paint those time slots of execution units that are actually used. Tasks, voters, and
+		 * messages are colored differently.
+		 */
+		// TODO: Label Gantt chart bars with task and message names
+		// TODO: Indicate source and targets of messages (e.g., using dashed arrows)
+		// NB: AD: This cannot be done with the GanttRenderer!
+		if(rkey.equals("processing")) {
+			/* Select the resource that corresponds to the given row */
+			IResourceAdapter<?> resource = null;
+
+			for(IResourceAdapter<?> currentResource : schedule.getResources()) {
+				if(currentResource.getName().equals(ckey)) {
+					resource = currentResource;
+					break;
+				}
+			}
+
+			/* Color tasks and voters differently */
+			if(resource != null) {
+				// TODO: make the index handling more dynamic
+				// The indexing relies on the fact that the diagram is painted from the left to the
+				// right (and so is the "call order").
+				// HARD CODED HERE
+				// we maintain a index ourselves to track the current sub task in the task
+				// series.
+				// we have to divide the index by 2, because we observe that for the drawing of
+				// each item, the getItemPaint function is called twice.
+
+				ResourceSchedule localSchedule = schedule.getResourceSchedule(resource);
+				Object[] slots = localSchedule.keySet().toArray();
+
+				if(index / 2 < slots.length) {
+					TimeSlot slot = (TimeSlot)slots[index / 2];
+					// TODO hard coded color
+					if(slot.isVoter()) {
+						color = Color.YELLOW;
+					} else {
+						if(resource instanceof ITransmissionUnitAdapter) {
+							color = Color.BLUE;
+						} else {
+							color = Color.RED;
+						}
+					}
+				}
+			}
+		}
+		// Increase the time slot indexer for the next call.
+		index++;
+		return color;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	protected void drawTasks(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea,
+			CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis,
+			GanttCategoryDataset dataset, int row, int column) {
+
+		int count = dataset.getSubIntervalCount(row, column);
+		if(count == 0) {
+			drawTask(g2, state, dataArea, plot, domainAxis, rangeAxis, dataset, row, column);
+		}
+
+		for(int subinterval = 0; subinterval < count; subinterval++) {
+
+			RectangleEdge rangeAxisLocation = plot.getRangeAxisEdge();
+
+			// value 0
+			Number value0 = dataset.getStartValue(row, column, subinterval);
+			if(value0 == null) {
+				return;
+			}
+			double translatedValue0 =
+					rangeAxis.valueToJava2D(value0.doubleValue(), dataArea, rangeAxisLocation);
+
+			// value 1
+			Number value1 = dataset.getEndValue(row, column, subinterval);
+			if(value1 == null) {
+				return;
+			}
+			double translatedValue1 =
+					rangeAxis.valueToJava2D(value1.doubleValue(), dataArea, rangeAxisLocation);
+
+			if(translatedValue1 < translatedValue0) {
+				double temp = translatedValue1;
+				translatedValue1 = translatedValue0;
+				translatedValue0 = temp;
+			}
+
+			double rectStart = calculateBarW0(plot, plot.getOrientation(), dataArea, domainAxis,
+					state, row, column);
+			double rectLength = Math.abs(translatedValue1 - translatedValue0);
+			double rectBreadth = state.getBarWidth();
+
+			// DRAW THE BARS...
+			Rectangle2D bar = null;
+
+			if(plot.getOrientation() == PlotOrientation.HORIZONTAL) {
+				bar = new Rectangle2D.Double(translatedValue0, rectStart, rectLength, rectBreadth);
+			} else if(plot.getOrientation() == PlotOrientation.VERTICAL) {
+				bar = new Rectangle2D.Double(rectStart, translatedValue0, rectBreadth, rectLength);
+			}
+
+			Rectangle2D completeBar = null;
+			Rectangle2D incompleteBar = null;
+			Number percent = dataset.getPercentComplete(row, column, subinterval);
+			double start = getStartPercent();
+			double end = getEndPercent();
+			if(percent != null) {
+				double p = percent.doubleValue();
+				if(plot.getOrientation() == PlotOrientation.HORIZONTAL) {
+					completeBar = new Rectangle2D.Double(translatedValue0,
+							rectStart + start * rectBreadth, rectLength * p,
+							rectBreadth * (end - start));
+					incompleteBar = new Rectangle2D.Double(translatedValue0 + rectLength * p,
+							rectStart + start * rectBreadth, rectLength * (1 - p),
+							rectBreadth * (end - start));
+				} else if(plot.getOrientation() == PlotOrientation.VERTICAL) {
+					completeBar = new Rectangle2D.Double(rectStart + start * rectBreadth,
+							translatedValue0 + rectLength * (1 - p), rectBreadth * (end - start),
+							rectLength * p);
+					incompleteBar = new Rectangle2D.Double(rectStart + start * rectBreadth,
+							translatedValue0, rectBreadth * (end - start), rectLength * (1 - p));
+				}
+			}
+
+			Paint seriesPaint = getItemPaint(row, column);
+			g2.setPaint(seriesPaint);
+			g2.fill(bar);
+
+			if(completeBar != null) {
+				g2.setPaint(getCompletePaint());
+				g2.fill(completeBar);
+			}
+			if(incompleteBar != null) {
+				g2.setPaint(getIncompletePaint());
+				g2.fill(incompleteBar);
+			}
+			if(isDrawBarOutline() && state.getBarWidth() > BAR_OUTLINE_WIDTH_THRESHOLD) {
+				g2.setStroke(getItemStroke(row, column));
+				g2.setPaint(getItemOutlinePaint(row, column));
+				g2.draw(bar);
+			}
+
+			CategoryItemLabelGenerator generator = getItemLabelGenerator(row, column);
+			if(generator != null && isItemLabelVisible(row, column)) {
+				drawItemLabel(g2, dataset, row, column, plot, generator, bar, false);
+			}
+
+			// collect entity and tool tip information...
+			setupTooltip(state, dataset, row, column, bar);
+		}
+	}
+
+	/** Tooltip when hovering a Pareto-optimal point. */
+	private void setupTooltip(CategoryItemRendererState state, GanttCategoryDataset dataset,
+			int row, int column, Rectangle2D bar) {
+		if(state.getInfo() != null) {
+			EntityCollection entities = state.getEntityCollection();
+			if(entities != null) {
+				String tip = null;
+				if(getToolTipGenerator(row, column) != null) {
+					tip = getToolTipGenerator(row, column).generateToolTip(dataset, row, column);
+				}
+				String url = null;
+				if(getItemURLGenerator(row, column) != null) {
+					url = getItemURLGenerator(row, column).generateURL(dataset, row, column);
+				}
+				CategoryItemEntity entity = new CategoryItemEntity(bar, tip, url, dataset,
+						dataset.getRowKey(row), dataset.getColumnKey(column));
+				entities.add(entity);
+			}
+		}
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleLabelGenerator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleLabelGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..94d9eb78b10f995d931443baf86013320c529c6d
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleLabelGenerator.java
@@ -0,0 +1,126 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2014 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule.ResourceSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter;
+import org.jfree.chart.labels.CategoryItemLabelGenerator;
+import org.jfree.data.category.CategoryDataset;
+
+/**
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: E737A7A0CC0FCCEC51618F0DFD0F2825
+ */
+public class ScheduleLabelGenerator implements CategoryItemLabelGenerator {
+
+	/** holds row from previous call */
+	private int rowLabel;
+	/** holds column from previous call */
+	private int colLabel;
+	/** holds the time slot index for task naming */
+	private int indexLabel;
+
+	/** Refers to the schedule that is displayed. */
+	private StrictTTSchedule<?, ?> schedule;
+
+	/** Constructor. */
+	public ScheduleLabelGenerator(StrictTTSchedule<?, ?> schedule) {
+		this.schedule = schedule;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String generateLabel(CategoryDataset dataset, int row, int column) {
+		// TODO: These variables are state trackers. Remove them. The index should be set
+		// externally.
+		// For the comments, see the method getItemPaint(...). This method is basically a
+		// clone.
+		if(rowLabel != row || colLabel != column) {
+			rowLabel = row;
+			colLabel = column;
+			indexLabel = 0;
+		}
+
+		String retName = "";
+
+		Comparable<?> rkey = dataset.getRowKey(row);
+		Comparable<?> ckey = dataset.getColumnKey(column);
+
+		if(rkey.equals("processing")) {
+			/* Select the resource that corresponds to the given row */
+			IResourceAdapter<?> resource = null;
+
+			for(IResourceAdapter<?> currentResource : schedule.getResources()) {
+				if(currentResource.getName().equals(ckey)) {
+					resource = currentResource;
+					break;
+				}
+			}
+
+			/* Color tasks and voters differently */
+			if(resource != null) {
+
+				ResourceSchedule localSchedule = schedule.getResourceSchedule(resource);
+				Object[] slots = localSchedule.keySet().toArray();
+
+				if(indexLabel < slots.length) {
+					TimeSlot slot = (TimeSlot)slots[indexLabel];
+					// TODO hard coded color
+					if(slot.isVoter()) {
+						retName = "V";
+					} else {
+						if(resource instanceof ITransmissionUnitAdapter) {
+							// TODO: In order to retrieve the source and target of the
+							// transmission, it is first required to store the source and
+							// the receiver of the message
+							retName = "T";
+						} else if(resource instanceof IGatewayUnitAdapter) {
+							retName = "G";
+						} else {
+							retName =
+									slot.getDeployedRequester().getDeployableComponent().getName();
+						}
+					}
+				}
+			}
+		}
+		indexLabel++;
+		return retName;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String generateRowLabel(CategoryDataset dataset, int row) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String generateColumnLabel(CategoryDataset dataset, int column) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/SchedulePlotter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/SchedulePlotter.java
new file mode 100644
index 0000000000000000000000000000000000000000..9610d2cb2a8090c1a824654c59cc9ae14fb6f644
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/SchedulePlotter.java
@@ -0,0 +1,88 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2014 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import javax.swing.JFrame;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartPanel;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.plot.CategoryPlot;
+
+/**
+ * {@link SchedulePlotter} is responsible for visualizing the schedule that is generated for a
+ * single Pareto-optimal solution. It illustrates both the execution unit schedules and the bus
+ * schedules.
+ * 
+ * // TODO: generalize to common schedule class
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: A69E6E1BF4A59C10F365AB01899F7B0F
+ */
+public class SchedulePlotter extends JFrame {
+
+	/** Holds the schedule that has been calculated for the selected solution. */
+	private StrictTTSchedule<?, ?> schedule;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param schedule
+	 *            The scheduler provided by the solution
+	 */
+	public SchedulePlotter(StrictTTSchedule<?, ?> schedule) {
+		super();
+		this.schedule = schedule;
+	}
+
+	/** Draws the Gantt plot displaying the schedule. */
+	public void createPlot() {
+
+		/* Retrieve the tasks in a form convenient for plotting. */
+		TaskSeriesCollectionFromSchedule dataset = new TaskSeriesCollectionFromSchedule(schedule);
+
+		/* Initialize the chart. */
+		JFreeChart chart = ChartFactory.createGanttChart("Time Triggered Execution Schedule", // chart
+																								// title
+				"Cores", // domain axis label
+				"Time", // range axis label
+				dataset, // data
+				false, // include legend
+				true, // tooltips
+				false // urls
+		);
+		CategoryPlot plot = (CategoryPlot)chart.getPlot();
+		plot.setRangeAxis(new NumberAxis("Time"));
+
+		/* Assign the time slot specific renderer. */
+		ScheduleGanttRenderer renderer = new ScheduleGanttRenderer(schedule);
+		plot.setRenderer(renderer);
+
+		/* Actually paint the window with the given dimensions. */
+		ChartPanel chartPanel = new ChartPanel(chart);
+		chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
+		chartPanel.addChartMouseListener(new MessagePathOnClicked(plot, chartPanel, schedule));
+		setContentPane(chartPanel);
+		pack();
+		setVisible(true);
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleToolTipGenerator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleToolTipGenerator.java
new file mode 100644
index 0000000000000000000000000000000000000000..47a6f07e5f5cb396926d4b7aca1f491cac938aa6
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/ScheduleToolTipGenerator.java
@@ -0,0 +1,121 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2015 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule.ResourceSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ICommunicationResourceAdapter;
+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.IResourceAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
+import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
+import org.jfree.data.category.CategoryDataset;
+
+/**
+ * Generates a tooltip label displaying information about the {@link TimeSlot} when the user
+ * places the mouse pointer over it.
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 9364B20A343823E62E29AE48702FBDB9
+ */
+public class ScheduleToolTipGenerator extends StandardCategoryToolTipGenerator {
+
+	/** {@link StrictTTSchedule} for which the labels are generated. */
+	private StrictTTSchedule<?, ?> schedule;
+
+	/** holds row from previous call */
+	private int rowLabel;
+	/** holds column from previous call */
+	private int colLabel;
+
+	/** Previous {@link TimeSlot} for which a tooltip was generated. */
+	Map<IResourceAdapter<?>, TimeSlot> prevSlot;
+
+	/** Constructor. */
+	public ScheduleToolTipGenerator(StrictTTSchedule<?, ?> schedule) {
+		super();
+		this.schedule = schedule;
+		prevSlot = new HashMap<IResourceAdapter<?>, TimeSlot>();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String generateToolTip(CategoryDataset dataset, int row, int column) {
+		if(rowLabel != row || colLabel != column) {
+			rowLabel = row;
+			colLabel = column;
+			prevSlot.clear();
+		}
+
+		String taskAndResourceName = null;
+
+		Comparable<?> rkey = dataset.getRowKey(row);
+		Comparable<?> ckey = dataset.getColumnKey(column);
+
+		if(rkey.equals("processing")) {
+			IResourceAdapter<?> resource = null;
+			for(IResourceAdapter<?> currentResource : schedule.getResources()) {
+				if(currentResource.getName().equals(ckey)) {
+					resource = currentResource;
+					break;
+				}
+			}
+			if(resource != null) {
+				ResourceSchedule resourceSchedule = schedule.getResourceSchedule(resource);
+
+				TimeSlot currentSlot = prevSlot.get(resource);
+				if(currentSlot == null) {
+					currentSlot = resourceSchedule.firstKey();
+				} else {
+					currentSlot = resourceSchedule.higherKey(currentSlot);
+				}
+
+				if(resource instanceof IExecutionUnitAdapter) {
+					if(currentSlot != null) {
+						IMappingEntry mappingEntry = currentSlot.getDeployedRequester();
+						if(mappingEntry != null) {
+							IDeployableComponentAdapter<?> component =
+									mappingEntry.getDeployableComponent();
+							if(component != null) {
+								prevSlot.put(resource, currentSlot);
+								taskAndResourceName =
+										component.getName() + " -> " + resource.getName();
+							}
+						}
+					}
+				} else if(resource instanceof ICommunicationResourceAdapter) {
+					if(currentSlot != null) {
+						Message message = currentSlot.getDeployedMessage();
+						if(message != null) {
+							return message.toString();
+						}
+					}
+				}
+			}
+		}
+		return taskAndResourceName;
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/TaskSeriesCollectionFromSchedule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/TaskSeriesCollectionFromSchedule.java
new file mode 100644
index 0000000000000000000000000000000000000000..17dfd231d79a7dfdce616f18ca6767ee93f46b1c
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/TaskSeriesCollectionFromSchedule.java
@@ -0,0 +1,368 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2014 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule.ResourceSchedule;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
+import org.jfree.data.gantt.GanttCategoryDataset;
+import org.jfree.data.general.AbstractSeriesDataset;
+
+/**
+ * This class converts a schedule from a given solution into a format that can be displayed as a
+ * Gantt chart. It essentially creates links between the datapoints of the chart and the elements of
+ * the schedule.
+ * 
+ * The rows represent the resources, while the columns are the time slots. The entries in the
+ * diagram are then either tasks, messages, or voting elements.
+ * 
+ * TODO: generalize to common schedule class
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: FCBF7C4C45F2D7D2E9F6235824367B69
+ */
+public class TaskSeriesCollectionFromSchedule extends AbstractSeriesDataset
+		implements GanttCategoryDataset {
+
+	/** Holds the schedule that has been calculated for the selected solution. */
+
+	private StrictTTSchedule<?, ?> schedule;
+
+	// in our drawing, the row keys are the category of scheduling objects, e.g. processing slot or
+	// communication slot
+	// the column keys are the capability resources, e.g. cores
+	// the time slots are considered as intervals to draw in the Gantt chart
+
+	/** Holds the tasks and messages of a row. */
+	private List<String> rowkeys;
+	/** Holds the resources (busses, execution units) with an associated name */
+	private List<String> columnkeys;
+	/** Links the names of the resources in {@code columnkeys} with the resource objects. */
+	private Map<String, IResourceAdapter<?>> resourceKeyToResourceObject;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param schedule
+	 *            The scheduler provided by the solution
+	 */
+	public TaskSeriesCollectionFromSchedule(StrictTTSchedule<?, ?> schedule) {
+		this.schedule = schedule;
+		rowkeys = new ArrayList<String>();
+		columnkeys = new ArrayList<String>();
+		resourceKeyToResourceObject = new HashMap<String, IResourceAdapter<?>>();
+
+		/* Add a dummy processing row */
+		rowkeys.add("processing");
+
+		/*
+		 * Add the resources (busses, execution units) in the columnkeys list in an aphabetical
+		 * order
+		 */
+		SortedSet<String> sortedkeys = new TreeSet<String>();
+		Set<IResourceAdapter<?>> resources = schedule.getResources();
+
+		for(IResourceAdapter<?> resource : resources) {
+			sortedkeys.add(resource.getName());
+			resourceKeyToResourceObject.put(resource.getName(), resource);
+		}
+		columnkeys.addAll(sortedkeys);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getEndValue(int row, int column) {
+		Comparable<?> rowKey = getRowKey(row);
+		Comparable<?> columnKey = getColumnKey(column);
+		return getEndValue(rowKey, columnKey);
+	}
+
+	/**
+	 * {@inheritDoc} This method is intended to derive the overall end value.
+	 */
+	@Override
+	public Number getEndValue(@SuppressWarnings("rawtypes") Comparable rowKey,
+			@SuppressWarnings("rawtypes") Comparable columnKey) {
+		/*
+		 * First, filter for execution units, the last operation is always execution, not messaging.
+		 */
+		if(rowKey.equals("processing")) {
+			if(resourceKeyToResourceObject.get(columnKey) != null) {
+				// Retrieve all allocated time allocated for the referenced resource in the
+				// schedule.
+				ResourceSchedule resourceSchedule =
+						schedule.getResourceSchedule(resourceKeyToResourceObject.get(columnKey));
+
+				if(!resourceSchedule.isEmpty()) {
+					TimeSlot lastslot = resourceSchedule.lastKey();
+					return lastslot.getEndTime();
+				}
+			}
+		}
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getStartValue(int row, int column) {
+		Comparable<?> rowKey = getRowKey(row);
+		Comparable<?> columnKey = getColumnKey(column);
+		return getStartValue(rowKey, columnKey);
+	}
+
+	/** {@inheritDoc}. This method is intended to derive the overall start value. */
+	@Override
+	public Number getStartValue(@SuppressWarnings("rawtypes") Comparable rowKey,
+			@SuppressWarnings("rawtypes") Comparable columnKey) {
+		// First, filter for execution units, the first operation is always execution, not
+		// messaging.
+		if(rowKey.equals("processing")) {
+			if(resourceKeyToResourceObject.get(columnKey) != null) {
+				// Retrieve all allocated time allocated for the referenced resource in the
+				// schedule.
+				ResourceSchedule resourceSchedule =
+						schedule.getResourceSchedule(resourceKeyToResourceObject.get(columnKey));
+
+				if(!resourceSchedule.isEmpty()) {
+					TimeSlot firstslot = resourceSchedule.firstKey();
+					return firstslot.getStartTime();
+				}
+			}
+		}
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getColumnIndex(@SuppressWarnings("rawtypes") Comparable columnKey) {
+		if(columnKey == null) {
+			throw new IllegalArgumentException("Null 'columnKey' argument.");
+		}
+		return this.columnkeys.indexOf(columnKey);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Comparable<?> getColumnKey(int index) {
+		return columnkeys.get(index);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public List<?> getColumnKeys() {
+		return columnkeys;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getRowIndex(@SuppressWarnings("rawtypes") Comparable rowKey) {
+		if(rowKey == null) {
+			throw new IllegalArgumentException("Null 'rowKey' argument.");
+		}
+		return this.rowkeys.indexOf(rowKey);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Comparable<?> getRowKey(int index) {
+		return rowkeys.get(index);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public List<?> getRowKeys() {
+		return rowkeys;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getValue(@SuppressWarnings("rawtypes") Comparable rowKey,
+			@SuppressWarnings("rawtypes") Comparable columnKey) {
+		return getStartValue(rowKey, columnKey);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getColumnCount() {
+		return columnkeys.size();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getRowCount() {
+		return rowkeys.size();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getValue(int row, int column) {
+		return getStartValue(row, column);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getEndValue(int row, int column, int subinterval) {
+		Comparable<?> rowKey = getRowKey(row);
+		Comparable<?> columnKey = getColumnKey(column);
+		return getEndValue(rowKey, columnKey, subinterval);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getEndValue(@SuppressWarnings("rawtypes") Comparable rowKey,
+			@SuppressWarnings("rawtypes") Comparable columnKey, int subinterval) {
+		// just return the starting time of a specific slot
+		if(rowKey.equals("processing")) {
+			if(resourceKeyToResourceObject.get(columnKey) != null) {
+
+				ResourceSchedule resourceSchedule =
+						schedule.getResourceSchedule(resourceKeyToResourceObject.get(columnKey));
+
+				if(subinterval < resourceSchedule.size()) {
+					Object[] objs = resourceSchedule.keySet().toArray();
+					TimeSlot firstslot = (TimeSlot)objs[subinterval];
+					// Return the end value of the slot minus some small value for better
+					// visualization of separate tasks.
+					if(firstslot.getStartTime() - 0.1 <= firstslot.getEndTime()) {
+						return firstslot.getEndTime();
+					}
+					return firstslot.getEndTime() - 0.1;
+				}
+			}
+		}
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getPercentComplete(int arg0, int arg1) {
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getPercentComplete(@SuppressWarnings("rawtypes") Comparable arg0,
+			@SuppressWarnings("rawtypes") Comparable arg1) {
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getPercentComplete(int arg0, int arg1, int arg2) {
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getPercentComplete(@SuppressWarnings("rawtypes") Comparable arg0,
+			@SuppressWarnings("rawtypes") Comparable arg1, int arg2) {
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getStartValue(int row, int column, int subinterval) {
+		Comparable<?> rowKey = getRowKey(row);
+		Comparable<?> columnKey = getColumnKey(column);
+		return getStartValue(rowKey, columnKey, subinterval);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Number getStartValue(@SuppressWarnings("rawtypes") Comparable rowKey,
+			@SuppressWarnings("rawtypes") Comparable columnKey, int subinterval) {
+		// just return the starting time of a specific slot
+		if(rowKey.equals("processing")) {
+			if(resourceKeyToResourceObject.get(columnKey) != null) {
+
+				ResourceSchedule resourceSchedule =
+						schedule.getResourceSchedule(resourceKeyToResourceObject.get(columnKey));
+
+				if(subinterval < resourceSchedule.size()) {
+					Object[] objs = resourceSchedule.keySet().toArray();
+					TimeSlot firstslot = (TimeSlot)objs[subinterval];
+					// Return the end value of the slot plus some small value for better
+					// visualization of separate tasks.
+					if(firstslot.getStartTime() - 0.1 <= firstslot.getEndTime()) {
+						return firstslot.getStartTime();
+					}
+					return firstslot.getStartTime() + 0.1;
+				}
+			}
+		}
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getSubIntervalCount(int row, int column) {
+		Comparable<?> rowKey = getRowKey(row);
+		Comparable<?> columnKey = getColumnKey(column);
+		return getSubIntervalCount(rowKey, columnKey);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getSubIntervalCount(@SuppressWarnings("rawtypes") Comparable rowKey,
+			@SuppressWarnings("rawtypes") Comparable columnKey) {
+		if(rowKey.equals("processing")) {
+			if(resourceKeyToResourceObject.get(columnKey) != null) {
+
+				ResourceSchedule resourceSchedule =
+						schedule.getResourceSchedule(resourceKeyToResourceObject.get(columnKey));
+
+				return resourceSchedule.size();
+			}
+		}
+		return 0;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public int getSeriesCount() {
+		return getRowCount();
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Comparable<?> getSeriesKey(int arg0) {
+		if(arg0 < getRowCount()) {
+			return rowkeys.get(arg0);
+		}
+		return null;
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/XYPlotter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/XYPlotter.java
new file mode 100644
index 0000000000000000000000000000000000000000..210aef4809edddeaf8f4a38e9b564cfbaca638cc
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/port/plot/XYPlotter.java
@@ -0,0 +1,751 @@
+/*--------------------------------------------------------------------------+
+$Id$
+|                                                                          |
+| Copyright 2014 ForTISS GmbH                     |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.port.plot;
+
+import static javax.swing.JOptionPane.YES_OPTION;
+import static org.fortiss.af3.exploration.alg.ExplorationAlgActivator.PLUGIN_ID;
+import static org.fortiss.af3.exploration.alg.service.ExplorationService.getService;
+import static org.fortiss.af3.exploration.alg.service.IExplorationTransformationService.TransformationContext.EXPORT;
+import static org.fortiss.af3.exploration.util.ExplorationUtils.createExceptionStatus;
+import static org.fortiss.af3.project.utils.ProjectUtils.getFileProject;
+import static org.fortiss.tooling.kernel.utils.KernelModelElementUtils.getRootElements;
+
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.geom.Ellipse2D;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingConstants;
+
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.component.model.ComponentArchitecture;
+import org.fortiss.af3.deployment.model.Deployment;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IScheduleSolution;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.guava.MutableSubClassToInstanceMap;
+import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMap;
+import org.fortiss.af3.exploration.alg.service.IExplorationTransformationService;
+import org.fortiss.af3.exploration.model.ExplorationConstraint;
+import org.fortiss.af3.exploration.model.ExplorationSpecification;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
+import org.fortiss.af3.exploration.model.solutions.ExplorationResult;
+import org.fortiss.af3.exploration.model.solutions.ExplorationSolutionSet;
+import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolutionMap;
+import org.fortiss.af3.platform.model.PlatformArchitecture;
+import org.fortiss.af3.project.model.FileProject;
+import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
+import org.fortiss.tooling.kernel.service.IPersistencyService;
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartMouseEvent;
+import org.jfree.chart.ChartMouseListener;
+import org.jfree.chart.ChartPanel;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.entity.ChartEntity;
+import org.jfree.chart.entity.XYItemEntity;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.plot.XYPlot;
+import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
+import org.jfree.data.xy.XYDataItem;
+import org.jfree.data.xy.XYDataset;
+import org.jfree.data.xy.XYSeries;
+import org.jfree.data.xy.XYSeriesCollection;
+import org.jfree.ui.RectangleEdge;
+
+import com.google.common.collect.ClassToInstanceMap;
+
+/**
+ * This class is responsible for creating a dialog that is used to display the identified
+ * pareto-optimal solution of the design space exploration. It offers a 2D graph that visualizes the
+ * values of two objectives versus each other. The objectives to be displayed can be chosen from
+ * Comboboxes.
+ * 
+ * Whenever an solution is chosen from the graph, its values are displayed in a listing
+ * below the graph. There also reside some buttons for further information on the chosen solution,
+ * like the schedule visualization.
+ * 
+ * // TODO: generalize to common schedule class
+ * 
+ * @author diewald
+ * @author $Author$
+ * @version $Rev$
+ * @ConQAT.Rating RED Hash: 56F676093396CFCCBF25AF8D431ED472
+ */
+public class XYPlotter extends JFrame implements ChartMouseListener, ActionListener {
+
+	// TODO remove this class; is only required for identifying the objective gui elements
+	/** The object containing a pair of an objective's name and its value. */
+	public class ObjectiveNameValueElement {
+		/**
+		 * Constructor.
+		 */
+		public ObjectiveNameValueElement(JTextField field, JLabel label) {
+			objTextField = field;
+			objLabel = label;
+		}
+
+		/** text field containing the objective value */
+		public JTextField objTextField;
+		/** label containing the objective's name */
+		public JLabel objLabel;
+	}
+
+	/** Class to reference the {@link ExplorationTarget} plus providing a nice UI presentation. */
+	private class ExplorationTargetItem {
+
+		/** Target referenced by this item. */
+		ExplorationTarget<?> target;
+
+		/** Constructor. */
+		ExplorationTargetItem(ExplorationTarget<?> target) {
+			this.target = target;
+		}
+
+		/** Returns the {@link ExplorationTarget} associated with this target item. */
+		public ExplorationTarget<?> getTarget() {
+			return target;
+		}
+
+		/** {@inheritDoc} */
+		@Override
+		public String toString() {
+			return target.getName();
+		}
+	}
+
+	/** contains the objective name assigned to the X-axis of the chart */
+	private ExplorationTargetItem Xaxis;
+
+	/** contains the objective name assigned to the Y-axis of the chart */
+	private ExplorationTargetItem Yaxis;
+
+	/** The ComboBox for assigning an objective to the X-axis */
+	private JComboBox<ExplorationTargetItem> XCombo;
+
+	/** The ComboBox for assigning an objective to the Y-axis */
+	private JComboBox<ExplorationTargetItem> YCombo;
+
+	/** the chart displaying the selected objective values */
+	private JFreeChart currentChart;
+
+	/** holds/buffers the solution that has been selected in the chart */
+	private SingleExplorationSolutionMap currentSolution;
+
+	/** the DSE model containing the objective and constraint description */
+	private ExplorationSpecification expSpec;
+
+	/** The overall exploration result */
+	private ExplorationSolutionSet explorationResult;
+
+	/** The {@link SystemModelAdapter} that references the explored system. */
+	private SystemModelAdapter<?, ?, ?, ?, ?, ?> exploredSystemModel;
+
+	/**
+	 * maps the names of the objectives to the GUI elements used to display the exact solution
+	 * values
+	 */
+	private Map<ExplorationTarget<?>, ObjectiveNameValueElement> objectiveToGuiItems;
+
+	/**
+	 * maps the coordinates from the created points in the chart to a specific solution of the DSE
+	 */
+	private Map<XYDataItem, SingleExplorationSolutionMap> coordinateToSolution;
+
+	/** buffer for the list of goals that exist in the DSE model */
+	private List<ExplorationTarget<?>> goalList;
+
+	/** Associates the {@link ExplorationTarget}s with their UI Elements. */
+	private Map<ExplorationTarget<?>, ExplorationTargetItem> targetUIMap;
+
+	/**
+	 * Caches a
+	 * private Exception transformationException = null;
+	 * 
+	 * /**
+	 * Constructor.
+	 * 
+	 * @param expSpec
+	 *            the exploration/optimization model (required for the identification of goals etc.)
+	 * @param explorationResult
+	 *            the DSE results which shall be visualized
+	 * @param title
+	 *            title of the dialog window
+	 */
+	public XYPlotter(ExplorationSpecification expSpec, ExplorationSolutionSet explorationResult,
+			String title) {
+		super(title);
+		this.expSpec = expSpec;
+		this.explorationResult = explorationResult;
+		if(explorationResult
+				.getInputModelAdapter() instanceof SystemModelAdapter<?, ?, ?, ?, ?, ?>) {
+			this.exploredSystemModel =
+					(SystemModelAdapter<?, ?, ?, ?, ?, ?>)explorationResult.getInputModelAdapter();
+		}
+		// TODO: throw an Exception if the SystemModelAdapter is not there.
+
+		Xaxis = null;
+		Yaxis = null;
+		currentChart = null;
+		currentSolution = null;
+		coordinateToSolution = new HashMap<>();
+		objectiveToGuiItems = new HashMap<>();
+		targetUIMap = new HashMap<>();
+	}
+
+	/**
+	 * Creates the dialog window that contains the chart for displaying the results of the DSE and
+	 * some control elements.
+	 */
+	public void createPlot() {
+		// TODO: Do we want to add constraints here?
+		goalList = new ArrayList<ExplorationTarget<?>>();
+		goalList.addAll(
+				expSpec.getTargets().stream()
+						.filter(t -> !(t instanceof ExplorationConstraint &&
+								((ExplorationConstraint<?>)t).isImplicit()))
+						.collect(Collectors.toList()));
+
+		goalList.stream().forEach(t -> targetUIMap.put(t, new ExplorationTargetItem(t)));
+
+		if(goalList.size() > 1) {
+			// set x and y to the first two obj by default
+			Xaxis = targetUIMap.get(goalList.get(0));
+			Yaxis = targetUIMap.get(goalList.get(1));
+		}
+		// TODO: Nonsense else if? Can't this be handled differently?
+		else if(goalList.size() > 0) {
+			// get(0) safe due to if.
+			Xaxis = targetUIMap.get(goalList.get(0));
+			// get(0) safe due to if.
+			Yaxis = targetUIMap.get(goalList.get(0));
+		} else {
+			System.out.println("ERROR: exploration should contain at least one objective!");
+			return;
+		}
+		// create plot
+		XYDataset dataset = createDataset();
+		JFreeChart chart = createChart(dataset);
+		ChartPanel chartPanel = new ChartPanel(chart);
+		chartPanel.addChartMouseListener(this);
+		currentChart = chart;
+
+		// custom gui items
+		// objective selection combo box
+		JPanel objPanel = new JPanel();
+		GridBagLayout objgridbag = new GridBagLayout();
+		GridBagConstraints objcons = new GridBagConstraints();
+		objPanel.setLayout(objgridbag);
+
+		createChartControls(objPanel, objcons);
+
+		JPanel editPanel = new JPanel();
+		GridBagLayout editgridbag = new GridBagLayout();
+		GridBagConstraints editcons = new GridBagConstraints();
+		editPanel.setLayout(editgridbag);
+
+		createDetailedGoalList(chartPanel, editPanel, editcons);
+
+		// Button for displaying the schedule of a single solution
+		editcons.gridx = 3;
+		editcons.gridy = 0;
+		editcons.weightx = 0.2;
+		JButton showButton = new JButton("Show Schedule");
+		editPanel.add(showButton, editcons);
+		showButton.setActionCommand("showschedule");
+		showButton.addActionListener(this);
+
+		// Button for generating an AF3 deployment of a single solution
+		JButton genButton = new JButton("Generate Single Deployment");
+		editcons.gridx = 3;
+		editcons.gridy = 1;
+		editcons.weightx = 0.2;
+		editPanel.add(genButton, editcons);
+		genButton.setActionCommand("generateDeployment");
+		genButton.addActionListener(this);
+
+		// Button for generating an AF3 deployment for all solution
+		JButton genAllButton = new JButton("Generate All Deployments");
+		editcons.gridx = 3;
+		editcons.gridy = 2;
+		editcons.weightx = 0.2;
+		editPanel.add(genAllButton, editcons);
+		genAllButton.setActionCommand("generateAllDeployments");
+		genAllButton.addActionListener(this);
+
+		// put everything together
+		JPanel content = new JPanel();
+		GridBagLayout gridbag = new GridBagLayout();
+		content.setLayout(gridbag);
+		GridBagConstraints cons = new GridBagConstraints();
+		cons.fill = GridBagConstraints.BOTH;
+		cons.gridx = 0;
+		cons.gridy = 1;
+		objcons.weightx = 0.8;
+		content.add(chartPanel, cons);
+		cons.gridx = 0;
+		cons.gridy = 2;
+		objcons.weightx = 0.1;
+		content.add(objPanel, cons);
+		cons.gridx = 0;
+		cons.gridy = 3;
+		objcons.weightx = 0.1;
+		content.add(editPanel, cons);
+		// set pane
+		setContentPane(content);
+	}
+
+	/**
+	 * Creates the controls (two comboboxes and a button) that determine which information shall be
+	 * illustrated in the diagram.
+	 * 
+	 * @param objPanel
+	 * @param objcons
+	 */
+	private void createChartControls(JPanel objPanel, GridBagConstraints objcons) {
+		XCombo = new JComboBox<ExplorationTargetItem>();
+		// add objectives
+		for(int i = 0; i < goalList.size(); i++) {
+			XCombo.addItem(targetUIMap.get(goalList.get(i)));
+		}
+		if(Xaxis != null)
+			XCombo.setSelectedItem(Xaxis);
+
+		YCombo = new JComboBox<ExplorationTargetItem>();
+		// add objectives
+		for(int i = 0; i < goalList.size(); i++) {
+			YCombo.addItem(targetUIMap.get(goalList.get(i)));
+		}
+		if(Yaxis != null)
+			YCombo.setSelectedItem(Yaxis);
+
+		JButton redrawButton = new JButton("Update Chart");
+		redrawButton.setActionCommand("updatechart");
+		redrawButton.addActionListener(this);
+
+		objcons.fill = GridBagConstraints.BOTH;
+		objcons.ipady = 8;
+		objcons.gridx = 0;
+		objcons.gridy = 0;
+		objcons.weightx = 0.4;
+		objPanel.add(XCombo, objcons);
+		objcons.gridx = 2;
+		objcons.gridy = 0;
+		objcons.weightx = 0.4;
+		objPanel.add(YCombo, objcons);
+		objcons.gridx = 3;
+		objcons.gridy = 0;
+		objcons.weightx = 0.2;
+		objPanel.add(redrawButton, objcons);
+	}
+
+	/**
+	 * Creates a two column grid for displaying the detailed objective (and constraint) values of
+	 * chosen solution.
+	 * 
+	 * @param chartPanel
+	 * @param editPanel
+	 * @param editcons
+	 */
+	private void createDetailedGoalList(ChartPanel chartPanel, JPanel editPanel,
+			GridBagConstraints editcons) {
+		// TODO: Make the value display non-editable.
+		for(int i = 0; i < goalList.size(); i++) {
+			ExplorationTarget<?> target = goalList.get(i);
+			JTextField goalField = new JTextField(12);
+			goalField.setHorizontalAlignment(SwingConstants.LEFT);
+			goalField.setActionCommand(target.getName());
+			goalField.addActionListener(chartPanel);
+			JLabel goalFieldLabel = new JLabel(target.getName() + ": ");
+			editcons.fill = GridBagConstraints.BOTH;
+			editcons.gridx = 0;
+			editcons.gridy = i;
+			editcons.weightx = 0.4;
+			editPanel.add(goalFieldLabel, editcons);
+			editcons.gridx = 1;
+			editcons.gridy = i;
+			editcons.weightx = 0.4;
+			editPanel.add(goalField, editcons);
+
+			objectiveToGuiItems.put(target,
+					new ObjectiveNameValueElement(goalField, goalFieldLabel));
+		}
+	}
+
+	/**
+	 * This method creates the chart i.e. the visualization of the dataset that is created from the
+	 * solutions of the DSE.
+	 * 
+	 * @param dataset
+	 *            a dataset compatible with the jfreechart framework; contains value pairs
+	 * @return the chart
+	 */
+	public JFreeChart createChart(XYDataset dataset) {
+		// create the chart...
+		final JFreeChart chart = ChartFactory.createXYLineChart("Design Exploration Result", // chart
+																								// title
+				Xaxis.toString(), // x axis label
+				Yaxis.toString(), // y axis label
+				dataset, // data
+				PlotOrientation.VERTICAL, true, // include legend
+				true, // tooltips
+				false // urls
+		);
+
+		chart.setBackgroundPaint(Color.white);
+		chart.getLegend().setPosition(RectangleEdge.TOP);
+		chart.getTitle().visible = false;
+		// get a reference to the plot for further customization...
+		final XYPlot plot = chart.getXYPlot();
+		plot.setBackgroundPaint(Color.lightGray);
+		plot.setDomainGridlinePaint(Color.white);
+		plot.setRangeGridlinePaint(Color.white);
+
+		final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
+		renderer.setSeriesLinesVisible(0, false);
+		// Rectangle(-5,-5,10,10)
+		renderer.setSeriesShape(0, new Ellipse2D.Float(-5, -5, 10, 10));
+
+		plot.setRenderer(renderer);
+
+		return chart;
+	}
+
+	/**
+	 * Triggers an update of the dataset to be displayed. required, when the objectives to be
+	 * displayed are changed.
+	 * 
+	 * @return the updated dataset
+	 */
+	public XYDataset createDataset() {
+
+		XYSeriesCollection dataset = new XYSeriesCollection();
+		updateDataSetFromResult(dataset);
+
+		return dataset;
+	}
+
+	/**
+	 * This method converts a the goal values of an identified solution to a usable dataset for the
+	 * chart.
+	 * 
+	 * @param dataset
+	 */
+	public void updateDataSetFromResult(XYSeriesCollection dataset) {
+		dataset.removeAllSeries();
+
+		XYSeries series = new XYSeries("Exploration Result");
+		// add the result to series
+		coordinateToSolution.clear();
+
+		for(SingleExplorationSolutionMap solution : explorationResult.getSolutions()) {
+			/* Retrieve the solution values of the selected objectives. */
+			Map<ExplorationTarget<?>, ExplorationResult<?>> objValues =
+					solution.getSolutionMap().map();
+
+			Object xResultVal = null;
+			Object yResultVal = null;
+			if(Xaxis != null && Yaxis != null) {
+				ExplorationResult<?> xExpResult = objValues.get(Xaxis.getTarget());
+				ExplorationResult<?> yExpResult = objValues.get(Yaxis.getTarget());
+				if(xExpResult != null && yExpResult != null) {
+					xResultVal = xExpResult.getResult();
+					yResultVal = yExpResult.getResult();
+				}
+			}
+
+			/* Convert the values to the data items. */
+			if(xResultVal instanceof Double && yResultVal instanceof Double) {
+				XYDataItem item = new XYDataItem((Double)xResultVal, (Double)yResultVal);
+				series.add(item);
+				coordinateToSolution.put(item, solution);
+			} else {
+				System.out.println("Error drawing chart: wrong x/y axis setting!");
+				break;
+			}
+		}
+		dataset.addSeries(series);
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void chartMouseClicked(ChartMouseEvent e) {
+		ChartEntity entity = e.getEntity();
+		if(entity instanceof XYItemEntity) {
+			XYItemEntity xyentity = (XYItemEntity)entity;
+			XYDataset dataset = xyentity.getDataset();
+			double x = dataset.getXValue(xyentity.getSeriesIndex(), xyentity.getItem());
+			double y = dataset.getYValue(xyentity.getSeriesIndex(), xyentity.getItem());
+			XYDataItem item = new XYDataItem(x, y);
+			currentSolution = coordinateToSolution.get(item);
+
+			Optional<SingleExplorationSolutionMap> singleExpSol = explorationResult.getSolutions()
+					.stream().filter(r -> r == currentSolution).findAny();
+			if(singleExpSol.isPresent()) {
+				SingleExplorationSolutionMap currentSolMap = singleExpSol.get();
+				Map<ExplorationTarget<?>, ExplorationResult<?>> objectiveValues =
+						currentSolMap.getSolutionMap().map();
+
+				// TODO: identifying the elements by their names is not good style, the map is not
+				// required.
+				/* Update the list of exact objective values */
+				if(objectiveValues != null) {
+					// display the objective values
+					for(int i = 0; i < goalList.size(); i++) {
+						ExplorationTarget<?> target = goalList.get(i);
+						ExplorationResult<?> expResult = objectiveValues.get(target);
+						if(objectiveToGuiItems.get(target) != null &&
+								(expResult != null && expResult.getResult() instanceof Double)) {
+							objectiveToGuiItems.get(target).objTextField
+									.setText(Double.toString((Double)expResult.getResult()));
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void chartMouseMoved(ChartMouseEvent arg0) {
+		// nothing to be done here
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		if("updatechart".equals(e.getActionCommand())) {
+			// update x y axis according to the combo box
+			Xaxis = (ExplorationTargetItem)XCombo.getSelectedItem();
+			Yaxis = (ExplorationTargetItem)YCombo.getSelectedItem();
+			XYPlot plot = (XYPlot)currentChart.getPlot();
+			plot.getDomainAxis().setLabel(Xaxis.toString());
+			plot.getRangeAxis().setLabel(Yaxis.toString());
+			// update data set and redraw the chart
+			updateDataSetFromResult((XYSeriesCollection)plot.getDataset());
+		} else if("generateDeployment".equals(e.getActionCommand())) {
+			if(currentSolution != null) {
+
+				String deploymentName = (String)JOptionPane.showInputDialog(this,
+						"Generate Deployment", "Enter a name for the Deployment",
+						JOptionPane.QUESTION_MESSAGE, null, null, "_Deployment");
+				int generateSCSpcec = 0;
+				if(deploymentName != null) {
+					// if(pickFirstInstanceOf(SafetyComplianceConstraint.class, dse
+					// .getTargetSpecification().getTargets()) != null) {
+					// generateSCSpcec =
+					// JOptionPane.showConfirmDialog(this,
+					// "Also export the generated safety compliance model?");
+					// }
+					try {
+						transformSingleDeployment(currentSolution, deploymentName,
+								generateSCSpcec == YES_OPTION);
+					} catch(Exception ex) {
+						createExceptionStatus(ex, PLUGIN_ID, "Deployment Export Failed.");
+					}
+				}
+			} else {
+				// message box
+				JOptionPane.showMessageDialog(this,
+						"Cannot perform model transformation : No Exploration Solution Selected!");
+			}
+		} else if("generateAllDeployments".equals(e.getActionCommand())) {
+			String deploymentName = (String)JOptionPane.showInputDialog(this,
+					"Generate All Deployments", "Enter a name prefix for the resulting deployments",
+					JOptionPane.QUESTION_MESSAGE, null, null, "GenDeployment_");
+			if(deploymentName != null) {
+				int generateSCSpcec = 0;
+				// if(pickFirstInstanceOf(SafetyComplianceConstraint.class, dse
+				// .getTargetSpecification().getTargets()) != null) {
+				// generateSCSpcec =
+				// JOptionPane.showConfirmDialog(this,
+				// "Also export the generated safety compliance model?");
+				// }
+				// Deployment generation has NOT been cancelled.
+				if(deploymentName.isEmpty()) {
+					deploymentName = "GenDeployment_";
+				}
+				try {
+					generateAllDeployments(deploymentName, generateSCSpcec == YES_OPTION);
+				} catch(Exception ex) {
+					createExceptionStatus(ex, PLUGIN_ID, "Deployment Export Failed.");
+				}
+			}
+		} else if("showschedule".equals(e.getActionCommand())) {
+			IScheduleSolution<?> scheduleSolution =
+					currentSolution.getSolutionModel(IScheduleSolution.class);
+			if(scheduleSolution instanceof StrictTTSchedule<?, ?>) {
+				SchedulePlotter sp = new SchedulePlotter((StrictTTSchedule<?, ?>)scheduleSolution);
+				sp.createPlot();
+			} else if(currentSolution == null) {
+				// No solution has been selected
+				JOptionPane.showMessageDialog(this,
+						"Cannot display a schedule : No Exploration Solution Selected!");
+			} else {
+				// The selected solution does not have a valid schedule type
+				JOptionPane.showMessageDialog(this,
+						"Cannot display a schedule : The selected solution provides no supported schedule!",
+						"Invalid schedule detected", JOptionPane.ERROR_MESSAGE);
+			}
+		}
+	}
+
+	/**
+	 * Transform the given solution to an AF3 {@link Deployment} and sets its name to the given
+	 * string. After the transformation the deployment is injected to the AF3 project.
+	 * 
+	 * @throws Exception
+	 */
+	private Deployment transformSingleDeployment(SingleExplorationSolutionMap solutionMap,
+			String deploymentName, boolean generateSCSpec) throws Exception {
+		// Deployment generation has NOT been cancelled.
+		if(deploymentName.isEmpty()) {
+			deploymentName = "_Deployment";
+		}
+
+		SubClassToInstanceMap<EObject> baseModels = MutableSubClassToInstanceMap.create();
+		// TODO: instead of querying the systemModelAdapter here, we should use the
+		// explorationResult -> input models.
+		ComponentArchitecture compArch =
+				(ComponentArchitecture)exploredSystemModel.getLogicalArchitecture().getObject();
+		PlatformArchitecture platArch =
+				(PlatformArchitecture)exploredSystemModel.getPlatformArchitecture().getObject();
+		baseModels.put(ComponentArchitecture.class, compArch);
+		baseModels.put(PlatformArchitecture.class, platArch);
+		if(generateSCSpec) {
+			// SafetyComplianceConstraint scConstr =
+			// pickFirstInstanceOf(SafetyComplianceConstraint.class, dse
+			// .getTargetSpecification().getTargets());
+			// SafetyComplianceSpecification scSpec = scConstr.getSafetyComplianceSpecification();
+			// baseModels.put(SafetyComplianceSpecification.class, scSpec);
+		}
+
+		// TODO: The context must be an export here. In a future version, it must be
+		// possible to specify, how the transformed model can be injected / exported.
+		ITopLevelElement modelContext =
+				IPersistencyService.getInstance().getTopLevelElementFor(compArch);
+
+		Collection<Class<? extends EObject>> solutionModelTypes = new HashSet<>();
+		solutionModelTypes.add(Deployment.class);
+		if(generateSCSpec) {
+			// solutionModelTypes.add(SafetyComplianceSpecification.class);
+		}
+
+		Deployment deployment = null;
+		ClassToInstanceMap<EObject> solutionModels =
+				getService(IExplorationTransformationService.class).getTransformedModels(EXPORT,
+						modelContext, solutionMap, baseModels, solutionModelTypes, deploymentName);
+		deployment = solutionModels.getInstance(Deployment.class);
+
+		// Derive the ComponentType from the Voter Specification.
+		// for(VoterType voterSpec : getChildrenWithType(compArch, VoterType.class)) {
+		// IModelElement voter = voterSpec.getSpecificationOf();
+		// if(voter instanceof Component) {
+		// ComponentType cType = getAnnotation(voter, ComponentType.class);
+		// modelContext.runAsNonDirtyingCommand(() -> cType
+		// .setComponentType(ComponentType_t.VOTER));
+		// }
+		// }
+
+		// if(generateSCSpec) {
+		// exportSCSpec(getFileProject(deployment),
+		// solutionModels.getInstance(SafetyComplianceSpecification.class), modelContext,
+		// deploymentName);
+		// }
+
+		return deployment;
+	}
+
+	// /**
+	// * Exports a generated {@link SafetyComplianceSpecification} model an stores it on the file
+	// * system in the same folder where the {@link FileProject} resides.
+	// */
+	// private void exportSCSpec(FileProject fp, SafetyComplianceSpecification scSpec,
+	// ITopLevelElement modelContext, String transformedModelName) {
+	// ResourceSet prjResSet = fp.eResource().getResourceSet();
+	//
+	// URI prjURI = fp.eResource().getURI().trimSegments(1);
+	// Resource resource =
+	// prjResSet.createResource(prjURI.appendSegment(transformedModelName +
+	// ".safetycompliance"));
+	//
+	// modelContext.runAsNonDirtyingCommand(() -> resource.getContents().add(scSpec));
+	// }
+
+	/**
+	 * Transforms each found solution to a {@link Deployment} and injects each into the parent AF3
+	 * project.
+	 * 
+	 * @throws Exception
+	 *             if the transformation of any solution to a deployment fails.
+	 */
+	private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
+			void generateAllDeployments(final String deploymentName, boolean generateSCSpec)
+					throws Exception {
+		Collection<Deployment> transformedDeployments = new ArrayList<>();
+
+		Integer deploymentNumber = 1;
+		for(SingleExplorationSolutionMap solution : explorationResult.getSolutions()) {
+			transformedDeployments.add(transformSingleDeployment(solution,
+					deploymentName + "_" + deploymentNumber, generateSCSpec));
+			deploymentNumber++;
+		}
+
+		// Defer the injection of deployments such that a failure in the transformation does not
+		// inject deployments corresponding to a subset of the solutions to the parent AF3 project.
+		for(Deployment curDeployment : transformedDeployments) {
+			ITopLevelElement modelContext =
+					IPersistencyService.getInstance().getTopLevelElementFor(expSpec);
+			modelContext.runAsCommand(() -> addDeploymentToProject(curDeployment));
+		}
+	}
+
+	/**
+	 * Actually generates the an AF3 deployment model from a given solution in the provided model
+	 * context and registers the resulting deployment (and a possibly generated
+	 * {@link ComponentArchitecture}) in the {@link FileProject} of the DSE.
+	 */
+	private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>>
+			void addDeploymentToProject(Deployment deployment) {
+		ComponentArchitecture deployedArchitecture = (ComponentArchitecture)deployment
+				.getComponentArchitectureReference().getReference();
+		FileProject fp = getFileProject(expSpec);
+		if(!getRootElements(expSpec, ComponentArchitecture.class).contains(deployedArchitecture)) {
+			fp.getRootElements().add(deployedArchitecture);
+		}
+		fp.getRootElements().add(deployment);
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/prototypes/PrototypeProvider.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/prototypes/PrototypeProvider.java
index 8b46e70427718f55870fd9a0a0cb9ff688b2eced..536c48d89ca0d1cb62e8f47b292005bd119a245b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/prototypes/PrototypeProvider.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/prototypes/PrototypeProvider.java
@@ -30,7 +30,7 @@ import org.fortiss.tooling.kernel.extension.base.PrototypeProviderBase;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: CB0DF6FCCFF7C9D25474224C1364C074
+ * @ConQAT.Rating RED Hash: 8055A580C651768C5276701935502CED
  */
 public class PrototypeProvider extends PrototypeProviderBase {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java
index 0b40320b2d15a29b54511e1ae31c3815c6a9ae94..fd1e3c9bde1d9c67f8791cb4315b8a5c3f787641 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java
@@ -35,7 +35,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: E37F28189083FEEB62D03F873E575D48
+ * @ConQAT.Rating RED Hash: B3D01F49934EBEC4E69A3DED907F8E47
  */
 public class ExplorationEncodingMap<T extends IExplorationEncoding> implements
 		Iterable<Entry<Class<? extends T>, T>> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationService.java
index 2b13f56917ba7a07c0d399762fc2d4ceb646ca20..a6d9e5fd3310ad9c6d20709a7b4924bbe0c22626 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationService.java
@@ -42,7 +42,7 @@ import org.osgi.framework.FrameworkUtil;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7CC915668C38564A0F364A2AD46328E8
+ * @ConQAT.Rating RED Hash: 7247E5017491A17EC3514FF9A9B06BA5
  */
 public class ExplorationService {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEncoding.java
index 249e055341d80e8b5b7e6b9a8421f6f8a25722d4..d395a5470a11d24de65837bd559e4528684d54f8 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEncoding.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEncoding.java
@@ -23,7 +23,7 @@ package org.fortiss.af3.exploration.alg.service;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 7ED2A9B796A7CAB250094F097F5DC211
+ * @ConQAT.Rating RED Hash: D4EAFD5767642D6B5B7CFA5451C5587F
  */
 // TODO: evaluate whether it would be better to let the geno- and phenotype inherit from an
 // "Encoding".
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEvaluatationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEvaluatationService.java
index ca892bd20de24e8ad29ee8f340703cf457b24cae..c8400a7c5900117bd9865d0479c5cfae9f4d2dc3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEvaluatationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationEvaluatationService.java
@@ -30,10 +30,10 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 051B57E0A2EA559A454139D78407FF8C
+ * @ConQAT.Rating RED Hash: 46D47CCFE21E0A94B24C9ECD8D3E9A04
  */
-public interface IExplorationEvaluatationService<T extends IExplorationModule> extends
-		IExplorationService<T> {
+public interface IExplorationEvaluatationService<T extends IExplorationModule>
+		extends IExplorationService<T> {
 
 	/**
 	 * Returns the collection of input model types that are required to execute the given set of
@@ -42,7 +42,9 @@ public interface IExplorationEvaluatationService<T extends IExplorationModule> e
 	 * 
 	 * @param evaluators
 	 *            Set of evaluators that shall be executed.
+	 * @return collection of model element types which must be provided through the transformation
+	 *         service (or directly) such that evaluator gets all the required inputs.
 	 */
-	Collection<Class<?>> getRequiredTransformedModels(
-			Set<IExplorationTargetEvaluator<?, ?, ?>> evaluators);
+	Collection<Class<?>>
+			getRequiredTransformedModels(Set<IExplorationTargetEvaluator<?, ?, ?>> evaluators);
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java
index f9a6d3af61cbb837bedba2b3bd62f57e3fab7420..9007982c5db5342ad2e2b47cb61f9c27e300019f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java
@@ -29,7 +29,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 797C82FF58ECD1E14AC9F8933040D0CA
+ * @ConQAT.Rating RED Hash: 9EB85316A5C5B235C9AB18DB47830ADB
  */
 public interface IExplorationRepairService extends IExplorationService<IRepairModule<?>> {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationService.java
index 528c61f969955c68a1a2139f9718162f608925bf..788ac62d5f6aff04033c32d5103ee387e7edfcbb 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationService.java
@@ -27,7 +27,7 @@ import org.fortiss.tooling.kernel.introspection.IIntrospectiveKernelService;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 88FAE0B8442DD8CC25F04F113E0EFD90
+ * @ConQAT.Rating RED Hash: 2E9D50738CE2D45BD1160C9951F97B11
  */
 public interface IExplorationService<T extends IExplorationModule> extends
 		IIntrospectiveKernelService {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTargetEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTargetEvaluator.java
index ac349062eae42e424544da43b8c480d2c3e7112b..f5054bc7bce9b1ef4d438b8ea7097aedd9d3ca2f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTargetEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTargetEvaluator.java
@@ -37,19 +37,15 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 37C9FF948C80C9486868B9149D2A1D6D
+ * @ConQAT.Rating RED Hash: FED860705C3A8AC87380F09CA72B3745
  */
-public interface IExplorationTargetEvaluator<P, RT, S extends ExplorationTarget<RT>> extends
-		IEObjectAware<S>, IExplorationModule {
+// TODO(AD): Extend the documentation: Use parameters! We have an interface here.
+public interface IExplorationTargetEvaluator<P, RT, S extends ExplorationTarget<RT>>
+		extends IEObjectAware<S>, IExplorationModule {
 
-	/**
-	 * Evaluates a phenotype w.r.t. a given objective dimension
-	 * 
-	 * @param transformedModels
-	 *            TODO
-	 */
+	/** Evaluates a phenotype w.r.t. a given objective dimension. */
 	public Value<?> evaluateGoal(P phenotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
-			ClassToInstanceMap<EObject> transformedModels);
+			ClassToInstanceMap<EObject> transformedModels) throws Exception;
 
 	/** Validate if objective has been correctly specified. */
 	public boolean validateInputs() throws Exception;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTransformationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTransformationService.java
index ce5231dd5c5624bb70a7c45ccc00fbcfed510812..e097a790c46278bfd1a3c7726e2f84dfbca74032 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTransformationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationTransformationService.java
@@ -26,7 +26,7 @@ import org.fortiss.af3.exploration.alg.dse.modeltransformation.ITransformationMo
 import org.fortiss.af3.exploration.alg.dse.modeltransformation.ITransformationStrategy;
 import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMap;
 import org.fortiss.af3.exploration.alg.service.internal.ExplorationTransformationService;
-import org.fortiss.af3.exploration.moea.model.solutions.SingleExplorationSolutionMap;
+import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolutionMap;
 import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
 
 import com.google.common.collect.ClassToInstanceMap;
@@ -35,9 +35,12 @@ import com.google.common.collect.ClassToInstanceMap;
  * {@link IExplorationService} interface of the {@link IExplorationTransformationService}.
  * It enables users to obtain transformed EMF models of a given type from a provided (candidate)
  * solution calculated by the DSE and the respective base models.
- * A transformed model is returned if: <li>The provided input (base models and candidate solution
- * encodings) match the required ones.</li> <li>All required {@link ITransformationModule}s are
- * present.</li> <li>None of the executed {@link ITransformationModule}s fails.</li>
+ * A transformed model is returned if:
+ * <li>The provided input (base models and candidate solution
+ * encodings) match the required ones.</li>
+ * <li>All required {@link ITransformationModule}s are
+ * present.</li>
+ * <li>None of the executed {@link ITransformationModule}s fails.</li>
  * <p>
  * The {@link IExplorationTransformationService} is organized by {@link ITransformationStrategy}s
  * and {@link ITransformationModule}s. The modules encapsulate isolated steps in a transformation
@@ -58,10 +61,10 @@ import com.google.common.collect.ClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: C9F686C8857C93FD6255D3B806BA770B
+ * @ConQAT.Rating RED Hash: FB9D67F373A29E3405FB6CC25A93EE49
  */
-public interface IExplorationTransformationService extends
-		IExplorationService<ITransformationModule<?>> {
+public interface IExplorationTransformationService
+		extends IExplorationService<ITransformationModule<?>> {
 	/**
 	 * Enum describing the context from which the transformation is requested. It is used to limit
 	 * the number of transformations to the required minimum to obtain a better DSE performance.
@@ -89,34 +92,48 @@ public interface IExplorationTransformationService extends
 	 * solution models contained in the given {@link SingleExplorationSolutionMap} and the
 	 * collection of given {@code baseModel}s.
 	 * 
+	 * @param context
+	 *            Defines whether the model transformation is executed DSE-internally or triggered
+	 *            by the user to export a solution.
+	 * @param modelContext
+	 *            Model context in which the transformed models would be stored.
 	 * @param solution
 	 *            {@link SingleExplorationSolutionMap} containing the solution models.
 	 * @param baseModels
 	 *            EMF models used as a basis to generate the transformed model.
 	 * @param transformedModelTypes
 	 *            Type of the transformed models that shall be returned.
+	 * @param transformedModelName
+	 *            name of the transformed model, used when the model shall be exported.
 	 * @return The transformed models which were requested.
 	 * @throws Exception
 	 *             If no {@link ITransformationModule} has been registered which can produce the
 	 *             demanded model, or if some required solution encoding was not passed.
 	 */
-	<U extends EObject, S extends EObject> ClassToInstanceMap<U>
-			getTransformedModels(TransformationContext context, ITopLevelElement modelContext,
-					SingleExplorationSolutionMap solution, SubClassToInstanceMap<S> baseModels,
-					Collection<Class<? extends EObject>> transformedModelTypes,
-					String transformedModelName) throws Exception;
+	<U extends EObject, S extends EObject> ClassToInstanceMap<U> getTransformedModels(
+			TransformationContext context, ITopLevelElement modelContext,
+			SingleExplorationSolutionMap solution, SubClassToInstanceMap<S> baseModels,
+			Collection<Class<? extends EObject>> transformedModelTypes, String transformedModelName)
+			throws Exception;
 
 	/**
 	 * Generates a model of the requested type ({@code transformedModelType}) using the set of
 	 * solution models contained in the given {@link SingleExplorationSolutionMap} and the
 	 * collection of given {@code baseModel}s.
 	 * 
+	 * @param context
+	 *            Defines whether the model transformation is executed DSE-internally or triggered
+	 *            by the user to export a solution.
+	 * @param modelContext
+	 *            Model context in which the transformed models would be stored.
 	 * @param solution
 	 *            {@link SingleExplorationSolutionMap} containing the solution models.
 	 * @param baseModels
 	 *            EMF models used as a basis to generate the transformed model.
 	 * @param transformedModelType
 	 *            Type of the transformed model.
+	 * @param transformedModelName
+	 *            name of the transformed model, used when the model shall be exported.
 	 * @return The transformed model.
 	 * @throws Exception
 	 *             If no {@link ITransformationModule} has been registered which can produce the
@@ -132,35 +149,49 @@ public interface IExplorationTransformationService extends
 	 * solution models contained in the given {@link SingleExplorationSolutionMap} and the
 	 * collection of given {@code baseModel}s.
 	 * 
+	 * @param context
+	 *            Defines whether the model transformation is executed DSE-internally or triggered
+	 *            by the user to export a solution.
+	 * @param modelContext
+	 *            Model context in which the transformed models would be stored.
 	 * @param encodings
 	 *            {@link SingleExplorationSolutionMap} containing the solution models.
 	 * @param baseModels
 	 *            EMF models used as a basis to generate the transformed model.
 	 * @param transformedModelTypes
 	 *            Type of the transformed models that shall be returned.
+	 * @param transformedModelName
+	 *            name of the transformed model, used when the model shall be exported.
 	 * @return The transformed models which were requested.
 	 * @throws Exception
 	 *             If no {@link ITransformationModule} has been registered which can produce the
 	 *             demanded model, or if some required solution encoding was not passed.
 	 */
-	<U extends EObject, S extends EObject> ClassToInstanceMap<U>
-			getTransformedModels(TransformationContext context, ITopLevelElement modelContext,
-					ExplorationEncodingMap<IExplorationEncoding> encodings,
-					SubClassToInstanceMap<S> baseModels,
-					Collection<Class<? extends EObject>> transformedModelTypes,
-					String transformedModelName) throws Exception;
+	<U extends EObject, S extends EObject> ClassToInstanceMap<U> getTransformedModels(
+			TransformationContext context, ITopLevelElement modelContext,
+			ExplorationEncodingMap<IExplorationEncoding> encodings,
+			SubClassToInstanceMap<S> baseModels,
+			Collection<Class<? extends EObject>> transformedModelTypes, String transformedModelName)
+			throws Exception;
 
 	/**
 	 * Generates a model of the requested type ({@code transformedModelType}) using the set of
 	 * {@link Phenotype}s contained in the given {@link FlatPhenotypeMap} and the
 	 * collection of given {@code baseModel}s.
 	 * 
+	 * @param context
+	 *            Defines whether the model transformation is executed DSE-internally or triggered
+	 *            by the user to export a solution.
+	 * @param modelContext
+	 *            Model context in which the transformed models would be stored.
 	 * @param encodings
 	 *            {@link SingleExplorationSolutionMap} containing the solution models.
 	 * @param baseModels
 	 *            EMF models used as a basis to generate the transformed model.
 	 * @param transformedModelType
 	 *            Type of the transformed model.
+	 * @param transformedModelName
+	 *            name of the transformed model, used when the model shall be exported.
 	 * @return The transformed model.
 	 * @throws Exception
 	 *             If no {@link ITransformationModule} has been registered which can produce the
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IRepairModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IRepairModule.java
index 3595646e9c7391e14b2341638db5a933087156e6..36e11f7aec5bb7d76bba23f913686b289fa92105 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IRepairModule.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IRepairModule.java
@@ -37,7 +37,7 @@ import org.opt4j.core.Value;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 4D4DEF4C7CC9EC20C513ED2782C19EE3
+ * @ConQAT.Rating RED Hash: 634DBC7336F4BF234743B53311DC9061
  */
 public interface IRepairModule<T extends Genotype> extends IObjectAware<T>, IExplorationModule {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationEvaluationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationEvaluationService.java
index 5e28a7ac30839f39bf9ef122f3b8fc1b5cfdef41..6b1e070d676aa1fb64ba704028d25ad1dcf80192 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationEvaluationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationEvaluationService.java
@@ -50,7 +50,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 6DDFF3B8BB2691518FF2117434B051E1
+ * @ConQAT.Rating RED Hash: FABD9E6D5F88ECF5BF57EDC9334DF996
  */
 public class ExplorationEvaluationService<T extends IExplorationTargetEvaluator<?, ?, ?>> extends
 		EObjectAwareServiceBase<T> implements IExplorationEvaluatationService<T> {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java
index b6de0192a67f67f1793a588875cb8287d47c15f5..e14ddca3ea86a2d0b7ff11b1275b3eb28954ae40 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java
@@ -39,7 +39,7 @@ import org.opt4j.core.Genotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: B66C3A91A8BD7B2FDF5440C23CE6CB96
+ * @ConQAT.Rating RED Hash: 99E4B395ED3A42C94B39E5A078C714D5
  */
 public class ExplorationRepairService extends ObjectAwareServiceBase<IRepairModule<?>> implements
 		IExplorationRepairService {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java
index 58bded8847c67dcfbe87bf199110b47f5b8320cb..f8033efa37d56cf56e4050a075a202b6787d4913 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java
@@ -43,7 +43,7 @@ import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMap;
 import org.fortiss.af3.exploration.alg.service.ExplorationEncodingMap;
 import org.fortiss.af3.exploration.alg.service.IExplorationEncoding;
 import org.fortiss.af3.exploration.alg.service.IExplorationTransformationService;
-import org.fortiss.af3.exploration.moea.model.solutions.SingleExplorationSolutionMap;
+import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolutionMap;
 import org.fortiss.af3.project.model.FileProject;
 import org.fortiss.af3.project.utils.ProjectUtils;
 import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
@@ -63,10 +63,10 @@ import com.google.common.collect.MutableClassToInstanceMap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: E4A3C90BD3A529D1D73E7861DB502135
+ * @ConQAT.Rating RED Hash: 5C626AB6B93425EE51F9331278684573
  */
-public class ExplorationTransformationService<T extends ITransformationModule<?>> extends
-		EObjectAwareServiceBase<T> implements IExplorationTransformationService {
+public class ExplorationTransformationService<T extends ITransformationModule<?>>
+		extends EObjectAwareServiceBase<T> implements IExplorationTransformationService {
 
 	/** Holds the instance of the transformation service. */
 	private volatile static ExplorationTransformationService<?> INSTANCE;
@@ -75,12 +75,14 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 	private Map<Class<? extends ITransformationModule<?>>, ITransformationModule<?>> moduleMap =
 			new HashMap<>();
 
-	/** Associates the types of output models with the corresponding {@link ITransformationModule}. */
+	/**
+	 * Associates the types of output models with the corresponding {@link ITransformationModule}.
+	 */
 	private Map<Class<?>, ITransformationModule<?>> modulesByOutput = new HashMap<>();
 
 	/** Associates the registered {@link ITransformationModule} with their required input types. */
-	private Multimap<ITransformationModule<?>, Class<?>> inputTypesOfModules = HashMultimap
-			.create();
+	private Multimap<ITransformationModule<?>, Class<?>> inputTypesOfModules =
+			HashMultimap.create();
 
 	/** The {@link ExplorationTransformationService} extension point ID. */
 	private static final String EXTENSION_POINT_NAME =
@@ -138,8 +140,8 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 				// accessible.
 				// TODO: is a better mechanism than the identification via the strategy needed?
 				if(!(handler instanceof ITransformationStrategy)) {
-					rmAccessibleHandlers.add(new Pair<Class<?>, T>(elementHandlerList.getKey(),
-							handler));
+					rmAccessibleHandlers
+							.add(new Pair<Class<?>, T>(elementHandlerList.getKey(), handler));
 				}
 			}
 		}
@@ -202,9 +204,8 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 			Class<U> transformedModelType, String transformedModelName) throws Exception {
 		Collection<Class<? extends EObject>> reqType = new ArrayList<>();
 		reqType.add(transformedModelType);
-		ClassToInstanceMap<U> retMap =
-				getTransformedModels(context, modelContext, solution, baseModels, reqType,
-						transformedModelName);
+		ClassToInstanceMap<U> retMap = getTransformedModels(context, modelContext, solution,
+				baseModels, reqType, transformedModelName);
 		return retMap.getInstance(transformedModelType);
 	}
 
@@ -216,11 +217,11 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 
 	/** {@inheritDoc} */
 	@Override
-	public <U extends EObject, S extends EObject> ClassToInstanceMap<U>
-			getTransformedModels(TransformationContext context, ITopLevelElement modelContext,
-					SingleExplorationSolutionMap solution, SubClassToInstanceMap<S> baseModels,
-					Collection<Class<? extends EObject>> transformedModelTypes,
-					String transformedModelName) throws Exception {
+	public <U extends EObject, S extends EObject> ClassToInstanceMap<U> getTransformedModels(
+			TransformationContext context, ITopLevelElement modelContext,
+			SingleExplorationSolutionMap solution, SubClassToInstanceMap<S> baseModels,
+			Collection<Class<? extends EObject>> transformedModelTypes, String transformedModelName)
+			throws Exception {
 		// First, collect all transformation modules which would generate the requested output.
 		Collection<ITransformationModule<?>> topLvlModules = new HashSet<>();
 		for(Class<? extends EObject> tModelType : transformedModelTypes) {
@@ -246,13 +247,12 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 					IExplorationEncoding.class, currentModule.getRequiredTypes())) {
 				Object solutionModel = solution.getSolutionModel(solutionType);
 				if(solutionModel != null) {
-					solutionEncodings
-							.putEncoding(solutionType, (IExplorationEncoding)solutionModel);
+					solutionEncodings.putEncoding(solutionType,
+							(IExplorationEncoding)solutionModel);
 				} else if(!currentModule.isOptional()) {
-					throw new Exception(
-							"The required solution encoding " +
-									solutionType.getSimpleName() +
-									" could not be found in the given set of solutions. Please check whether all required solution model have been requested from the DSE.");
+					throw new Exception("The required solution encoding " +
+							solutionType.getSimpleName() +
+							" could not be found in the given set of solutions. Please check whether all required solution model have been requested from the DSE.");
 				}
 			}
 
@@ -316,20 +316,19 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 			String transformedModelName) throws Exception {
 		Collection<Class<? extends EObject>> reqType = new ArrayList<>();
 		reqType.add(transformedModelType);
-		ClassToInstanceMap<U> retMap =
-				getTransformedModels(context, modelContext, phenotypes, baseModels, reqType,
-						transformedModelName);
+		ClassToInstanceMap<U> retMap = getTransformedModels(context, modelContext, phenotypes,
+				baseModels, reqType, transformedModelName);
 		return retMap.getInstance(transformedModelType);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public <U extends EObject, S extends EObject> ClassToInstanceMap<U>
-			getTransformedModels(TransformationContext context, ITopLevelElement modelContext,
-					ExplorationEncodingMap<IExplorationEncoding> phenotypes,
-					SubClassToInstanceMap<S> baseModels,
-					Collection<Class<? extends EObject>> transformedModelTypes,
-					String transformedModelName) throws Exception {
+	public <U extends EObject, S extends EObject> ClassToInstanceMap<U> getTransformedModels(
+			TransformationContext context, ITopLevelElement modelContext,
+			ExplorationEncodingMap<IExplorationEncoding> phenotypes,
+			SubClassToInstanceMap<S> baseModels,
+			Collection<Class<? extends EObject>> transformedModelTypes, String transformedModelName)
+			throws Exception {
 		// First, collect all transformation modules which would generate the requested output.
 		Collection<ITransformationModule<?>> topLvlModules = new HashSet<>();
 		for(Class<? extends EObject> tModelType : transformedModelTypes) {
@@ -356,10 +355,9 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 				if(phenotype != null) {
 					encodings.putEncoding(solutionType, phenotype);
 				} else if(!currentModule.isOptional()) {
-					throw new Exception(
-							"The required phenotype encoding " +
-									solutionType.getSimpleName() +
-									" could not be found in the given set of phenotypes. Please check whether all required phenotypes have been requested from the DSE.");
+					throw new Exception("The required phenotype encoding " +
+							solutionType.getSimpleName() +
+							" could not be found in the given set of phenotypes. Please check whether all required phenotypes have been requested from the DSE.");
 				}
 			}
 
@@ -410,8 +408,7 @@ public class ExplorationTransformationService<T extends ITransformationModule<?>
 		return "\n\nThis service manages the transformation of DSE-internal encodings to EMF models." +
 				"\nThe resulting EMF models can bei either derived models, i.e., models that are based on some input 'template model', which are" +
 				"\nreplicated and enriched with information generated by a DSE run, or 'new' models which are generated using information obtained" +
-				"\nfrom a DSE run exclusively." +
-				"\n\nThe service extension point is '" +
+				"\nfrom a DSE run exclusively." + "\n\nThe service extension point is '" +
 				EXTENSION_POINT_NAME + "'.";
 	}
 
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 e09f08e470d26c44f99063a65429a487cdf52384..df436ede45c3ea40656fe3985517c1bce1603970 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
@@ -87,7 +87,7 @@ import org.jgrapht.graph.DefaultEdge;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: CE2040DA1758604141EB1240721FA4BF
+ * @ConQAT.Rating RED Hash: 2B8BB140ACBC12EBD5466A08710D7107
  */
 public class AF3Utils {
 
@@ -278,9 +278,13 @@ public class AF3Utils {
 	 * Determines the {@link ConnectionType} of a connection by examining the class of the given
 	 * connector that is the target of the current connection.
 	 * 
+	 * @param sourceConnector
+	 *            "sending" connector.
 	 * @param targetConnector
 	 *            Target {@link IConnector} of the {@link IConnection} whose direction shall be
 	 *            determined.
+	 * @param systemModelAdapter
+	 *            Abstraction of the input models.
 	 * @return {@link ConnectionType} specifying the direction of the {@link IConnection}.
 	 * @throws InvalidPlatformModelException
 	 *             if an invalid combination of of platform ports/interfaces has been detected
@@ -292,17 +296,16 @@ public class AF3Utils {
 			throws InvalidPlatformModelException {
 		// By the method signature, we know the instance type is a IConnector class.
 		@SuppressWarnings("unchecked") ConnectionType connectionTypeSource =
-				systemModelAdapter.getConnectionType((Class<? extends IConnector>)sourceConnector
-						.eClass().getInstanceClass());
+				systemModelAdapter.getConnectionType(
+						(Class<? extends IConnector>)sourceConnector.eClass().getInstanceClass());
 		@SuppressWarnings("unchecked") ConnectionType connectionTypeTarget =
-				systemModelAdapter.getConnectionType((Class<? extends IConnector>)targetConnector
-						.eClass().getInstanceClass());
+				systemModelAdapter.getConnectionType(
+						(Class<? extends IConnector>)targetConnector.eClass().getInstanceClass());
 		// assert (connectionTypeSource != null && connectionTypeTarget != null) :
 		// "Could not identify the type of one of the connection targets.";
 		if((connectionTypeSource == INCOMING && connectionTypeTarget == INCOMING) ||
 				(connectionTypeSource == OUTGOING && connectionTypeTarget == OUTGOING)) {
-			throw new InvalidPlatformModelException(
-					(PlatformConnectorUnit)sourceConnector,
+			throw new InvalidPlatformModelException((PlatformConnectorUnit)sourceConnector,
 					"A platform port or interface (see above) for incoming or outgoing traffic is connected to an port or interface of the same type. This is not allowed.");
 		}
 
@@ -328,14 +331,16 @@ public class AF3Utils {
 	 * 
 	 * @param sourceConnector
 	 *            {@link IConnector} to be examined.
+	 * @param systemModelAdapter
+	 *            Abstraction of the input models.
 	 * @return The port type (default = bidirectional).
 	 */
 	public static ConnectionType getPortDirection(IPlatformPort sourceConnector,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter) {
 		// By the method signature, we know the instance type is a IConnector class.
 		@SuppressWarnings("unchecked") ConnectionType connectionTypeSource =
-				systemModelAdapter.getConnectionType((Class<? extends IConnector>)sourceConnector
-						.eClass().getInstanceClass());
+				systemModelAdapter.getConnectionType(
+						(Class<? extends IConnector>)sourceConnector.eClass().getInstanceClass());
 		return connectionTypeSource != null ? connectionTypeSource : BIDIRECTIONAL;
 	}
 
@@ -343,8 +348,8 @@ public class AF3Utils {
 	 * Predicate whether the subject {@link PlatformConnectorUnit} is a connector of the given
 	 * {@link IModelElementAdapter}.
 	 */
-	public static boolean
-			isConnectorOf(PlatformConnectorUnit pConn, IModelElementAdapter<?> element) {
+	public static boolean isConnectorOf(PlatformConnectorUnit pConn,
+			IModelElementAdapter<?> element) {
 		return pConn.getOwner() == element.getObject();
 	}
 
@@ -363,18 +368,16 @@ public class AF3Utils {
 	 * {@link PlatformConnectorUnit} for the device-internal communication of the given
 	 * {@link IModelElementAdapter}.
 	 */
-	public static boolean
-			isDeviceInternalPredecessor(PlatformConnectorUnit connCandidate,
-					IModelElementAdapter<?> element,
-					DirectedGraph<PlatformConnectorUnit, DefaultEdge> route) {
+	public static boolean isDeviceInternalPredecessor(PlatformConnectorUnit connCandidate,
+			IModelElementAdapter<?> element,
+			DirectedGraph<PlatformConnectorUnit, DefaultEdge> route) {
 		// The following rules apply for device internal communication:
 		// - Sender Port is on the same device OR
 		// - its reference port is one layer "below", e.g. Gateway -> Router AND
 		// - the sender connector must have been traversed (natural for path walking a multicast
 		// message.
-		if(route.containsVertex(connCandidate) &&
-				(isConnectorOf(connCandidate, element) || isContainedInResource(connCandidate,
-						element))) {
+		if(route.containsVertex(connCandidate) && (isConnectorOf(connCandidate, element) ||
+				isContainedInResource(connCandidate, element))) {
 			return true;
 		}
 		return false;
@@ -432,9 +435,12 @@ public class AF3Utils {
 	 * Checks whether any parent {@link IPlatformResource} of the given {@code element} is a
 	 * deployment target defined by the set of deployment targets ({@code deploymentTargets}).
 	 * If any parent element has been found that is a deployment target, {@code true} is returned.
-	 * The method considers parents in the following order: <li>Check the direct parent (container).
-	 * </li> <li>Check all referenced resources as defined in the {@link ResourceLink} annotation.</li>
-	 * <li>Go to the parent resource and run the same checks.</li> <li>Run the above checks for all
+	 * The method considers parents in the following order:
+	 * <li>Check the direct parent (container).
+	 * </li>
+	 * <li>Check all referenced resources as defined in the {@link ResourceLink} annotation.</li>
+	 * <li>Go to the parent resource and run the same checks.</li>
+	 * <li>Run the above checks for all
 	 * references Resources as given by the {@link ResourceLink} annotations.</>
 	 * 
 	 * @param element
@@ -482,8 +488,8 @@ public class AF3Utils {
 	public static <T extends IPlatformResource & IHierarchicElement> boolean
 			isAnyChildDeploymentTarget(IPlatformResource element, Collection<T> deploymentTargets,
 					Class<T> targetType) {
-		return getChildrenWithType(element, targetType).stream().anyMatch(
-				child -> deploymentTargets.contains(child));
+		return getChildrenWithType(element, targetType).stream()
+				.anyMatch(child -> deploymentTargets.contains(child));
 	}
 
 	/**
@@ -497,11 +503,13 @@ public class AF3Utils {
 	 *            thereby establish a "communication link" between both platforms.
 	 * @return Map representing the "inverse" 1:1 references of {@link ResourceLink}s.
 	 */
-	public static
-			Map<IModelElement, IModelElement>
-			getInverseIntraPlatformReferences(
-					PlatformArchitecture referencingPlatformArchitecture,
-					Pair<Class<? extends IModelElement>, Class<? extends IModelElement>> interPlatformConnectingElements) {
+	public static Map<IModelElement, IModelElement> getInverseIntraPlatformReferences(
+			PlatformArchitecture referencingPlatformArchitecture,
+			Pair<Class<? extends IModelElement>, Class<? extends IModelElement>> interPlatformConnectingElements) {
+		if(interPlatformConnectingElements == null) {
+			return Collections.emptyMap();
+		}
+
 		Map<IModelElement, IModelElement> invElementReferences =
 				new HashMap<IModelElement, IModelElement>();
 
@@ -529,11 +537,9 @@ public class AF3Utils {
 	 *            thereby establish a "communication link" between both platforms.
 	 * @return The inverse {@link ResourceLink} references, or an empty map if none were identified.
 	 */
-	public static
-			Map<IModelElement, IModelElement>
-			getInverseIntraPlatformReferences(
-					Deployment af3Deployment,
-					Pair<Class<? extends IModelElement>, Class<? extends IModelElement>> interPlatformConnectingElements) {
+	public static Map<IModelElement, IModelElement> getInverseIntraPlatformReferences(
+			Deployment af3Deployment,
+			Pair<Class<? extends IModelElement>, Class<? extends IModelElement>> interPlatformConnectingElements) {
 		IModelElement platformReference =
 				af3Deployment.getPlatformArchitectureReference().getReference();
 		PlatformArchitecture af3PlatformArchitecture = null;
@@ -579,12 +585,12 @@ public class AF3Utils {
 	 * @return Set of {@link ComponentMultiAllocationConstraint}s with the same references as the
 	 *         {@link ComponentAllocation}s.
 	 */
-	public static Collection<ComponentMultiAllocationConstraint> createConstraintsFromDeployment(
-			Deployment deployment) {
+	public static Collection<ComponentMultiAllocationConstraint>
+			createConstraintsFromDeployment(Deployment deployment) {
 		Collection<ComponentAllocation> allocatedComponents = deployment.getComponentAllocations();
 		Function<ComponentAllocation, ComponentMultiAllocationConstraint> mapper =
-				ca -> createComponentMultiAllocationConstraint(ca.getComponent(), new BasicEList<>(
-						Arrays.asList(ca.getExecutionUnit())));
+				ca -> createComponentMultiAllocationConstraint(ca.getComponent(),
+						new BasicEList<>(Arrays.asList(ca.getExecutionUnit())));
 		return allocatedComponents.stream().map(mapper)
 				.map(ComponentMultiAllocationConstraint.class::cast).collect(Collectors.toList());
 	}
@@ -653,6 +659,8 @@ public class AF3Utils {
 	 * 
 	 * @param startElement
 	 *            The element whose parents shall be evaluated w.r.t. the deployable property
+	 * @param systemModelAdapter
+	 *            Abstraction of the input models.
 	 * @return True if any parent {@link Component} is chosen to be deployed, false otherwise.
 	 * @throws InvalidTimingModelException
 	 *             if the deployable element cannot be identified.
@@ -690,9 +698,8 @@ public class AF3Utils {
 		EList<Component> parentElements = getParentsWithType(startElement, Component.class);
 
 		for(Component parentComponent : parentElements) {
-			AbstractTaskMappingEntry entry =
-					(AbstractTaskMappingEntry)encEntryModelElemAssoc.inverse().get(parentComponent,
-							AbstractTaskMappingEntry.class);
+			AbstractTaskMappingEntry entry = (AbstractTaskMappingEntry)encEntryModelElemAssoc
+					.inverse().get(parentComponent, AbstractTaskMappingEntry.class);
 			if(entry != null) {
 				return true;
 			}
@@ -708,6 +715,8 @@ public class AF3Utils {
 	 * @param deployComponent
 	 *            The {@link Component} to be checked whether it shall be deployed onto
 	 *            {@link ExecutionUnit}s
+	 * @param systemModelAdapter
+	 *            Abstraction of the input models.
 	 * @return boolean, if the given {@link Component} shall be considered deployable.
 	 * @throws Exception
 	 *             if the timing specification of any traversed element is inconsistent.
@@ -725,7 +734,8 @@ public class AF3Utils {
 			}
 		}
 		if(systemModelAdapter.isDeployableComponent(deployComponent) ||
-				(!isAnyParentComponentDeployable(deployComponent, systemModelAdapter) && isAtomicComponent(deployComponent))) {
+				(!isAnyParentComponentDeployable(deployComponent, systemModelAdapter) &&
+						isAtomicComponent(deployComponent))) {
 			return true;
 		}
 		return false;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java
index da1f8c1ecad48ee1e26615458c0bde7ab7e563c9..a8659338af3cf2fc01f19cb702901f29784ba17d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java
@@ -34,6 +34,8 @@ import org.fortiss.af3.exploration.dsl.model.patterns.LocationProperty;
 import org.fortiss.af3.exploration.dsl.model.patterns.PatternsFactory;
 import org.fortiss.af3.exploration.model.ExplorationFactory;
 import org.fortiss.af3.exploration.model.ExplorationSpecification;
+import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolutionMap;
+import org.fortiss.af3.exploration.model.solutions.SolutionsFactory;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
 import org.fortiss.af3.exploration.moea.model.ExplorationManager;
 import org.fortiss.af3.exploration.moea.model.MoeaFactory;
@@ -49,8 +51,6 @@ import org.fortiss.af3.exploration.moea.model.predefined.FailureType;
 import org.fortiss.af3.exploration.moea.model.predefined.PredefinedFactory;
 import org.fortiss.af3.exploration.moea.model.predefined.ReliabilityAnalysis;
 import org.fortiss.af3.exploration.moea.model.predefined.SafetyIntegrityLevelConstraint;
-import org.fortiss.af3.exploration.moea.model.solutions.SingleExplorationSolutionMap;
-import org.fortiss.af3.exploration.moea.model.solutions.SolutionsFactory;
 import org.fortiss.af3.platform.model.ExecutionUnit;
 import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
 import org.fortiss.tooling.kernel.service.IPersistencyService;
@@ -61,7 +61,7 @@ import org.fortiss.tooling.kernel.service.IPersistencyService;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 7C8C074110F538256C49E0C974BE9598
+ * @ConQAT.Rating RED Hash: 153A20E0213A49DD2FE8FE05D17A2809
  */
 public class DesignSpaceExplorationModelElementFactory {
 
@@ -81,35 +81,50 @@ public class DesignSpaceExplorationModelElementFactory {
 	}
 
 	/** Creates an instance of a {@link DseSpecification} with default parameters. */
-	public static DseSpecification createDefaultDseSpecification(ITopLevelElement modelContext) {
-		return createDseSpecification("Default DSE model", ExecutionModel.TT_FAIL_SILENCE,
-				createDefaultEAOptimizer(), modelContext);
-	}
-
-	/** Creates an instance of a {@link DseSpecification} with default parameters. */
-	public static DseSpecification addDefaultDesignSpaceExploration(ExplorationManager explManager) {
+	public static DseSpecification
+			addDefaultDesignSpaceExploration(ExplorationManager explManager) {
 		ITopLevelElement modelContext =
 				IPersistencyService.getInstance().getTopLevelElementFor(explManager);
-		DseSpecification dse =
-				createDseSpecification("Default DSE model", ExecutionModel.TT_FAIL_SILENCE,
-						createDefaultEAOptimizer(), modelContext);
+		DseSpecification dse = createDefaultDesignSpaceExploration();
 		prepareUniqueID(dse, explManager);
 		modelContext.runAsCommand(() -> explManager.getDseSpecifications().add(dse));
 		return dse;
 	}
 
+	/** Creates a DseSpecification referencing the given {@link ExplorationSpecification}. */
+	public static DseSpecification
+			createDefaultDesignSpaceExploration(ExplorationSpecification expSpec) {
+		ITopLevelElement modelContext =
+				IPersistencyService.getInstance().getTopLevelElementFor(expSpec);
+		return createDefaultDesignSpaceExploration(expSpec, modelContext);
+	}
+
+	/**
+	 * Creates a DseSpecification and adds the {@link ExplorationSpecification} to it using the
+	 * given {@code modelContext}.
+	 */
+	public static DseSpecification createDefaultDesignSpaceExploration(
+			ExplorationSpecification expSpec, ITopLevelElement modelContext) {
+		DseSpecification dseSpec = createDseSpecification("Default DSE model",
+				ExecutionModel.TT_FAIL_SILENCE, createDefaultEAOptimizer());
+		modelContext.runAsCommand(() -> dseSpec.setTargetSpecification(expSpec));
+		return dseSpec;
+	}
+
+	/** Creates an instance of a {@link DseSpecification} with default parameters. */
+	public static DseSpecification createDefaultDesignSpaceExploration() {
+		return createDseSpecification("Default DSE model", ExecutionModel.TT_FAIL_SILENCE,
+				createDefaultEAOptimizer());
+	}
+
 	/** Creates an instance of a {@link DseSpecification} with the given parameters. */
 	public static DseSpecification createDseSpecification(String name, ExecutionModel execModel,
-			EAOptimizer eaOptimizer, ITopLevelElement modelContext) {
+			EAOptimizer eaOptimizer) {
 		DseSpecification dse = createDseSpecification(name);
-		Runnable defaultDSE = () -> {
-			dse.setParameters(createSystemParameters(execModel));
-			dse.setOptimizer(eaOptimizer);
-			// A goal specification does not require any default values, so created here.
-				dse.setTargetSpecification(ExplorationFactory.eINSTANCE
-						.createExplorationSpecification());
-			};
-		modelContext.runAsCommand(defaultDSE);
+		dse.setParameters(createSystemParameters(execModel));
+		dse.setOptimizer(eaOptimizer);
+		// A goal specification does not require any default values, so created here.
+		dse.setTargetSpecification(ExplorationFactory.eINSTANCE.createExplorationSpecification());
 		return dse;
 	}
 
@@ -228,8 +243,8 @@ public class DesignSpaceExplorationModelElementFactory {
 	/**
 	 * Creates a fixed deployment constraint within the goal specification of the current DSE model.
 	 */
-	public static ComponentMultiAllocationConstraint addMultiComponentAllocationConstraint(
-			ExplorationSpecification targetSpec) {
+	public static ComponentMultiAllocationConstraint
+			addMultiComponentAllocationConstraint(ExplorationSpecification targetSpec) {
 		ComponentMultiAllocationConstraint fixedDeploymentConstraint =
 				createComponentMultiAllocationConstraint();
 		prepareUniqueID(fixedDeploymentConstraint, targetSpec);
@@ -260,15 +275,15 @@ public class DesignSpaceExplorationModelElementFactory {
 	 * Creates a {@link ComponentMultiDislocationConstraint} to the given
 	 * {@link ExplorationSpecification}.
 	 */
-	public static ComponentMultiDislocationConstraint addComponentMultiDislocationConstraint(
-			ExplorationSpecification targetSpec) {
+	public static ComponentMultiDislocationConstraint
+			addComponentMultiDislocationConstraint(ExplorationSpecification targetSpec) {
 		ComponentMultiDislocationConstraint multiComponentDislocationConstraint =
 				createComponentMultiDislocationConstraint();
 		prepareUniqueID(multiComponentDislocationConstraint, targetSpec);
 		ITopLevelElement modelContext =
 				IPersistencyService.getInstance().getTopLevelElementFor(targetSpec);
-		modelContext.runAsCommand(() -> targetSpec.getTargets().add(
-				multiComponentDislocationConstraint));
+		modelContext.runAsCommand(
+				() -> targetSpec.getTargets().add(multiComponentDislocationConstraint));
 		return multiComponentDislocationConstraint;
 	}
 
@@ -284,8 +299,8 @@ public class DesignSpaceExplorationModelElementFactory {
 	 * Creates a safety integrity level constraint within the goal specification of the current DSE
 	 * model.
 	 */
-	public static SafetyIntegrityLevelConstraint addSafetyIntegrityLevelConstraint(
-			ExplorationSpecification targetSpec) {
+	public static SafetyIntegrityLevelConstraint
+			addSafetyIntegrityLevelConstraint(ExplorationSpecification targetSpec) {
 		SafetyIntegrityLevelConstraint safetyIntegrityLevelConstraint =
 				PredefinedFactory.eINSTANCE.createSafetyIntegrityLevelConstraint();
 		safetyIntegrityLevelConstraint.setName("Safety Integrity Level Constraint");
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 0e8a81b1663aee1e61bcf21e9461a60c7d7fef0a..927e5936f8d8641c3cace221ef4c627f46e32607 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
@@ -39,7 +39,7 @@ import org.opt4j.core.genotype.CompositeGenotype;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: EEA33396641BBAD58A964089077DA6E7
+ * @ConQAT.Rating RED Hash: B4ADC69BAF7049289957228D33C2D7A9
  */
 public class ExplorationAlgDebugUtils {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgUtils.java
index dc491941ab87e51025c21ae6a8cfaec53ba96724..8c975d4f8f41a9fff95321e2bf8b17eb899e0180 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgUtils.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgUtils.java
@@ -23,6 +23,8 @@ import static org.fortiss.af3.platform.utils.PlatformArchitectureUtils.getRefere
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.getChildrenWithType;
 import static org.fortiss.tooling.kernel.utils.EcoreUtils.getParentsWithType;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -71,7 +73,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 39BD65A7E68F663DC99B74FF4827C558
+ * @ConQAT.Rating RED Hash: 132EAB0768E368305FD962691C443B76
  */
 public class ExplorationAlgUtils {
 
@@ -87,15 +89,20 @@ public class ExplorationAlgUtils {
 	 * @return Collection of the raw types of the input collection, or {@code null} if the
 	 *         Collection cannot be created.
 	 */
+	// FIXME: Remove this method, it is unsafe and cannot be used with instances of EList which have
+	// parameterized constructors (Factory pattern).
 	@SuppressWarnings("unchecked")
-	public static <C extends Collection<T>, T, CR extends Collection<? super T>> CR castToRawColl(
-			C origCollection) {
+	public static <C extends Collection<T>, T, CR extends Collection<? super T>> CR
+			castToRawColl(C origCollection) {
 		CR castedCollection = (CR)Collections.emptySet();
 		if(origCollection != null && !origCollection.isEmpty()) {
 			try {
-				castedCollection = (CR)origCollection.getClass().newInstance();
+				Constructor<CR> ctor =
+						(Constructor<CR>)origCollection.getClass().getDeclaredConstructor();
+				castedCollection = ctor.newInstance();
 				((Collection<T>)castedCollection).addAll(origCollection);
-			} catch(InstantiationException | IllegalAccessException e) {
+			} catch(InstantiationException | IllegalAccessException | IllegalArgumentException |
+					InvocationTargetException | NoSuchMethodException | SecurityException e) {
 				// Never here.
 				e.printStackTrace();
 			}
@@ -108,18 +115,24 @@ public class ExplorationAlgUtils {
 	 * 
 	 * @param origCollection
 	 *            Collection to be casted.
+	 * @param castedCollType
+	 *            Collection type that shall be used to collect the casted values.
 	 * @return Collection of the raw types of the input collection, or {@code null} if the
 	 *         Collection cannot be created.
 	 */
+	// FIXME: Remove this method, it is unsafe and cannot be used with instances of EList which have
+	// parameterized constructors (Factory pattern).
 	@SuppressWarnings("unchecked")
-	public static <C extends Collection<T>, T, CR extends Collection<? super T>> CR castToRawColl(
-			C origCollection, Class<CR> castedCollType) {
+	public static <C extends Collection<T>, T, CR extends Collection<? super T>> CR
+			castToRawColl(C origCollection, Class<CR> castedCollType) {
 		CR castedCollection = (CR)Collections.emptySet();
 		if(origCollection != null && !origCollection.isEmpty()) {
 			try {
-				castedCollection = castedCollType.newInstance();
+				Constructor<CR> ctor = castedCollType.getDeclaredConstructor();
+				castedCollection = ctor.newInstance();
 				((Collection<T>)castedCollection).addAll(origCollection);
-			} catch(InstantiationException | IllegalAccessException e) {
+			} catch(InstantiationException | IllegalAccessException | NoSuchMethodException |
+					SecurityException | IllegalArgumentException | InvocationTargetException e) {
 				// Never here.
 				e.printStackTrace();
 			}
@@ -189,10 +202,10 @@ public class ExplorationAlgUtils {
 		for(OutputPort currentOutputPort : allOutputPortsInArch) {
 			// Filter out ports that represent the transition through a hierarchic hull.
 			if(currentOutputPort.getIncoming().isEmpty() /*
-														 * &&
-														 * !isAnyParentComponentDeployable(
-														 * currentOutputPort.getComponent())
-														 */) {
+															 * &&
+															 * !isAnyParentComponentDeployable(
+															 * currentOutputPort.getComponent())
+															 */) {
 				// FIXME: HERE
 				sourcePortList.add(currentOutputPort);
 			}
@@ -208,8 +221,8 @@ public class ExplorationAlgUtils {
 	 *            Collection of all {@link OutputPort}s of 'deployable' {@link Component}s.
 	 * @return List of 'deployable' {@link OutputPort}s or an empty list if none can be identified.
 	 */
-	public static EList<OutputPort> getDeployableOutputPorts(
-			Collection<Component> deployableComponents) {
+	public static EList<OutputPort>
+			getDeployableOutputPorts(Collection<Component> deployableComponents) {
 		EList<OutputPort> sourcePortList = new BasicEList<OutputPort>();
 
 		for(Component component : deployableComponents) {
@@ -332,14 +345,17 @@ public class ExplorationAlgUtils {
 	 * 
 	 * @param element
 	 *            The element to be examined.
+	 * @param targetResources
+	 *            All resources present in the target platform.
 	 * @return Boolean indicating the relevance of of the given {@link IHierarchicElement} for the
 	 *         DSE.
 	 */
 	public static boolean isPlatformTargetResource(IPlatformResource element,
 			Collection<IPlatformResource> targetResources) {
 		if(!isAnyParentDeploymentTarget(element, targetResources) &&
-				(element instanceof IHierarchicElementContainer && ((IHierarchicElementContainer)element)
-						.getContainedElements().isEmpty()) || targetResources.contains(element)) {
+				(element instanceof IHierarchicElementContainer &&
+						((IHierarchicElementContainer)element).getContainedElements().isEmpty()) ||
+				targetResources.contains(element)) {
 			return true;
 		}
 		return false;
@@ -503,8 +519,17 @@ public class ExplorationAlgUtils {
 	public static boolean haveSameParentHardwareElement(IHierarchicElement elementA,
 			IHierarchicElement elementB,
 			Collection<IVirtualizationPlatformArchitectureElement> virtualizationProviders) {
-		elementA = getReferencedElementsWithType(elementA, IHierarchicElement.class).get(0);
-		elementB = getReferencedElementsWithType(elementB, IHierarchicElement.class).get(0);
+		List<IHierarchicElement> refA =
+				getReferencedElementsWithType(elementA, IHierarchicElement.class);
+		List<IHierarchicElement> refB =
+				getReferencedElementsWithType(elementB, IHierarchicElement.class);
+		if(refA.size() < 1 || refB.size() < 1) {
+			return false;
+		}
+		// get(0): Checked above.
+		elementA = refA.get(0);
+		// get(0): Checked above.
+		elementB = refB.get(0);
 		return (haveSameParentElement(elementA, elementB)) ? true : false;
 	}
 
@@ -584,6 +609,8 @@ public class ExplorationAlgUtils {
 	 *            {@link EObject} to start the search from.
 	 * @param typeList
 	 *            filter types for the child elements.
+	 * @param isReflexive
+	 *            if the parent shall be checked as well.
 	 * @return Collection of child {@link EObject}s conforming to either of the given types.
 	 */
 	@SuppressWarnings("unchecked")
@@ -679,8 +706,8 @@ public class ExplorationAlgUtils {
 	 *            Interface defining or redefining the generic type of interest.
 	 * @return Class type substituting the generic parameter of the given interface.
 	 */
-	public static Class<?>
-			getSubstitutionTypeOfGenericIface(Object object, Class<?> interfaceClass) {
+	public static Class<?> getSubstitutionTypeOfGenericIface(Object object,
+			Class<?> interfaceClass) {
 		// First, identify the "hierarchy path" from the given object to the target interface.
 		LinkedList<Class<?>> inheritancePath = getClassPathToIface(object, interfaceClass);
 
@@ -698,7 +725,8 @@ public class ExplorationAlgUtils {
 			typesToTraverse.addAll(Arrays.asList(genTypes));
 
 			// Inner loop: Inspect a single generic substitution.
-			while(!typesToTraverse.isEmpty() && !targetIfaceFound.test((Class<?>)currParamRawType)) {
+			while(!typesToTraverse.isEmpty() &&
+					!targetIfaceFound.test((Class<?>)currParamRawType)) {
 				Type currTraversedType = typesToTraverse.poll();
 				paramTypeStack.add(currTraversedType);
 
@@ -708,8 +736,7 @@ public class ExplorationAlgUtils {
 					// Only follow the "path" of this generic parameter if it matches the previously
 					// identified path to the given interface.
 					if(inheritancePath.contains(currParamRawType)) {
-						Collection<Type> matchedTypes =
-								processParentParamerType(typesToTraverse, currParamRawType);
+						Collection<Type> matchedTypes = processParentParamerType(currParamRawType);
 						typesToTraverse.addAll(0, matchedTypes);
 					}
 				} else {
@@ -726,6 +753,7 @@ public class ExplorationAlgUtils {
 
 		// Return the class of the substituting parameter type.
 		if(targetIfaceFound.test((Class<?>)currParamRawType)) {
+			// get(0): The above if clause implicitly guarantees the existence of one element.
 			Type paramType = paramTypeStack.get(0);
 			if(paramType instanceof ParameterizedType) {
 				Type actParamType = ((ParameterizedType)paramType).getActualTypeArguments()[0];
@@ -740,14 +768,8 @@ public class ExplorationAlgUtils {
 		return null;
 	}
 
-	/**
-	 * Identifies the type parameter from the super classes/interface which matches the
-	 * 
-	 * @param typesToTraverse
-	 * @param rawType
-	 */
-	private static Collection<Type> processParentParamerType(LinkedList<Type> typesToTraverse,
-			Type rawType) {
+	/** Collects and returns all parent interface that are parameterized by the given type. */
+	private static Collection<Type> processParentParamerType(Type rawType) {
 		Collection<Type> matchingTypes = new ArrayList<>();
 		Type[] typeParams = ((Class<?>)rawType).getGenericInterfaces();
 		Collection<Type> xT = Arrays.asList(((Class<?>)rawType).getTypeParameters());
@@ -776,7 +798,8 @@ public class ExplorationAlgUtils {
 	 *            Interface forming the top of the stack and defining the end of the path.
 	 * @return Path between the given object's class and the given interface as a linked list.
 	 */
-	private static LinkedList<Class<?>> getClassPathToIface(Object object, Class<?> interfaceClass) {
+	private static LinkedList<Class<?>> getClassPathToIface(Object object,
+			Class<?> interfaceClass) {
 		LinkedList<Class<?>> traversalList = new LinkedList<>();
 		Stack<Class<?>> hierarchyBrachStack = new Stack<>();
 		LinkedList<Class<?>> ifacesTraversalList = new LinkedList<>();
@@ -899,6 +922,6 @@ public class ExplorationAlgUtils {
 	 */
 	@SuppressWarnings("unchecked")
 	public static <T extends Exception> RuntimeException rethrow(Exception exception) throws T {
-		throw (T)exception; // rely on vacuous cast
+		throw(T)exception; // rely on vacuous cast
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationEcoreUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationEcoreUtils.java
index 0f0ebce9f94eb54a06d55080a2ddfbc78e1daaab..753e2ec85a2bd3cf04370fc7f38d9b05603f1335 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationEcoreUtils.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationEcoreUtils.java
@@ -28,7 +28,7 @@ import org.fortiss.tooling.kernel.utils.EcoreUtils;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: DA40D522ACC49188F475BC7B38CEE7E8
+ * @ConQAT.Rating RED Hash: 4A4BB45D2EEB3A65FFFF569F32D4EAD0
  */
 public class ExplorationEcoreUtils {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/GraphUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/GraphUtils.java
index 5d2816992bbc0e9c761c9027960091d581668292..10881b0ccc401051c12f6624743b62334baf1d03 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/GraphUtils.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/GraphUtils.java
@@ -36,7 +36,7 @@ import org.jgrapht.traverse.BreadthFirstIterator;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 6172C127FEE81026E5B4F28CA44C856B
+ * @ConQAT.Rating RED Hash: 04A523AAB4B12B2C035CDBC1FF95E7C1
  */
 public class GraphUtils {
 
@@ -125,6 +125,7 @@ public class GraphUtils {
 		ArrayList<V> workingQueue = new ArrayList<V>();
 		workingQueue.addAll(Graphs.predecessorListOf(graph, vertex));
 		while(!workingQueue.isEmpty()) {
+			// get(0): Existence ensured by while clause.
 			V currentPredescessor = workingQueue.get(0);
 			workingQueue.remove(0);
 
@@ -151,6 +152,7 @@ public class GraphUtils {
 		ArrayList<V> workingQueue = new ArrayList<V>();
 		workingQueue.addAll(Graphs.successorListOf(graph, vertex));
 		while(!workingQueue.isEmpty()) {
+			// get(0): Existence ensured by while clause.
 			V currentSuccessor = workingQueue.get(0);
 			workingQueue.remove(0);
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/TransformationUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/TransformationUtils.java
index 4a617c7642ab90efa46e10f8ac76ecbe1bd75a70..4f8ced7c7bcc7208fb476f043f00e1b5c9202051 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/TransformationUtils.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/TransformationUtils.java
@@ -62,7 +62,7 @@ import com.google.common.collect.Multimap;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 656E9EF0A48A86A0E2D0C14239F0F4A3
+ * @ConQAT.Rating RED Hash: 7DFBBB2143152FD29C7CC5ABF67AB6AE
  */
 public class TransformationUtils {
 
@@ -116,8 +116,8 @@ public class TransformationUtils {
 		InputPort replicatedInputPort =
 				ComponentModelElementFactory.createInputPort(portName, referencePort.getComment());
 		replicatedInputPort.getSpecifications().clear();
-		replicatedInputPort.getSpecifications().addAll(
-				EcoreUtil.copyAll(referencePort.getSpecifications()));
+		replicatedInputPort.getSpecifications()
+				.addAll(EcoreUtil.copyAll(referencePort.getSpecifications()));
 
 		replicationOwner.getConnectors().add(replicatedInputPort);
 
@@ -144,8 +144,8 @@ public class TransformationUtils {
 		OutputPort replicatedOutputPort =
 				ComponentModelElementFactory.createOutputPort(portName, referencePort.getComment());
 		replicatedOutputPort.getSpecifications().clear();
-		replicatedOutputPort.getSpecifications().addAll(
-				EcoreUtil.copyAll(referencePort.getSpecifications()));
+		replicatedOutputPort.getSpecifications()
+				.addAll(EcoreUtil.copyAll(referencePort.getSpecifications()));
 
 		replicationOwner.getConnectors().add(replicatedOutputPort);
 
@@ -157,9 +157,12 @@ public class TransformationUtils {
 	 * original, i.e. source, {@link Component}.
 	 */
 	public static void setGenComponentPos(Component sourceComponent, Component generatedComponent) {
+		// get(0): Each component has a layout data if they were constructed as intended.
 		if(generatedComponent != null &&
 				generatedComponent.getLayoutData().get(0) instanceof Point &&
 				sourceComponent.getLayoutData().get(0) instanceof Point) {
+			// get(0): Each layout data of a component has a point if they were constructed as
+			// intended.
 			Point p = (Point)sourceComponent.getLayoutData().get(0);
 			p = calulateOffset(p, sourceComponent, 5, false, false);
 			generatedComponent.getLayoutData().set(0, p);
@@ -258,9 +261,9 @@ public class TransformationUtils {
 	 *             If one {@link IDeployableComponentAdapter} of the mapping does not wrap an AF3
 	 *             {@link Component} but any other object.
 	 */
-	public static Collection<IDeployableComponentAdapter<Component>> retrieveDeployableComponents(
-			ITransformationModule<?> tModule, IMappingEncoding mapping)
-			throws TransformationModuleException {
+	public static Collection<IDeployableComponentAdapter<Component>>
+			retrieveDeployableComponents(ITransformationModule<?> tModule, IMappingEncoding mapping)
+					throws TransformationModuleException {
 		Collection<IDeployableComponentAdapter<Component>> deplCompAdps = new ArrayList<>();
 		for(IDeployableComponentAdapter<?> comp : mapping.getDeployedComponents()) {
 			if(comp.getObject() instanceof Component) {
@@ -302,8 +305,7 @@ public class TransformationUtils {
 						"No generated Component that is association with the Component " +
 								correspondingAF3Component.getName() + " has been found.");
 			} else if(genComponentColl.size() > 1) {
-				throw new TransformationModuleException(
-						tModule,
+				throw new TransformationModuleException(tModule,
 						"More than one generated Component that are associated with the original Component " +
 								correspondingAF3Component.getName() +
 								" have been found. This is not supported in this stage of the transformation.");
@@ -366,9 +368,8 @@ public class TransformationUtils {
 			assert (origToGenAssocMap.get(originalObj) != null);
 			EObject generatedObj = origToGenAssocMap.get(originalObj).stream().findAny().get();
 			Collection<EReference> origReferences = originalObj.eClass().getEReferences();
-			origReferences =
-					origReferences.stream().filter(r -> !r.isContainment())
-							.collect(Collectors.toList());
+			origReferences = origReferences.stream().filter(r -> !r.isContainment())
+					.collect(Collectors.toList());
 			for(EReference curReference : origReferences) {
 				EObject referencedObj = (EObject)originalObj.eGet(curReference);
 				assert (origToGenAssocMap.get(referencedObj) != null);
@@ -385,9 +386,8 @@ public class TransformationUtils {
 				EObject originalObj = genToOrigAssocMap.get(generatedObj);
 				if(originalObj != null) {
 					Collection<EReference> origReferences = originalObj.eClass().getEReferences();
-					origReferences =
-							origReferences.stream().filter(r -> !r.isContainment())
-									.collect(Collectors.toList());
+					origReferences = origReferences.stream().filter(r -> !r.isContainment())
+							.collect(Collectors.toList());
 					for(EReference curReference : origReferences) {
 						EObject referencedObj = (EObject)originalObj.eGet(curReference);
 						if(referencedObj == originalObj) {
@@ -417,9 +417,9 @@ public class TransformationUtils {
 			return;
 		}
 
-		EMFModelConcurrencyHandler.getInstance().resetReference(
-				deployment.getComponentArchitectureReference());
-		EMFModelConcurrencyHandler.getInstance().resetReference(
-				deployment.getPlatformArchitectureReference());
+		EMFModelConcurrencyHandler.getInstance()
+				.resetReference(deployment.getComponentArchitectureReference());
+		EMFModelConcurrencyHandler.getInstance()
+				.resetReference(deployment.getPlatformArchitectureReference());
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java
index f070e68bd5f8d671b4d8ae587fddf2cd6263ab06..773207d2d6374d0ee9d4b1e2ee1b481e30c4144e 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java
@@ -28,7 +28,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 0E2EE4AA6648B6959AED97C78CB6F03A
+ * @ConQAT.Rating RED Hash: 69F3C2837A82885469BD94FC694E42BE
  */
 public class ElementPropertyStaticImpl {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/migration/ExpTargetMigrator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/migration/ExpTargetMigrator.java
index d07dbbeb837c0bb9807458445ea1e666e48d13ba..b6d815e5aff586db4d9be8e2981d9acf7c81b570 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/migration/ExpTargetMigrator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/migration/ExpTargetMigrator.java
@@ -73,7 +73,7 @@ import org.fortiss.tooling.kernel.model.IProjectRootElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 071246CE9D60462B23001F2ACDEA0220
+ * @ConQAT.Rating RED Hash: 76556D04D68B79E5DCFDE86E2F2B100B
  */
 @SuppressWarnings("deprecation")
 public class ExpTargetMigrator implements IMigrationProvider {
@@ -120,23 +120,23 @@ public class ExpTargetMigrator implements IMigrationProvider {
 				// NOTE: Period constraints are not migrated, no information is contained in them
 				// that is worth preserving, they are deduced from a timing model.
 				if(currTarget instanceof org.fortiss.af3.exploration.model.EnergyMinObjective) {
-					newTarget =
-							migrateEnergyMin((org.fortiss.af3.exploration.model.EnergyMinObjective)currTarget);
+					newTarget = migrateEnergyMin(
+							(org.fortiss.af3.exploration.model.EnergyMinObjective)currTarget);
 				} else if(currTarget instanceof org.fortiss.af3.exploration.model.FailureMinObjective) {
-					newTarget =
-							migrateFailureMin((org.fortiss.af3.exploration.model.FailureMinObjective)currTarget);
+					newTarget = migrateFailureMin(
+							(org.fortiss.af3.exploration.model.FailureMinObjective)currTarget);
 				} else if(currTarget instanceof org.fortiss.af3.exploration.model.FixedDeploymentConstraint) {
-					newTarget =
-							migrateFixedDeploymentConstraint((org.fortiss.af3.exploration.model.FixedDeploymentConstraint)currTarget);
+					newTarget = migrateFixedDeploymentConstraint(
+							(org.fortiss.af3.exploration.model.FixedDeploymentConstraint)currTarget);
 				} else if(currTarget instanceof org.fortiss.af3.exploration.model.ExcludeDeploymentConstraint) {
-					newTarget =
-							migrateExcludeDeploymentConstraint((org.fortiss.af3.exploration.model.ExcludeDeploymentConstraint)currTarget);
+					newTarget = migrateExcludeDeploymentConstraint(
+							(org.fortiss.af3.exploration.model.ExcludeDeploymentConstraint)currTarget);
 				} else if(currTarget instanceof org.fortiss.af3.exploration.model.time.DeadlineConstraint) {
-					newTarget =
-							migrateDeadlineConstraint((org.fortiss.af3.exploration.model.DeadlineConstraint)currTarget);
+					newTarget = migrateDeadlineConstraint(
+							(org.fortiss.af3.exploration.model.DeadlineConstraint)currTarget);
 				} else if(currTarget instanceof org.fortiss.af3.exploration.model.SafetyIntegrityLevelConstraint) {
-					newTarget =
-							migrateSILConstraint((org.fortiss.af3.exploration.model.SafetyIntegrityLevelConstraint)currTarget);
+					newTarget = migrateSILConstraint(
+							(org.fortiss.af3.exploration.model.SafetyIntegrityLevelConstraint)currTarget);
 				}
 
 				if(newTarget != null) {
@@ -167,7 +167,6 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	 * Migrates an {@link org.fortiss.af3.exploration.model.ExplorationManager} and sets the given
 	 * set of already migrated {@link DseSpecification}s.
 	 */
-	@SuppressWarnings("javadoc")
 	private ExplorationManager migrateExplorationManager(
 			org.fortiss.af3.exploration.model.ExplorationManager oldManager,
 			EList<DseSpecification> newDseSpecifications) {
@@ -181,7 +180,6 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	 * Migrates a {@link DesignSpaceExploration} element to a {@link DseSpecification} (new naming
 	 * and location).
 	 */
-	@SuppressWarnings("javadoc")
 	private DseSpecification migrateDesignSpaceExploration(DesignSpaceExploration oldParameters) {
 		DseSpecification newDseSpec = MoeaFactory.eINSTANCE.createDseSpecification();
 		newDseSpec.setName(oldParameters.getName());
@@ -210,8 +208,8 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	}
 
 	/** Migrates an {@link EAOptimizer} due to its new location. */
-	private EAOptimizer migrateEAOptimizer(
-			org.fortiss.af3.exploration.model.EAOptimizer oldEAOptimizer) {
+	private EAOptimizer
+			migrateEAOptimizer(org.fortiss.af3.exploration.model.EAOptimizer oldEAOptimizer) {
 		EAOptimizer newEAOptimizer = ParametersFactory.eINSTANCE.createEAOptimizer();
 		newEAOptimizer.setAlpha(oldEAOptimizer.getAlpha());
 		newEAOptimizer.setIterations(oldEAOptimizer.getIterations());
@@ -224,9 +222,8 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	 * Migrates a {@link org.fortiss.af3.exploration.model.DSEParameters} element to a
 	 * {@link SystemParameters} (new naming and location).
 	 */
-	@SuppressWarnings("javadoc")
-	private SystemParameters migrateDseParameters(
-			org.fortiss.af3.exploration.model.DSEParameters oldParameters) {
+	private SystemParameters
+			migrateDseParameters(org.fortiss.af3.exploration.model.DSEParameters oldParameters) {
 		SystemParameters newParameters = ParametersFactory.eINSTANCE.createSystemParameters();
 		String oldParameterLiteral = oldParameters.getExecutionModel().getLiteral();
 		newParameters.setExecutionModel(ExecutionModel.get(oldParameterLiteral));
@@ -234,8 +231,8 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	}
 
 	/** Migrates the {@link EnergyMinObjective} to its new ecore representation. */
-	private EnergyMinObjective migrateEnergyMin(
-			org.fortiss.af3.exploration.model.EnergyMinObjective oldObjective) {
+	private EnergyMinObjective
+			migrateEnergyMin(org.fortiss.af3.exploration.model.EnergyMinObjective oldObjective) {
 		EnergyMinObjective newObjective = createEnergyMinObjective();
 		migrateINamedCommentedElement(oldObjective, newObjective);
 		newObjective.setPriority(0);
@@ -243,8 +240,8 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	}
 
 	/** Migrates the {@link FailureMinObjective} to its new ecore representation. */
-	private FailureMinObjective migrateFailureMin(
-			org.fortiss.af3.exploration.model.FailureMinObjective oldObjective) {
+	private FailureMinObjective
+			migrateFailureMin(org.fortiss.af3.exploration.model.FailureMinObjective oldObjective) {
 		FailureMinObjective newObjective = createFailureMinObjective();
 		migrateINamedCommentedElement(oldObjective, newObjective);
 		newObjective.setPriority(1);
@@ -258,7 +255,6 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	 * Migrates the old {@link FixedDeploymentConstraint} to the
 	 * {@link ComponentAllocationConstraint}.
 	 */
-	@SuppressWarnings("javadoc")
 	private ComponentMultiAllocationConstraint migrateFixedDeploymentConstraint(
 			org.fortiss.af3.exploration.model.FixedDeploymentConstraint oldConstraint) {
 		ComponentMultiAllocationConstraint newConstraint =
@@ -277,7 +273,6 @@ public class ExpTargetMigrator implements IMigrationProvider {
 	 * Migrates the old {@link ExcludeDeploymentConstraint} to the
 	 * {@link ComponentDislocationConstraint}.
 	 */
-	@SuppressWarnings("javadoc")
 	private ComponentMultiDislocationConstraint migrateExcludeDeploymentConstraint(
 			org.fortiss.af3.exploration.model.ExcludeDeploymentConstraint oldConstraint) {
 		ComponentMultiDislocationConstraint newConstraint =
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java
index 2e644b7656baded1f4eb0e8360be3b43b49dcbb1..5380c13e1f5eccf635d533c8447fa36609069db5 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java
@@ -30,7 +30,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: D766186F5D9A8C9C7C06EFD2F8DCA83F
+ * @ConQAT.Rating RED Hash: 9FA66BE6E22D5A6076D7F92D407412E5
  */
 public class LocationConstraintStaticImpl {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/DeadlineConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/DeadlineConstraintStaticImpl.java
index c5fcf4490de76f09d315ab53c26c49601327519b..e206344f88e40f960fcaffcb5db49bd28fb8d3ee 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/DeadlineConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/DeadlineConstraintStaticImpl.java
@@ -34,7 +34,7 @@ import org.fortiss.af3.exploration.model.time.DeadlineConstraint;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating RED Hash: 7953FA7C8B0BE3C6DC4466FD8A2A5D07
+ * @ConQAT.Rating RED Hash: DB1BD9529C5782397DB2F42ACE65E2D9
  */
 public class DeadlineConstraintStaticImpl {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/PeriodConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/PeriodConstraintStaticImpl.java
index 556effe62112bc36f32b887f3512b7539abb7226..574db0ab7ca07910ac8f7afb15e7b7b5b0b56b64 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/PeriodConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/model/time/impl/PeriodConstraintStaticImpl.java
@@ -32,7 +32,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3E1ECF0408C90342BDC4A73B8E80845F
+ * @ConQAT.Rating RED Hash: 970D98CDC0D2302DEA54CE021ABD9B59
  */
 public class PeriodConstraintStaticImpl {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiAllocationConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiAllocationConstraintStaticImpl.java
index 6c167800fb7598aa29f2042007cb09f5cd1b880e..597166bb4bb6a69d8a5e71eda128896f6f22ecf3 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiAllocationConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiAllocationConstraintStaticImpl.java
@@ -34,7 +34,7 @@ import org.fortiss.af3.platform.model.ExecutionUnit;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: A8624C4D0FFE72DE979A88AC97628DEB
+ * @ConQAT.Rating RED Hash: 05F85B5BF28D876C4A154669D9EA8A4D
  */
 public class ComponentMultiAllocationConstraintStaticImpl {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiDislocationConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiDislocationConstraintStaticImpl.java
index 21241a79cfde5b97c273f85bb5c8797f5a008267..c4261a24a07cd48685ec5e13a876daef1618996b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiDislocationConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/ComponentMultiDislocationConstraintStaticImpl.java
@@ -33,7 +33,7 @@ import org.fortiss.af3.platform.model.ExecutionUnit;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 27CD631FB55477C69F7B8E31265EC569
+ * @ConQAT.Rating RED Hash: DAB3972C88C638BF0154E795AAE18D77
  */
 public class ComponentMultiDislocationConstraintStaticImpl {
 	/**
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/FailureMinObjectiveStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/FailureMinObjectiveStaticImpl.java
index 46e433db56ddb19fc17cef7ba889565f74eea41e..215a52536382e5e0214a5f1de0bde50a7227bfa4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/FailureMinObjectiveStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/FailureMinObjectiveStaticImpl.java
@@ -29,7 +29,7 @@ import org.fortiss.af3.exploration.moea.model.predefined.ReliabilityAnalysis;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 77D055460CCBF3001916325910503F02
+ * @ConQAT.Rating RED Hash: E634A49CCF678F887D74DB5503829019
  */
 public class FailureMinObjectiveStaticImpl {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/MultiLocationConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/MultiLocationConstraintStaticImpl.java
index fd5bb379746c7484bf5cba8e19a690c883f9b0f8..2769c39d53b60811e19574ec4554759cba0f9d1c 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/MultiLocationConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/predefined/impl/MultiLocationConstraintStaticImpl.java
@@ -33,7 +33,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 54624198A2163C80FA099C5E121B98FF
+ * @ConQAT.Rating RED Hash: 7D7F93B4F0608FF645807A144462CBB2
  */
 public class MultiLocationConstraintStaticImpl {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/solutions/impl/SingleExplorationSolutionMapStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/solutions/impl/SingleExplorationSolutionMapStaticImpl.java
deleted file mode 100644
index 40d084fe7c67a0a9e2f87c1f6aa059a75045e094..0000000000000000000000000000000000000000
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/moea/model/solutions/impl/SingleExplorationSolutionMapStaticImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2016 ForTISS GmbH                     |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.af3.exploration.moea.model.solutions.impl;
-
-import java.util.Map.Entry;
-
-import org.fortiss.af3.exploration.moea.model.solutions.SingleExplorationSolutionMap;
-
-/**
- * Static method implementations for {@link SingleExplorationSolutionMap}s.
- * 
- * @author diewald
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating RED Hash: F3A72F82B0887E116A69B4CA93C4D7D5
- */
-public class SingleExplorationSolutionMapStaticImpl {
-
-	/**
-	 * Static implementation of the method
-	 * {@link SingleExplorationSolutionMap#getSolutionModel(Class)}.
-	 */
-	@SuppressWarnings("unchecked")
-	public static <T> T getModel(SingleExplorationSolutionMap singleExpSol, Class<T> modelType) {
-		T solutionModel = (T)singleExpSol.getSolutionModelMap().get(modelType);
-
-		if(solutionModel == null) {
-			for(Entry<Class<?>, Object> entry : singleExpSol.getSolutionModelMap()) {
-				if(modelType.isAssignableFrom(entry.getKey())) {
-					solutionModel = (T)entry.getValue();
-				}
-			}
-		}
-
-		return solutionModel;
-	}
-
-	/**
-	 * Static implementation of the method
-	 * {@link SingleExplorationSolutionMap#putSolutionModel(Class, Object)}.
-	 */
-	public static <T> void putSolutionModel(SingleExplorationSolutionMap singleExpSol,
-			Class<T> modelType, T solutionModel) {
-		singleExpSol.getSolutionModelMap().put(modelType, solutionModel);
-	}
-}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java
index 0b0e194f5ae82af528c5695109d91a78fef15306..3c6174295d54d69a0e3d15a0f39cad0128471527 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java
@@ -47,7 +47,7 @@ import org.fortiss.tooling.kernel.service.IPersistencyService;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 774D57055350383C4AC3DB0BAC189C81
+ * @ConQAT.Rating RED Hash: 7CD442DF6ED6930102EBA2590ACE8AE1
  */
 public class CommonExplorationTagetModelElementFactory {
 
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/ExplorationDslModelElementFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/ExplorationDslModelElementFactory.java
index 317a5b0b9e304db956d88cba8dec17836a9f14f2..0cb073a93e91bb79268bc6d2558566f917dfd039 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/ExplorationDslModelElementFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/util/ExplorationDslModelElementFactory.java
@@ -51,7 +51,7 @@ import org.fortiss.tooling.base.model.element.IModelElement;
  * @author diewald
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 5C34767AEE1586D8B0F18DC96A8637D0
+ * @ConQAT.Rating RED Hash: 36D3F25F5EA7F85C19CF2C18C62F4082
  */
 public class ExplorationDslModelElementFactory {