diff --git a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
index 68eb313401323f94d237374bf5aacbbfb4971a8f..6385d89d5e1309cda7ea8b28aa5ab0b33f19c2f6 100644
--- a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
+++ b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
@@ -78,7 +78,11 @@ public class AlgorithmsAPI {
 
         LinkedList<AlgorithmDTO> algorithms = new LinkedList<>();
         if (exaremeAlgorithms != null) {
-            algorithms.addAll(exaremeAlgorithms);
+            //algorithms.addAll(exaremeAlgorithms);
+            exaremeAlgorithms.forEach(algorithmDTO -> {
+                if(algorithmDTO.getName().equals("LOGISTIC_REGRESSION"))
+                    algorithms.add(algorithmDTO);
+            });
         } else {
             logger.LogUserAction("Getting exareme algorithms failed and returned null");
         }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
index 216140ba22f24332a862605404e94b84f5cf113c..6d70c021567ddf258f2dc4e716cb030f27949518 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
@@ -98,7 +98,7 @@ public class AlgorithmDTO {
 
     @Getter
     @Setter
-    public static class Filters
+    public static class Filter
     {
         @SerializedName("condition")
         private String condition;
@@ -109,7 +109,7 @@ public class AlgorithmDTO {
         @SerializedName("valid")
         private boolean valid;
 
-        public Filters(String condition, List<Object> rules, boolean valid) {
+        public Filter(String condition, List<Object> rules, boolean valid) {
             this.condition = condition;
             this.rules = rules;
             this.valid = valid;
@@ -121,36 +121,42 @@ public class AlgorithmDTO {
     {
         MIPEngineBody mipEngineBody = new MIPEngineBody();
         MIPEngineBody.InputData inputData = new MIPEngineBody.InputData();
+        Hashtable<String, Object> mipEngineParameters = new Hashtable<>();
 
         List<Object> rules = new ArrayList<>();
         this.parameters.forEach(parameter -> {
+
             if(parameter.getName().equals("x")) {
+                System.out.println("x");
                 List<String> x = Arrays.asList(parameter.getValue().split(","));
                 x.forEach(column -> rules.add(new Rule(column, parameter.getColumnValuesSQLType(), "is_not_null", null)));
                 inputData.setX(x);
             }
-            if(parameter.getName().equals("y")) {
+            else if(parameter.getName().equals("y")) {
                 List<String> y = Arrays.asList(parameter.getValue().split(","));
                 y.forEach(column -> rules.add(new Rule(column, parameter.getColumnValuesSQLType(), "is_not_null", null)));
                 inputData.setY(y);
             }
-            if(parameter.getName().equals("dataset")){
+            else if(parameter.getName().equals("dataset")){
                 List<String> datasets = Arrays.asList(parameter.getValue().split(","));
                 rules.add(new Rule("dataset","string", "in", datasets));
                 inputData.setDatasets(datasets);
             }
-            String pathology;
-            if(parameter.getName().equals("pathology"))
+            else if(parameter.getName().equals("pathology"))
                 inputData.setPathology(parameter.getValue());
 
-            if(parameter.getName().equals("filter")){
+            else if(parameter.getName().equals("filter")){
                 if (parameter.getValue() != "")
-                    rules.add(JsonConverters.convertJsonStringToObject(parameter.getValue(), Filters.class));
+                    rules.add(JsonConverters.convertJsonStringToObject(parameter.getValue(), Filter.class));
+            }
+            else{
+                mipEngineParameters.put(parameter.getName(), Arrays.asList(parameter.getValue().split(",")));
             }
         });
-        Filters filters = new Filters("AND", rules, true);
-        inputData.setFilters(filters);
+        Filter filter = new Filter("AND", rules, true);
+        inputData.setFilters(filter);
         mipEngineBody.setInputdata(inputData);
+        mipEngineBody.setParameters(mipEngineParameters);
         return mipEngineBody;
     }
 }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
index f253bab6d76e156a34a59947108bb0d8866b8662..d391492d7615e6ef5892fa78c5a83227207d4afb 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
@@ -1,6 +1,7 @@
 package eu.hbp.mip.models.DTOs;
 
 import com.google.gson.annotations.SerializedName;
+import eu.hbp.mip.utils.JsonConverters;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -26,7 +27,7 @@ public class MIPEngineAlgorithmDTO {
     private String type;
 
     @SerializedName("parameters")
-    private InputDataParamDTO parameters;
+    private Hashtable<String, ParameterDTO> parameters;
 
     @SerializedName("crossvalidation")
     private String crossvalidation;
@@ -34,6 +35,54 @@ public class MIPEngineAlgorithmDTO {
     @SerializedName("inputdata")
     private Hashtable<String, InputDataParamDTO> inputdata;
 
+    @Getter
+    @Setter
+    public static class ParameterDTO {
+
+        @SerializedName("label")
+        private String label;
+
+        @SerializedName("notblank")
+        private String notblank;
+
+        @SerializedName("multiple")
+        private String multiple;
+
+        @SerializedName("types")
+        private String type;
+
+        @SerializedName("desc")
+        private String desc;
+
+        @SerializedName("min")
+        private String min;
+
+        @SerializedName("max")
+        private String max;
+
+        @SerializedName("default_value")
+        private String default_value;
+
+        @SerializedName("enums")
+        private List<String> enums;
+
+        public AlgorithmDTO.AlgorithmParamDTO convertToAlgorithmParamDTO(String name) throws Exception {
+            AlgorithmDTO.AlgorithmParamDTO algorithmParamDTO = new AlgorithmDTO.AlgorithmParamDTO();
+            algorithmParamDTO.setName(name);
+            algorithmParamDTO.setDesc(this.desc);
+            algorithmParamDTO.setValueType(this.type);
+            algorithmParamDTO.setType("other");
+            algorithmParamDTO.setDefaultValue(this.default_value);
+            algorithmParamDTO.setValueNotBlank(this.notblank);
+            algorithmParamDTO.setLabel(this.label);
+            algorithmParamDTO.setValueEnumerations(this.enums);
+            algorithmParamDTO.setValueMultiple(this.multiple);
+            algorithmParamDTO.setValueMin(this.min);
+            algorithmParamDTO.setValueMax(this.max);
+            return algorithmParamDTO;
+        }
+    }
+
     @Getter
     @Setter
     public static class InputDataParamDTO {
@@ -63,16 +112,13 @@ public class MIPEngineAlgorithmDTO {
             AlgorithmDTO.AlgorithmParamDTO algorithmParamDTO = new AlgorithmDTO.AlgorithmParamDTO();
             algorithmParamDTO.setName(name);
             algorithmParamDTO.setDesc(this.desc);
-            if(name.equals("datasets") || name.equals("filters") || name.equals("pathology")){
-                algorithmParamDTO.setValueType(this.types.get(0));
-                if(name.equals("filters")){
-                    algorithmParamDTO.setName("filter");
-                    algorithmParamDTO.setType("filter");
-                }
+
+            if(name.equals("datasets") || name.equals("filter") || name.equals("pathology")){
                 if(name.equals("datasets")){
                     algorithmParamDTO.setName("dataset");
-                    algorithmParamDTO.setType("dataset");
                 }
+                algorithmParamDTO.setValueType(this.types.get(0));
+                algorithmParamDTO.setType(algorithmParamDTO.getName());
             }
             else{
                 algorithmParamDTO.setType("column");
@@ -84,7 +130,8 @@ public class MIPEngineAlgorithmDTO {
             algorithmParamDTO.setValueMultiple(this.multiple);
             String[] hidden = {"x","y","dataset", "filter","pathology","centers","formula"};
             algorithmParamDTO.setLabel(Arrays.asList(hidden).contains(algorithmParamDTO.getName()) ? algorithmParamDTO.getName():this.label);
-
+            System.out.println("-------------------------------------------------------->");
+            System.out.println(JsonConverters.convertObjectToJsonString(algorithmParamDTO));
             return algorithmParamDTO;
         }
         private String getColumnValuesIsCategorical(List<String> stattypes) throws Exception {
@@ -120,6 +167,14 @@ public class MIPEngineAlgorithmDTO {
                 e.printStackTrace();
             }
         });
+        this.parameters.forEach((name, parameterDTO) -> {
+            try {
+                AlgorithmDTO.AlgorithmParamDTO parameter = parameterDTO.convertToAlgorithmParamDTO(name);
+                parameters.add(parameter);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
         algorithmDTO.setParameters(parameters);
         return algorithmDTO;
     }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
index b8b2f957a166467890296f35baa5e55b89f2b184..1572eb7daed817717bfff4c03d1a8524e2e498eb 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
@@ -4,6 +4,7 @@ import com.google.gson.annotations.SerializedName;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Hashtable;
 import java.util.List;
 
 @Getter
@@ -12,7 +13,7 @@ public class MIPEngineBody {
     @SerializedName("inputdata")
     private InputData inputdata;
     @SerializedName("parameters")
-    private Object parameters;
+    private Hashtable<String, Object> parameters;
 
     @Getter
     @Setter
@@ -22,7 +23,7 @@ public class MIPEngineBody {
         @SerializedName("datasets")
         private List<String> datasets;
         @SerializedName("filters")
-        private AlgorithmDTO.Filters filters;
+        private AlgorithmDTO.Filter filters;
         @SerializedName("x")
         private List<String> x;
         @SerializedName("y")
diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java
index bc7f4dd11343e26bb888c28e5d987ec3916632ac..a48beb3aa9a975d71ad3c1bbeb0dad03cc191ebc 100644
--- a/src/main/java/eu/hbp/mip/services/ExperimentService.java
+++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java
@@ -27,6 +27,9 @@ import eu.hbp.mip.utils.Exceptions.*;
 import eu.hbp.mip.utils.HTTPUtil;
 import eu.hbp.mip.utils.JsonConverters;
 import eu.hbp.mip.utils.Logger;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.springframework.beans.factory.annotation.Value;
@@ -386,7 +389,7 @@ public class ExperimentService {
                         .append("\n"));
         logger.LogUserAction("Executing " + algorithmName + parametersLogMessage);
     }
-    
+
     /**
      * The getDatasetFromExperimentParameters will retrieve the dataset from the experiment parameters
      *
@@ -508,19 +511,9 @@ public class ExperimentService {
     }
 
     private List<Object> formattingMIPEngienResult(String result) {
-        List<List<String>> resultJson = JsonConverters.convertJsonStringToObject(result, new ArrayList<ArrayList<String>>().getClass());
-        String schema_json = "{\"fields\":[{\"type\":\"string\",\"name\":\"node\"},{\"type\":\"number\",\"name\":\"row-id\"},{\"type\":\"number\",\"name\":\"alzheimerbroadcategory_bin\"}]}";
-        LinkedTreeMap<String,List<Object>> schema = JsonConverters.convertJsonStringToObject(schema_json, new LinkedTreeMap<String,ArrayList<Object>>().getClass());
-
-
-        LinkedTreeMap<String,Object> data_data = new LinkedTreeMap<>();
-        data_data.put("data", resultJson);
-        data_data.put("profile", "tabular-data-resource");
-        data_data.put("schema", schema);
-        data_data.put("name","Logistic Regression Stuff");
-
+        MIPVisualization mipVisualization = JsonConverters.convertJsonStringToObject(result, MIPVisualization.class);
         LinkedTreeMap<String,Object> data = new LinkedTreeMap<>();
-        data.put("data", data_data);
+        data.put("data", mipVisualization.convertToVisualization());
         data.put("type", "application/vnd.dataresource+json");
         List<Object> finalObject = new ArrayList<>();
         finalObject.add(data);
@@ -601,6 +594,7 @@ public class ExperimentService {
         } catch (Exception e) {
             throw new InternalServerError("Error occurred : " + e.getMessage());
         }
+        System.out.println(results);
         // Results are stored in the experiment object
         List<Object> resultDTOS = formattingMIPEngienResult(String.valueOf(results));
 
@@ -1045,6 +1039,8 @@ public class ExperimentService {
         return returnError;
     }
 
+    @Getter
+    @Setter
     static class ExperimentResult {
         private final int code;
         private final List<Object> results;
@@ -1053,13 +1049,43 @@ public class ExperimentService {
             this.code = code;
             this.results = results;
         }
+    }
 
-        public int getCode() {
-            return code;
+    @Getter
+    @Setter
+    @AllArgsConstructor
+    static class Visualization {
+        private final String title;
+        private final String profile;
+        private final List<Field> columns;
+        private final List<List<Object>> data;
+    }
+
+    @Getter
+    @Setter
+    @AllArgsConstructor
+    static class MIPVisualization {
+        private final String title;
+        private final List<String> columns;
+        private final List<List<Object>> data;
+
+        public Visualization convertToVisualization() {
+            ArrayList<Field> fields = new ArrayList<>();
+            this.columns.forEach(header_name -> fields.add(new Field(header_name, "number")));
+            return new Visualization(this.title, "tabular-data-resource", fields, this.data);
         }
 
-        public List<Object> getResults() {
-            return results;
+    }
+
+    @Getter
+    @Setter
+    static class Field {
+        private final String name;
+        private final String type;
+
+        Field(String name, String type) {
+            this.name = name;
+            this.type = type;
         }
     }
 }