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 f43c34960fd89d9d8036fd215fd51b0741de648f..cd3f50757f9adbc708ecfce74f70ba6f77188ded 100644
--- a/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
+++ b/src/main/java/eu/hbp/mip/models/DAOs/ExperimentDAO.java
@@ -7,7 +7,6 @@ import eu.hbp.mip.models.DTOs.AlgorithmDTO;
 import eu.hbp.mip.models.DTOs.ExperimentDTO;
 import eu.hbp.mip.utils.JsonConverters;
 import io.swagger.annotations.ApiModel;
-import org.svenson.JSONParser;
 
 import javax.persistence.*;
 import java.util.*;
@@ -117,7 +116,7 @@ public class ExperimentDAO {
     public ExperimentDTO convertToDTO(boolean includeResult)
     {
         ExperimentDTO experimentDTO = new ExperimentDTO();
-        experimentDTO.setAlgorithmDetails(JsonConverters.convertJsonStringToObject(this.algorithmDetails, AlgorithmDTO.class));
+        experimentDTO.setAlgorithm(JsonConverters.convertJsonStringToObject(this.algorithmDetails, AlgorithmDTO.class));
         experimentDTO.setCreated(this.created);
         experimentDTO.setUpdated(this.updated);
         experimentDTO.setFinished(this.finished);
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 5707b75d04fa575d7f11ef1f4bf15359a1d0cc8d..5f554dbe60bfadbf9021b2d15dbffbc0a5b0aaad 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/ExperimentDTO.java
@@ -3,10 +3,8 @@ package eu.hbp.mip.models.DTOs;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import eu.hbp.mip.models.DAOs.ExperimentDAO;
 
-import java.lang.reflect.Array;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
@@ -23,29 +21,19 @@ public class ExperimentDTO {
     private List<ExperimentDTO.ResultDTO> result;
     private ExperimentDAO.Status status;
 
-    private String algorithm;
-    private AlgorithmDTO algorithmDetails;
+    private AlgorithmDTO algorithm;
 
     public ExperimentDTO() {
     }
 
-    public String getAlgorithm() {
+    public AlgorithmDTO getAlgorithm() {
         return algorithm;
     }
 
-    public void setAlgorithm(String algorithm) {
+    public void setAlgorithm(AlgorithmDTO algorithm) {
         this.algorithm = algorithm;
     }
 
-    public AlgorithmDTO getAlgorithmDetails() {
-        return algorithmDetails;
-    }
-
-    public void setAlgorithmDetails(AlgorithmDTO algorithmDetails) {
-        this.algorithmDetails = algorithmDetails;
-        this.algorithm = algorithmDetails.getName();
-    }
-
     public UUID getUuid() {
         return uuid;
     }
diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java
index eb4001665faacc73a9c912950b720e4cb131daae..f92efef0d7fe9f0441840d19d94faa79e3fa9caf 100644
--- a/src/main/java/eu/hbp/mip/services/ExperimentService.java
+++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java
@@ -167,7 +167,7 @@ public class ExperimentService {
         checkPostExperimentProperInput(experimentDTO, endpoint);
 
         // Get the type and name of algorithm
-        String algorithmType = experimentDTO.getAlgorithmDetails().getType();
+        String algorithmType = experimentDTO.getAlgorithm().getType();
 
         if(algorithmType == null){
             Logging.LogUserAction(user.getUsername(), endpoint, "Please provide algorithm type.");
@@ -207,10 +207,10 @@ public class ExperimentService {
 
         // Get the parameters
         List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithmDetails().getParameters();
+                = experimentDTO.getAlgorithm().getParameters();
 
         // Get the type and name of algorithm
-        String algorithmName = experimentDTO.getAlgorithmDetails().getName();
+        String algorithmName = experimentDTO.getAlgorithm().getName();
 
         if (!allowedTransientAlgorithms(algorithmName)) {
             Logging.LogUserAction(user.getUsername(), endpoint,
@@ -356,7 +356,7 @@ public class ExperimentService {
             throw new BadRequestException("CreatedBy is not editable.");
         }
 
-        if (experimentDTO.getAlgorithmDetails() != null) {
+        if (experimentDTO.getAlgorithm() != null) {
             Logging.LogUserAction(activeUserService.getActiveUser().getUsername(), endpoint, "AlgorithmDetails is not editable.");
             throw new BadRequestException("AlgorithmDetails is not editable.");
         }
@@ -379,9 +379,9 @@ public class ExperimentService {
 
     private void algorithmParametersLogging(ExperimentDTO experimentDTO, String endpoint) {
         UserDAO user = activeUserService.getActiveUser();
-        String algorithmName = experimentDTO.getAlgorithm();
+        String algorithmName = experimentDTO.getAlgorithm().getName();
         StringBuilder parametersLogMessage = new StringBuilder(", Parameters:\n");
-        experimentDTO.getAlgorithmDetails().getParameters().forEach(
+        experimentDTO.getAlgorithm().getParameters().forEach(
                 params -> parametersLogMessage
                         .append("  ")
                         .append(params.getLabel())
@@ -401,7 +401,7 @@ public class ExperimentService {
     private String getDatasetFromExperimentParameters(ExperimentDTO experimentDTO, String endpoint) {
 
         String experimentDatasets = null;
-        for (AlgorithmDTO.AlgorithmParamDTO parameter : experimentDTO.getAlgorithmDetails().getParameters()) {
+        for (AlgorithmDTO.AlgorithmParamDTO parameter : experimentDTO.getAlgorithm().getParameters()) {
             if (parameter.getLabel().equals("dataset")) {
                 experimentDatasets = parameter.getValue();
                 break;
@@ -454,8 +454,8 @@ public class ExperimentService {
         ExperimentDAO experimentDAO = new ExperimentDAO();
         experimentDAO.setUuid(UUID.randomUUID());
         experimentDAO.setCreatedBy(user);
-        experimentDAO.setAlgorithmDetails(JsonConverters.convertObjectToJsonString(experimentDTO.getAlgorithmDetails()));
-        experimentDAO.setAlgorithm(experimentDTO.getAlgorithm());
+        experimentDAO.setAlgorithmDetails(JsonConverters.convertObjectToJsonString(experimentDTO.getAlgorithm()));
+        experimentDAO.setAlgorithm(experimentDTO.getAlgorithm().getName());
         experimentDAO.setName(experimentDTO.getName());
         experimentDAO.setStatus(ExperimentDAO.Status.pending);
 
@@ -520,11 +520,11 @@ public class ExperimentService {
         Logging.LogUserAction(user.getUsername(), endpoint, "Created experiment with uuid :" + experimentDAO.getUuid());
 
         // Run the 1st algorithm from the list
-        String algorithmName = experimentDTO.getAlgorithmDetails().getName();
+        String algorithmName = experimentDTO.getAlgorithm().getName();
 
         // Get the parameters
         List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithmDetails().getParameters();
+                = experimentDTO.getAlgorithm().getParameters();
 
         String body = gson.toJson(algorithmParameters);
         String url = queryExaremeUrl + "/" + algorithmName;
@@ -606,11 +606,11 @@ public class ExperimentService {
 
 
         // Run the 1st algorithm from the list
-        String workflowId = experimentDTO.getAlgorithmDetails().getName();
+        String workflowId = experimentDTO.getAlgorithm().getName();
 
         // Get the parameters
         List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithmDetails().getParameters();
+                = experimentDTO.getAlgorithm().getParameters();
 
         // Convert the parameters to workflow parameters
         HashMap<String, String> algorithmParamsIncludingEmpty = new HashMap<>();