diff --git a/src/main/java/eu/hbp/mip/controllers/GroupsApi.java b/src/main/java/eu/hbp/mip/controllers/GroupsApi.java
index 80b3d6fdb3cb642b5547b8b3337e3db78d980b4d..bb325947c957bd53807750938fee54c83195b2e5 100644
--- a/src/main/java/eu/hbp/mip/controllers/GroupsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/GroupsApi.java
@@ -15,6 +15,7 @@ import org.apache.log4j.Logger;
 import org.postgresql.util.PGobject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.http.ResponseEntity;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.support.rowset.SqlRowSet;
@@ -33,36 +34,30 @@ public class GroupsApi {
 
     private static final Gson gson = new Gson();
 
-    private static String groups;
-
     @Autowired
     @Qualifier("metaJdbcTemplate")
     private JdbcTemplate metaJdbcTemplate;
 
 
     @ApiOperation(value = "Get the root group (containing all subgroups)", response = Group.class)
+    @Cacheable("groups")
     @RequestMapping(method = RequestMethod.GET)
     public ResponseEntity<Object> getTheRootGroup()  {
         LOGGER.info("Get root group and its whole sub-groups tree");
 
-        loadGroups();
-
-        return ResponseEntity.ok(gson.fromJson(groups, Object.class));
+        return ResponseEntity.ok(gson.fromJson(loadGroups(), Object.class));
     }
 
-    private void loadGroups() {
-        if(groups == null)
-        {
-            String sqlQuery = "SELECT * FROM meta_variables";
-            SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
-            data.next();
-            String json = ((PGobject) data.getObject("hierarchy")).getValue();
+    private String loadGroups() {
+        String sqlQuery = "SELECT * FROM meta_variables";
+        SqlRowSet data = metaJdbcTemplate.queryForRowSet(sqlQuery);
+        data.next();
+        String json = ((PGobject) data.getObject("hierarchy")).getValue();
 
-            JsonObject root = gson.fromJson(json, JsonObject.class);
+        JsonObject root = gson.fromJson(json, JsonObject.class);
+        removeVariablesRecursive(root);
 
-            removeVariablesRecursive(root);
-            groups = gson.toJson(root);
-        }
+        return gson.toJson(root);
     }
 
     private void removeVariablesRecursive(JsonObject element) {