diff --git a/pom.xml b/pom.xml
index ccfd0ef660d6afc2086d31780f7079ef8c82e6aa..269b56a2860bbd88fbf4118fa18658d888c64f79 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,7 @@
         <hibernate-entitymanager.version>4.3.8.Final</hibernate-entitymanager.version>
         <spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version>
         <spring-boot-starter-actuator.version>1.4.0.RELEASE</spring-boot-starter-actuator.version>
+        <aspectjweaver.version>1.8.9</aspectjweaver.version>
     </properties>
 
     <dependencies>
@@ -160,6 +161,11 @@
             <artifactId>flyway-core</artifactId>
             <version>${flyway-core.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>${aspectjweaver.version}</version>
+        </dependency>
     </dependencies>
 
     <pluginRepositories>
diff --git a/src/main/java/eu/hbp/mip/MIPApplication.java b/src/main/java/eu/hbp/mip/MIPApplication.java
index 01aa68be5c85641589b3b2fa23d0f054c7201011..ef20c9f9ffd625d0ef82844897455f4f8326fc97 100644
--- a/src/main/java/eu/hbp/mip/MIPApplication.java
+++ b/src/main/java/eu/hbp/mip/MIPApplication.java
@@ -6,10 +6,8 @@ package eu.hbp.mip;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cache.annotation.EnableCaching;
 
 @SpringBootApplication
-@EnableCaching
 public class MIPApplication {
 
     public static void main(String[] args) {
diff --git a/src/main/java/eu/hbp/mip/configuration/CacheConfiguration.java b/src/main/java/eu/hbp/mip/configuration/CacheConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7300fc257fcef4afd29421d8ccef64aeb0a11dd
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/configuration/CacheConfiguration.java
@@ -0,0 +1,13 @@
+package eu.hbp.mip.configuration;
+
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Created by mirco on 07.11.16.
+ */
+
+@Configuration
+@EnableCaching
+public class CacheConfiguration {
+}
diff --git a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
index 475fd93d377ae52242194b3a3639f8bd29a61585..22d92badf263a8431a2efe9ca7eeda5516173f8a 100644
--- a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
@@ -1,15 +1,14 @@
 package eu.hbp.mip.configuration;
 
+import eu.hbp.mip.utils.DataUtil;
 import org.flywaydb.core.Flyway;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.orm.jpa.EntityScan;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.DependsOn;
-import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.*;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.orm.jpa.JpaVendorAdapter;
@@ -60,6 +59,9 @@ public class PersistenceConfiguration {
         return new JdbcTemplate(scienceDataSource());
     }
 
+    @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}")
+    private String scienceMainTable;
+
     @Bean(name = "entityManagerFactory")
     @DependsOn("flyway")
     public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
@@ -78,4 +80,10 @@ public class PersistenceConfiguration {
         return flyway;
     }
 
+    @Bean(name = "dataUtil")
+    @Scope("singleton")
+    public DataUtil dataUtil() {
+        return new DataUtil(scienceJdbcTemplate(), scienceMainTable);
+    }
+
 }
diff --git a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
index 57609b5bb4b9515e7a6b28cedbb88c648156ab17..650b8e37ec27ed762bbbb538dfbf44da60805c91 100644
--- a/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ModelsApi.java
@@ -17,10 +17,8 @@ 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.beans.factory.annotation.Value;
 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;
@@ -55,11 +53,8 @@ public class ModelsApi {
     private VariableRepository variableRepository;
 
     @Autowired
-    @Qualifier("scienceJdbcTemplate")
-    private JdbcTemplate scienceJdbcTemplate;
-
-    @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}")
-    private String scienceMainTable;
+    @Qualifier("dataUtil")
+    public DataUtil dataUtil;
 
 
     @ApiOperation(value = "Get models", response = Model.class, responseContainer = "List")
@@ -290,7 +285,7 @@ public class ModelsApi {
         Gson gson = new Gson();
         JsonObject jsonModel = gson.fromJson(gson.toJson(model, Model.class), JsonObject.class);
         jsonModel.get("dataset").getAsJsonObject()
-                .add("data", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars));
+                .add("data", dataUtil.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 a0938937a5eaf0da1ea0c5fcffe44ac9b6264a16..d88d8a0b6ff44a8c36203a08fddce67dbe2ac1e7 100644
--- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
@@ -15,9 +15,7 @@ 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.beans.factory.annotation.Value;
 import org.springframework.http.ResponseEntity;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -39,11 +37,9 @@ public class RequestsApi {
     private static final Logger LOGGER = Logger.getLogger(RequestsApi.class);
 
     @Autowired
-    @Qualifier("scienceJdbcTemplate")
-    private JdbcTemplate scienceJdbcTemplate;
+    @Qualifier("dataUtil")
+    public DataUtil dataUtil;
 
-    @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}")
-    private String scienceMainTable;
 
     @ApiOperation(value = "Post a request", response = Dataset.class)
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
@@ -103,7 +99,7 @@ public class RequestsApi {
         dataset.add("grouping", gson.toJsonTree(groupings));
         dataset.add("header", gson.toJsonTree(covariables));
         dataset.add("filter", gson.toJsonTree(filters));
-        dataset.add("data", new DataUtil(scienceJdbcTemplate, scienceMainTable).getDataFromVariables(allVars));
+        dataset.add("data", dataUtil.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 3625219cfb722c45899e8d50b75d52836208025c..875e2a8443b2ad383820b4ad02262f65526836de 100644
--- a/src/main/java/eu/hbp/mip/controllers/StatsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/StatsApi.java
@@ -15,9 +15,7 @@ import io.swagger.annotations.ApiResponses;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.ResponseEntity;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -38,11 +36,9 @@ public class StatsApi {
     private ArticleRepository articleRepository;
 
     @Autowired
-    @Qualifier("scienceJdbcTemplate")
-    private JdbcTemplate scienceJdbcTemplate;
+    @Qualifier("dataUtil")
+    public DataUtil dataUtil;
 
-    @Value("#{'${spring.scienceDatasource.main-table:adni_merge}'}")
-    private String scienceMainTable;
 
     @ApiOperation(value = "Get general statistics", response = GeneralStats.class)
     @ApiResponses(value = {@ApiResponse(code = 200, message = "Found"), @ApiResponse(code = 404, message = "Not found") })
@@ -54,7 +50,7 @@ public class StatsApi {
 
         stats.setUsers(userRepository.count());
         stats.setArticles(articleRepository.count());
-        stats.setVariables(new DataUtil(scienceJdbcTemplate, scienceMainTable).countVariables());
+        stats.setVariables(dataUtil.countVariables());
 
         return ResponseEntity.ok(stats);
     }
diff --git a/src/main/java/eu/hbp/mip/utils/DataUtil.java b/src/main/java/eu/hbp/mip/utils/DataUtil.java
index 27031ec23c8120051bfe2066c859c4832266e36f..636d8bf450b8da1d46c071eb3a321d92e1d682ae 100644
--- a/src/main/java/eu/hbp/mip/utils/DataUtil.java
+++ b/src/main/java/eu/hbp/mip/utils/DataUtil.java
@@ -2,7 +2,6 @@ package eu.hbp.mip.utils;
 
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.jdbc.core.JdbcTemplate;
 
 import java.util.List;
@@ -25,7 +24,7 @@ public class DataUtil {
         this.scienceMainTable = scienceMainTable;
     }
 
-    @Cacheable("varsdata")
+    // @Cacheable("varsdata")
     public JsonObject getDataFromVariables(List<String> vars)
     {
         JsonObject data = new JsonObject();
@@ -52,7 +51,7 @@ public class DataUtil {
         return data;
     }
 
-    @Cacheable("colscount")
+    // @Cacheable("colscount")
     public long countVariables()
     {
         long count = jdbcTemplate.queryForObject(
@@ -61,7 +60,7 @@ public class DataUtil {
         return count;
     }
 
-    @Cacheable("rowscount")
+    // @Cacheable("rowscount")
     public long countAdniRows()
     {
         long count = jdbcTemplate.queryForObject(