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 c357d3ae7ec79c833bd8eb8ee1f153d91705f40d..02b6f64c552c9bf1f73d2cb57b2f53d80398cbce 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
@@ -170,8 +170,8 @@ public class CompositeExplorationSolution<P extends Phenotype> {
 					singleSolution.getSubSolution(InstantiatedTaskMappingEncoding.class);
 			PartitionMappingEncoding pmEncoding =
 					singleSolution.getSubSolution(PartitionMappingEncoding.class);
-			SuperSet<ComponentToExecutionUnitAllocationEntry> compExecUnitAllocs =
-					createSuperSet("Optimized_Allocations");
+			SuperSet<ComponentToExecutionUnitAllocationEntry> compExecUnitAllocs = createSuperSet(
+					"Optimized_Allocations", ComponentToExecutionUnitAllocationEntry.class);
 			for(Partition resource : tm.getResources()) {
 				for(ITaskAdapter<?> task : tm.getRequesters(resource)) {
 					Component af3Component = task.getAssignedComponent();
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 48630805e5b935759a7cb18dbc3147667b4c0d66..41ce92d11b2e7a6a8c39bffa990c691160c36c8d 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
@@ -15,8 +15,6 @@
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j;
 
-import static org.fortiss.af3.exploration.util.ExplorationUtils.getReturnTypeOf;
-
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -51,7 +49,7 @@ public class Opt4JSingleExplorationSolution extends SolutionQuantification {
 			// Determine the ExplorationTarget class to identify the correct return value type.
 			Objective objective = problemModule.getObjectiveOf(targetAssoc.getValue());
 			ExplorationTarget<?> concreteExpTarget = targetAssoc.getKey();
-			Class<?> expectedResultType = getReturnTypeOf(concreteExpTarget);
+			Class<?> expectedResultType = concreteExpTarget.getResultType();
 			// FIXME: throw an exception here.
 			assert (expectedResultType != null) : "Could not determine the result type of the exploration target " +
 					concreteExpTarget.getName() +
@@ -67,6 +65,12 @@ public class Opt4JSingleExplorationSolution extends SolutionQuantification {
 			if(expectedResultType.equals(Boolean.class) ||
 					IModelElement.class.isAssignableFrom(expectedResultType)) {
 				result = Boolean.valueOf(objectives.get(objective).getDouble() <= 10E-9);
+			} else if(expectedResultType.equals(Double.class) &&
+					result.getClass().equals(Integer.class)) {
+				// FIXME: Remove this special case: It shall not be needed anymore, once we got rid
+				// of the static type definition in EMF meta-models and derive them from the
+				// referenced annotations.
+				result = Double.valueOf((Integer)result);
 			} 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/encoding/comm/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings
index e4348f7ddd25ab2c673761251f5822f47b266618..34829a41bcc67e89c8036a28c2a9a6cf44447025 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings
@@ -1 +1 @@
-InternalIsolatedCommunicationSet.java 250ff5f0ee41829b051b4c597810ae80dc73a0cc RED
+InternalIsolatedCommunicationSet.java 46aa91e7690c31e46c6e852d8eed54b246fa4654 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
index de9b8f9b505c8abc468d7005636e7f5b09779d7a..7b5f0edda6a6bcadd60ced408f214c5d4bac59c0 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
@@ -182,4 +182,18 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Class<Boolean> getResultType() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setResultType(Class<Boolean> type) {
+		// TODO Auto-generated method stub
+
+	}
 }
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 e5b10b22471e25c5fc938510608112d34708bf70..78cc908ad03ea3881e2434b483032a309bcd1dc2 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
@@ -17,8 +17,8 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.c
 
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression;
 import org.fortiss.af3.exploration.model.ExplorationConstraint;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
@@ -173,4 +173,18 @@ public class InternalReplicationConstraint extends EObjectImpl
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Class<Boolean> getResultType() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setResultType(Class<Boolean> type) {
+		// TODO Auto-generated method stub
+
+	}
 }
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 1eea1fafc9ec89224aefb7bd76175827ec8e1925..ca06fdc9d7a9384e5247776627ca6710ebc8fbb8 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
@@ -19,8 +19,8 @@ import java.util.Collection;
 
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
-import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry;
 import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression;
 import org.fortiss.af3.exploration.model.ExplorationConstraint;
@@ -166,4 +166,18 @@ public class InternalSeparationConstraint extends EObjectImpl
 		// TODO Auto-generated method stub
 		return null;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Class<Boolean> getResultType() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setResultType(Class<Boolean> type) {
+		// TODO Auto-generated method stub
+
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
index a746124992216d254e5879f036a46e0e742c67e5..26142f29e2b2f091fa4aac3cd41d3201be310dd4 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
@@ -1,5 +1,5 @@
 EnergyObjectiveEvaluator.java ad2b868aa3dce2c7708ee6cc90f357b79a4cf799 RED
 FailSilentReliabilityEvaluator.java 83211c8e2b69579c424a486cd6845bb8d1bb69fa RED
 FaultDetectionVotingReliabilityEvaluator.java 189fdfd0daed3348c510a6aeac0bd391e835c524 RED
-MappingEvaluatorObjective.java 5a1e083a5f18be458b73c6fc4fd9d37b9f69d213 RED
+MappingEvaluatorObjective.java 6ca3fa4dcbaeb61b38ad1d36a318dbb9ead58831 RED
 ReliabilityEvaluatorBase.java 98fa54270cba25137112fe55f3551fbd8064ac28 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
index 98906e205e46ecb5a682a026fd82897745f5f2d2..a93b07f5c1f06a19d776abb02cfbd68c3cf0bd93 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
@@ -88,7 +88,7 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator {
 		// The minMax Term is always non-zero.
 		// FIXME: Using "BigInteger" as a type is a hack: It is a workaround to comply with the
 		// construction of objectives in the UI.
-		@SuppressWarnings("null") Number retVal = minMaxTerm.accept(this, BigInteger.class);
+		@SuppressWarnings("null") Number retVal = minMaxTerm.accept(this, Number.class);
 
 		return retVal instanceof BigInteger ? new IntegerValue(retVal.intValue())
 				: new DoubleValue(retVal.doubleValue());
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings
index 3058d130754982693642becdf785b0ecfa28c94e..360af31c6e3ccda36750b7aa1730b4309f9f29c0 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings
@@ -4,4 +4,4 @@ ScheduleLabelGenerator.java 0ceecedfec9802bbcaa33525d61e1a60a70d3841 RED
 SchedulePlotter.java 29b1156c9419d4ff3314c4b2c932aeb46f4749f8 RED
 ScheduleToolTipGenerator.java cedfa0dd7ebc7b48d7cc70e966eebaeee9636caf RED
 TaskSeriesCollectionFromSchedule.java b53b7af649c48980520ad572da8c7bbdbae0aed5 RED
-XYPlotter.java 4fd144980d0d55bccbe8840c8e049b9bf3d41118 RED
+XYPlotter.java 4ab3c02351dab5e78cea843dc6665ddee46a636c RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java
index 78fb189b484df79ae326d3f6262f6a3f3a4f0d3b..280226ef257e2779bf90903196d77caf86bd4df1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java
@@ -459,15 +459,11 @@ public class XYPlotter extends JFrame implements ChartMouseListener, ActionListe
 		coordinateToSolution.clear();
 
 		for(SingleExplorationSolution 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());
+				ExplorationResult<?> xExpResult = solution.get(Xaxis.getTarget());
+				ExplorationResult<?> yExpResult = solution.get(Yaxis.getTarget());
 				if(xExpResult != null && yExpResult != null) {
 					xResultVal = xExpResult.getResult();
 					yResultVal = yExpResult.getResult();
@@ -503,17 +499,14 @@ public class XYPlotter extends JFrame implements ChartMouseListener, ActionListe
 					.stream().filter(r -> r == currentSolution).findAny();
 			if(singleExpSol.isPresent()) {
 				SingleExplorationSolution 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) {
+				if(currentSolMap != null) {
 					// display the objective values
 					for(int i = 0; i < goalList.size(); i++) {
 						ExplorationTarget<?> target = goalList.get(i);
-						ExplorationResult<?> expResult = objectiveValues.get(target);
+						ExplorationResult<?> expResult = currentSolMap.get(target);
 						if(objectiveToGuiItems.get(target) != null &&
 								(expResult != null && expResult.getResult() instanceof Double)) {
 							objectiveToGuiItems.get(target).objTextField