diff --git a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
index 08132000d15bd1f033f9adf625aa24af01c2c542..aea67b056981111fceede22ce964adab2ae7f57d 100644
--- a/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
+++ b/src/main/java/eu/hbp/mip/controllers/AlgorithmsAPI.java
@@ -28,7 +28,6 @@ import retrofit2.Response;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
 import static eu.hbp.mip.utils.InputStreamConverter.convertInputStreamToString;
@@ -69,25 +68,25 @@ public class AlgorithmsAPI {
         Logger logger = new Logger(activeUserService.getActiveUser().getUsername(), "(GET) /algorithms");
 
         logger.LogUserAction("Executing...");
-        LinkedList<ExaremeAlgorithmDTO> mipengineAlgorithms = getMIPEngineAlgorithms(logger);
+        ArrayList<ExaremeAlgorithmDTO> mipengineAlgorithms = getMIPEngineAlgorithms(logger);
         logger.LogUserAction("Loaded " + mipengineAlgorithms.size() + " mipengine algorithms");
-        LinkedList<ExaremeAlgorithmDTO> exaremeAlgorithms = getExaremeAlgorithms(logger);
+        ArrayList<ExaremeAlgorithmDTO> exaremeAlgorithms = getExaremeAlgorithms(logger);
         logger.LogUserAction("Loaded " + exaremeAlgorithms.size() + " exareme algorithms");
-        LinkedList<ExaremeAlgorithmDTO> galaxyAlgorithms = getGalaxyWorkflows(logger);
+        ArrayList<ExaremeAlgorithmDTO> galaxyAlgorithms = getGalaxyWorkflows(logger);
         logger.LogUserAction("Loaded " + galaxyAlgorithms.size() + " galaxy algorithms");
 
-        LinkedList<ExaremeAlgorithmDTO> algorithms = new LinkedList<>();
-        if (exaremeAlgorithms != null) {
+        ArrayList<ExaremeAlgorithmDTO> algorithms = new ArrayList<>();
+        if (!exaremeAlgorithms.isEmpty()) {
             algorithms.addAll(exaremeAlgorithms);
         } else {
             logger.LogUserAction("Getting exareme algorithms failed and returned null");
         }
-        if (mipengineAlgorithms != null) {
+        if (!mipengineAlgorithms.isEmpty()) {
             algorithms.addAll(mipengineAlgorithms);
         } else {
             logger.LogUserAction("Getting mipengine algorithms failed and returned null");
         }
-        if (galaxyAlgorithms != null) {
+        if (!galaxyAlgorithms.isEmpty()) {
             algorithms.addAll(galaxyAlgorithms);
         } else {
             logger.LogUserAction("Getting galaxy workflows failed and returned null");
@@ -101,7 +100,7 @@ public class AlgorithmsAPI {
         }
 
         // Remove any disabled algorithm
-        LinkedList<ExaremeAlgorithmDTO> allowedAlgorithms = new LinkedList<>();
+        ArrayList<ExaremeAlgorithmDTO> allowedAlgorithms = new ArrayList<>();
         for (ExaremeAlgorithmDTO algorithm : algorithms) {
             if (!disabledAlgorithms.contains(algorithm.getName())) {
                 allowedAlgorithms.add(algorithm);
@@ -116,15 +115,15 @@ public class AlgorithmsAPI {
      *
      * @return a list of AlgorithmDTOs or null if something fails
      */
-    public LinkedList<ExaremeAlgorithmDTO> getExaremeAlgorithms(Logger logger) {
-        LinkedList<ExaremeAlgorithmDTO> algorithms;
+    public ArrayList<ExaremeAlgorithmDTO> getExaremeAlgorithms(Logger logger) {
+        ArrayList<ExaremeAlgorithmDTO> algorithms;
         // Get exareme algorithms
         try {
             StringBuilder response = new StringBuilder();
             HTTPUtil.sendGet(exaremeAlgorithmsUrl, response);
             algorithms = gson.fromJson(
                     response.toString(),
-                    new TypeToken<LinkedList<ExaremeAlgorithmDTO>>() {
+                    new TypeToken<ArrayList<ExaremeAlgorithmDTO>>() {
                     }.getType()
             );
         } catch (IOException e) {
@@ -141,8 +140,8 @@ public class AlgorithmsAPI {
      *
      * @return a list of AlgorithmDTOs or null if something fails
      */
-    public LinkedList<ExaremeAlgorithmDTO> getMIPEngineAlgorithms(Logger logger) {
-        LinkedList<MIPEngineAlgorithmDTO> mipEngineAlgorithms;
+    public ArrayList<ExaremeAlgorithmDTO> getMIPEngineAlgorithms(Logger logger) {
+        ArrayList<MIPEngineAlgorithmDTO> mipEngineAlgorithms;
         // Get MIPEngine algorithms
         try {
             StringBuilder response = new StringBuilder();
@@ -151,7 +150,7 @@ public class AlgorithmsAPI {
 
             mipEngineAlgorithms = gson.fromJson(
                     response.toString(),
-                    new TypeToken<LinkedList<MIPEngineAlgorithmDTO>>() {
+                    new TypeToken<ArrayList<MIPEngineAlgorithmDTO>>() {
                     }.getType()
             );
         } catch (IOException e) {
@@ -159,7 +158,7 @@ public class AlgorithmsAPI {
             return null;
         }
 
-        LinkedList<ExaremeAlgorithmDTO> algorithms = new LinkedList<>();
+        ArrayList<ExaremeAlgorithmDTO> algorithms = new ArrayList<>();
         mipEngineAlgorithms.forEach(mipEngineAlgorithm -> algorithms.add(mipEngineAlgorithm.convertToAlgorithmDTO()));
 
         logger.LogUserAction("Completed, returned " + algorithms.size() + " algorithms.");
@@ -171,7 +170,7 @@ public class AlgorithmsAPI {
      *
      * @return a list of AlgorithmDTOs or null if something fails
      */
-    public LinkedList<ExaremeAlgorithmDTO> getGalaxyWorkflows(Logger logger) {
+    public ArrayList<ExaremeAlgorithmDTO> getGalaxyWorkflows(Logger logger) {
         List<Workflow> workflowList;
         try {
             // Get all the workflows with the galaxy client
@@ -185,7 +184,7 @@ public class AlgorithmsAPI {
         }
 
         // Get the workflow details with the custom client to receive them as a WorkflowDTO
-        List<WorkflowDTO> workflows = new LinkedList<>();
+        List<WorkflowDTO> workflows = new ArrayList<>();
         // Create the request client
         RetroFitGalaxyClients service = RetrofitClientInstance.getRetrofitInstance().create(RetroFitGalaxyClients.class);
         for (Workflow workflow : workflowList) {
@@ -210,7 +209,7 @@ public class AlgorithmsAPI {
         logger.LogUserAction("Workflows fetched: " + workflows.size());
 
         // Convert the workflows to algorithms
-        LinkedList<ExaremeAlgorithmDTO> algorithms = new LinkedList<>();
+        ArrayList<ExaremeAlgorithmDTO> algorithms = new ArrayList<>();
         for (WorkflowDTO workflow : workflows) {
             logger.LogUserAction("Converting workflow: " + workflow);
 
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java
index b56e16bc7130ad30bc4c3e5739af17908419a4a5..887733de88a395d9c5f7a31b5c55c32024b56312 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmDTO.java
@@ -25,13 +25,13 @@ public class ExaremeAlgorithmDTO {
     private String type;
 
     @SerializedName("parameters")
-    private List<ExaremeAlgorithmRequestDTO> parameters;
+    private List<ExaremeAlgorithmRequestParamDTO> parameters;
 
 
     @Getter
     @Setter
     @AllArgsConstructor
-    class Rule
+    static class Rule
     {
         @SerializedName("id")
         private String id;
@@ -45,45 +45,47 @@ public class ExaremeAlgorithmDTO {
         @SerializedName("value")
         private Object value;
     }
-    public MIPEngineExperimentDTO convertToMIPEngineBody()
+    public MIPEngineAlgorithmRequestDTO convertToMIPEngineBody()
     {
-        MIPEngineExperimentDTO mipEngineExperimentDTO = new MIPEngineExperimentDTO();
-        MIPEngineExperimentDTO.InputData inputData = new MIPEngineExperimentDTO.InputData();
-        Hashtable<String, Object> mipEngineParameters = new Hashtable<>();
+        MIPEngineAlgorithmRequestDTO mipEngineAlgorithmRequestDTO = new MIPEngineAlgorithmRequestDTO();
+        MIPEngineAlgorithmRequestDTO.InputData inputData = new MIPEngineAlgorithmRequestDTO.InputData();
+        HashMap<String, Object> mipEngineParameters = new HashMap<>();
 
         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(",")));
+            switch (parameter.getName()) {
+                case "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);
+                    break;
+                case "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);
+                    break;
+                case "dataset":
+                    List<String> datasets = Arrays.asList(parameter.getValue().split(","));
+                    rules.add(new Rule("dataset", "string", "in", datasets));
+                    inputData.setDatasets(datasets);
+                    break;
+                case "pathology":
+                    inputData.setPathology(parameter.getValue());
+                    break;
+                case "filter":
+                    if (!parameter.getValue().equals(""))
+                        rules.add(JsonConverters.convertJsonStringToObject(parameter.getValue(), MIPEngineAlgorithmRequestDTO.Filter.class));
+                    break;
+                default:
+                    mipEngineParameters.put(parameter.getName(), Arrays.asList(parameter.getValue().split(",")));
+                    break;
             }
         });
-        MIPEngineExperimentDTO.Filter filter = new MIPEngineExperimentDTO.Filter("AND", rules, true);
+        MIPEngineAlgorithmRequestDTO.Filter filter = new MIPEngineAlgorithmRequestDTO.Filter("AND", rules, true);
         inputData.setFilters(filter);
-        mipEngineExperimentDTO.setInputdata(inputData);
-        mipEngineExperimentDTO.setParameters(mipEngineParameters);
-        return mipEngineExperimentDTO;
+        mipEngineAlgorithmRequestDTO.setInputdata(inputData);
+        mipEngineAlgorithmRequestDTO.setParameters(mipEngineParameters);
+        return mipEngineAlgorithmRequestDTO;
     }
 }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java
similarity index 89%
rename from src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestDTO.java
rename to src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java
index 84e275ec8663d7e90e6420f77a33ff899fe5773d..6f7d21655c0e5fb7cb8eea1f5bcded5183de55b8 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExaremeAlgorithmRequestParamDTO.java
@@ -6,9 +6,10 @@ import lombok.Setter;
 
 import java.util.List;
 
+//The request of an exareme algorithm is a list of ExaremeAlgorithmRequestParamDTOs.
 @Getter
 @Setter
-public class ExaremeAlgorithmRequestDTO {
+public class ExaremeAlgorithmRequestParamDTO {
     @SerializedName("name")
     private String name;
 
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 ada09db3bc611bd273b59109a64a450db404d567..98677991e486e2fca38b8c7688a0d77e6eec084c 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
@@ -1,7 +1,7 @@
 package eu.hbp.mip.models.DTOs;
 
 import com.google.gson.annotations.SerializedName;
-import eu.hbp.mip.utils.JsonConverters;
+import eu.hbp.mip.utils.Exceptions.InternalServerError;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -66,20 +66,20 @@ public class MIPEngineAlgorithmDTO {
         @SerializedName("enums")
         private List<String> enums;
 
-        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;
+        public ExaremeAlgorithmRequestParamDTO convertToexaremeAlgorithmRequestDTO(String name){
+            ExaremeAlgorithmRequestParamDTO exaremeAlgorithmRequestParamDTO = new ExaremeAlgorithmRequestParamDTO();
+            exaremeAlgorithmRequestParamDTO.setName(name);
+            exaremeAlgorithmRequestParamDTO.setDesc(this.desc);
+            exaremeAlgorithmRequestParamDTO.setValueType(this.type);
+            exaremeAlgorithmRequestParamDTO.setType("other");
+            exaremeAlgorithmRequestParamDTO.setDefaultValue(this.default_value);
+            exaremeAlgorithmRequestParamDTO.setValueNotBlank(this.notblank);
+            exaremeAlgorithmRequestParamDTO.setLabel(this.label);
+            exaremeAlgorithmRequestParamDTO.setValueEnumerations(this.enums);
+            exaremeAlgorithmRequestParamDTO.setValueMultiple(this.multiple);
+            exaremeAlgorithmRequestParamDTO.setValueMin(this.min);
+            exaremeAlgorithmRequestParamDTO.setValueMax(this.max);
+            return exaremeAlgorithmRequestParamDTO;
         }
     }
 
@@ -101,14 +101,14 @@ public class MIPEngineAlgorithmDTO {
         @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;
+        public List<ExaremeAlgorithmRequestParamDTO> convertToAlgorithmRequestParamDTOs(){
+            List<ExaremeAlgorithmRequestParamDTO> exaremeAlgorithmRequestParamDTOS = new ArrayList<>();
+            exaremeAlgorithmRequestParamDTOS.add(this.x.convertToExaremeAlgorithmRequestDTO("x"));
+            exaremeAlgorithmRequestParamDTOS.add(this.y.convertToExaremeAlgorithmRequestDTO("y"));
+            exaremeAlgorithmRequestParamDTOS.add(this.pathology.convertToExaremeAlgorithmRequestDTO("pathology"));
+            exaremeAlgorithmRequestParamDTOS.add(this.datasets.convertToExaremeAlgorithmRequestDTO("dataset"));
+            exaremeAlgorithmRequestParamDTOS.add(this.filter.convertToExaremeAlgorithmRequestDTO("filter"));
+            return exaremeAlgorithmRequestParamDTOS;
         }
     }
 
@@ -137,28 +137,28 @@ public class MIPEngineAlgorithmDTO {
         @SerializedName("desc")
         private String desc;
 
-        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);
+        public ExaremeAlgorithmRequestParamDTO convertToExaremeAlgorithmRequestDTO(String name){
+            ExaremeAlgorithmRequestParamDTO exaremeAlgorithmRequestParamDTO = new ExaremeAlgorithmRequestParamDTO();
+            exaremeAlgorithmRequestParamDTO.setName(name);
+            exaremeAlgorithmRequestParamDTO.setDesc(this.desc);
+            exaremeAlgorithmRequestParamDTO.setValue("");
+            exaremeAlgorithmRequestParamDTO.setValueNotBlank(this.notblank);
+            exaremeAlgorithmRequestParamDTO.setValueMultiple(this.multiple);
             String[] hidden = {"x","y","dataset", "filter","pathology","centers","formula"};
-            exaremeAlgorithmRequestDTO.setLabel(Arrays.asList(hidden).contains(exaremeAlgorithmRequestDTO.getName()) ? exaremeAlgorithmRequestDTO.getName():this.label);
+            exaremeAlgorithmRequestParamDTO.setLabel(Arrays.asList(hidden).contains(exaremeAlgorithmRequestParamDTO.getName()) ? exaremeAlgorithmRequestParamDTO.getName():this.label);
             if(name.equals("dataset") || name.equals("filter") || name.equals("pathology")){
-                exaremeAlgorithmRequestDTO.setValueType(this.types.get(0));
-                exaremeAlgorithmRequestDTO.setType(exaremeAlgorithmRequestDTO.getName());
+                exaremeAlgorithmRequestParamDTO.setValueType(this.types.get(0));
+                exaremeAlgorithmRequestParamDTO.setType(exaremeAlgorithmRequestParamDTO.getName());
             }
             else{
-                exaremeAlgorithmRequestDTO.setType("column");
-                exaremeAlgorithmRequestDTO.setColumnValuesSQLType(String.join(", ", this.types));
-                exaremeAlgorithmRequestDTO.setColumnValuesIsCategorical(getColumnValuesIsCategorical(this.stattypes));
+                exaremeAlgorithmRequestParamDTO.setType("column");
+                exaremeAlgorithmRequestParamDTO.setColumnValuesSQLType(String.join(", ", this.types));
+                exaremeAlgorithmRequestParamDTO.setColumnValuesIsCategorical(getColumnValuesIsCategorical(this.stattypes));
             }
-            return exaremeAlgorithmRequestDTO;
+            return exaremeAlgorithmRequestParamDTO;
         }
 
-        private String getColumnValuesIsCategorical(List<String> stattypes) throws Exception {
+        private String getColumnValuesIsCategorical(List<String> stattypes){
 
             if (stattypes.contains("nominal") && stattypes.contains("numerical")){
                 return "";
@@ -170,7 +170,7 @@ public class MIPEngineAlgorithmDTO {
                 return "false";
             }
             else{
-                throw new Exception("Invalid stattypes");
+                throw new InternalServerError("Invalid stattypes");
             }
         }
     }
@@ -182,19 +182,10 @@ public class MIPEngineAlgorithmDTO {
         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();
-        }
+        List<ExaremeAlgorithmRequestParamDTO> parameters = new ArrayList<>(this.inputdata.convertToAlgorithmRequestParamDTOs());
         this.parameters.forEach((name, parameterDTO) -> {
-            try {
-                ExaremeAlgorithmRequestDTO parameter = parameterDTO.convertToexaremeAlgorithmRequestDTO(name);
-                parameters.add(parameter);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+            ExaremeAlgorithmRequestParamDTO parameter = parameterDTO.convertToexaremeAlgorithmRequestDTO(name);
+            parameters.add(parameter);
         });
         exaremeAlgorithmDTO.setParameters(parameters);
         return exaremeAlgorithmDTO;
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineExperimentDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmRequestDTO.java
similarity index 96%
rename from src/main/java/eu/hbp/mip/models/DTOs/MIPEngineExperimentDTO.java
rename to src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmRequestDTO.java
index 46b7df8982f1e8d3f50ac31517489acdf22a8a54..ff8229e372ddd480d58aee2a5c3af36b9536a41f 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineExperimentDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmRequestDTO.java
@@ -10,7 +10,7 @@ import java.util.List;
 
 @Getter
 @Setter
-public class MIPEngineExperimentDTO {
+public class MIPEngineAlgorithmRequestDTO {
     @SerializedName("inputdata")
     private InputData inputdata;
     @SerializedName("parameters")
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 edc18117d6660b490a2681cd54b671692ef140e3..eae07531e6f126aa69465a9fcdf6c6cf44c1d267 100644
--- a/src/main/java/eu/hbp/mip/models/galaxy/WorkflowDTO.java
+++ b/src/main/java/eu/hbp/mip/models/galaxy/WorkflowDTO.java
@@ -3,7 +3,7 @@ package eu.hbp.mip.models.galaxy;
 import com.google.gson.Gson;
 import com.google.gson.annotations.SerializedName;
 import eu.hbp.mip.models.DTOs.ExaremeAlgorithmDTO;
-import eu.hbp.mip.models.DTOs.ExaremeAlgorithmRequestDTO;
+import eu.hbp.mip.models.DTOs.ExaremeAlgorithmRequestParamDTO;
 
 import java.util.*;
 
@@ -115,18 +115,18 @@ public class WorkflowDTO {
         exaremeAlgorithmDTO.setType("workflow");
 
         // Transfer workflow parameters information
-        List<ExaremeAlgorithmRequestDTO> algorithmParams = new LinkedList<>();
+        List<ExaremeAlgorithmRequestParamDTO> algorithmParams = new LinkedList<>();
         Gson gson = new Gson();
         for (Map.Entry<String, WorkflowInputDTO> workflowInput : getInputs().entrySet()) {
 
             // Convert the annotation to algorithm Parameter
-            ExaremeAlgorithmRequestDTO algorithmParam;
+            ExaremeAlgorithmRequestParamDTO algorithmParam;
             if (steps.get(workflowInput.getKey()).getAnnotation() != null) {
                 algorithmParam = gson.fromJson(steps.get(workflowInput.getKey()).getAnnotation(),
-                        ExaremeAlgorithmRequestDTO.class);
+                        ExaremeAlgorithmRequestParamDTO.class);
             } else {
                 // If annotation is not provided, auto-fill some information
-                algorithmParam = new ExaremeAlgorithmRequestDTO();
+                algorithmParam = new ExaremeAlgorithmRequestParamDTO();
                 // When the constraints are not known, set the most relaxed constraints
                 algorithmParam.setDesc("");
                 algorithmParam.setValue("");
diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java
index 587fc7e63adc0a23a182e740028e4b31a1e66e02..3c52503c23ac6976495e3e006e8b765fbb8c9794 100644
--- a/src/main/java/eu/hbp/mip/services/ExperimentService.java
+++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java
@@ -395,7 +395,7 @@ public class ExperimentService {
     private String getDatasetFromExperimentParameters(ExperimentDTO experimentDTO, Logger logger) {
 
         String experimentDatasets = null;
-        for (ExaremeAlgorithmRequestDTO parameter : experimentDTO.getAlgorithm().getParameters()) {
+        for (ExaremeAlgorithmRequestParamDTO parameter : experimentDTO.getAlgorithm().getParameters()) {
             if (parameter.getLabel().equals("dataset")) {
                 experimentDatasets = parameter.getValue();
                 break;
@@ -531,14 +531,14 @@ public class ExperimentService {
 
         // Run with the appropriate engine
         if (algorithmType.equals("mipengine")) {
-            MIPEngineExperimentDTO mipEngineExperimentDTO = experimentDTO.getAlgorithm().convertToMIPEngineBody();
-            String body = JsonConverters.convertObjectToJsonString(mipEngineExperimentDTO);
+            MIPEngineAlgorithmRequestDTO mipEngineAlgorithmRequestDTO = experimentDTO.getAlgorithm().convertToMIPEngineBody();
+            String body = JsonConverters.convertObjectToJsonString(mipEngineAlgorithmRequestDTO);
             String url =  mipengineAlgorithmsUrl + "/" + algorithmName.toLowerCase();
             logger.LogUserAction("url: " + url + ", body: " + body);
             logger.LogUserAction("Algorithm runs on MIPEngine.");
             return runMIPEngineExperiment(url, body);
         } else {
-            List<ExaremeAlgorithmRequestDTO> algorithmParameters
+            List<ExaremeAlgorithmRequestParamDTO> algorithmParameters
                     = experimentDTO.getAlgorithm().getParameters();
             String body = gson.toJson(algorithmParameters);
             String url = queryExaremeUrl + "/" + algorithmName;
@@ -636,7 +636,7 @@ public class ExperimentService {
             }
 
             finishExperiment(experimentDAO, logger);
-            Logger.LogExperimentAction(experimentDAO.getName(), experimentDAO.getUuid(), "Finished the experiment: " + experimentDAO.toString());
+            Logger.LogExperimentAction(experimentDAO.getName(), experimentDAO.getUuid(), "Finished the experiment: " + experimentDAO);
         }).start();
         experimentDTO = experimentDAO.convertToDTO(true);
         return experimentDTO;
@@ -662,13 +662,13 @@ public class ExperimentService {
         String workflowId = experimentDTO.getAlgorithm().getName();
 
         // Get the parameters
-        List<ExaremeAlgorithmRequestDTO> algorithmParameters
+        List<ExaremeAlgorithmRequestParamDTO> algorithmParameters
                 = experimentDTO.getAlgorithm().getParameters();
 
         // Convert the parameters to workflow parameters
         HashMap<String, String> algorithmParamsIncludingEmpty = new HashMap<>();
         if (algorithmParameters != null) {
-            for (ExaremeAlgorithmRequestDTO param : algorithmParameters) {
+            for (ExaremeAlgorithmRequestParamDTO param : algorithmParameters) {
                 algorithmParamsIncludingEmpty.put(param.getName(), param.getValue());
             }
         }