diff --git a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
index 6385d89d5e1309cda7ea8b28aa5ab0b33f19c2f6..08132000d15bd1f033f9adf625aa24af01c2c542 100644
--- a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
+++ b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
@@ -8,7 +8,7 @@ import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import eu.hbp.mip.controllers.galaxy.retrofit.RetroFitGalaxyClients;
 import eu.hbp.mip.controllers.galaxy.retrofit.RetrofitClientInstance;
-import eu.hbp.mip.models.DTOs.AlgorithmDTO;
+import eu.hbp.mip.models.DTOs.ExaremeAlgorithmDTO;
 import eu.hbp.mip.models.DTOs.MIPEngineAlgorithmDTO;
 import eu.hbp.mip.models.galaxy.WorkflowDTO;
 import eu.hbp.mip.services.ActiveUserService;
@@ -65,24 +65,20 @@ public class AlgorithmsAPI {
 
     @ApiOperation(value = "List all algorithms", response = String.class)
     @RequestMapping(method = RequestMethod.GET)
-    public ResponseEntity<List<AlgorithmDTO>> getAlgorithms() {
+    public ResponseEntity<List<ExaremeAlgorithmDTO>> getAlgorithms() {
         Logger logger = new Logger(activeUserService.getActiveUser().getUsername(), "(GET) /algorithms");
 
         logger.LogUserAction("Executing...");
-        LinkedList<AlgorithmDTO> mipengineAlgorithms = getMIPEngineAlgorithms(logger);
+        LinkedList<ExaremeAlgorithmDTO> mipengineAlgorithms = getMIPEngineAlgorithms(logger);
         logger.LogUserAction("Loaded " + mipengineAlgorithms.size() + " mipengine algorithms");
-        LinkedList<AlgorithmDTO> exaremeAlgorithms = getExaremeAlgorithms(logger);
+        LinkedList<ExaremeAlgorithmDTO> exaremeAlgorithms = getExaremeAlgorithms(logger);
         logger.LogUserAction("Loaded " + exaremeAlgorithms.size() + " exareme algorithms");
-        LinkedList<AlgorithmDTO> galaxyAlgorithms = getGalaxyWorkflows(logger);
+        LinkedList<ExaremeAlgorithmDTO> galaxyAlgorithms = getGalaxyWorkflows(logger);
         logger.LogUserAction("Loaded " + galaxyAlgorithms.size() + " galaxy algorithms");
 
-        LinkedList<AlgorithmDTO> algorithms = new LinkedList<>();
+        LinkedList<ExaremeAlgorithmDTO> algorithms = new LinkedList<>();
         if (exaremeAlgorithms != null) {
-            //algorithms.addAll(exaremeAlgorithms);
-            exaremeAlgorithms.forEach(algorithmDTO -> {
-                if(algorithmDTO.getName().equals("LOGISTIC_REGRESSION"))
-                    algorithms.add(algorithmDTO);
-            });
+            algorithms.addAll(exaremeAlgorithms);
         } else {
             logger.LogUserAction("Getting exareme algorithms failed and returned null");
         }
@@ -92,7 +88,7 @@ public class AlgorithmsAPI {
             logger.LogUserAction("Getting mipengine algorithms failed and returned null");
         }
         if (galaxyAlgorithms != null) {
-//            algorithms.addAll(galaxyAlgorithms);
+            algorithms.addAll(galaxyAlgorithms);
         } else {
             logger.LogUserAction("Getting galaxy workflows failed and returned null");
         }
@@ -105,8 +101,8 @@ public class AlgorithmsAPI {
         }
 
         // Remove any disabled algorithm
-        LinkedList<AlgorithmDTO> allowedAlgorithms = new LinkedList<>();
-        for (AlgorithmDTO algorithm : algorithms) {
+        LinkedList<ExaremeAlgorithmDTO> allowedAlgorithms = new LinkedList<>();
+        for (ExaremeAlgorithmDTO algorithm : algorithms) {
             if (!disabledAlgorithms.contains(algorithm.getName())) {
                 allowedAlgorithms.add(algorithm);
             }
@@ -120,15 +116,15 @@ public class AlgorithmsAPI {
      *
      * @return a list of AlgorithmDTOs or null if something fails
      */
-    public LinkedList<AlgorithmDTO> getExaremeAlgorithms(Logger logger) {
-        LinkedList<AlgorithmDTO> algorithms;
+    public LinkedList<ExaremeAlgorithmDTO> getExaremeAlgorithms(Logger logger) {
+        LinkedList<ExaremeAlgorithmDTO> algorithms;
         // Get exareme algorithms
         try {
             StringBuilder response = new StringBuilder();
             HTTPUtil.sendGet(exaremeAlgorithmsUrl, response);
             algorithms = gson.fromJson(
                     response.toString(),
-                    new TypeToken<LinkedList<AlgorithmDTO>>() {
+                    new TypeToken<LinkedList<ExaremeAlgorithmDTO>>() {
                     }.getType()
             );
         } catch (IOException e) {
@@ -145,7 +141,7 @@ public class AlgorithmsAPI {
      *
      * @return a list of AlgorithmDTOs or null if something fails
      */
-    public LinkedList<AlgorithmDTO> getMIPEngineAlgorithms(Logger logger) {
+    public LinkedList<ExaremeAlgorithmDTO> getMIPEngineAlgorithms(Logger logger) {
         LinkedList<MIPEngineAlgorithmDTO> mipEngineAlgorithms;
         // Get MIPEngine algorithms
         try {
@@ -163,8 +159,7 @@ public class AlgorithmsAPI {
             return null;
         }
 
-
-        LinkedList<AlgorithmDTO> algorithms = new LinkedList<>();
+        LinkedList<ExaremeAlgorithmDTO> algorithms = new LinkedList<>();
         mipEngineAlgorithms.forEach(mipEngineAlgorithm -> algorithms.add(mipEngineAlgorithm.convertToAlgorithmDTO()));
 
         logger.LogUserAction("Completed, returned " + algorithms.size() + " algorithms.");
@@ -176,7 +171,7 @@ public class AlgorithmsAPI {
      *
      * @return a list of AlgorithmDTOs or null if something fails
      */
-    public LinkedList<AlgorithmDTO> getGalaxyWorkflows(Logger logger) {
+    public LinkedList<ExaremeAlgorithmDTO> getGalaxyWorkflows(Logger logger) {
         List<Workflow> workflowList;
         try {
             // Get all the workflows with the galaxy client
@@ -215,7 +210,7 @@ public class AlgorithmsAPI {
         logger.LogUserAction("Workflows fetched: " + workflows.size());
 
         // Convert the workflows to algorithms
-        LinkedList<AlgorithmDTO> algorithms = new LinkedList<>();
+        LinkedList<ExaremeAlgorithmDTO> algorithms = new LinkedList<>();
         for (WorkflowDTO workflow : workflows) {
             logger.LogUserAction("Converting workflow: " + workflow);
 
diff --git a/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java b/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
index 585bd8bd6694275d341fe1aea19f82f3105d97ea..4e206fae0d3605e6b0ffcaab5fded486eef25d45 100644
--- a/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
+++ b/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
@@ -3,7 +3,7 @@ package eu.hbp.mip.models.DAOs;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.google.gson.Gson;
 import com.google.gson.annotations.Expose;
-import eu.hbp.mip.models.DTOs.AlgorithmDTO;
+import eu.hbp.mip.models.DTOs.ExaremeAlgorithmDTO;
 import eu.hbp.mip.models.DTOs.ExperimentDTO;
 import eu.hbp.mip.utils.JsonConverters;
 import io.swagger.annotations.ApiModel;
@@ -98,7 +98,7 @@ public class ExperimentDAO {
     public ExperimentDTO convertToDTO(boolean includeResult)
     {
         ExperimentDTO experimentDTO = new ExperimentDTO();
-        experimentDTO.setAlgorithm(JsonConverters.convertJsonStringToObject(this.algorithm, AlgorithmDTO.class));
+        experimentDTO.setAlgorithm(JsonConverters.convertJsonStringToObject(this.algorithm, ExaremeAlgorithmDTO.class));
         experimentDTO.setCreated(this.created);
         experimentDTO.setUpdated(this.updated);
         experimentDTO.setFinished(this.finished);
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
deleted file mode 100644
index 6d70c021567ddf258f2dc4e716cb030f27949518..0000000000000000000000000000000000000000
--- a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package eu.hbp.mip.models.DTOs;
-
-import com.google.gson.annotations.SerializedName;
-import eu.hbp.mip.utils.JsonConverters;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.*;
-
-@Getter
-@Setter
-public class AlgorithmDTO {
-
-    @SerializedName("name")
-    private String name;
-
-    @SerializedName("desc")
-    private String desc;
-
-    @SerializedName("label")
-    private String label;
-
-    @SerializedName("type")
-    private String type;
-
-    @SerializedName("parameters")
-    private List<AlgorithmParamDTO> parameters;
-
-    @Getter
-    @Setter
-    public static class AlgorithmParamDTO {
-        @SerializedName("name")
-        private String name;
-
-        @SerializedName("desc")
-        private String desc;
-
-        @SerializedName("label")
-        private String label;
-
-        @SerializedName("type")
-        private String type;
-
-        @SerializedName("columnValuesSQLType")
-        private String columnValuesSQLType;
-
-        @SerializedName("columnValuesIsCategorical")
-        private String columnValuesIsCategorical;
-
-        @SerializedName("value")
-        private String value;
-
-        @SerializedName("defaultValue")
-        private String defaultValue;
-
-        @SerializedName("valueType")
-        private String valueType;
-
-        @SerializedName("valueNotBlank")
-        private String valueNotBlank;
-
-        @SerializedName("valueMultiple")
-        private String valueMultiple;
-
-        @SerializedName("valueMin")
-        private String valueMin;
-
-        @SerializedName("valueMax")
-        private String valueMax;
-
-        @SerializedName("valueEnumerations")
-        private List<String> valueEnumerations;
-    }
-
-    @Getter
-    @Setter
-    public static class Rule
-    {
-        @SerializedName("id")
-        private String id;
-
-        @SerializedName("type")
-        private String type;
-
-        @SerializedName("operator")
-        private String operator;
-
-        @SerializedName("value")
-        private Object value;
-
-        public Rule(String id, String type, String operator, Object value) {
-            this.id = id;
-            this.type = type;
-            this.operator = operator;
-            this.value = value;
-        }
-    }
-
-    @Getter
-    @Setter
-    public static class Filter
-    {
-        @SerializedName("condition")
-        private String condition;
-
-        @SerializedName("rules")
-        private List<Object> rules;
-
-        @SerializedName("valid")
-        private boolean valid;
-
-        public Filter(String condition, List<Object> rules, boolean valid) {
-            this.condition = condition;
-            this.rules = rules;
-            this.valid = valid;
-        }
-    }
-
-
-    public MIPEngineBody convertToMIPEngineBody()
-    {
-        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);
-            }
-            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);
-            }
-            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);
-            }
-            else if(parameter.getName().equals("pathology"))
-                inputData.setPathology(parameter.getValue());
-
-            else if(parameter.getName().equals("filter")){
-                if (parameter.getValue() != "")
-                    rules.add(JsonConverters.convertJsonStringToObject(parameter.getValue(), Filter.class));
-            }
-            else{
-                mipEngineParameters.put(parameter.getName(), Arrays.asList(parameter.getValue().split(",")));
-            }
-        });
-        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/ExaremeAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..b56e16bc7130ad30bc4c3e5739af17908419a4a5
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java
@@ -0,0 +1,89 @@
+package eu.hbp.mip.models.DTOs;
+
+import com.google.gson.annotations.SerializedName;
+import eu.hbp.mip.utils.JsonConverters;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.*;
+
+@Getter
+@Setter
+public class ExaremeAlgorithmDTO {
+
+    @SerializedName("name")
+    private String name;
+
+    @SerializedName("desc")
+    private String desc;
+
+    @SerializedName("label")
+    private String label;
+
+    @SerializedName("type")
+    private String type;
+
+    @SerializedName("parameters")
+    private List<ExaremeAlgorithmRequestDTO> parameters;
+
+
+    @Getter
+    @Setter
+    @AllArgsConstructor
+    class Rule
+    {
+        @SerializedName("id")
+        private String id;
+
+        @SerializedName("type")
+        private String type;
+
+        @SerializedName("operator")
+        private String operator;
+
+        @SerializedName("value")
+        private Object value;
+    }
+    public MIPEngineExperimentDTO convertToMIPEngineBody()
+    {
+        MIPEngineExperimentDTO mipEngineExperimentDTO = new MIPEngineExperimentDTO();
+        MIPEngineExperimentDTO.InputData inputData = new MIPEngineExperimentDTO.InputData();
+        Hashtable<String, Object> mipEngineParameters = new Hashtable<>();
+
+        List<Object> rules = new ArrayList<>();
+        this.parameters.forEach(parameter -> {
+
+            if(parameter.getName().equals("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);
+            }
+            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);
+            }
+            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);
+            }
+            else if(parameter.getName().equals("pathology"))
+                inputData.setPathology(parameter.getValue());
+
+            else if(parameter.getName().equals("filter")){
+                if (parameter.getValue() != "")
+                    rules.add(JsonConverters.convertJsonStringToObject(parameter.getValue(), MIPEngineExperimentDTO.Filter.class));
+            }
+            else{
+                mipEngineParameters.put(parameter.getName(), Arrays.asList(parameter.getValue().split(",")));
+            }
+        });
+        MIPEngineExperimentDTO.Filter filter = new MIPEngineExperimentDTO.Filter("AND", rules, true);
+        inputData.setFilters(filter);
+        mipEngineExperimentDTO.setInputdata(inputData);
+        mipEngineExperimentDTO.setParameters(mipEngineParameters);
+        return mipEngineExperimentDTO;
+    }
+}
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..84e275ec8663d7e90e6420f77a33ff899fe5773d
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestDTO.java
@@ -0,0 +1,53 @@
+package eu.hbp.mip.models.DTOs;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class ExaremeAlgorithmRequestDTO {
+    @SerializedName("name")
+    private String name;
+
+    @SerializedName("desc")
+    private String desc;
+
+    @SerializedName("label")
+    private String label;
+
+    @SerializedName("type")
+    private String type;
+
+    @SerializedName("columnValuesSQLType")
+    private String columnValuesSQLType;
+
+    @SerializedName("columnValuesIsCategorical")
+    private String columnValuesIsCategorical;
+
+    @SerializedName("value")
+    private String value;
+
+    @SerializedName("defaultValue")
+    private String defaultValue;
+
+    @SerializedName("valueType")
+    private String valueType;
+
+    @SerializedName("valueNotBlank")
+    private String valueNotBlank;
+
+    @SerializedName("valueMultiple")
+    private String valueMultiple;
+
+    @SerializedName("valueMin")
+    private String valueMin;
+
+    @SerializedName("valueMax")
+    private String valueMax;
+
+    @SerializedName("valueEnumerations")
+    private List<String> valueEnumerations;
+}
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmResultDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmResultDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca556bb7341c838271c03cd1d75249d2fba59f37
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmResultDTO.java
@@ -0,0 +1,17 @@
+package eu.hbp.mip.models.DTOs;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class ExaremeAlgorithmResultDTO {
+    private int code;
+    private List<Object> results;
+}
+
+
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
index e64c6f75e7d7a4d7aafa8ba93d38f9d3edf6bf19..765c20144a3a376124d717980acff6dd8991543a 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
@@ -22,10 +22,12 @@ public class ExperimentDTO {
     private Date finished;
     private Boolean shared;
     private Boolean viewed;
+    // Result is a list of objects because there is a limitation that java has in types.
+    // Exareme has result in the type of a List<HashMap<String, Object>>
+    // Galaxy has result in the type of a List<HashMap<String, List<Object>>>
+    //And there is no generic type that describes either an object or a list of objects
     private List<Object> result;
     private ExperimentDAO.Status status;
-    private AlgorithmDTO algorithm;
+    private ExaremeAlgorithmDTO algorithm;
 
-    public ExperimentDTO() {
-    }
 }
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 d391492d7615e6ef5892fa78c5a83227207d4afb..ada09db3bc611bd273b59109a64a450db404d567 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
@@ -33,7 +33,7 @@ public class MIPEngineAlgorithmDTO {
     private String crossvalidation;
 
     @SerializedName("inputdata")
-    private Hashtable<String, InputDataParamDTO> inputdata;
+    private InputdataDTO inputdata;
 
     @Getter
     @Setter
@@ -66,26 +66,55 @@ public class MIPEngineAlgorithmDTO {
         @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;
+        public ExaremeAlgorithmRequestDTO convertToexaremeAlgorithmRequestDTO(String name) throws Exception {
+            ExaremeAlgorithmRequestDTO exaremeAlgorithmRequestDTO = new ExaremeAlgorithmRequestDTO();
+            exaremeAlgorithmRequestDTO.setName(name);
+            exaremeAlgorithmRequestDTO.setDesc(this.desc);
+            exaremeAlgorithmRequestDTO.setValueType(this.type);
+            exaremeAlgorithmRequestDTO.setType("other");
+            exaremeAlgorithmRequestDTO.setDefaultValue(this.default_value);
+            exaremeAlgorithmRequestDTO.setValueNotBlank(this.notblank);
+            exaremeAlgorithmRequestDTO.setLabel(this.label);
+            exaremeAlgorithmRequestDTO.setValueEnumerations(this.enums);
+            exaremeAlgorithmRequestDTO.setValueMultiple(this.multiple);
+            exaremeAlgorithmRequestDTO.setValueMin(this.min);
+            exaremeAlgorithmRequestDTO.setValueMax(this.max);
+            return exaremeAlgorithmRequestDTO;
         }
     }
 
     @Getter
     @Setter
-    public static class InputDataParamDTO {
+    public static class InputdataDTO {
+        @SerializedName("x")
+        private InputDataDetailDTO x;
+
+        @SerializedName("y")
+        private InputDataDetailDTO y;
+
+        @SerializedName("pathology")
+        private InputDataDetailDTO pathology;
+
+        @SerializedName("datasets")
+        private InputDataDetailDTO datasets;
+
+        @SerializedName("filter")
+        private InputDataDetailDTO filter;
+
+        public List<ExaremeAlgorithmRequestDTO> convertToAlgorithmRequestDTOs() throws Exception {
+            List<ExaremeAlgorithmRequestDTO> exaremeAlgorithmRequestDTOS = new ArrayList<>();
+            exaremeAlgorithmRequestDTOS.add(this.x.convertToExaremeAlgorithmRequestDTO("x"));
+            exaremeAlgorithmRequestDTOS.add(this.y.convertToExaremeAlgorithmRequestDTO("y"));
+            exaremeAlgorithmRequestDTOS.add(this.x.convertToExaremeAlgorithmRequestDTO("pathology"));
+            exaremeAlgorithmRequestDTOS.add(this.datasets.convertToExaremeAlgorithmRequestDTO("dataset"));
+            exaremeAlgorithmRequestDTOS.add(this.filter.convertToExaremeAlgorithmRequestDTO("filter"));
+            return exaremeAlgorithmRequestDTOS;
+        }
+    }
+
+    @Getter
+    @Setter
+    public static class InputDataDetailDTO {
 
         @SerializedName("stattypes")
         private List<String> stattypes;
@@ -108,32 +137,27 @@ public class MIPEngineAlgorithmDTO {
         @SerializedName("desc")
         private String desc;
 
-        public AlgorithmDTO.AlgorithmParamDTO convertToAlgorithmParamDTO(String name) throws Exception {
-            AlgorithmDTO.AlgorithmParamDTO algorithmParamDTO = new AlgorithmDTO.AlgorithmParamDTO();
-            algorithmParamDTO.setName(name);
-            algorithmParamDTO.setDesc(this.desc);
-
-            if(name.equals("datasets") || name.equals("filter") || name.equals("pathology")){
-                if(name.equals("datasets")){
-                    algorithmParamDTO.setName("dataset");
-                }
-                algorithmParamDTO.setValueType(this.types.get(0));
-                algorithmParamDTO.setType(algorithmParamDTO.getName());
+        public ExaremeAlgorithmRequestDTO convertToExaremeAlgorithmRequestDTO(String name) throws Exception {
+            ExaremeAlgorithmRequestDTO exaremeAlgorithmRequestDTO = new ExaremeAlgorithmRequestDTO();
+            exaremeAlgorithmRequestDTO.setName(name);
+            exaremeAlgorithmRequestDTO.setDesc(this.desc);
+            exaremeAlgorithmRequestDTO.setValue("");
+            exaremeAlgorithmRequestDTO.setValueNotBlank(this.notblank);
+            exaremeAlgorithmRequestDTO.setValueMultiple(this.multiple);
+            String[] hidden = {"x","y","dataset", "filter","pathology","centers","formula"};
+            exaremeAlgorithmRequestDTO.setLabel(Arrays.asList(hidden).contains(exaremeAlgorithmRequestDTO.getName()) ? exaremeAlgorithmRequestDTO.getName():this.label);
+            if(name.equals("dataset") || name.equals("filter") || name.equals("pathology")){
+                exaremeAlgorithmRequestDTO.setValueType(this.types.get(0));
+                exaremeAlgorithmRequestDTO.setType(exaremeAlgorithmRequestDTO.getName());
             }
             else{
-                algorithmParamDTO.setType("column");
-                algorithmParamDTO.setColumnValuesSQLType(String.join(", ", this.types));
-                algorithmParamDTO.setColumnValuesIsCategorical(getColumnValuesIsCategorical(this.stattypes));
+                exaremeAlgorithmRequestDTO.setType("column");
+                exaremeAlgorithmRequestDTO.setColumnValuesSQLType(String.join(", ", this.types));
+                exaremeAlgorithmRequestDTO.setColumnValuesIsCategorical(getColumnValuesIsCategorical(this.stattypes));
             }
-            algorithmParamDTO.setValue("");
-            algorithmParamDTO.setValueNotBlank(this.notblank);
-            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;
+            return exaremeAlgorithmRequestDTO;
         }
+
         private String getColumnValuesIsCategorical(List<String> stattypes) throws Exception {
 
             if (stattypes.contains("nominal") && stattypes.contains("numerical")){
@@ -151,31 +175,28 @@ public class MIPEngineAlgorithmDTO {
         }
     }
 
-    public AlgorithmDTO convertToAlgorithmDTO()
+    public ExaremeAlgorithmDTO convertToAlgorithmDTO()
     {
-        AlgorithmDTO algorithmDTO = new AlgorithmDTO();
-        algorithmDTO.setName(this.name.toUpperCase());
-        algorithmDTO.setLabel(this.label);
-        algorithmDTO.setDesc(this.desc);
-        algorithmDTO.setType("mipengine");
-        List<AlgorithmDTO.AlgorithmParamDTO> parameters = new ArrayList<>();
-        this.inputdata.forEach((name, inputDataParamDTO) -> {
-            try {
-                AlgorithmDTO.AlgorithmParamDTO parameter = inputDataParamDTO.convertToAlgorithmParamDTO(name);
-                parameters.add(parameter);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        });
+        ExaremeAlgorithmDTO exaremeAlgorithmDTO = new ExaremeAlgorithmDTO();
+        exaremeAlgorithmDTO.setName(this.name.toUpperCase());
+        exaremeAlgorithmDTO.setLabel(this.label);
+        exaremeAlgorithmDTO.setDesc(this.desc);
+        exaremeAlgorithmDTO.setType("mipengine");
+        List<ExaremeAlgorithmRequestDTO> parameters = new ArrayList<>();
+        try {
+            parameters.addAll(this.inputdata.convertToAlgorithmRequestDTOs());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         this.parameters.forEach((name, parameterDTO) -> {
             try {
-                AlgorithmDTO.AlgorithmParamDTO parameter = parameterDTO.convertToAlgorithmParamDTO(name);
+                ExaremeAlgorithmRequestDTO parameter = parameterDTO.convertToexaremeAlgorithmRequestDTO(name);
                 parameters.add(parameter);
             } catch (Exception e) {
                 e.printStackTrace();
             }
         });
-        algorithmDTO.setParameters(parameters);
-        return algorithmDTO;
+        exaremeAlgorithmDTO.setParameters(parameters);
+        return exaremeAlgorithmDTO;
     }
 }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..087adb1f84072ba0188d0b8e300ba0d5ee535e20
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmResultDTO.java
@@ -0,0 +1,23 @@
+package eu.hbp.mip.models.DTOs;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class MIPEngineAlgorithmResultDTO {
+    private final String title;
+    private final List<MIPEngineTabularVisualizationDTO.Field> columns;
+    private final List<List<Object>> data;
+
+    public MIPEngineTabularVisualizationDTO convertToVisualization() {
+        HashMap<String, List<MIPEngineTabularVisualizationDTO.Field>> schema = new HashMap<>();
+        schema.put("fields", columns);
+        return new MIPEngineTabularVisualizationDTO(this.title, "tabular-data-resource", schema, this.data);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineExperimentDTO.java
similarity index 64%
rename from src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
rename to src/main/java/eu/hbp/mip/models/DTOs/MIPEngineExperimentDTO.java
index 1572eb7daed817717bfff4c03d1a8524e2e498eb..46b7df8982f1e8d3f50ac31517489acdf22a8a54 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineExperimentDTO.java
@@ -1,6 +1,7 @@
 package eu.hbp.mip.models.DTOs;
 
 import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -9,7 +10,7 @@ import java.util.List;
 
 @Getter
 @Setter
-public class MIPEngineBody {
+public class MIPEngineExperimentDTO {
     @SerializedName("inputdata")
     private InputData inputdata;
     @SerializedName("parameters")
@@ -23,10 +24,25 @@ public class MIPEngineBody {
         @SerializedName("datasets")
         private List<String> datasets;
         @SerializedName("filters")
-        private AlgorithmDTO.Filter filters;
+        private Filter filters;
         @SerializedName("x")
         private List<String> x;
         @SerializedName("y")
         private List<String> y;
     }
+
+    @Getter
+    @Setter
+    @AllArgsConstructor
+    public static class Filter
+    {
+        @SerializedName("condition")
+        private String condition;
+
+        @SerializedName("rules")
+        private List<Object> rules;
+
+        @SerializedName("valid")
+        private boolean valid;
+    }
 }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineTabularVisualizationDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineTabularVisualizationDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..7be3fad336e3bf4642f09c6985909d38fb2c4abc
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineTabularVisualizationDTO.java
@@ -0,0 +1,27 @@
+package eu.hbp.mip.models.DTOs;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.HashMap;
+import java.util.List;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class MIPEngineTabularVisualizationDTO {
+    private final String name;
+    private final String profile;
+    private final HashMap<String, List<Field>> schema;
+    private final List<List<Object>> data;
+
+    @Getter
+    @Setter
+    @AllArgsConstructor
+    public static class Field {
+        private final String name;
+        private final String type;
+    }
+}
+
diff --git a/src/main/java/eu/hbp/mip/models/galaxy/WorkflowDTO.java b/src/main/java/eu/hbp/mip/models/galaxy/WorkflowDTO.java
index 496ee2dfebf50324b1443774cc48edd4e32c2de0..edc18117d6660b490a2681cd54b671692ef140e3 100644
--- a/src/main/java/eu/hbp/mip/models/galaxy/WorkflowDTO.java
+++ b/src/main/java/eu/hbp/mip/models/galaxy/WorkflowDTO.java
@@ -2,7 +2,8 @@ package eu.hbp.mip.models.galaxy;
 
 import com.google.gson.Gson;
 import com.google.gson.annotations.SerializedName;
-import eu.hbp.mip.models.DTOs.AlgorithmDTO;
+import eu.hbp.mip.models.DTOs.ExaremeAlgorithmDTO;
+import eu.hbp.mip.models.DTOs.ExaremeAlgorithmRequestDTO;
 
 import java.util.*;
 
@@ -103,29 +104,29 @@ public class WorkflowDTO {
         }
     }
 
-    public AlgorithmDTO convertToAlgorithmDTO() {
+    public ExaremeAlgorithmDTO convertToAlgorithmDTO() {
 
-        AlgorithmDTO algorithmDTO = new AlgorithmDTO();
+        ExaremeAlgorithmDTO exaremeAlgorithmDTO = new ExaremeAlgorithmDTO();
 
         // Transfer workflow information
-        algorithmDTO.setName(id);
-        algorithmDTO.setDesc("");
-        algorithmDTO.setLabel(name);
-        algorithmDTO.setType("workflow");
+        exaremeAlgorithmDTO.setName(id);
+        exaremeAlgorithmDTO.setDesc("");
+        exaremeAlgorithmDTO.setLabel(name);
+        exaremeAlgorithmDTO.setType("workflow");
 
         // Transfer workflow parameters information
-        List<AlgorithmDTO.AlgorithmParamDTO> algorithmParams = new LinkedList<>();
+        List<ExaremeAlgorithmRequestDTO> algorithmParams = new LinkedList<>();
         Gson gson = new Gson();
         for (Map.Entry<String, WorkflowInputDTO> workflowInput : getInputs().entrySet()) {
 
             // Convert the annotation to algorithm Parameter
-            AlgorithmDTO.AlgorithmParamDTO algorithmParam;
+            ExaremeAlgorithmRequestDTO algorithmParam;
             if (steps.get(workflowInput.getKey()).getAnnotation() != null) {
                 algorithmParam = gson.fromJson(steps.get(workflowInput.getKey()).getAnnotation(),
-                        AlgorithmDTO.AlgorithmParamDTO.class);
+                        ExaremeAlgorithmRequestDTO.class);
             } else {
                 // If annotation is not provided, auto-fill some information
-                algorithmParam = new AlgorithmDTO.AlgorithmParamDTO();
+                algorithmParam = new ExaremeAlgorithmRequestDTO();
                 // When the constraints are not known, set the most relaxed constraints
                 algorithmParam.setDesc("");
                 algorithmParam.setValue("");
@@ -154,9 +155,9 @@ public class WorkflowDTO {
 
             algorithmParams.add(algorithmParam);
         }
-        algorithmDTO.setParameters(algorithmParams);
+        exaremeAlgorithmDTO.setParameters(algorithmParams);
 
-        return algorithmDTO;
+        return exaremeAlgorithmDTO;
     }
 
 }
diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java
index a48beb3aa9a975d71ad3c1bbeb0dad03cc191ebc..587fc7e63adc0a23a182e740028e4b31a1e66e02 100644
--- a/src/main/java/eu/hbp/mip/services/ExperimentService.java
+++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java
@@ -15,9 +15,7 @@ import eu.hbp.mip.controllers.galaxy.retrofit.RetroFitGalaxyClients;
 import eu.hbp.mip.controllers.galaxy.retrofit.RetrofitClientInstance;
 import eu.hbp.mip.models.DAOs.ExperimentDAO;
 import eu.hbp.mip.models.DAOs.UserDAO;
-import eu.hbp.mip.models.DTOs.AlgorithmDTO;
-import eu.hbp.mip.models.DTOs.ExperimentDTO;
-import eu.hbp.mip.models.DTOs.MIPEngineBody;
+import eu.hbp.mip.models.DTOs.*;
 import eu.hbp.mip.models.galaxy.GalaxyWorkflowResult;
 import eu.hbp.mip.models.galaxy.PostWorkflowToGalaxyDtoResponse;
 import eu.hbp.mip.repositories.ExperimentRepository;
@@ -27,9 +25,6 @@ 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;
@@ -236,12 +231,12 @@ public class ExperimentService {
         logger.LogUserAction("Completed, returning: " + experimentDTO);
 
         // Results are stored in the experiment object
-        ExperimentResult experimentResult = runExperiment(experimentDTO, logger);
+        ExaremeAlgorithmResultDTO exaremeAlgorithmResultDTO = runExperiment(experimentDTO, logger);
 
-        logger.LogUserAction("Experiment with uuid: " + experimentDTO.getUuid() + "gave response code: " + experimentResult.getCode() + " and result: " + experimentResult.getResults());
+        logger.LogUserAction("Experiment with uuid: " + experimentDTO.getUuid() + "gave response code: " + exaremeAlgorithmResultDTO.getCode() + " and result: " + exaremeAlgorithmResultDTO.getResults());
 
-        experimentDTO.setResult((experimentResult.getCode() >= 400) ? null : experimentResult.getResults());
-        experimentDTO.setStatus((experimentResult.getCode() >= 400) ? ExperimentDAO.Status.error : ExperimentDAO.Status.success);
+        experimentDTO.setResult((exaremeAlgorithmResultDTO.getCode() >= 400) ? null : exaremeAlgorithmResultDTO.getResults());
+        experimentDTO.setStatus((exaremeAlgorithmResultDTO.getCode() >= 400) ? ExperimentDAO.Status.error : ExperimentDAO.Status.success);
 
         return experimentDTO;
     }
@@ -400,7 +395,7 @@ public class ExperimentService {
     private String getDatasetFromExperimentParameters(ExperimentDTO experimentDTO, Logger logger) {
 
         String experimentDatasets = null;
-        for (AlgorithmDTO.AlgorithmParamDTO parameter : experimentDTO.getAlgorithm().getParameters()) {
+        for (ExaremeAlgorithmRequestDTO parameter : experimentDTO.getAlgorithm().getParameters()) {
             if (parameter.getLabel().equals("dataset")) {
                 experimentDatasets = parameter.getValue();
                 break;
@@ -510,14 +505,14 @@ public class ExperimentService {
         return JsonConverters.convertObjectToJsonString(finalJsonObject);
     }
 
-    private List<Object> formattingMIPEngienResult(String result) {
-        MIPVisualization mipVisualization = JsonConverters.convertJsonStringToObject(result, MIPVisualization.class);
+    private ExaremeAlgorithmResultDTO convertMIPEngineResultToExaremeAlgorithmResult(int code, String result) {
+        MIPEngineAlgorithmResultDTO mipVisualization = JsonConverters.convertJsonStringToObject(result, MIPEngineAlgorithmResultDTO.class);
         LinkedTreeMap<String,Object> data = new LinkedTreeMap<>();
         data.put("data", mipVisualization.convertToVisualization());
         data.put("type", "application/vnd.dataresource+json");
         List<Object> finalObject = new ArrayList<>();
         finalObject.add(data);
-        return finalObject;
+        return new ExaremeAlgorithmResultDTO(code, finalObject);
     }
 
     /**
@@ -526,7 +521,7 @@ public class ExperimentService {
      * @param experimentDTO is the request with the experiment information
      * @return the result of experiment as well as the http status that was retrieved
      */
-    public ExperimentResult runExperiment(ExperimentDTO experimentDTO, Logger logger) {
+    public ExaremeAlgorithmResultDTO runExperiment(ExperimentDTO experimentDTO, Logger logger) {
 
         // Algorithm type
         String algorithmType = experimentDTO.getAlgorithm().getType();
@@ -536,14 +531,14 @@ public class ExperimentService {
 
         // Run with the appropriate engine
         if (algorithmType.equals("mipengine")) {
-            MIPEngineBody mipEngineBody = experimentDTO.getAlgorithm().convertToMIPEngineBody();
-            String body = JsonConverters.convertObjectToJsonString(mipEngineBody);
+            MIPEngineExperimentDTO mipEngineExperimentDTO = experimentDTO.getAlgorithm().convertToMIPEngineBody();
+            String body = JsonConverters.convertObjectToJsonString(mipEngineExperimentDTO);
             String url =  mipengineAlgorithmsUrl + "/" + algorithmName.toLowerCase();
             logger.LogUserAction("url: " + url + ", body: " + body);
             logger.LogUserAction("Algorithm runs on MIPEngine.");
             return runMIPEngineExperiment(url, body);
         } else {
-            List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
+            List<ExaremeAlgorithmRequestDTO> algorithmParameters
                     = experimentDTO.getAlgorithm().getParameters();
             String body = gson.toJson(algorithmParameters);
             String url = queryExaremeUrl + "/" + algorithmName;
@@ -561,7 +556,7 @@ public class ExperimentService {
      * @param body          is the parameters of the algorithm
      * @return the result of exareme as well as the http status that was retrieved
      */
-    public ExperimentResult runExaremeExperiment(String url, String body) {
+    public ExaremeAlgorithmResultDTO runExaremeExperiment(String url, String body) {
 
         StringBuilder results = new StringBuilder();
         int code;
@@ -572,10 +567,12 @@ public class ExperimentService {
         }
 
         // Results are stored in the experiment object
-        ExperimentDTO experimentDTOWithOnlyResult = JsonConverters.convertJsonStringToObject(String.valueOf(results), ExperimentDTO.class);
-        List<Object> resultDTOS = experimentDTOWithOnlyResult.getResult();
+        ExaremeAlgorithmResultDTO exaremeResult = JsonConverters.convertJsonStringToObject(
+                String.valueOf(results), ExaremeAlgorithmResultDTO.class
+        );
+        exaremeResult.setCode(code);
 
-        return new ExperimentResult(code, resultDTOS);
+        return exaremeResult;
     }
 
     /**
@@ -585,7 +582,7 @@ public class ExperimentService {
      * @param body          is the parameters of the algorithm
      * @return the result of exareme as well as the http status that was retrieved
      */
-    public ExperimentResult runMIPEngineExperiment(String url, String body) {
+    public ExaremeAlgorithmResultDTO runMIPEngineExperiment(String url, String body) {
 
         StringBuilder results = new StringBuilder();
         int code;
@@ -596,9 +593,7 @@ public class ExperimentService {
         }
         System.out.println(results);
         // Results are stored in the experiment object
-        List<Object> resultDTOS = formattingMIPEngienResult(String.valueOf(results));
-
-        return new ExperimentResult(code, resultDTOS);
+        return convertMIPEngineResultToExaremeAlgorithmResult(code, String.valueOf(results));
     }
 
     /* --------------------------------------  EXAREME CALLS ---------------------------------------------------------*/
@@ -628,12 +623,12 @@ public class ExperimentService {
             try {
 
                 // Results are stored in the experiment object
-                ExperimentResult experimentResult = runExperiment(finalExperimentDTO, logger);
+                ExaremeAlgorithmResultDTO exaremeAlgorithmResultDTO = runExperiment(finalExperimentDTO, logger);
 
-                Logger.LogExperimentAction(experimentDAO.getName(), experimentDAO.getUuid(), "Experiment with uuid: " + experimentDAO.getUuid() + "gave response code: " + experimentResult.getCode() + " and result: " + experimentResult.getResults());
+                Logger.LogExperimentAction(experimentDAO.getName(), experimentDAO.getUuid(), "Experiment with uuid: " + experimentDAO.getUuid() + "gave response code: " + exaremeAlgorithmResultDTO.getCode() + " and result: " + exaremeAlgorithmResultDTO.getResults());
 
-                experimentDAO.setResult((experimentResult.getCode() >= 400) ? null : JsonConverters.convertObjectToJsonString(experimentResult.getResults()));
-                experimentDAO.setStatus((experimentResult.getCode() >= 400) ? ExperimentDAO.Status.error : ExperimentDAO.Status.success);
+                experimentDAO.setResult((exaremeAlgorithmResultDTO.getCode() >= 400) ? null : JsonConverters.convertObjectToJsonString(exaremeAlgorithmResultDTO.getResults()));
+                experimentDAO.setStatus((exaremeAlgorithmResultDTO.getCode() >= 400) ? ExperimentDAO.Status.error : ExperimentDAO.Status.success);
             } catch (Exception e) {
                 Logger.LogExperimentAction(experimentDAO.getName(), experimentDAO.getUuid(), "There was an exception: " + e.getMessage());
 
@@ -667,13 +662,13 @@ public class ExperimentService {
         String workflowId = experimentDTO.getAlgorithm().getName();
 
         // Get the parameters
-        List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
+        List<ExaremeAlgorithmRequestDTO> algorithmParameters
                 = experimentDTO.getAlgorithm().getParameters();
 
         // Convert the parameters to workflow parameters
         HashMap<String, String> algorithmParamsIncludingEmpty = new HashMap<>();
         if (algorithmParameters != null) {
-            for (AlgorithmDTO.AlgorithmParamDTO param : algorithmParameters) {
+            for (ExaremeAlgorithmRequestDTO param : algorithmParameters) {
                 algorithmParamsIncludingEmpty.put(param.getName(), param.getValue());
             }
         }
@@ -1038,54 +1033,4 @@ public class ExperimentService {
 
         return returnError;
     }
-
-    @Getter
-    @Setter
-    static class ExperimentResult {
-        private final int code;
-        private final List<Object> results;
-
-        public ExperimentResult(int code, List<Object> results) {
-            this.code = code;
-            this.results = results;
-        }
-    }
-
-    @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);
-        }
-
-    }
-
-    @Getter
-    @Setter
-    static class Field {
-        private final String name;
-        private final String type;
-
-        Field(String name, String type) {
-            this.name = name;
-            this.type = type;
-        }
-    }
 }