diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java
index ba9ffcc412dcce75246f0086081efe8720fc67ee..91ec0e643c0b4e339cf7e9365766d26535e33278 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java
@@ -26,7 +26,7 @@ public class WeightingFunctionEvaluator implements IEvaluator {
     public void evaluate(WeightedTactic tactic) {
         WeightingFunction f = tactic.getParentStrategy().getWeightingFunction();
         
-        final String functionClassName = f.getWeightingFunction();
+        final String functionClassName = f.getWeightingFunctionImplementation();
 
         Object o = null;
         try {
@@ -44,6 +44,7 @@ public class WeightingFunctionEvaluator implements IEvaluator {
         }
         
         calculator = (IWeightingFunction) o;
+        calculator.setWeightingFunction(f);
         double newWeight = calculator.calculateWeight(tactic);
         logger.debug("Setting new weight of " + tactic.getName() + " to " + newWeight);
         tactic.setCurrentWeight(newWeight);
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java
index 68571370992a8b28e09098ef37e037bbd1090234..284d82a16836ac83dc6336db4146544b44ec9e66 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java
@@ -1,15 +1,33 @@
 package edu.kit.ipd.descartes.adaptation.evaluation.weightingfunction;
 
 import edu.kit.ipd.descartes.mm.adaptation.Tactic;
+import edu.kit.ipd.descartes.mm.adaptation.WeightedMetric;
 import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
+import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction;
 
+/**
+ * @author nhuber
+ *
+ */
 public interface IWeightingFunction {
 	
-	/**
+    
+    /**
+     * Sets the {@link WeightingFunction} that can be used
+     * by the {@link WeightingFunction} to derive the 
+     * {@link WeightedMetric}s used to calculate the weight.
+     * 
+     * @param function
+     */
+    void setWeightingFunction(WeightingFunction function);
+    
+    /**
 	 * Calculates the new weight of the given {@link Tactic}.
 	 * 
 	 * @param impact
 	 * @return
 	 */
-	double calculateWeight(WeightedTactic weightedTactic);
+    double calculateWeight(WeightedTactic weightedTactic);
+
+
 }
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java
index 245197beda84f53cf0320f0c3c1943c7bb983029..ae2ade1149a4986b9780937f8985b6eae5a6f0e9 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java
@@ -3,6 +3,7 @@ package edu.kit.ipd.descartes.adaptation.evaluation.weightingfunction;
 import java.util.Random;
 
 import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
+import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction;
 
 public class RandomWeightsWeightingFunction implements IWeightingFunction {
 
@@ -11,4 +12,9 @@ public class RandomWeightsWeightingFunction implements IWeightingFunction {
 		Random r = new Random(System.currentTimeMillis());
 		return r.nextDouble();
 	}
+
+    @Override
+    public void setWeightingFunction(WeightingFunction function) {
+        // Left empty intentionally
+    }
 }
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java
index 5394adb87e4a7ed165825b9744ba759d87db7808..cd172d7c92d99367ce2b5b7c5f798726bd8daaf2 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java
@@ -14,14 +14,14 @@ public class WeightedSum implements IWeightingFunction {
 	private Logger logger = Logger.getLogger(WeightedSum.class);
 	private WeightingFunction weightingFunction = null;
 
-	public WeightedSum(WeightingFunction f) {
-	    setWeightingFunction(f);
+	public WeightedSum() {
 	}
 	
     public WeightingFunction getWeightingFunction() {
         return weightingFunction;
     }
 
+    @Override
     public void setWeightingFunction(WeightingFunction weightingFunction) {
         this.weightingFunction = weightingFunction;
     }
@@ -58,4 +58,5 @@ public class WeightedSum implements IWeightingFunction {
 
 		return newWeight;
 	}
+
 }