diff --git a/src/main/java/org/caosdb/server/CaosDBServer.java b/src/main/java/org/caosdb/server/CaosDBServer.java
index f238bdd72df110db7021353272b87bd71fd8ff52..fab783b765cb8af3c5ffdd1dda8ab2eb5dd0086b 100644
--- a/src/main/java/org/caosdb/server/CaosDBServer.java
+++ b/src/main/java/org/caosdb/server/CaosDBServer.java
@@ -284,7 +284,10 @@ public class CaosDBServer extends Application {
     final Ini config = getShiroConfig();
     initShiro(config);
 
-    // Init Permissions
+    // Init ACMPermissions.ALL -  the whole point is to fill all these
+    // permissions into ACMPermissions.ALL for retrieval by clients. If we don't
+    // do this, every work, but the list of known permissions grows over time
+    // (as soon as these classes are used for the first time)
     logger.debug("Register permissions: ", ScriptingPermissions.PERMISSION_EXECUTION("*"));
     logger.debug("Register permissions: ", CheckStateTransition.STATE_PERMISSIONS.toString());
     logger.debug(
diff --git a/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java b/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java
index 2f636e61be1b0cffb11cb5fe93d11a67289007a2..0b19b414517769ee1d6c3882658e870d50193225 100644
--- a/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java
+++ b/src/test/java/org/caosdb/server/authentication/AuthTokenTest.java
@@ -396,6 +396,7 @@ public class AuthTokenTest {
     OneTimeAuthenticationToken.initConfig(new CharSequenceInputStream(testYaml, "utf-8"));
 
     Subject anonymous = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     anonymous.login(AnonymousAuthenticationToken.getInstance());
 
     OneTimeAuthenticationToken token =
diff --git a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
index b606346af6c14225a79018beb4d998b26ee26653..30c0cd992573c0c083d863a6d60750dd77d6e035 100644
--- a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
+++ b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java
@@ -35,6 +35,7 @@ import java.util.Set;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.caosdb.server.CaosDBServer;
+import org.caosdb.server.ServerProperties;
 import org.caosdb.server.accessControl.AnonymousAuthenticationToken;
 import org.caosdb.server.accessControl.AuthenticationUtils;
 import org.caosdb.server.accessControl.Config;
@@ -328,6 +329,7 @@ public class EntityACLTest {
   @Test
   public void testEntityACLForAnonymous() {
     Subject anonymous = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     anonymous.login(AnonymousAuthenticationToken.getInstance());
     assertTrue(AuthenticationUtils.isAnonymous(anonymous));
     EntityACL acl = EntityACL.getOwnerACLFor(anonymous);
@@ -335,35 +337,6 @@ public class EntityACLTest {
     assertTrue(acl.getOwners().isEmpty());
   }
 
-  //   @Test
-  //   public void testParseFromElement() throws JDOMException, IOException {
-  //   Assert.assertEquals("[]",
-  //   EntityACL.serialize(EntityACL.parseFromElement(stringToJdom("<ACL></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant></Grant></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Deny></Deny></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant role='bla'></Grant></ACL>"))));
-  //   Assert.assertEquals("[]", EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Deny role='bla'></Deny></ACL>"))));
-  //   Assert.assertEquals(
-  //   "{bla:2;}",
-  //   EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant role='bla'><Permission
-  // name='DELETE'/></Grant></ACL>"))));
-  //   Assert.assertEquals(
-  //   "{bla:" + (Long.MIN_VALUE + 2) + ";}",
-  //   EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Deny role='bla'><Permission name='DELETE'
-  // /></Deny></ACL>"))));
-  //   Assert.assertEquals(
-  //   "{bla:32;}",
-  //   EntityACL.serialize(EntityACL
-  //   .parseFromElement(stringToJdom("<ACL><Grant role='bla'><Permission name='RETRIEVE:ACL'
-  // /></Grant></ACL>"))));
-  //   }
-
   @Test
   public void testFactory() {
     final AbstractEntityACLFactory<EntityACL> f = new EntityACLFactory();
@@ -476,6 +449,7 @@ public class EntityACLTest {
     EntityACL acl = f.create();
 
     Subject anonymous = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     anonymous.login(AnonymousAuthenticationToken.getInstance());
     assertTrue(AuthenticationUtils.isAnonymous(anonymous));
 
diff --git a/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java b/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java
index 5d81ca738d507bcfd75dbe137756135cede3989b..226c9aaac077a56fa96535480418762d30bbb6e9 100644
--- a/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java
+++ b/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java
@@ -89,6 +89,7 @@ public class TestAbstractCaosDBServerResource {
   @Test
   public void testReponseRootElement() throws IOException {
     final Subject user = new DelegatingSubject(new DefaultSecurityManager(new AnonymousRealm()));
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     AbstractCaosDBServerResource s =
         new AbstractCaosDBServerResource() {
diff --git a/src/test/java/org/caosdb/server/resource/TestScriptingResource.java b/src/test/java/org/caosdb/server/resource/TestScriptingResource.java
index d8c1074c21e43f9f9dcf6d320614328c092c9b24..566c8a09ee301f628bfe9232dde75ad5a66c0207 100644
--- a/src/test/java/org/caosdb/server/resource/TestScriptingResource.java
+++ b/src/test/java/org/caosdb/server/resource/TestScriptingResource.java
@@ -32,6 +32,7 @@ import java.util.List;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.caosdb.server.CaosDBServer;
+import org.caosdb.server.ServerProperties;
 import org.caosdb.server.accessControl.AnonymousAuthenticationToken;
 import org.caosdb.server.accessControl.CredentialsValidator;
 import org.caosdb.server.accessControl.Principal;
@@ -205,6 +206,7 @@ public class TestScriptingResource {
   @Test
   public void testAnonymousWithOutPermission() {
     Subject user = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     Form form = new Form("call=anonymous_no_permission");
     Representation entity = form.getWebRepresentation();
@@ -222,6 +224,7 @@ public class TestScriptingResource {
   @Test
   public void testAnonymousWithPermission() {
     Subject user = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     Form form = new Form("call=anonymous_ok");
     Representation entity = form.getWebRepresentation();
@@ -254,6 +257,7 @@ public class TestScriptingResource {
   @Test
   public void testHandleForm() throws Message, IOException {
     Subject user = SecurityUtils.getSubject();
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     Form form = new Form("call=anonymous_ok");
     assertEquals(0, resource.handleForm(form));
diff --git a/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java b/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java
index 8dbbd5b1ec25843c3a5b28d46a2fa784f169330d..bff03a45e908419bbaef3a8988df7d9d382a0e8a 100644
--- a/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java
+++ b/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java
@@ -122,16 +122,10 @@ public class TestSharedFileResource {
 
     provideUserSourcesFile();
     final Subject user = new DelegatingSubject(new DefaultSecurityManager(new AnonymousRealm()));
+    CaosDBServer.setProperty(ServerProperties.KEY_AUTH_OPTIONAL, "true");
     user.login(AnonymousAuthenticationToken.getInstance());
     SharedFileResource resource =
         new SharedFileResource() {
-          // @Override
-          // protected Representation httpGetInChildClass()
-          //     throws ConnectionException, IOException, SQLException, CaosDBException,
-          //         NoSuchAlgorithmException, Exception {
-          //   // TODO Auto-generated method stub
-          //   return super.httpGetInChildClass();
-          // }
 
           @Override
           public String getSRID() {