diff --git a/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java b/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java
index a1c0b7c3ac373d9908824b38bb070c3c793fd573..a22f1b7bb610895afbdfa7f589388129288761a5 100644
--- a/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java
+++ b/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Benchmark.java
@@ -7,8 +7,10 @@ import org.apache.http.entity.ContentType;
 import org.apache.http.util.EntityUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+
 import java.io.File;
 import java.io.FileReader;
+import java.io.IOException;
 import java.util.Arrays;
 
 public class Benchmark {
@@ -38,15 +40,15 @@ public class Benchmark {
     private static final Logger logger = LogManager.getLogger(Benchmark.class);
     private static final String ERASER_ITEM_URI = "http://localhost:4567/model/items/";
     //TODO ITEM_NAME HAS TO BE DISCUSSED
-    private static String[] ACTIVITY_ITEM_NAME;
-    private static String[] PREFERENCE_ITEM_NAME;
-    private static boolean flag2 = true;
+    private String[] ACTIVITY_ITEM_NAME;
+    private String[] PREFERENCE_ITEM_NAME;
     //csv_type is activity or preference
     Benchmark(String a_csv_file_path, String p_csv_file_path) {
         this.a_csv_file_path = a_csv_file_path;
         this.p_csv_file_path = p_csv_file_path;
     }
     void start(){
+        int TIME_PERIOD = 1000;
         String PREFERENCE_URL = "http://localhost:4567/model/items/iris1_item/state";
         String ACTIVITY_URL = "http://localhost:4567/activity/current";
         File a_file;
@@ -57,7 +59,6 @@ public class Benchmark {
         CSVReader p_csv_reader;
         String[] a_next_record;
         String[] p_next_record;
-        boolean flag1;
         a_file=new File(a_csv_file_path);
         p_file= new File(p_csv_file_path);
         try {
@@ -66,45 +67,35 @@ public class Benchmark {
             a_csv_reader = new CSVReader(a_file_reader);
             p_csv_reader = new CSVReader(p_file_reader);
             int i = 0;
-            while ((((a_next_record = a_csv_reader.readNext())!= null) && flag2)){
+            while ((a_next_record = a_csv_reader.readNext())!= null){
                 if( i==0 ){
+
                     getCSVHeader(Arrays.copyOf(a_next_record,12),"a");
                     i++;
                 }
                 else{
                     String[] values = Arrays.copyOf(a_next_record,12);
                     setNewValue(values, ACTIVITY_ITEM_NAME,"activity");
-                    HttpResponse response= Request.Get(ACTIVITY_URL).execute().returnResponse();
-                    String status = response.getStatusLine().toString();
-                    if(status.contains("200")){
-                        flag1 = true;
-                        logger.info("activity should be (read direct from CSV): " + a_next_record[12]);
-                        logger.info(EntityUtils.toString(response.getEntity()));
-                        logger.info("get activity from web server: response 200 ok");
-                    }else{
-                        flag1 = false;
-                        flag2 = false;
-                        logger.info("can not get the activity from the web server");
-                    }
                     int j = 0;
-                    while((((p_next_record = p_csv_reader.readNext()) != null) && flag1)) {
-                        if( j==0 ){
+                    while(((p_next_record = p_csv_reader.readNext()) != null)) {
+                        if( j == 0 ){
                             getCSVHeader(Arrays.copyOf(p_next_record,2),"p");
                             j++;
                         }else{
                             String[] values1 = Arrays.copyOf(p_next_record,2);
                             setNewValue(values1, PREFERENCE_ITEM_NAME,"preference");
+                            // wait for 1s
+                            try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();}
+                            HttpResponse response= Request.Get(ACTIVITY_URL).execute().returnResponse();
                             HttpResponse response1= Request.Get(PREFERENCE_URL).execute().returnResponse();
-                            String status1=response1.getStatusLine().toString();
-                            if(status1.contains("200")){
-                                flag2 = true;
-                                logger.info("get the iris1_item preference from web server: response 200 ok, value is: "+EntityUtils.toString(response1.getEntity()));
-                            }else {flag2 = false;
-                                logger.info("can not get the iris1_item from the web server");}
+                            //check response
+                            checkResult(response, a_next_record);
+                            checkResult(response1, p_next_record);
                             break;
                         }
                     }
                 }
+
             }
         }
         catch (Exception e){
@@ -113,7 +104,6 @@ public class Benchmark {
     }
 
     private void setNewValue(String[] values, String[] name, String file_typ){
-        int TIME_PERIOD = 1000;
         if(file_typ.equals("activity"))
         {
             int i = 0;
@@ -137,8 +127,6 @@ public class Benchmark {
         }else{
             String uri= ERASER_ITEM_URI + "w_brightness" +"/state";
             try {
-                logger.info("debug for w_brigntess");
-                logger.info(values[1]);
                 HttpResponse httpResponse = Request.Put(uri)
                         .bodyString(values[1], ContentType.TEXT_PLAIN)
                         .execute().returnResponse();
@@ -150,7 +138,7 @@ public class Benchmark {
                 e.printStackTrace();
             }
         }
-        try{Thread.sleep(TIME_PERIOD);}catch (InterruptedException e){e.printStackTrace();}
+
     }
 
     private void getCSVHeader(String[] a_values,String csv_typ){
@@ -160,4 +148,40 @@ public class Benchmark {
             PREFERENCE_ITEM_NAME = a_values;
         }
     }
+    private void checkResult(HttpResponse response,String[] record){
+        int status = response.getStatusLine().getStatusCode();
+        if(status == 200 && record.length == 13){
+            logger.info("activity should be (read direct from CSV): " + record[12]);
+            try {
+                logger.info(EntityUtils.toString(response.getEntity()));
+            }catch (IOException e){
+                e.printStackTrace();
+            }
+            logger.info("get activity from web server: response 200 ok");
+
+        }else if(status ==200 && record.length == 4){
+            logger.info("preference should be (read direct from CSV): " + getPreference(record));
+            try {
+            logger.info("get the iris1_item preference from web server: response 200 ok, value is: " +
+                    EntityUtils.toString(response.getEntity()));
+            }catch (IOException e){
+                e.printStackTrace();
+            }
+
+        }else if(status !=
+                200 &&record.length == 13){
+            logger.info("can not get the activity from the web server");
+
+        }
+        else if(status != 200 && record.length == 4){
+            logger.info("can not get the iris1_item from the web server");
+        }else {
+            logger.info("unknown check");
+        }
+    }
+
+    private String getPreference(String[] record){
+        return "";
+
+    }
 }
\ No newline at end of file
diff --git a/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Main.java b/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Main.java
index ac7536cae53749132be31ebe028e5ec0e55c30f4..640ef4e751e888f4e4ee13fe73868c794e3337a4 100644
--- a/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Main.java
+++ b/benchmark/src/main/java/de/tudresden/inf/st/eraser/benchmark/Main.java
@@ -5,7 +5,7 @@ public class Main {
     public static void main(String[] args) {
         String A_CSV_FILE_PATH = "../datasets/backup/activity_data.csv";
         String P_CSV_FILE_PATH = "../datasets/backup/preference_data.csv";
-        Benchmark benchmark=new Benchmark(A_CSV_FILE_PATH,P_CSV_FILE_PATH);
+        Benchmark benchmark = new Benchmark(A_CSV_FILE_PATH,P_CSV_FILE_PATH);
         benchmark.start();
     }
 }
diff --git a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java
index 4adfd683365a749a1dbf667fe3e1b413acf06018..cdf3e9d03c99e48df645c8df8dfcbd6eac754a8d 100644
--- a/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java
+++ b/eraser.starter/src/main/java/de/tudresden/inf/st/eraser/starter/EraserStarter.java
@@ -168,11 +168,11 @@ public class EraserStarter {
       newData.add(item10);
       newData.add(item11);
       newData.add(item12);
-      handler.newData(newData);
+      handler.newData(newData);*/
       List<ItemPreference> preference=handler.classify().getPreferences();
       for(ItemPreference preference1 : preference){
         preference1.apply();
-      }*/
+      }
     }
 
     // initialize preference learning
@@ -197,11 +197,11 @@ public class EraserStarter {
       ArrayList<Item> newData1 = new ArrayList<>();
       newData1.add(activity_item);
       newData1.add(brightness_item);
-      handler.newData(newData1);
+      handler.newData(newData1);*/
       List<ItemPreference> preference=handler.classify().getPreferences();
       for(ItemPreference preference1 : preference){
         preference1.apply();
-      }*/
+      }
     }
 
     machineLearningRoot.getPreferenceLearning().connectItems(settings.preference.items);
diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java
index d6c86be5a5e6bd64311066fb7225cfc66194558e..2519d4fdf16e26634e5b053d3870ca3baa579f5a 100644
--- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java
+++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Learner.java
@@ -151,7 +151,7 @@ public class Learner {
     String activity_predictor(String[] new_data){
         logger.info("Activity predicting ... ...");
         String activity_result;
-        activityDataAnalyser("datasets/backup/activity_data.csv");
+        activityDataAnalyser("../datasets/backup/activity_data.csv");
         BasicNetwork activity_method = (BasicNetwork) loadObject(save_activity_model_file);
         MLData input = activity_helper.allocateInputVector();
         activity_helper.normalizeInputVector(new_data,input.getData(),false);
@@ -166,7 +166,7 @@ public class Learner {
         logger.info("Activity predicting ... ...");
         String[] preference_result;
         preference_result = new String[2];
-        preferenceDataAnalyser("datasets/backup/preference_data.csv");
+        preferenceDataAnalyser("../datasets/backup/preference_data.csv");
         BasicNetwork preference_method = (BasicNetwork)loadObject(save_preference_model_file);
         MLData input = preference_helper.allocateInputVector();
         preference_helper.normalizeInputVector(new_data, input.getData(),false);
@@ -187,5 +187,3 @@ public class Learner {
 
     }
 }
-
-
diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java
index 90c1837d60e5d53325f9a4a30ca59f1096e8e778..f536026f95b47dab38c1acb695284bd31b5728ea 100644
--- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java
+++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/MachineLearningImpl.java
@@ -132,9 +132,9 @@ public class MachineLearningImpl implements MachineLearningDecoder, MachineLearn
           new_data[1]=item.getStateAsString();
         }
       }
+      this.preference_result=learner.preference_predictor(new_data);
       logger.info("debug for p");
       logger.info(Arrays.toString(preference_result));
-      this.preference_result=learner.preference_predictor(new_data);
     }
   }
 
@@ -169,11 +169,12 @@ public class MachineLearningImpl implements MachineLearningDecoder, MachineLearn
         for (int i=0; i< activites.length;i++){
           if(activites[i].equals(activityStringValue)){
             activityItem.setStateFromString(String.valueOf(i));
+            ItemPreference classifiedActivity = new ItemPreferenceDouble(activityItem,i);
+            return new MachineLearningResultImpl(classifiedActivity);
           }
+          logger.debug("Classify would return activity: {}", activityStringValue);
         }
-        logger.debug("Classify would return activity: {}", activityStringValue);
-        ItemPreference classifiedActivity = new ItemPreferenceDouble(activityItem, 0);
-        return new MachineLearningResultImpl(classifiedActivity);
+
       case GOAL_PREFERENCE_BRIGHTNESS_IRIS:
 //        String[] preference = {result[1], result[2]};
         // FIXME what is the meaning of result[1] and result[2]
diff --git a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java
index 7aa90f90c0c917d566661b648bf494b6116c6b1a..f6de59fbc7683e254b5108f0202fbfaa36f7ae99 100644
--- a/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java
+++ b/feedbackloop.learner_backup/src/main/java/de/tudresden/inf/st/eraser/feedbackloop.learner_backup/Main.java
@@ -13,11 +13,12 @@ public class Main {
      * */
     //ReaderCSV reader = new ReaderCSV("datasets/backup/activity_data.csv","preference");
     //reader.updater();
-    Learner learner=new Learner();
+    //Learner learner=new Learner();
     //learner.preference_train("../datasets/backup/preference_data.csv");
-    learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv");
+    //learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv");
+    activity_validation_learner();
     //0.5793968,1.2126632,-4.6244006,-0.030779,0.801127,0.590978,-3.1411927,-0.93373865,-0.31124622,-0.35992432,0.33746338,-0.79608154,dancing
-    String[] new_data = new String[12];
+    /*String[] new_data = new String[12];
     new_data[0]="0.5793968";
     new_data[1]="1.2126632";
     new_data[2]="-4.6244006";
@@ -123,45 +124,53 @@ public class Main {
     //System.out.println("perference is: "+ result[1]);**/
   }
   public static void activity_validation_learner(){
-    ReadCSV csv = new ReadCSV("datasets/backup/activity_data.csv", false, CSVFormat.DECIMAL_POINT);
-    String[] line = new String[12];
-    Learner learner=new Learner();
+    ReadCSV csv = new ReadCSV("datasets/backup/activity_data.csv", true, CSVFormat.DECIMAL_POINT);
+    String[] line = new String[11];
+    Learner learner = new Learner();
+    learner.train("datasets/backup/activity_data.csv","datasets/backup/preference_data.csv");
     int wrong=0;
     int right=0;
+    int i =0;
     while(csv.next()) {
-      StringBuilder result = new StringBuilder();
-      line[0] = csv.get(0);
-      line[1] = csv.get(1);
-      line[2] = csv.get(2);
-      line[3] = csv.get(3);
-      line[4] = csv.get(4);
-      line[5] = csv.get(5);
-      line[6] = csv.get(6);
-      line[7] = csv.get(7);
-      line[8] = csv.get(8);
-      line[9] = csv.get(9);
-      line[10] = csv.get(10);
-      line[11] = csv.get(11);
-      String correct = csv.get(12);
-      String irisChosen = learner.predictor(line)[0];
-      result.append(Arrays.toString(line));
-      result.append(" -> predicted: ");
-      result.append(irisChosen);
-      result.append("(correct: ");
-      result.append(correct);
-      result.append(")");
-      if (irisChosen.equals(correct)!=true){
-        System.out.println(correct);
-        System.out.println(irisChosen);
-        ++wrong;
-      }else{
-        ++right;
+      if(i==0){
+        i++;
+
+      }else {
+        StringBuilder result = new StringBuilder();
+        line[0] = csv.get(0);
+        line[1] = csv.get(1);
+        line[2] = csv.get(2);
+        line[3] = csv.get(3);
+        line[4] = csv.get(4);
+        line[5] = csv.get(5);
+        line[6] = csv.get(6);
+        line[7] = csv.get(7);
+        line[8] = csv.get(8);
+        line[9] = csv.get(9);
+        line[10] = csv.get(10);
+        //line[11] = csv.get(11);
+        String correct = csv.get(11);
+        String irisChosen = learner.predictor(line)[0];
+        result.append(Arrays.toString(line));
+        result.append(" -> predicted: ");
+        result.append(irisChosen);
+        result.append("(correct: ");
+        result.append(correct);
+        result.append(")");
+        if (irisChosen.equals(correct)!=true){
+          System.out.println(correct);
+          System.out.println(irisChosen);
+          ++wrong;
+        }else{
+          ++right;
+        }
+        System.out.println(result.toString());
       }
-      System.out.println(result.toString());
-    }
-    System.out.println("wrong number"+wrong);
-    System.out.println("right number"+right);
-    //double validation = (double(right))/(double(wrong+right));
-    //System.out.println("%.2f"+validation);
+      System.out.println("wrong number"+wrong);
+      System.out.println("right number"+right);}
+
+
+      //double validation = (double(right))/(double(wrong+right));
+      //System.out.println("%.2f"+validation);
   }
 }