diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
index 0d24b28d3eada3fcd7bfa714c03e3ae572eefc64..732ae2dfdff7a7783626def818bcd671a462b62c 100644
--- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
@@ -5,17 +5,22 @@
 package eu.hbp.mip.controllers;
 
 import com.github.slugify.Slugify;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
 import eu.hbp.mip.configuration.SecurityConfiguration;
 import eu.hbp.mip.model.Filter;
 import eu.hbp.mip.model.Model;
 import eu.hbp.mip.model.User;
 import eu.hbp.mip.model.Variable;
 import eu.hbp.mip.repositories.*;
+import eu.hbp.mip.utils.DataUtil;
 import io.swagger.annotations.*;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
@@ -49,6 +54,11 @@ public class ModelsApi {
     @Autowired
     VariableRepository variableRepository;
 
+    @Autowired
+    @Qualifier("scienceJdbcTemplate")
+    private JdbcTemplate scienceJdbcTemplate;
+
+
     @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List")
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
     @RequestMapping(method = RequestMethod.GET)
@@ -85,12 +95,12 @@ public class ModelsApi {
             }
         }
 
-        List<Model> modelsList = new LinkedList<>();
+        List<Object> modelsList = new LinkedList<>();
         for (Iterator<Model> i = models.iterator(); i.hasNext(); )
         {
             Model m = i.next();
             m.cureVariables();
-            modelsList.add(m);
+            modelsList.add(getModelWithDataset(m));
         }
 
         return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(modelsList);
@@ -107,6 +117,8 @@ public class ModelsApi {
 
         LOGGER.info("Create a model");
 
+        model = getModelWithDataset(model);
+
         User user = securityConfiguration.getUser();
 
         model.setTitle(model.getConfig().getTitle().get("text"));
@@ -178,7 +190,7 @@ public class ModelsApi {
         datasetRepository.save(model.getDataset());
         modelRepository.save(model);
 
-        LOGGER.info("Model saved (also saved model.config, model.query and model.dataset)");
+        LOGGER.info("Model saved (also saved model.config and model.query)");
 
         return new ResponseEntity<Model>(HttpStatus.CREATED).ok(model);
     }
@@ -211,7 +223,7 @@ public class ModelsApi {
 
         model.cureVariables();
 
-        return new ResponseEntity<>(HttpStatus.OK).ok(model);
+        return new ResponseEntity<>(HttpStatus.OK).ok(getModelWithDataset(model));
     }
 
 
@@ -269,16 +281,19 @@ public class ModelsApi {
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
-    private static String randomStr(int length) {
-        char[] chars = "abcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
-        StringBuilder sb = new StringBuilder();
-        Random random = new Random();
-        for (int i = 0; i < length; i++) {
-            char c = chars[random.nextInt(chars.length)];
-            sb.append(c);
-        }
-        return sb.toString();
-    }
+    private Model getModelWithDataset(Model model)
+    {
+        List<String> allVars = new LinkedList<>();
+        allVars.addAll(model.getDataset().getVariable());
+        allVars.addAll(model.getDataset().getHeader());
+        allVars.addAll(model.getDataset().getGrouping());
 
+        Gson gson = new Gson();
+        JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class);
+        jsonModel.get("dataset").getAsJsonObject()
+                .add("data", new DataUtil(scienceJdbcTemplate).getDataFromVariables(allVars));
+
+        return gson.fromJson(jsonModel, Model.class);
+    }
 
 }
diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
index 1bd7c7dfc329078c12567068bad99f746e5b511b..40c97e92a8516737784f1fc4fa3ba577d5843bbe 100644
--- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
@@ -10,6 +10,7 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import eu.hbp.mip.model.Dataset;
 import eu.hbp.mip.model.Query;
+import eu.hbp.mip.utils.DataUtil;
 import io.swagger.annotations.*;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -83,29 +84,12 @@ public class RequestsApi {
             allVars.add(varCode);
         }
 
-        for(String varCode : allVars)
-        {
-            JsonArray currentVarData = new JsonArray();
-            String sqlQuery = "SELECT " + varCode + " FROM science.adni_merge";
-            for (Map resultMap : scienceJdbcTemplate.queryForList(sqlQuery))
-            {
-                String strValue = String.valueOf(resultMap.get(varCode));
-                try {
-                    Double numValue = Double.parseDouble(strValue);
-                    currentVarData.add(numValue);
-                } catch (NumberFormatException e2) {
-                    currentVarData.add(strValue);
-                }
-            }
-            data.add(varCode, currentVarData);
-        }
-
         dataset.addProperty("code", code);
         dataset.addProperty("date", date.getTime());
         dataset.add("variable", gson.toJsonTree(variables));
         dataset.add("grouping", gson.toJsonTree(groupings));
         dataset.add("header", gson.toJsonTree(covariables));
-        dataset.add("data", data);
+        dataset.add("data", new DataUtil(scienceJdbcTemplate).getDataFromVariables(allVars));
 
         return ResponseEntity.ok(new Gson().fromJson(dataset, Object.class));
     }
diff --git a/src/main/java/eu/hbp/mip/controllers/StatsApi.java b/src/main/java/eu/hbp/mip/controllers/StatsApi.java
index f001dfd5bd28ec5591d71a9e8ab5a535060ec0bf..3601b617b7375c2e4721b3ff3d29735470de61c8 100644
--- a/src/main/java/eu/hbp/mip/controllers/StatsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/StatsApi.java
@@ -7,6 +7,7 @@ package eu.hbp.mip.controllers;
 import eu.hbp.mip.model.GeneralStats;
 import eu.hbp.mip.repositories.ArticleRepository;
 import eu.hbp.mip.repositories.UserRepository;
+import eu.hbp.mip.utils.DataUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -49,17 +50,9 @@ public class StatsApi {
 
         stats.setUsers(userRepository.count());
         stats.setArticles(articleRepository.count());
-        stats.setVariables(countVariables());
+        stats.setVariables(new DataUtil(scienceJdbcTemplate).countVariables());
 
         return ResponseEntity.ok(stats);
     }
 
-    private Long countVariables()
-    {
-        Long count = scienceJdbcTemplate.queryForObject(
-                "SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS " +
-                        "WHERE table_schema = 'science' AND table_name = 'adni_merge'", Long.class);
-        return count;
-    }
-
 }
diff --git a/src/main/java/eu/hbp/mip/model/Dataset.java b/src/main/java/eu/hbp/mip/model/Dataset.java
index 7d5192b9a71c01cc2e90fae58bc5bdafd7c04acd..3662c755252db4eae9d38ea479d018d6d7786109 100644
--- a/src/main/java/eu/hbp/mip/model/Dataset.java
+++ b/src/main/java/eu/hbp/mip/model/Dataset.java
@@ -5,10 +5,13 @@
 package eu.hbp.mip.model;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 
 import javax.persistence.*;
-import java.util.*;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
 
 @Entity
 @Table(name = "`dataset`")
@@ -33,6 +36,10 @@ public class Dataset {
     @CollectionTable(name = "dataset_variable", joinColumns = @JoinColumn(name = "dataset_code"))
     private List<String> variable = new LinkedList<>();
 
+    @Transient
+    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
+    private Object data = null;
+
 
     public Dataset() {
         /*
@@ -85,4 +92,11 @@ public class Dataset {
         this.variable = variable;
     }
 
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
 }
diff --git a/src/main/java/eu/hbp/mip/utils/DataUtil.java b/src/main/java/eu/hbp/mip/utils/DataUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..468f008d2704510e1243ec9b6a3527fb2dc4c371
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/utils/DataUtil.java
@@ -0,0 +1,54 @@
+package eu.hbp.mip.utils;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by mirco on 14.09.16.
+ */
+
+public class DataUtil {
+
+    private JdbcTemplate jdbcTemplate;
+
+    public DataUtil(JdbcTemplate jdbcTemplate)
+    {
+        this.jdbcTemplate = jdbcTemplate;
+    }
+
+    public JsonObject getDataFromVariables(List<String> vars)
+    {
+        JsonObject data = new JsonObject();
+
+        for (String var : vars) {
+            JsonArray currentVarData = new JsonArray();
+            List<Map<String, Object>> queryResult = jdbcTemplate.queryForList("SELECT " + var + " FROM science.adni_merge");
+            for (Map resultMap : queryResult)
+            {
+                String strValue = String.valueOf(resultMap.get(var));
+                try {
+                    double numValue = Double.parseDouble(strValue);
+                    currentVarData.add(numValue);
+                } catch (NumberFormatException e2) {
+                    currentVarData.add(strValue);
+                }
+            }
+            data.add(var, currentVarData);
+        }
+
+        return data;
+    }
+
+    public long countVariables()
+    {
+        long count = jdbcTemplate.queryForObject(
+                "SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS " +
+                        "WHERE table_schema = 'science' AND table_name = 'adni_merge'", Long.class);
+        return count;
+    }
+
+}