diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index a849082ab379cbc72d9252afb1acba26bdff64ae..6f2fdb379d79644125a321d7fe9629933c4f3c3e 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -89,6 +89,8 @@ public class ExperimentApi {
 
         LOGGER.info("Experiment saved");
 
+        experiment.getModel().cureVariables();
+
         try {
             if(isExaremeAlgo(experiment))
             {
@@ -124,6 +126,9 @@ public class ExperimentApi {
         if (experiment == null) {
             return new ResponseEntity<>("Not found", HttpStatus.NOT_FOUND);
         }
+
+        experiment.getModel().cureVariables();
+
         return new ResponseEntity<>(gson.toJson(experiment), HttpStatus.OK);
     }
 
@@ -152,6 +157,8 @@ public class ExperimentApi {
 
         LOGGER.info("Experiment updated (marked as viewed)");
 
+        experiment.getModel().cureVariables();
+
         return new ResponseEntity<>(gson.toJson(experiment), HttpStatus.OK);
     }
 
@@ -280,6 +287,8 @@ public class ExperimentApi {
 
         LOGGER.info("Experiment updated (marked as shared)");
 
+        experiment.getModel().cureVariables();
+
         return new ResponseEntity<>(gson.toJson(experiment), HttpStatus.OK);
     }
 
diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
index ac4d8769d0522b34058584ad42a2ffc9725dc8be..af6eba66bc4e45fa73fb8aa71a51192389c26906 100644
--- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
@@ -52,7 +52,7 @@ public class ModelsApi {
     @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List")
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
     @RequestMapping(method = RequestMethod.GET)
-    public ResponseEntity<Iterable> getModels(
+    public ResponseEntity<List> getModels(
             @ApiParam(value = "Max number of results") @RequestParam(value = "limit", required = false) Integer limit,
             @ApiParam(value = "Only ask own models") @RequestParam(value = "own", required = false) Boolean own,
             @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team,
@@ -72,6 +72,7 @@ public class ModelsApi {
             models = modelRepository.findByValidOrCreatedByOrderByCreatedAt(true, user);
         }
 
+        List<Model> modelsList = new LinkedList<>();
         if(valid != null && models != null)
         {
             for (Iterator<Model> i = models.iterator(); i.hasNext(); )
@@ -82,10 +83,15 @@ public class ModelsApi {
                 {
                     i.remove();
                 }
+                else
+                {
+                    m.cureVariables();
+                    modelsList.add(m);
+                }
             }
         }
 
-        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);
+        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(modelsList);
 
     }
 
@@ -197,33 +203,11 @@ public class ModelsApi {
         Collection<String> yAxisVarsColl = new LinkedHashSet<>(yAxisVars);
         model.getConfig().setyAxisVariables(new LinkedList<>(yAxisVarsColl));
 
-        List<Variable> varsQuery = queryRepository.findOne(model.getQuery().getId()).getVariables();
-        Collection<Variable> varsQueryColl = new LinkedHashSet<>(varsQuery);
-        model.getQuery().setVariables(new LinkedList<>(varsQueryColl));
-
-        List<Variable> grpgsQuery = queryRepository.findOne(model.getQuery().getId()).getGrouping();
-        Collection<Variable> grpgsQueryColl = new LinkedHashSet<>(grpgsQuery);
-        model.getQuery().setGrouping(new LinkedList<>(grpgsQueryColl));
-
-        List<Variable> covarsQuery = queryRepository.findOne(model.getQuery().getId()).getCovariables();
-        Collection<Variable> covarsQueryColl = new LinkedHashSet<>(covarsQuery);
-        model.getQuery().setCovariables(new LinkedList<>(covarsQueryColl));
-
         List<Filter> fltrs = queryRepository.findOne(model.getQuery().getId()).getFilters();
         Collection<Filter> fltrsColl = new LinkedHashSet<>(fltrs);
         model.getQuery().setFilters(new LinkedList<>(fltrsColl));
 
-        List<String> varsDS = datasetRepository.findOne(model.getDataset().getCode()).getVariable();
-        Collection<String> varsDSColl = new LinkedHashSet<>(varsDS);
-        model.getDataset().setVariable(new LinkedList<>(varsDSColl));
-
-        List<String> grpgsDS = datasetRepository.findOne(model.getDataset().getCode()).getGrouping();
-        Collection<String> grpgsDSColl = new LinkedHashSet<>(grpgsDS);
-        model.getDataset().setGrouping(new LinkedList<>(grpgsDSColl));
-
-        List<String> headersDS = datasetRepository.findOne(model.getDataset().getCode()).getHeader();
-        Collection<String> headersDSColl = new LinkedHashSet<>(headersDS);
-        model.getDataset().setHeader(new LinkedList<>(headersDSColl));
+        model.cureVariables();
 
         return new ResponseEntity<>(HttpStatus.OK).ok(model);
     }
diff --git a/src/main/java/eu/hbp/mip/model/Model.java b/src/main/java/eu/hbp/mip/model/Model.java
index d788436a6d9a5b0c42fa1b616cdcc3be443ed1a0..1f792580fb1ae8ff52c1ea94a0d8e1ff8a70366b 100644
--- a/src/main/java/eu/hbp/mip/model/Model.java
+++ b/src/main/java/eu/hbp/mip/model/Model.java
@@ -11,7 +11,10 @@ import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 
 import javax.persistence.*;
+import java.util.Collection;
 import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
 
 @Entity
 @Table(name = "`model`")
@@ -172,4 +175,25 @@ public class Model {
     this.textQuery = textQuery;
     }
 
+    public void cureVariables()
+    {
+        Collection<Variable> varsQueryColl = new LinkedHashSet<>(this.getQuery().getVariables());
+        this.getQuery().setVariables(new LinkedList<>(varsQueryColl));
+
+        Collection<Variable> coVarsQueryColl = new LinkedHashSet<>(this.getQuery().getCovariables());
+        this.getQuery().setCovariables(new LinkedList<>(coVarsQueryColl));
+
+        Collection<Variable> grpsQueryColl = new LinkedHashSet<>(this.getQuery().getGrouping());
+        this.getQuery().setGrouping(new LinkedList<>(grpsQueryColl));
+
+        Collection<String> varsDSQueryColl = new LinkedHashSet<>(this.getDataset().getVariable());
+        this.getDataset().setVariable(new LinkedList<>(varsDSQueryColl));
+
+        Collection<String> coVarsDSQueryColl = new LinkedHashSet<>(this.getDataset().getHeader());
+        this.getDataset().setHeader(new LinkedList<>(coVarsDSQueryColl));
+
+        Collection<String> grpsDSQueryColl = new LinkedHashSet<>(this.getDataset().getGrouping());
+        this.getDataset().setGrouping(new LinkedList<>(grpsDSQueryColl));
+    }
+
 }