diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java
index bcc3a0489222f74f9eb6f7d86f55a295d6e035c4..473f6868024fbbbb1d3844692f8c7ce8a7d155de 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java
@@ -7,6 +7,7 @@ import org.eclipse.emf.common.util.URI;
 
 import edu.kit.ipd.descartes.adaptation.TacticsHistory;
 import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader;
+import edu.kit.ipd.descartes.adaptation.util.BlueYonderExperimentTracker;
 import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
 import edu.kit.ipd.descartes.perfdatarepo.Impact;
 import edu.kit.ipd.descartes.perfdatarepo.Result;
@@ -15,10 +16,10 @@ import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
 
 public class ObservationRepositoryHandler implements IPerformanceDataRepositoryHandler {
 
+    private BlueYonderExperimentTracker tracker = new BlueYonderExperimentTracker();
     private static Logger logger = Logger.getLogger(ObservationRepositoryHandler.class);
     private AbstractEcoreModelLoader modelLoader = null;
     private ObservationRepository repository = null;
-    private int iteration = 1;
 
     public ObservationRepositoryHandler() {
         modelLoader = ObservationRepositoryModelLoader.getInstance();
@@ -43,22 +44,21 @@ public class ObservationRepositoryHandler implements IPerformanceDataRepositoryH
         if (latestTactic == null) {
             o = repository.getLatestObservation();
         } else {
-            String expName = ObservationRepositoryHelper.deriveExperimentName(latestTactic, iteration);
+            String expName = tracker.getCurrentExperimentName();
             logger.debug("Searching for result of " + expName);
             o = ObservationRepositoryHelper.getResultEndingWith(expName, repository);
         }
 
         return PerfDataRepoConverter.convertResult(o);
-        // return convertResult(repository.getObservations().get(iteration++));
     }
 
     @Override
     public Impact getLatestImpact(WeightedTactic tactic) {
-        String expName = ObservationRepositoryHelper.deriveExperimentName(tactic, iteration + 1);
+        tracker.track(tactic);
+        String expName = tracker.getCurrentExperimentName();
         logger.debug("Searching for impact of " + expName);
         Impact latestImpact = PerfDataRepoConverter.convertObservableImpact(ObservationRepositoryHelper
                 .searchImpactOfTactic(expName, repository));
-        iteration++;
         return latestImpact;
     }
 }
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java
index d41553db5e5590d73316152c9114d087bcc97a48..f81f7def7969228fa928be298fe99fbeded7eb10 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java
@@ -4,13 +4,12 @@ import java.util.List;
 
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
-import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
 import edu.kit.ipd.descartes.ql.models.repository.ObservableImpact;
 import edu.kit.ipd.descartes.ql.models.repository.Observation;
 import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
 
 public class ObservationRepositoryHelper {
-
+    
     public static ObservableImpact searchImpactOfTactic(String name, ObservationRepository repository) {
         // Get correct result
         Observation o = getResultEndingWith(name, repository);
@@ -20,24 +19,6 @@ public class ObservationRepositoryHelper {
         return i;
     }
 
-    public static String deriveExperimentName(WeightedTactic tactic) {
-        return tactic.getName();
-    }
-
-    public static String deriveExperimentName(WeightedTactic tactic, int iteration) {
-
-        String execTacticName = tactic.getName();
-
-        if (execTacticName.contains("Low")) {
-            String desc1 = "Xreq-par-Yps-desc4-gw-desc3-db-desc2-predict-Z ps=$-req=5-size=50000";
-            return null;
-        } else if (execTacticName.contains("High")) {
-            String desc4 = "Xreq-par-Yps-desc4-gw-desc3-db-desc2-predict-Z ps=$-req=5-size=50000";
-            return desc4.replace("$", Integer.toString(iteration));
-        }
-        return null;
-    }
-
     public static ObservableImpact getImpactForObservation(Observation o, ObservationRepository repo) {
         if (o == null || repo == null)
             return null;
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d29bc93e5bd62221369b297214defad7533c6d6
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java
@@ -0,0 +1,32 @@
+package edu.kit.ipd.descartes.adaptation.util;
+
+import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
+
+public class BlueYonderExperimentTracker {
+
+    private static final String RESULT_NAME = "Xreq-par-$1Yps-desc4-gw-desc3-db-desc2-predict-Z ps=$2-req=5-size=50000";
+    private int psOnDescOne = 0;
+    private int psOnDescFour = 1;
+
+    public String getCurrentExperimentName() {
+        String result = RESULT_NAME;
+        
+        if (psOnDescOne > 0)
+            result = RESULT_NAME.replace("$1", psOnDescOne + "ps-desc1-");
+        else
+            result = RESULT_NAME.replace("$1", "");
+        
+        result = result.replace("$2", Integer.toString(psOnDescFour));
+        return result;
+    }
+
+    public void track(WeightedTactic tactic) {
+        String execTacticName = tactic.getName();
+
+        if (execTacticName.contains("Low")) {
+            psOnDescOne++;
+        } else if (execTacticName.contains("High")) {
+            psOnDescFour++;
+        }
+    }
+}