diff --git a/frontend-js/src/main/js/Configuration.js b/frontend-js/src/main/js/Configuration.js
index 8254c7ae0b3d8934091205cd54967228bb26af87..a0370187013c4f73d68016751a8a14cbafecb74b 100644
--- a/frontend-js/src/main/js/Configuration.js
+++ b/frontend-js/src/main/js/Configuration.js
@@ -408,7 +408,11 @@ Configuration.prototype.getElementTypeTree = function () {
   var treeNodes = {
     "lcsb.mapviewer.model.map.BioEntity": {
       text: "BioEntity",
-      children: []
+      children: [],
+      data: {
+        className: "lcsb.mapviewer.model.map.BioEntity",
+        name: "BioEntity"
+      }
     }
   };
 
@@ -438,7 +442,7 @@ Configuration.prototype.getElementTypeTree = function () {
   for (var treeNodeName in treeNodes) {
     if (treeNodes.hasOwnProperty(treeNodeName)) {
       var treeNode = treeNodes[treeNodeName];
-      if (treeNode.data !== undefined) {
+      if (treeNode.data !== undefined && treeNode.data.parentClass !== undefined) {
         var parentNode = treeNodes[treeNode.data.parentClass];
         if (parentNode.data === undefined || parentNode.data.name !== "Compartment") {
           parentNode.children.push(treeNode);
diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index c1705ce4b24b18d5c6928df00fdcd943b4fe7480..eb38cdb1982aaed2796cdb2c744a51a312b330d9 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -1157,12 +1157,8 @@ ServerConnector.updateUserPreferences = function (params) {
   }).then(function (content) {
     var obj = JSON.parse(content);
     var user = new User(obj);
-    if (self._usersByLogin[user.getLogin()] !== undefined) {
-      self._usersByLogin[user.getLogin()].getPreferences().update(user.getPreferences());
-    } else {
-      self._usersByLogin[user.getLogin()] = user;
-    }
-    return self._usersByLogin[user.getLogin()];
+    params.user.getPreferences().update(user.getPreferences());
+    return params.user;
   });
 };
 
diff --git a/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js b/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js
index 1241d1c4e0eab5527b165a179657f645e62f8106..13566cf9e7bd483825de3c1ce6e08fea55cac189 100644
--- a/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js
+++ b/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js
@@ -154,7 +154,7 @@ ChooseValidatorsDialog.prototype.createVerifyAnnotationsDualListBox = function (
         "annotation-list": requiredAnnotationsData.list
       };
       data.setElementRequiredAnnotations(elementRequiredAnnotations);
-      return ServerConnector.updateUserPreferences({user: user, preferences: data}).then(null, GuiConnector.alert);
+      return ServerConnector.updateUserPreferences({user: user, preferences: data}).catch(GuiConnector.alert);
     }
   });
   checkbox.checked = requiredAnnotationsData.requiredAtLeastOnce;
diff --git a/frontend-js/src/main/js/map/data/UserPreferences.js b/frontend-js/src/main/js/map/data/UserPreferences.js
index 36ff821d76c9f6f184047d51a2875af2ce813b6a..4a41e01ba29a25a809ac4ddb57b06d3d51781da0 100644
--- a/frontend-js/src/main/js/map/data/UserPreferences.js
+++ b/frontend-js/src/main/js/map/data/UserPreferences.js
@@ -34,8 +34,8 @@ UserPreferences.prototype.update = function (userPreferences) {
 
   updateDict(this._projectUpload, userPreferences.getProjectUpload());
   updateDict(this._elementAnnotators, userPreferences.getElementAnnotators);
-  updateDict(this._elementValidAnnotations, userPreferences.getElementValidAnnotations());
-  updateDict(this._elementRequiredAnnotations, userPreferences.getElementRequiredAnnotations());
+  updateDict(this._elementValidAnnotations, userPreferences._elementValidAnnotations);
+  updateDict(this._elementRequiredAnnotations, userPreferences._elementRequiredAnnotations);
   updateDict(this._annotatorsParameters, userPreferences.getAnnotatorsParameters());
   updateDict(this._guiPreferences, userPreferences.getGuiPreferences());
 };
diff --git a/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java b/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java
index 94ea23876865138be5739f1bef0c12527c78acb8..79ae0db71f0cb9965f5950ddb193d2bedce3dbe4 100644
--- a/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java
+++ b/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java
@@ -337,6 +337,15 @@ public class UserAnnotationSchema implements Serializable {
     return new ArrayList<MiriamType>();
   }
 
+  public boolean requiresAtLeastOneAnnotation(Class<?> clazz) {
+    for (UserClassRequiredAnnotations cva : classRequiredAnnotators) {
+      if (cva.getClassName().equals(clazz.getCanonicalName())) {
+        return cva.getRequireAtLeastOneAnnotation();
+      }
+    }
+    return false;
+  }
+
   /**
    * @return the classRequiredAnnotators
    * @see #classRequiredAnnotators
diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
index b79e0ef37258f9217ede64927ce122ad8b7148a5..fc5918b7765cb2dc686aef6030ef21378e12e632 100644
--- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
+++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java
@@ -1153,6 +1153,7 @@ public class ProjectService implements IProjectService {
     ClassTreeNode top = elementUtils.getAnnotatedElementClassTree();
 
     Class<?> clazz = top.getClazz();
+    top.setData(annotationSchema.requiresAtLeastOneAnnotation(clazz));
     TreeNode root = new DefaultTreeNode(new AnnotatedObjectTreeRow(top, modelAnnotator.getAvailableAnnotators(clazz),
         modelAnnotator.getAnnotatorsFromCommonNames(annotationSchema.getAnnotatorsForClass(clazz)),
         annotationSchema.getValidAnnotations(clazz), annotationSchema.getRequiredAnnotations(clazz)), null);
@@ -1171,6 +1172,7 @@ public class ProjectService implements IProjectService {
       for (ClassTreeNode node : element.getLeft().getChildren()) {
 
         clazz = node.getClazz();
+        node.setData(annotationSchema.requiresAtLeastOneAnnotation(clazz));
         AnnotatedObjectTreeRow data = new AnnotatedObjectTreeRow(node, modelAnnotator.getAvailableAnnotators(clazz),
             modelAnnotator.getAnnotatorsFromCommonNames(annotationSchema.getAnnotatorsForClass(clazz)),
             annotationSchema.getValidAnnotations(clazz), annotationSchema.getRequiredAnnotations(clazz));