diff --git a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore
index 3d27d76aca68aebb0ed2ff0d439182519edf631e..446a2ec429571ac2d720348685eeae3f1d2d661d 100644
--- a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore
+++ b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore
@@ -6,7 +6,7 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="DEPRECATED/LEGACY."/>
     </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//expressions/Expression"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="moeaExpression" eType="#//expressions/Expression"
         containment="true">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="DEPRECATED/LEGACY."/>
diff --git a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel
index 0c09a3b35bd3751b4e8224a5e64e071c2453ca37..648be71ebcb35f7f16b6a219fa1c3b9e45025b5e 100644
--- a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel
+++ b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel
@@ -11,7 +11,7 @@
   <genPackages prefix="Model" basePackage="org.fortiss.af3.exploration.dsl" disposableProviderFactory="true"
       ecorePackage="explorationDsl.ecore#/">
     <genClasses image="false" ecoreClass="explorationDsl.ecore#//MOEAExplorationExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference explorationDsl.ecore#//MOEAExplorationExpression/expression"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference explorationDsl.ecore#//MOEAExplorationExpression/moeaExpression"/>
     </genClasses>
     <nestedGenPackages prefix="Operators" basePackage="org.fortiss.af3.exploration.dsl.model"
         disposableProviderFactory="true" ecorePackage="explorationDsl.ecore#//operators">
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
index bb6883820ae81a190858ce06b674f29a8ea25c0b..b6f0bedd1b55c5d078a7e916db3aa028bde117de 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java
@@ -23,9 +23,12 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 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;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
 
 /**
  * DSE-internal {@link ExplorationConstraint} that marks a group of {@link IMappingEntry}s that are
@@ -162,4 +165,25 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl implements
 	public Object clone() {
 		return new InternalIsolatedCommunicationSet(this);
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public IExpression getExpression() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setExpression(IExpression value) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public EList<ExplorationTarget<Boolean>> getContainedTargets() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java
index 40ba57fb947ae7ea86e6b6856148b56fd1e86511..229f2d704afb5df5131a6291df2e7b9663b30223 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java
@@ -17,10 +17,13 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $
 +--------------------------------------------------------------------------*/
 package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
+import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression;
 import org.fortiss.af3.exploration.model.ExplorationConstraint;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
 
 /**
  * DSE-internal constraint to define the bounds for the number of replica of an
@@ -155,4 +158,25 @@ public class InternalReplicationConstraint extends EObjectImpl implements
 	public Object clone() {
 		return new InternalReplicationConstraint(this);
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public IExpression getExpression() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setExpression(IExpression value) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public EList<ExplorationTarget<Boolean>> getContainedTargets() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java
index 7aecd613afe0d419f679e48ff276cd60d0b0ac5e..c44dfaa941f9d1ff1c97e50f20d3b26c8637dca9 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java
@@ -19,11 +19,14 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.c
 
 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.IDeployableComponentAdapter;
 import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter;
 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;
+import org.fortiss.af3.exploration.model.ExplorationTarget;
 import org.fortiss.af3.platform.model.IPlatformResource;
 
 /**
@@ -148,4 +151,25 @@ public class InternalSeparationConstraint extends EObjectImpl implements
 	public Object clone() {
 		return new InternalSeparationConstraint(this);
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public IExpression getExpression() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setExpression(IExpression value) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public EList<ExplorationTarget<Boolean>> getContainedTargets() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java
index 2fdc35f57a8f1c221919d9529dea94d412fbe47e..b7b77d8134d7a82d630a8781f745d64c7b4aed9e 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java
@@ -34,7 +34,6 @@ 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.fortiss.af3.exploration.model.ExplorationTargetExpression;
 import org.opt4j.core.DoubleValue;
 import org.opt4j.core.Objective;
 import org.opt4j.core.Objective.Sign;
@@ -78,17 +77,18 @@ 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).getExpression();
+			Expression moExpr = ((MOEAExplorationExpression)goal).getMoeaExpression();
 			if(moExpr instanceof OptimizationDirection) {
 				direction = ((OptimizationDirection)moExpr).getOperator();
 			}
-		} else if(goal instanceof ExplorationObjective<?> &&
-				goal instanceof ExplorationTargetExpression<?>) {
+		} 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 = ((ExplorationTargetExpression<?>)goal).getExpression();
+			IExpression expr = goal.getExpression();
 			if(expr instanceof Minimize) {
 				direction = OptimizationDirectionEnum.MIN;
 			} else if(expr instanceof Maximize) {
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
index 354ed9c1bd09c1b764f2ec9da4957e0241e49221..01e028dde89eebd4477c9bdcfdbab84cdb6fb502 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
@@ -76,7 +76,7 @@ public abstract class ExpressionEvaluatorBase<P extends Phenotype, RT, T extends
 
 		this.systemModelAdapter = systemModelAdapter;
 		this.explorationTarget = explorationTarget;
-		this.expression = ((ExplorationTargetExpression<?>)explorationTarget).getExpression();
+		this.expression = explorationTarget.getExpression();
 
 		validateInputs();
 	}
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
index 79019567c316c9a8afd2076530d7e3e1cf46a9b1..4820c97ae8a24de2d0428174371a6412f6e789c0 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
@@ -27,7 +27,6 @@ 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.IFunction;
 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;
@@ -75,7 +74,14 @@ public class MappingEvaluatorObjective extends MappingEvaluator {
 
 		// For ExplorationObjectives the expression begins either with a Minimize or Maximize
 		// operation.
-		IArithmeticExpression minMaxTerm = ((IFunction)expression).getArgs();
+		// 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);
 
 		Number retVal = minMaxTerm.accept(this, Number.class);
 
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java
index 030baef532bd7d8137dfc1181dee2712c22b4faf..c2979440ad359bc362d7603671de19ab3226ed3b 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java
@@ -157,7 +157,7 @@ public class DesignSpaceExplorationModelElementFactory {
 		energyObjective.setPriority(0);
 		ObjectiveExpression optExpr = createObjectiveExpression(OptimizationDirectionEnum.MIN);
 		optExpr.setRight(createEnergyConsumptionSumExpression());
-		energyObjective.setExpression(optExpr);
+		energyObjective.setMoeaExpression(optExpr);
 		return energyObjective;
 	}
 
@@ -196,7 +196,7 @@ public class DesignSpaceExplorationModelElementFactory {
 		failureMinObjective.setName("Failure Minimization");
 		failureMinObjective.setType(FailureType.ALL);
 		failureMinObjective.setPriority(1);
-		failureMinObjective.setExpression(createFailureMinExpression());
+		failureMinObjective.setMoeaExpression(createFailureMinExpression());
 		return failureMinObjective;
 	}
 
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java
index 72c207e61c8eba31c3f4dbdaf5e025c704411f14..5548e42bcd434c1369a24c24354c0e40a8750522 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java
@@ -79,7 +79,7 @@ public class LocationConstraintStaticImpl {
 		if(locConstraint == null) {
 			return null;
 		}
-		Expression expr = locConstraint.getExpression();
+		Expression expr = locConstraint.getMoeaExpression();
 		if(expr instanceof LocationPattern) {
 			Expression lpExpr = ((LocationPattern<?, ?>)expr).getExpression();
 			if(lpExpr instanceof LocationOp) {
diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java
index c67b8d7e090dacb33b69b9d82ec5a049ab252523..8c76967af8a8f1b333ac676c368ff3ddc378433e 100644
--- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java
+++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java
@@ -58,7 +58,7 @@ public class CommonExplorationTagetModelElementFactory {
 			ExecutionUnit execUnit) {
 		ComponentAllocationConstraint cAllocConstr = createComponentAllocationConstraint();
 		// Construct the corresponding Expression via the LocationPattern.
-		cAllocConstr.setExpression(createLocationPattern(comp, LocationOperatorEnum.ALLOCATION,
+		cAllocConstr.setMoeaExpression(createLocationPattern(comp, LocationOperatorEnum.ALLOCATION,
 				execUnit));
 		return cAllocConstr;
 	}
@@ -76,8 +76,8 @@ public class CommonExplorationTagetModelElementFactory {
 			Component comp, ExecutionUnit execUnit) {
 		ComponentDislocationConstraint cDislocConstr = createComponentDislocationConstraint();
 		// Construct the corresponding Expression via the LocationPattern.
-		cDislocConstr.setExpression(createLocationPattern(comp, LocationOperatorEnum.DISLOCATION,
-				execUnit));
+		cDislocConstr.setMoeaExpression(createLocationPattern(comp,
+				LocationOperatorEnum.DISLOCATION, execUnit));
 		return cDislocConstr;
 	}
 
@@ -108,7 +108,7 @@ public class CommonExplorationTagetModelElementFactory {
 		ConstraintExpression<TwoPropertyValueComparison<Double, Component, Component>> cExpr =
 				ExplorationDslModelElementFactory.createConstraintExpression(null, null,
 						twoPropValExpr);
-		deadlineConstr.setExpression(cExpr);
+		deadlineConstr.setMoeaExpression(cExpr);
 		return deadlineConstr;
 	}
 
@@ -122,7 +122,7 @@ public class CommonExplorationTagetModelElementFactory {
 		ConstraintExpression<SinglePropValueComparison<Double, Component>> cExpr =
 				ExplorationDslModelElementFactory.createConstraintExpression(null, null,
 						singlePropValExpr);
-		periodConstr.setExpression(cExpr);
+		periodConstr.setMoeaExpression(cExpr);
 		return periodConstr;
 	}
 
@@ -131,7 +131,7 @@ public class CommonExplorationTagetModelElementFactory {
 			LocationPattern<Component, ExecutionUnit> locationPattern) {
 		LocationConstraint<Component, ExecutionUnit> createLocationConstraint =
 				LocationFactory.eINSTANCE.createLocationConstraint();
-		createLocationConstraint.setExpression(locationPattern);
+		createLocationConstraint.setMoeaExpression(locationPattern);
 		return createLocationConstraint;
 	}
 }