diff --git a/.gitignore b/.gitignore
index fb8d1973e9a07d5509be333713413aa355f2f17b..af5f56533fa51f59bd52b39a413b9b11a88bf4f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,6 @@ target/
 .classpath
 .project
 .settings
+
+# logfiles
+screen*log*
diff --git a/caosdb-webui b/caosdb-webui
index 32fa3b8af945d4d0bf4e98818b2456bdc8f375c0..519e9f868d299ca0d7477e423e71e3f080000a00 160000
--- a/caosdb-webui
+++ b/caosdb-webui
@@ -1 +1 @@
-Subproject commit 32fa3b8af945d4d0bf4e98818b2456bdc8f375c0
+Subproject commit 519e9f868d299ca0d7477e423e71e3f080000a00
diff --git a/makefile b/makefile
index 78541e6bec549dcf0676520bd79739172afd4735..a972dcbb5edc2b3a4c1cb760327c4bfba8b46b82 100644
--- a/makefile
+++ b/makefile
@@ -21,9 +21,13 @@
 # ** end header
 #
 
+<<<<<<< HEAD
 runserver:
 	mvn exec:exec
 
+=======
+SHELL:=/bin/bash
+>>>>>>> 619a505b48586e03fd34f65da12d6ff1b32138c6
 run: compile
 	mvn exec:exec
 
@@ -62,9 +66,14 @@ clean: clean-antlr
 clean-antlr:
 	rm -rf target/generated-sources/antlr4/
 
-run-debug-screen:
+.PHONY: run-server-screen
+run-server-screen:
+	@if test "$$(screen -ls | grep -c 'caosdb-screen')" -eq "1"; then \
+		echo "server is probably running. try 'screen -ls'"; \
+		exit 1 ; \
+	fi
 	# start and wait for server
-	@screen -L -S caosdb-screen -t server -d -m -A make run-debug
+	@screen -L -S caosdb-screen -t server -d -m -A make run
 	@sleep 2
 	@while [ 1 -eq 1 ] ; do \
 		screen -S caosdb-screen -X hardcopy .screen.log || break ; \
@@ -72,11 +81,33 @@ run-debug-screen:
 	done; \
 
 
-stop-debug-screen:
-	# stop screen session with debug server
+.PHONY: stop-server-screen
+stop-server-screen:
+	# stop screen session with server
 	@screen -S caosdb-screen -X hardcopy screen.log || true
 	@screen -S caosdb-screen -p server -X stuff "^C"
 
+.PHONY: run-debug-screen
+run-debug-screen:
+	@if test "$$(screen -ls | grep -c 'caosdb-debug-screen')" -eq "1"; then \
+		echo "server is probably running. try 'screen -ls'"; \
+		exit 1 ; \
+	fi
+	# start and wait for server
+	@screen -L -S caosdb-debug-screen -t server -d -m -A make run-debug
+	@sleep 2
+	@while [ 1 -eq 1 ] ; do \
+		screen -S caosdb-debug-screen -X hardcopy .screen.log || break ; \
+		[ $$(grep -c "org.restlet.ext.jetty.JettyServerHelper start" .screen.log) -eq 0 ] || break ; \
+	done; \
+
+
+.PHONY: stop-debug-screen
+stop-debug-screen:
+	# stop screen session with debug server
+	@screen -S caosdb-debug-screen -X hardcopy screen.log || true
+	@screen -S caosdb-debug-screen -p server -X stuff "^C"
+
 .m2-local:
 	mkdir .m2-local
 
diff --git a/misc/pam_authentication/makefile b/misc/pam_authentication/makefile
index 7c7adf6b2060fc5827c917a38f804d226ce764c1..26bd0e9fcab2420c0f88219248bf57f768d64068 100644
--- a/misc/pam_authentication/makefile
+++ b/misc/pam_authentication/makefile
@@ -23,5 +23,5 @@
 # Makefile for pam_authentication.c
 
 main: pam_authentication.c
-	mkdir ./bin
+	mkdir -p ./bin
 	gcc -o ./bin/pam_authentication pam_authentication.c -lpam -lpam_misc
diff --git a/src/main/java/caosdb/server/ServerProperties.java b/src/main/java/caosdb/server/ServerProperties.java
index a4f93ec1c1207e21b0d282974fbf23c1a028053e..761dc4a3f78898b259547a60975d9eeca9915e43 100644
--- a/src/main/java/caosdb/server/ServerProperties.java
+++ b/src/main/java/caosdb/server/ServerProperties.java
@@ -117,6 +117,10 @@ public class ServerProperties extends Properties {
   public static final String KEY_SERVER_SIDE_SCRIPTING_WORKING_DIR =
       "SERVER_SIDE_SCRIPTING_WORKING_DIR";
 
+  public static final String KEY_NO_REPLY_EMAIL = "NO_REPLY_EMAIL";
+
+  public static final String KEY_NO_REPLY_NAME = "NO_REPLY_NAME";
+
   /**
    * This init_server_properties method reads the config file which contains key-value-pairs for
    * such variables like the user name of the database, the port the server will be listening on
diff --git a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrievePermissionRules.java b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrievePermissionRules.java
index d4b35ae65f2f4fb92a02dade22a0c06aee14ffae..7428157e45156e18e0ce1819f731dd4729faee99 100644
--- a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrievePermissionRules.java
+++ b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrievePermissionRules.java
@@ -59,7 +59,7 @@ public class MySQLRetrievePermissionRules extends MySQLTransaction
     } catch (final ConnectionException e) {
       throw new TransactionException(e);
     }
-    return null;
+    return new HashSet<>();
   }
 
   @SuppressWarnings("unchecked")
diff --git a/src/main/java/caosdb/server/database/backend/transaction/DeleteEntityProperties.java b/src/main/java/caosdb/server/database/backend/transaction/DeleteEntityProperties.java
index addcb4e7e73a46125a5938f30cf8c307af99b645..15ace2b9820398cb270a6a1e098e6f642b66ab9d 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/DeleteEntityProperties.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/DeleteEntityProperties.java
@@ -23,6 +23,7 @@
 package caosdb.server.database.backend.transaction;
 
 import static caosdb.server.transaction.Transaction.ERROR_INTEGRITY_VIOLATION;
+
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.DeleteEntityPropertiesImpl;
 import caosdb.server.database.exceptions.IntegrityException;
diff --git a/src/main/java/caosdb/server/database/backend/transaction/DeleteFile.java b/src/main/java/caosdb/server/database/backend/transaction/DeleteFile.java
index 1123599561dad58fc9ae8a4c3218e05d4c7b0507..82c022bef0f321f5a1be81e5f58207c9d06cd427 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/DeleteFile.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/DeleteFile.java
@@ -22,12 +22,12 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.io.IOException;
 import caosdb.server.CaosDBException;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.Message;
+import java.io.IOException;
 
 public class DeleteFile extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/DeleteSparseEntity.java b/src/main/java/caosdb/server/database/backend/transaction/DeleteSparseEntity.java
index f777a124c3bc9f64d81333c4298477e45b92a076..4bd6e5b9706fe743be6c924c3e1f86cb6ff83371 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/DeleteSparseEntity.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/DeleteSparseEntity.java
@@ -23,6 +23,7 @@
 package caosdb.server.database.backend.transaction;
 
 import static caosdb.server.transaction.Transaction.ERROR_INTEGRITY_VIOLATION;
+
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.DeleteSparseEntityImpl;
 import caosdb.server.database.exceptions.IntegrityException;
@@ -38,7 +39,7 @@ public class DeleteSparseEntity extends BackendTransaction {
   }
 
   @Override
-  protected void execute()  {
+  protected void execute() {
     RetrieveSparseEntity.removeCached(this.entity.getId());
 
     final DeleteSparseEntityImpl ret = getImplementation(DeleteSparseEntityImpl.class);
diff --git a/src/main/java/caosdb/server/database/backend/transaction/GetChildren.java b/src/main/java/caosdb/server/database/backend/transaction/GetChildren.java
index 2952b98567d260f4a54965fdbed08852cb723b89..d476345c2e05cf75d5bcfdf333edf760ff991e3a 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/GetChildren.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/GetChildren.java
@@ -22,10 +22,10 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.List;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.GetChildrenImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.List;
 
 public class GetChildren extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/GetDependentEntities.java b/src/main/java/caosdb/server/database/backend/transaction/GetDependentEntities.java
index 60143ec8fb84cb3e78bec44b7d989adb73e2ab42..e4e6e96f999d5ceb3402d1235de04ae6f32e358b 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/GetDependentEntities.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/GetDependentEntities.java
@@ -22,10 +22,10 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.List;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.GetDependentEntitiesImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.List;
 
 public class GetDependentEntities extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/GetFileIterator.java b/src/main/java/caosdb/server/database/backend/transaction/GetFileIterator.java
index d8f47b18a6705d6c86ad6a61b43c293dcbb17ff2..7e28ff243575f75ea577ec80029507cfa1d49d17 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/GetFileIterator.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/GetFileIterator.java
@@ -22,10 +22,10 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.Iterator;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.GetFileIteratorImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.Iterator;
 
 public class GetFileIterator extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/GetIDByName.java b/src/main/java/caosdb/server/database/backend/transaction/GetIDByName.java
index 1adda922cf449d84404b6284507cb00a660f99dd..895cd707b57d70693ec6a80396b26bce391027af 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/GetIDByName.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/GetIDByName.java
@@ -22,12 +22,12 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.List;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.GetIDByNameImpl;
 import caosdb.server.database.exceptions.EntityDoesNotExistException;
 import caosdb.server.database.exceptions.EntityWasNotUniqueException;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.List;
 
 public class GetIDByName extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/InsertEntityDatatype.java b/src/main/java/caosdb/server/database/backend/transaction/InsertEntityDatatype.java
index f0f7dbe2fa9303076541403628c17f8b5f24f4e4..58aa4d88498e7493466cde844d241336b29e3896 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/InsertEntityDatatype.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/InsertEntityDatatype.java
@@ -1,6 +1,7 @@
 package caosdb.server.database.backend.transaction;
 
 import static caosdb.server.transaction.Transaction.ERROR_INTEGRITY_VIOLATION;
+
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.InsertEntityDatatypeImpl;
 import caosdb.server.database.exceptions.IntegrityException;
diff --git a/src/main/java/caosdb/server/database/backend/transaction/InsertEntityProperties.java b/src/main/java/caosdb/server/database/backend/transaction/InsertEntityProperties.java
index d5e32df192db6373d50710d760953bc0f651d37c..05e4dbce0087ce8073d124136419f760a66d581c 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/InsertEntityProperties.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/InsertEntityProperties.java
@@ -22,9 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.ArrayList;
-import java.util.Deque;
-import java.util.List;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.DatabaseUtils;
 import caosdb.server.database.backend.interfaces.InsertEntityPropertiesImpl;
@@ -38,6 +35,9 @@ import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.Role;
 import caosdb.server.entity.StatementStatus;
 import caosdb.server.entity.wrapper.Property;
+import java.util.ArrayList;
+import java.util.Deque;
+import java.util.List;
 
 public class InsertEntityProperties extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/InsertFile.java b/src/main/java/caosdb/server/database/backend/transaction/InsertFile.java
index fe479b20e9a6541b6c2dae2a62165e512247db37..fe9b930e7a51391e3379f76b6393081edbcc0583 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/InsertFile.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/InsertFile.java
@@ -22,12 +22,12 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.io.IOException;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.Message;
 import caosdb.server.utils.EntityStatus;
+import java.io.IOException;
 
 public class InsertFile extends BackendTransaction {
 
@@ -38,7 +38,7 @@ public class InsertFile extends BackendTransaction {
   }
 
   @Override
-  public void execute(){
+  public void execute() {
     try {
       if (this.entity.getEntityStatus() == EntityStatus.QUALIFIED) {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/InsertLogRecord.java b/src/main/java/caosdb/server/database/backend/transaction/InsertLogRecord.java
index c951712a055e70495b58fc63eccec8ef4947f3f7..43a21d481d954d34dba66a2f9b824acfaac2aabd 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/InsertLogRecord.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/InsertLogRecord.java
@@ -22,11 +22,11 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.List;
-import java.util.logging.LogRecord;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.InsertLogRecordImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.List;
+import java.util.logging.LogRecord;
 
 public class InsertLogRecord extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/InsertSparseEntity.java b/src/main/java/caosdb/server/database/backend/transaction/InsertSparseEntity.java
index 1d11d85c449c2862eb18be6aa2752b79b642831a..f8711197064a88dd92c408f329d1a36df55c5ed2 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/InsertSparseEntity.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/InsertSparseEntity.java
@@ -23,6 +23,7 @@
 package caosdb.server.database.backend.transaction;
 
 import static caosdb.server.transaction.Transaction.ERROR_INTEGRITY_VIOLATION;
+
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.InsertSparseEntityImpl;
 import caosdb.server.database.exceptions.IntegrityException;
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RegisterSubDomain.java b/src/main/java/caosdb/server/database/backend/transaction/RegisterSubDomain.java
index f5cd5604cd27b88b87cc1c039708ce4c760aff52..08b999d0e0c1e36d108c89a0cf9eed513d3290e4 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RegisterSubDomain.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RegisterSubDomain.java
@@ -22,10 +22,10 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.Deque;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.RegisterSubDomainImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.Deque;
 
 public class RegisterSubDomain extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveAll.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveAll.java
index 28f8e3442df30ed4c36ad4305b7143f01ad89cc9..5820547c853247245b398778fab97bd854a5a126 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveAll.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveAll.java
@@ -22,12 +22,12 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.List;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.RetrieveAllImpl;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.entity.RetrieveEntity;
 import caosdb.server.entity.container.TransactionContainer;
+import java.util.List;
 
 public class RetrieveAll extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveAllUncheckedFiles.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveAllUncheckedFiles.java
index 192428e743a8ca34aa6e2cbdebd321b90855ea6f..b99694243d9b6571c1c96ac4ce3114543380c434 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveAllUncheckedFiles.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveAllUncheckedFiles.java
@@ -22,11 +22,11 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.Iterator;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.RetrieveAllUncheckedFilesImpl;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.database.proto.SparseEntity;
+import java.util.Iterator;
 
 public class RetrieveAllUncheckedFiles extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveDatatypes.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveDatatypes.java
index 08eac872e3ecc2521756f49fc4ad8cf134bb03db..44f8427aeb2911c0483be3824a1e3fe831350cb5 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveDatatypes.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveDatatypes.java
@@ -22,7 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.ArrayList;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.RetrieveDatatypesImpl;
 import caosdb.server.database.exceptions.TransactionException;
@@ -31,6 +30,7 @@ import caosdb.server.entity.Entity;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.RetrieveEntity;
 import caosdb.server.entity.container.Container;
+import java.util.ArrayList;
 
 public class RetrieveDatatypes extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullEntity.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullEntity.java
index 62edee0d15fef47e92a2bbc6b7d1fa8d3e92eb92..7ac8c1592e0cb275e60008532cdabb33919369a9 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullEntity.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullEntity.java
@@ -64,7 +64,7 @@ public class RetrieveFullEntity extends BackendTransaction {
       }
     }
   }
-  
+
   public Container<? extends EntityInterface> getContainer() {
     return container;
   }
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveLogRecord.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveLogRecord.java
index a08d737fcec38d1c1251514e12ac49ef2806408d..42211d4312af6370c0f0335dd823f6129719dafd 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveLogRecord.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveLogRecord.java
@@ -22,12 +22,12 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.RetrieveLogRecordImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
 
 public class RetrieveLogRecord extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveParents.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveParents.java
index 0169b087230250c9470909dc6f480b052bfd1429..5d1545d29b9bab295c9f335fe4eb083f12f748b2 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveParents.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveParents.java
@@ -22,8 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.ArrayList;
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.database.CacheableBackendTransaction;
@@ -33,6 +31,8 @@ import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.database.misc.Cache;
 import caosdb.server.database.proto.VerySparseEntity;
 import caosdb.server.entity.EntityInterface;
+import java.util.ArrayList;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrieveParents
     extends CacheableBackendTransaction<Integer, ArrayList<VerySparseEntity>> {
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrievePermissionRules.java b/src/main/java/caosdb/server/database/backend/transaction/RetrievePermissionRules.java
index ef99a55b8c05eb5b291c0022fb10df3d5d03a84a..c0daecbc46ac90630eac83d0c7334d7da148d429 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrievePermissionRules.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrievePermissionRules.java
@@ -22,8 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.HashSet;
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.database.CacheableBackendTransaction;
@@ -31,6 +29,8 @@ import caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.database.misc.Cache;
 import caosdb.server.permissions.PermissionRule;
+import java.util.HashSet;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrievePermissionRules
     extends CacheableBackendTransaction<String, HashSet<PermissionRule>> {
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveProperties.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveProperties.java
index 98f7994cb001c7f1fbe22e6bbeb34e119537a940..b75d91acba76a4d97b16395701afe42ff05c5fac 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveProperties.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveProperties.java
@@ -22,8 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.ArrayList;
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.database.CacheableBackendTransaction;
@@ -35,6 +33,8 @@ import caosdb.server.database.proto.ProtoProperty;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.Role;
 import caosdb.server.entity.wrapper.Property;
+import java.util.ArrayList;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrieveProperties
     extends CacheableBackendTransaction<Integer, ArrayList<ProtoProperty>> {
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveRole.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveRole.java
index ef5a5ec60947b1e5ba7b0030e0a9c2b1e43fa3d8..e45879964ef8bafad0106238073ff8c9d87e2287 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveRole.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveRole.java
@@ -22,7 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.accessControl.Role;
@@ -30,6 +29,7 @@ import caosdb.server.database.CacheableBackendTransaction;
 import caosdb.server.database.backend.interfaces.RetrieveRoleImpl;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.database.misc.Cache;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrieveRole extends CacheableBackendTransaction<String, Role> {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java
index 4d533068a39b03a03aad887387c6ee5d5e648ed7..df9f58671184fb70fca99ca7707f9270f75c87a1 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveSparseEntity.java
@@ -22,7 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.database.CacheableBackendTransaction;
@@ -34,6 +33,7 @@ import caosdb.server.database.proto.SparseEntity;
 import caosdb.server.entity.Entity;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.utils.EntityStatus;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrieveSparseEntity extends CacheableBackendTransaction<Integer, SparseEntity> {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveTransactionHistory.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveTransactionHistory.java
index 795e1691282ad325288623c22f6578f9035f9d6f..cb9cdd9e993b9399f2bec5c9bff7316e0754b9ed 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveTransactionHistory.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveTransactionHistory.java
@@ -22,8 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.ArrayList;
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.datetime.UTCDateTime;
 import caosdb.server.database.CacheableBackendTransaction;
 import caosdb.server.database.backend.interfaces.RetrieveTransactionHistoryImpl;
@@ -31,6 +29,8 @@ import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.database.proto.ProtoTransactionLogMessage;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.utils.TransactionLogMessage;
+import java.util.ArrayList;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrieveTransactionHistory
     extends CacheableBackendTransaction<Integer, ArrayList<ProtoTransactionLogMessage>> {
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveUser.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveUser.java
index 9ccc45821560f83f84fa18f6f9bf8e9f18916cde..7492df38adfcfd24d18f1a263be5070a8916c9c8 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveUser.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveUser.java
@@ -22,7 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.accessControl.Principal;
@@ -31,6 +30,7 @@ import caosdb.server.database.backend.interfaces.RetrieveUserImpl;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.database.misc.Cache;
 import caosdb.server.database.proto.ProtoUser;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RetrieveUser extends CacheableBackendTransaction<Principal, ProtoUser> {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/RuleLoader.java b/src/main/java/caosdb/server/database/backend/transaction/RuleLoader.java
index 888cefc5a8101b4236f59f91e4701f6c9e2b418b..1a8698ac1d698946e7a3e239c03e386bc200e2b6 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/RuleLoader.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/RuleLoader.java
@@ -22,8 +22,6 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.ArrayList;
-import org.apache.commons.jcs.access.CacheAccess;
 import caosdb.server.CaosDBServer;
 import caosdb.server.ServerProperties;
 import caosdb.server.database.CacheableBackendTransaction;
@@ -35,6 +33,8 @@ import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.container.TransactionContainer;
 import caosdb.server.jobs.Job;
 import caosdb.server.transaction.Transaction;
+import java.util.ArrayList;
+import org.apache.commons.jcs.access.CacheAccess;
 
 public class RuleLoader extends CacheableBackendTransaction<String, ArrayList<Rule>> {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/SetPermissionRules.java b/src/main/java/caosdb/server/database/backend/transaction/SetPermissionRules.java
index 4cb7e8525ee79a610bcd637424a144a104df45ce..a632f299e223d2b46105b81f9b6b784b0cd58204 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/SetPermissionRules.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/SetPermissionRules.java
@@ -22,11 +22,11 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.Set;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.SetPermissionRulesImpl;
 import caosdb.server.database.exceptions.TransactionException;
 import caosdb.server.permissions.PermissionRule;
+import java.util.Set;
 
 public class SetPermissionRules extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/database/backend/transaction/UpdateUserRoles.java b/src/main/java/caosdb/server/database/backend/transaction/UpdateUserRoles.java
index fc6abf16f021f4d847b1729c3f8107df116fc910..359bbb3a3efa35e37d38b733c204ff8ca2840028 100644
--- a/src/main/java/caosdb/server/database/backend/transaction/UpdateUserRoles.java
+++ b/src/main/java/caosdb/server/database/backend/transaction/UpdateUserRoles.java
@@ -22,11 +22,11 @@
  */
 package caosdb.server.database.backend.transaction;
 
-import java.util.HashSet;
 import caosdb.server.accessControl.Principal;
 import caosdb.server.database.BackendTransaction;
 import caosdb.server.database.backend.interfaces.UpdateUserRolesImpl;
 import caosdb.server.database.exceptions.TransactionException;
+import java.util.HashSet;
 
 public class UpdateUserRoles extends BackendTransaction {
 
diff --git a/src/main/java/caosdb/server/entity/Entity.java b/src/main/java/caosdb/server/entity/Entity.java
index c18d79ecffc97c73f7e9415bf9a9defc839ec770..bf1022dad1c0e6b954ea876ecce674a87ff7650e 100644
--- a/src/main/java/caosdb/server/entity/Entity.java
+++ b/src/main/java/caosdb/server/entity/Entity.java
@@ -256,7 +256,7 @@ public class Entity extends AbstractObservable implements EntityInterface {
 
   @Override
   public final boolean hasDescription() {
-    return  !(this.description == null || this.description.isEmpty() || this.description.equals(""));
+    return !(this.description == null || this.description.isEmpty() || this.description.equals(""));
   }
 
   @Override
@@ -302,8 +302,9 @@ public class Entity extends AbstractObservable implements EntityInterface {
     if (hasEntityStatus() && getEntityStatus() == entityStatus) {
       return;
     }
-    if(this.entityStatus == EntityStatus.UNQUALIFIED ) {
-      throw new CaosDBException("It is not allowed to change the state again, once an UNQUALIFIED state has been reached.");
+    if (this.entityStatus == EntityStatus.UNQUALIFIED) {
+      throw new CaosDBException(
+          "It is not allowed to change the state again, once an UNQUALIFIED state has been reached.");
     }
     this.entityStatus = entityStatus;
     notifyObservers(ENTITY_STATUS_CHANGED_EVENT);
@@ -616,8 +617,8 @@ public class Entity extends AbstractObservable implements EntityInterface {
   public final boolean hasMessage(final String type) {
     for (final ToElementable m : this.messages) {
       if (m instanceof Message && ((Message) m).getType().equalsIgnoreCase(type)) {
-          return true;
-        }
+        return true;
+      }
     }
     return false;
   }
@@ -632,7 +633,7 @@ public class Entity extends AbstractObservable implements EntityInterface {
     final LinkedList<Message> ret = new LinkedList<>();
     for (final ToElementable m : this.messages) {
       if (m instanceof Message && ((Message) m).getType().equalsIgnoreCase(type)) {
-          ret.add((Message) m);
+        ret.add((Message) m);
       }
     }
     return ret;
@@ -641,9 +642,11 @@ public class Entity extends AbstractObservable implements EntityInterface {
   @Override
   public final Message getMessage(final String type, final Integer code) {
     for (final ToElementable m : this.messages) {
-      if (m instanceof Message&& ((Message) m).getType().equalsIgnoreCase(type) && ((Message) m).getCode() == code) {
-          return (Message) m;
-        }
+      if (m instanceof Message
+          && ((Message) m).getType().equalsIgnoreCase(type)
+          && ((Message) m).getCode() == code) {
+        return (Message) m;
+      }
     }
     return null;
   }
@@ -748,7 +751,6 @@ public class Entity extends AbstractObservable implements EntityInterface {
         this.setDatatype(element.getAttributeValue("datatype"));
       } catch (final IllegalArgumentException e) {
         addError(ServerMessages.UNKNOWN_DATATYPE);
-        
       }
     }
 
diff --git a/src/main/java/caosdb/server/entity/EntityInterface.java b/src/main/java/caosdb/server/entity/EntityInterface.java
index 2bfe32a4a94dbe406ee839c366045e3b946e5bb9..76c6c51eaabb3ee5864d9cb538f43338e96ce914 100644
--- a/src/main/java/caosdb/server/entity/EntityInterface.java
+++ b/src/main/java/caosdb/server/entity/EntityInterface.java
@@ -22,9 +22,6 @@
  */
 package caosdb.server.entity;
 
-import java.util.List;
-import org.apache.shiro.authz.Permission;
-import org.apache.shiro.subject.Subject;
 import caosdb.server.database.proto.SparseEntity;
 import caosdb.server.database.proto.VerySparseEntity;
 import caosdb.server.datatype.AbstractDatatype;
@@ -40,6 +37,9 @@ import caosdb.server.permissions.EntityACL;
 import caosdb.server.utils.Observable;
 import caosdb.server.utils.TransactionLogMessage;
 import caosdb.unit.Unit;
+import java.util.List;
+import org.apache.shiro.authz.Permission;
+import org.apache.shiro.subject.Subject;
 
 public interface EntityInterface
     extends JobTarget, Observable, ToElementable, WriteEntity, TransactionEntity {
diff --git a/src/main/java/caosdb/server/entity/Message.java b/src/main/java/caosdb/server/entity/Message.java
index 002a2cb174a4714b3c2658b375610480ccbcab5f..03e788251620b6c192eb86f1bbd172564a66235f 100644
--- a/src/main/java/caosdb/server/entity/Message.java
+++ b/src/main/java/caosdb/server/entity/Message.java
@@ -79,20 +79,20 @@ public class Message extends Exception implements Comparable<Message>, ToElement
     this(type, code, null, null);
   }
 
-  public Message(final int code, final String description) {
+  public Message(final Integer code, final String description) {
     this("Message", code, description, null);
   }
 
-  public Message(final MessageType type, final int code, final String description) {
+  public Message(final MessageType type, final Integer code, final String description) {
     this(type.toString(), code, description, null);
   }
 
   public Message(
-      final MessageType type, final int code, final String description, final String body) {
+      final MessageType type, final Integer code, final String description, final String body) {
     this(type.toString(), code, description, body);
   }
 
-  public Message(final String type, final int code, final String description) {
+  public Message(final String type, final Integer code, final String description) {
     this(type, code, description, null);
   }
 
diff --git a/src/main/java/caosdb/server/entity/TransactionEntity.java b/src/main/java/caosdb/server/entity/TransactionEntity.java
index 36c581b5cadbf1596598d9ffacbdf5e5fefa9b79..458a1031cf7039c66b3db228813c9a552d6cc53c 100644
--- a/src/main/java/caosdb/server/entity/TransactionEntity.java
+++ b/src/main/java/caosdb/server/entity/TransactionEntity.java
@@ -22,14 +22,14 @@
  */
 package caosdb.server.entity;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.jdom2.Element;
 import caosdb.server.entity.xml.ToElementStrategy;
 import caosdb.server.entity.xml.ToElementable;
 import caosdb.server.query.Query.Selection;
 import caosdb.server.utils.EntityStatus;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.jdom2.Element;
 
 public interface TransactionEntity {
 
diff --git a/src/main/java/caosdb/server/entity/container/TransactionContainer.java b/src/main/java/caosdb/server/entity/container/TransactionContainer.java
index 20668f548db5c4b6e054e9e1b7d69407ea43f3fa..ff799a4df5eb74a0d15e48a990e735af609925ec 100644
--- a/src/main/java/caosdb/server/entity/container/TransactionContainer.java
+++ b/src/main/java/caosdb/server/entity/container/TransactionContainer.java
@@ -158,6 +158,13 @@ public class TransactionContainer extends Container<Entity> implements ToElement
     return this.owner;
   }
 
+  /**
+   * Get the first entity from this container which has this name.
+   *
+   * <p>Return null if no matching is in this container.
+   *
+   * @param name
+   */
   public EntityInterface getEntityByName(final String name) {
     for (final EntityInterface e : this) {
       if (e.hasName() && e.getName().equals(name)) {
@@ -182,5 +189,4 @@ public class TransactionContainer extends Container<Entity> implements ToElement
   public boolean skipJob() {
     return false;
   }
-
 }
diff --git a/src/main/java/caosdb/server/entity/wrapper/EntityWrapper.java b/src/main/java/caosdb/server/entity/wrapper/EntityWrapper.java
index 8b6ec0315c85669773c94e68da654f7f39d56949..1feeafdb7c158edd35a2eddd16af85b40e35211c 100644
--- a/src/main/java/caosdb/server/entity/wrapper/EntityWrapper.java
+++ b/src/main/java/caosdb/server/entity/wrapper/EntityWrapper.java
@@ -22,12 +22,6 @@
  */
 package caosdb.server.entity.wrapper;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.apache.shiro.authz.Permission;
-import org.apache.shiro.subject.Subject;
-import org.jdom2.Element;
 import caosdb.server.database.proto.SparseEntity;
 import caosdb.server.database.proto.VerySparseEntity;
 import caosdb.server.datatype.AbstractDatatype;
@@ -47,6 +41,12 @@ import caosdb.server.utils.EntityStatus;
 import caosdb.server.utils.Observer;
 import caosdb.server.utils.TransactionLogMessage;
 import caosdb.unit.Unit;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.shiro.authz.Permission;
+import org.apache.shiro.subject.Subject;
+import org.jdom2.Element;
 
 public class EntityWrapper implements EntityInterface {
 
diff --git a/src/main/java/caosdb/server/jobs/ContainerJob.java b/src/main/java/caosdb/server/jobs/ContainerJob.java
index 6cef06e3f62e55c33d9a797e218e74592b3b23f2..26588b682501d6675d40f5a0bd41974409e1e5c3 100644
--- a/src/main/java/caosdb/server/jobs/ContainerJob.java
+++ b/src/main/java/caosdb/server/jobs/ContainerJob.java
@@ -29,8 +29,7 @@ import caosdb.server.utils.EntityStatus;
 public abstract class ContainerJob extends Job {
 
   @Override
-  public
-  final TransactionContainer getContainer() {
+  public final TransactionContainer getContainer() {
     return super.getContainer();
   }
 
diff --git a/src/main/java/caosdb/server/jobs/Job.java b/src/main/java/caosdb/server/jobs/Job.java
index 132093357746344fd8e52c09cff5933f4a9f0bd8..681098b76a9deb90bc05dbea6f13ad2acd937ea6 100644
--- a/src/main/java/caosdb/server/jobs/Job.java
+++ b/src/main/java/caosdb/server/jobs/Job.java
@@ -22,15 +22,6 @@
  */
 package caosdb.server.jobs;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.authz.Permission;
-import org.apache.shiro.subject.Subject;
-import org.reflections.Reflections;
 import caosdb.server.CaosDBException;
 import caosdb.server.database.Database;
 import caosdb.server.database.backend.transaction.GetIDByName;
@@ -53,6 +44,15 @@ import caosdb.server.utils.EntityStatus;
 import caosdb.server.utils.Observable;
 import caosdb.server.utils.Observer;
 import caosdb.server.utils.ServerMessages;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.Permission;
+import org.apache.shiro.subject.Subject;
+import org.reflections.Reflections;
 
 public abstract class Job extends AbstractObservable implements Observer {
   private Transaction<? extends TransactionContainer> transaction = null;
@@ -66,15 +66,15 @@ public abstract class Job extends AbstractObservable implements Observer {
     return getTransaction().getCache(name);
   }
 
-  protected void appendJob(final Class<? extends Job> clazz) {
-    appendJob(getEntity(), clazz);
+  protected ScheduledJob appendJob(final Class<? extends Job> clazz) {
+    return appendJob(getEntity(), clazz);
   }
 
   protected String getRequestId() {
     return getContainer().getRequestId();
   }
-  
-  protected Subject getUser(){
+
+  protected Subject getUser() {
     return getTransaction().getTransactor();
   }
 
@@ -121,9 +121,9 @@ public abstract class Job extends AbstractObservable implements Observer {
       final EntityInterface entity, final Class<? extends Job> jobclass) {
     getTransaction().getSchedule().runJob(entity, jobclass);
   }
-  
-  protected void runJobFromSchedule(ScheduledJob job){
-    getTransaction().getSchedule().runJob(job); 
+
+  protected void runJobFromSchedule(ScheduledJob job) {
+    getTransaction().getSchedule().runJob(job);
   }
 
   public EntityInterface getEntity() {
@@ -156,7 +156,8 @@ public abstract class Job extends AbstractObservable implements Observer {
   }
 
   protected final boolean isValidSubTypeNoCache(final int child, final int parent) {
-    return child==parent || Database.execute(new IsSubType(child, parent), getTransaction().getAccess()).isSubType();
+    return child == parent
+        || Database.execute(new IsSubType(child, parent), getTransaction().getAccess()).isSubType();
   }
 
   protected final EntityInterface retrieveValidSparseEntityByName(final String name)
@@ -173,9 +174,12 @@ public abstract class Job extends AbstractObservable implements Observer {
     return ret;
   }
 
-  protected final EntityInterface retrieveValidEntity(Integer id){
-    return Database.execute(new RetrieveFullEntity(id), getTransaction().getAccess()).getContainer().get(0);
+  protected final EntityInterface retrieveValidEntity(Integer id) {
+    return Database.execute(new RetrieveFullEntity(id), getTransaction().getAccess())
+        .getContainer()
+        .get(0);
   }
+
   protected final Integer retrieveValidIDByName(final String name) {
     return Database.execute(new GetIDByName(name), getTransaction().getAccess()).getId();
   }
@@ -215,7 +219,7 @@ public abstract class Job extends AbstractObservable implements Observer {
   }
 
   private static void scanJobClasspath() {
-    
+
     if (allClasses == null || loadAlways == null) {
       allClasses = new HashMap<>();
       loadAlways = new ArrayList<>();
@@ -229,8 +233,12 @@ public abstract class Job extends AbstractObservable implements Observer {
           if (flagName.length() > 0) {
             allClasses.put(flagName.toLowerCase(), c);
           }
+          if (c.getAnnotation(JobAnnotation.class).loadAlways()) {
+            loadAlways.add(c);
+          }
         }
       }
+      // TODO merge these two parts of this function. Its the same!
       jobPackage = new Reflections("caosdb.server.jobs.extension");
       allClassesSet = jobPackage.getSubTypesOf(Job.class);
       for (final Class<? extends Job> c : allClassesSet) {
@@ -240,7 +248,7 @@ public abstract class Job extends AbstractObservable implements Observer {
           if (flagName.length() > 0) {
             allClasses.put(flagName.toLowerCase(), c);
           }
-          if (c.getAnnotation(JobAnnotation.class).loadAlways()){
+          if (c.getAnnotation(JobAnnotation.class).loadAlways()) {
             loadAlways.add(c);
           }
         }
@@ -253,8 +261,7 @@ public abstract class Job extends AbstractObservable implements Observer {
   }
 
   public static List<Job> loadDataTypeSpecificJobs(
-      final EntityInterface entity,
-      final Transaction<? extends TransactionContainer> transaction) {
+      final EntityInterface entity, final Transaction<? extends TransactionContainer> transaction) {
 
     return loadDataTypeSpecificJobs(entity.getDatatype(), entity, transaction);
   }
@@ -281,17 +288,17 @@ public abstract class Job extends AbstractObservable implements Observer {
   }
 
   public static List<Job> loadStandardJobs(
-      final EntityInterface entity,
-      final Transaction<? extends TransactionContainer> transaction) {
+      final EntityInterface entity, final Transaction<? extends TransactionContainer> transaction) {
 
-    final ArrayList<Job> jobs = new ArrayList<>();    
+    final ArrayList<Job> jobs = new ArrayList<>();
     // load permanent jobs
     for (Class<? extends Job> j : loadAlways) {
-      if(j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)){
+      if (EntityJob.class.isAssignableFrom(j)
+          && j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)) {
         jobs.add(getJob(j, Mode.MUST, entity, transaction));
       }
     }
-    
+
     // load general rules
     {
       final RuleLoader t = new RuleLoader(0, 0, entity, transaction);
@@ -300,8 +307,7 @@ public abstract class Job extends AbstractObservable implements Observer {
 
     // load Role specific rules
     if (entity.hasRole()) {
-      final RuleLoader t =
-          new RuleLoader(0, entity.getRole().getId(), entity, transaction);
+      final RuleLoader t = new RuleLoader(0, entity.getRole().getId(), entity, transaction);
       jobs.addAll(Database.execute(t, transaction.getAccess()).getJobs());
     }
 
@@ -311,11 +317,14 @@ public abstract class Job extends AbstractObservable implements Observer {
     return jobs;
   }
 
-  private static Job getJob(Class<? extends Job> jobClass, Mode mode, EntityInterface entity,
+  private static Job getJob(
+      Class<? extends Job> jobClass,
+      Mode mode,
+      EntityInterface entity,
       Transaction<? extends TransactionContainer> transaction) {
     Job ret;
     try {
-      
+
       if (jobClass != null) {
         ret = jobClass.newInstance();
         ret.init(mode, entity, transaction);
@@ -328,8 +337,7 @@ public abstract class Job extends AbstractObservable implements Observer {
   }
 
   public static List<Job> loadJobs(
-      final EntityInterface entity,
-      final Transaction<? extends TransactionContainer> transaction) {
+      final EntityInterface entity, final Transaction<? extends TransactionContainer> transaction) {
     final LinkedList<Job> jobs = new LinkedList<>();
 
     // general rules, role rules, data type rules
@@ -422,4 +430,16 @@ public abstract class Job extends AbstractObservable implements Observer {
   public JobExecutionTime getExecutionTime() {
     return this.time;
   }
+
+  public static List<Job> loadPermanentContainerJobs(Transaction<?> transaction) {
+    final ArrayList<Job> jobs = new ArrayList<>();
+    // load permanent jobs
+    for (Class<? extends Job> j : loadAlways) {
+      if (ContainerJob.class.isAssignableFrom(j)
+          && j.getAnnotation(JobAnnotation.class).transaction().isInstance(transaction)) {
+        jobs.add(getJob(j, Mode.MUST, null, transaction));
+      }
+    }
+    return jobs;
+  }
 }
diff --git a/src/main/java/caosdb/server/jobs/JobAnnotation.java b/src/main/java/caosdb/server/jobs/JobAnnotation.java
index 97263aebcc24222e80f60037eb722cfcdee71122..96f4afcd46c2f80fe2c959bf815ca523a71cb52d 100644
--- a/src/main/java/caosdb/server/jobs/JobAnnotation.java
+++ b/src/main/java/caosdb/server/jobs/JobAnnotation.java
@@ -50,7 +50,7 @@ public @interface JobAnnotation {
 
   /**
    * Load for every transaction that is a subclass of 'transaction'.
-   * 
+   *
    * @return false per default.
    */
   boolean loadAlways() default false;
diff --git a/src/main/java/caosdb/server/jobs/core/AccessControl.java b/src/main/java/caosdb/server/jobs/core/AccessControl.java
index eb513b811a3ef1f6b3cae0bc9e3c734ea1dd3b1a..8b51cd582933d9c993c2427be7c399e7dc553df2 100644
--- a/src/main/java/caosdb/server/jobs/core/AccessControl.java
+++ b/src/main/java/caosdb/server/jobs/core/AccessControl.java
@@ -65,14 +65,14 @@ public class AccessControl extends ContainerJob {
       // special annotations permission
       if (e.hasParents() && e.getParents().size() == 1) {
         final Parent par1 = e.getParents().get(0);
-        if (par1.hasId()) {
+        if (par1.hasId() && par1.getId() > 0) {
           Database.execute(new RetrieveSparseEntity(par1), getTransaction().getAccess());
         }
-        if (par1.getName().equals("CommentAnnotation")) {
-          if (subject.isPermitted(
-              getTransaction().getClass().getSimpleName() + ":CommentAnnotation")) {
-            continue;
-          }
+        if (par1.hasName()
+            && par1.getName().equals("CommentAnnotation")
+            && subject.isPermitted(
+                getTransaction().getClass().getSimpleName() + ":CommentAnnotation")) {
+          continue;
         }
       }
       e.setEntityStatus(EntityStatus.UNQUALIFIED);
diff --git a/src/main/java/caosdb/server/jobs/core/Atomic.java b/src/main/java/caosdb/server/jobs/core/Atomic.java
index cf6d99a005deb3449419feb30e22ccfbe3d32e0f..cdc9f25d7367a9732dcdcc9a0e03dd5e359acaa2 100644
--- a/src/main/java/caosdb/server/jobs/core/Atomic.java
+++ b/src/main/java/caosdb/server/jobs/core/Atomic.java
@@ -27,17 +27,21 @@ import caosdb.server.entity.EntityInterface;
 import caosdb.server.jobs.ContainerJob;
 import caosdb.server.jobs.JobAnnotation;
 import caosdb.server.jobs.JobExecutionTime;
+import caosdb.server.transaction.WriteTransaction;
 import caosdb.server.utils.EntityStatus;
 import caosdb.server.utils.Observable;
 import caosdb.server.utils.ServerMessages;
 
-@JobAnnotation(time = JobExecutionTime.POST_CHECK)
+@JobAnnotation(
+    time = JobExecutionTime.POST_CHECK,
+    transaction = WriteTransaction.class,
+    loadAlways = true)
 public class Atomic extends ContainerJob {
 
   private boolean doCheck() {
     if (getContainer().getStatus() == EntityStatus.QUALIFIED) {
       for (final EntityInterface entity : getContainer()) {
-        if(entity.getEntityStatus() == EntityStatus.UNQUALIFIED) {
+        if (entity.getEntityStatus() == EntityStatus.UNQUALIFIED) {
           getContainer().setStatus(EntityStatus.UNQUALIFIED);
           getContainer().addMessage(ServerMessages.ATOMICITY_ERROR);
           // job done. remove observer.
diff --git a/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java b/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java
index ca6ced6e6c0f7948cb2720a87b1858c7246755e7..69d36f42fa2f457b05dcc394659b5c088976bff4 100644
--- a/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java
+++ b/src/main/java/caosdb/server/jobs/core/CheckDatatypePresent.java
@@ -22,7 +22,6 @@
  */
 package caosdb.server.jobs.core;
 
-import java.util.List;
 import caosdb.server.database.exceptions.EntityDoesNotExistException;
 import caosdb.server.database.exceptions.EntityWasNotUniqueException;
 import caosdb.server.datatype.AbstractCollectionDatatype;
@@ -36,6 +35,7 @@ import caosdb.server.jobs.Job;
 import caosdb.server.permissions.EntityPermission;
 import caosdb.server.utils.EntityStatus;
 import caosdb.server.utils.ServerMessages;
+import java.util.List;
 
 /**
  * Check whether the entity has a data type. Assign the data type of the abstract property if
@@ -48,10 +48,11 @@ public final class CheckDatatypePresent extends EntityJob {
   @Override
   public final void run() {
     try {
-      resolveId(getEntity());
 
       // inherit datatype
       if (!getEntity().hasDatatype()) {
+        resolveId(getEntity());
+
         inheritDatatypeFromAbstractEntity();
 
         // still no data type ??? try to get it from parent...
@@ -199,7 +200,9 @@ public final class CheckDatatypePresent extends EntityJob {
     if (!entity.hasId() && entity.hasName()) {
       try {
         entity.setId(retrieveValidIDByName(entity.getName()));
-        entity.setEntityStatus(EntityStatus.VALID);
+        if (entity.getEntityStatus() != EntityStatus.UNQUALIFIED) {
+          entity.setEntityStatus(EntityStatus.VALID);
+        }
       } catch (final EntityDoesNotExistException exc) {
         entity.addError(ServerMessages.ENTITY_DOES_NOT_EXIST);
       } catch (final EntityWasNotUniqueException exc) {
diff --git a/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java b/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java
index 813c7dc88bab149204b5410a45bffd654339f8be..d63a9cc54d4c413a0c827a562afa023b610ff872 100644
--- a/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java
+++ b/src/main/java/caosdb/server/jobs/core/CheckNamePresent.java
@@ -42,6 +42,7 @@ public class CheckNamePresent extends EntityJob {
           break;
         case SHOULD:
           getEntity().addWarning(ServerMessages.ENTITY_HAS_NO_NAME);
+          break;
         default:
           break;
       }
diff --git a/src/main/java/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java b/src/main/java/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java
index 1557401dcb4a0a9cdad4fb742bfd126b25c6a5f1..1eb4941d47314f7f67bbe874784f2427cecdca92 100644
--- a/src/main/java/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java
+++ b/src/main/java/caosdb/server/jobs/core/CheckNoAdditionalPropertiesPresent.java
@@ -1,48 +1,51 @@
 package caosdb.server.jobs.core;
 
-import java.util.HashSet;
-import java.util.Set;
 import caosdb.server.entity.EntityInterface;
 import caosdb.server.entity.Message;
 import caosdb.server.jobs.EntityJob;
 import caosdb.server.jobs.JobAnnotation;
 import caosdb.server.utils.EntityStatus;
 import caosdb.server.utils.ServerMessages;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
 
-@JobAnnotation(flag="noAdditionalProperties", description="Fail if this entity has any property which has not been defined by the parents of this entity.")
+@JobAnnotation(
+    flag = "noAdditionalProperties",
+    description =
+        "Fail if this entity has any property which has not been defined by the parents of this entity.")
 public class CheckNoAdditionalPropertiesPresent extends EntityJob {
 
   private Set<EntityInterface> used = new HashSet<>();
 
   @Override
   protected void run() {
-    
+
     // validate all parents and properties
     runJobFromSchedule(getEntity(), CheckParOblPropPresent.class);
-    
-    
-    if(getEntity().getEntityStatus() == EntityStatus.QUALIFIED && getEntity().hasProperties()){
-      for(EntityInterface property : getEntity().getProperties()){
+
+    if (getEntity().getEntityStatus() == EntityStatus.QUALIFIED && getEntity().hasProperties()) {
+      for (EntityInterface property : getEntity().getProperties()) {
         checkProperty(property);
       }
     }
-    
   }
-  
-  public void checkProperty(EntityInterface property){
-    for(EntityInterface parent : getEntity().getParents()){
-      for(EntityInterface parentProperty : parent.getProperties()){
-        if(sameProperty(property, parentProperty) && !used.contains(parentProperty)){
-          used .add(parentProperty);
+
+  public void checkProperty(EntityInterface property) {
+    for (EntityInterface parent : getEntity().getParents()) {
+      for (EntityInterface parentProperty : parent.getProperties()) {
+        if (sameProperty(property, parentProperty) && !used.contains(parentProperty)) {
+          used.add(parentProperty);
+          return;
         }
       }
       // not found!
-      addMessage(property,ServerMessages.ADDITIONAL_PROPERTY);
+      addMessage(property, ServerMessages.ADDITIONAL_PROPERTY);
     }
   }
 
   private void addMessage(EntityInterface property, Message message) {
-    if(getMode()==Mode.MUST) {
+    if (getMode() == Mode.MUST) {
       property.addError(message);
     } else {
       property.addWarning(message);
@@ -50,7 +53,6 @@ public class CheckNoAdditionalPropertiesPresent extends EntityJob {
   }
 
   private boolean sameProperty(EntityInterface property, EntityInterface parentProperty) {
-    return property.getId() == parentProperty.getId();
+    return property.getId() != null && Objects.equals(property.getId(), parentProperty.getId());
   }
-
 }
diff --git a/src/main/java/caosdb/server/jobs/core/CheckNoOverridesPresent.java b/src/main/java/caosdb/server/jobs/core/CheckNoOverridesPresent.java
index d640f19fb15bd2d448c9d8cd8e31d935f4b959f8..c6b16210e7517c69c26ed6f2e8c556bf5687f7f4 100644
--- a/src/main/java/caosdb/server/jobs/core/CheckNoOverridesPresent.java
+++ b/src/main/java/caosdb/server/jobs/core/CheckNoOverridesPresent.java
@@ -6,31 +6,32 @@ import caosdb.server.jobs.EntityJob;
 import caosdb.server.jobs.JobAnnotation;
 import caosdb.server.utils.ServerMessages;
 
-@JobAnnotation(flag="noOverrides", description="Fail if this entity has any properties with overrides.")
+@JobAnnotation(
+    flag = "noOverrides",
+    description = "Fail if this entity has any properties with overrides.")
 public class CheckNoOverridesPresent extends EntityJob {
 
   @Override
   protected void run() {
     runJobFromSchedule(this.getEntity(), CheckPropValid.class);
-    for(Property p : getEntity().getProperties()){
-      if(p.isDatatypeOverride()){
+    for (Property p : getEntity().getProperties()) {
+      if (p.isDatatypeOverride()) {
         addMessage(p, ServerMessages.PROPERTY_WITH_DATATYPE_OVERRIDE);
       }
-      if(p.isNameOverride()){
+      if (p.isNameOverride()) {
         addMessage(p, ServerMessages.PROPERTY_WITH_NAME_OVERRIDE);
       }
-      if(p.isDescOverride()){
+      if (p.isDescOverride()) {
         addMessage(p, ServerMessages.PROPERTY_WITH_DESC_OVERRIDE);
       }
     }
   }
 
   private void addMessage(Property p, Message message) {
-    if(getMode()==Mode.MUST){
+    if (getMode() == Mode.MUST) {
       p.addError(message);
     } else {
       p.addWarning(message);
     }
   }
-
 }
diff --git a/src/main/java/caosdb/server/jobs/core/PickUp.java b/src/main/java/caosdb/server/jobs/core/PickUp.java
index 8d200ac5a2a375f0630c2dbb59fa51d895100b0c..542e7ee5cbb022c2456af0e305ef37ca02482dda 100644
--- a/src/main/java/caosdb/server/jobs/core/PickUp.java
+++ b/src/main/java/caosdb/server/jobs/core/PickUp.java
@@ -70,11 +70,14 @@ public class PickUp extends EntityJob {
 
   @Override
   public boolean notifyObserver(final String e, final Observable o) {
-    if (e == Entity.ENTITY_STATUS_CHANGED_EVENT && o == getEntity() && this.rollBack && getEntity().getEntityStatus() == EntityStatus.UNQUALIFIED) {
-        final File target = new File(FileSystem.getDropOffBox() + this.dropOffBoxPath);
-        getEntity().getFileProperties().getFile().renameTo(target);
-        this.rollBack = false;
-        return false;
+    if (e == Entity.ENTITY_STATUS_CHANGED_EVENT
+        && o == getEntity()
+        && this.rollBack
+        && getEntity().getEntityStatus() == EntityStatus.UNQUALIFIED) {
+      final File target = new File(FileSystem.getDropOffBox() + this.dropOffBoxPath);
+      getEntity().getFileProperties().getFile().renameTo(target);
+      this.rollBack = false;
+      return false;
     }
     return true;
   }
diff --git a/src/main/java/caosdb/server/jobs/core/TestMail.java b/src/main/java/caosdb/server/jobs/core/TestMail.java
index 4f36cf08585f5400ad5a5d15baad6315f6e79e07..e529265a36cac6b483215500edc5b9793ef60afc 100644
--- a/src/main/java/caosdb/server/jobs/core/TestMail.java
+++ b/src/main/java/caosdb/server/jobs/core/TestMail.java
@@ -28,9 +28,9 @@ import caosdb.server.entity.Message;
 import caosdb.server.entity.Message.MessageType;
 import caosdb.server.jobs.FlagJob;
 import caosdb.server.jobs.JobAnnotation;
+import caosdb.server.utils.ServerMessages;
+import caosdb.server.utils.Utils;
 import caosdb.server.utils.mail.Mail;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 @JobAnnotation(
     flag = "testMail",
@@ -38,27 +38,21 @@ import java.util.regex.Pattern;
         "Value may be any mail address. Send a test mail to the given mail address. Works only if server is in debug mode.")
 public class TestMail extends FlagJob {
 
-  private static final String ADMIN_NAME =
-      CaosDBServer.getServerProperty(ServerProperties.KEY_ADMIN_NAME);
-  private static final String ADMIN_EMAIL =
-      CaosDBServer.getServerProperty(ServerProperties.KEY_ADMIN_EMAIL);
+  private static final String NAME =
+      CaosDBServer.getServerProperty(ServerProperties.KEY_NO_REPLY_NAME);
+  private static final String EMAIL =
+      CaosDBServer.getServerProperty(ServerProperties.KEY_NO_REPLY_EMAIL);
 
   @Override
   protected void job(final String value) {
     if (CaosDBServer.isDebugMode() && value != null) {
-      final Pattern p =
-          Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$", Pattern.CASE_INSENSITIVE);
-      final Matcher matcher = p.matcher(value);
-      if (matcher.matches()) {
-        final Mail m =
-            new Mail(ADMIN_NAME, ADMIN_EMAIL, null, value, "Test mail", "This is a test mail.");
+      if (Utils.isRFC822Compliant(value)) {
+        final Mail m = new Mail(NAME, EMAIL, null, value, "Test mail", "This is a test mail.");
         m.send();
         getContainer()
             .addMessage(new Message(MessageType.Info, 0, "A mail has been send to " + value));
       } else {
-        getContainer()
-            .addMessage(
-                new Message(MessageType.Error, 0, "Value did not match our email regexp pattern."));
+        getContainer().addMessage(ServerMessages.EMAIL_NOT_WELL_FORMED);
       }
     }
   }
diff --git a/src/main/java/caosdb/server/jobs/extension/SQLiteTransaction.java b/src/main/java/caosdb/server/jobs/extension/SQLiteTransaction.java
index 1712566913b273e828d10627927771223b30d2e5..907700ee53423a2d8d0088aaf6beb2e6b175f240 100644
--- a/src/main/java/caosdb/server/jobs/extension/SQLiteTransaction.java
+++ b/src/main/java/caosdb/server/jobs/extension/SQLiteTransaction.java
@@ -22,6 +22,11 @@
  */
 package caosdb.server.jobs.extension;
 
+import caosdb.server.CaosDBException;
+import caosdb.server.entity.FileProperties;
+import caosdb.server.entity.Message;
+import caosdb.server.jobs.EntityJob;
+import caosdb.server.utils.FileUtils;
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
 import java.sql.Connection;
@@ -34,11 +39,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.locks.ReentrantLock;
-import caosdb.server.CaosDBException;
-import caosdb.server.entity.FileProperties;
-import caosdb.server.entity.Message;
-import caosdb.server.jobs.EntityJob;
-import caosdb.server.utils.FileUtils;
 
 public class SQLiteTransaction extends EntityJob {
   private static HashMap<String, ReentrantLock> lockedTables = new HashMap<String, ReentrantLock>();
diff --git a/src/main/java/caosdb/server/permissions/AbstractEntityACLFactory.java b/src/main/java/caosdb/server/permissions/AbstractEntityACLFactory.java
index d9657d9ce7fd5e781f2643185554090f076af0f0..5d8174711c2dfd06798c5f5690b61540f55e5c56 100644
--- a/src/main/java/caosdb/server/permissions/AbstractEntityACLFactory.java
+++ b/src/main/java/caosdb/server/permissions/AbstractEntityACLFactory.java
@@ -26,26 +26,15 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.Map.Entry;
 
-class EntityACLFactory extends AbstractEntityACLFactory<EntityACL> {
-
-  @Override
-  protected EntityACL create(final Collection<EntityACI> acis) {
-    return new EntityACL(acis);
-  }
-}
-
 public abstract class AbstractEntityACLFactory<T extends EntityACL> {
 
-  private final HashMap<ResponsibleAgent, Long> normal_grants =
-      new HashMap<ResponsibleAgent, Long>();
-  private final HashMap<ResponsibleAgent, Long> priority_grants =
-      new HashMap<ResponsibleAgent, Long>();
-  private final HashMap<ResponsibleAgent, Long> normal_denials =
-      new HashMap<ResponsibleAgent, Long>();
-  private final HashMap<ResponsibleAgent, Long> priority_denials =
-      new HashMap<ResponsibleAgent, Long>();
+  private final Map<ResponsibleAgent, Long> normalGrants = new HashMap<>();
+  private final Map<ResponsibleAgent, Long> priorityGrants = new HashMap<>();
+  private final Map<ResponsibleAgent, Long> normalDenials = new HashMap<>();
+  private final Map<ResponsibleAgent, Long> priorityDenials = new HashMap<>();
 
   public void grant(final ResponsibleAgent role, final int... permissionBitNumber) {
     grant(role, false, permissionBitNumber);
@@ -120,23 +109,23 @@ public abstract class AbstractEntityACLFactory<T extends EntityACL> {
   public void grant(
       final ResponsibleAgent role, final boolean priority, final EntityPermission... permission) {
     if (priority) {
-      addACI(this.priority_grants, role, permission);
+      addACI(this.priorityGrants, role, permission);
     } else {
-      addACI(this.normal_grants, role, permission);
+      addACI(this.normalGrants, role, permission);
     }
   }
 
   public void deny(
       final ResponsibleAgent role, final boolean priority, final EntityPermission... permission) {
     if (priority) {
-      addACI(this.priority_denials, role, permission);
+      addACI(this.priorityDenials, role, permission);
     } else {
-      addACI(this.normal_denials, role, permission);
+      addACI(this.normalDenials, role, permission);
     }
   }
 
   private static void addACI(
-      final HashMap<ResponsibleAgent, Long> map,
+      final Map<ResponsibleAgent, Long> map,
       final ResponsibleAgent role,
       final EntityPermission permission) {
     long bitSet = permission.getBitSet();
@@ -149,7 +138,7 @@ public abstract class AbstractEntityACLFactory<T extends EntityACL> {
   }
 
   private static void addACI(
-      final HashMap<ResponsibleAgent, Long> map,
+      final Map<ResponsibleAgent, Long> map,
       final ResponsibleAgent role,
       final EntityPermission[] permission) {
     for (final EntityPermission p : permission) {
@@ -158,7 +147,7 @@ public abstract class AbstractEntityACLFactory<T extends EntityACL> {
   }
 
   private EntityACI[] toEntityACIArray(
-      final HashMap<ResponsibleAgent, Long> map, final long modBitSet) {
+      final Map<ResponsibleAgent, Long> map, final long modBitSet) {
     final EntityACI[] ret = new EntityACI[map.size()];
     int i = 0;
     for (final Entry<ResponsibleAgent, Long> e : map.entrySet()) {
@@ -169,54 +158,51 @@ public abstract class AbstractEntityACLFactory<T extends EntityACL> {
 
   public T create() {
     normalize();
-    final ArrayList<EntityACI> acis = new ArrayList<EntityACI>();
-    Collections.addAll(acis, toEntityACIArray(this.normal_grants, 0));
-    Collections.addAll(acis, toEntityACIArray(this.normal_denials, Long.MIN_VALUE));
-    Collections.addAll(acis, toEntityACIArray(this.priority_grants, EntityACL.MIN_PRIORITY_BITSET));
+    final ArrayList<EntityACI> acis = new ArrayList<>();
+    Collections.addAll(acis, toEntityACIArray(this.normalGrants, 0));
+    Collections.addAll(acis, toEntityACIArray(this.normalDenials, Long.MIN_VALUE));
+    Collections.addAll(acis, toEntityACIArray(this.priorityGrants, EntityACL.MIN_PRIORITY_BITSET));
     Collections.addAll(
         acis,
-        toEntityACIArray(this.priority_denials, Long.MIN_VALUE | EntityACL.MIN_PRIORITY_BITSET));
+        toEntityACIArray(this.priorityDenials, Long.MIN_VALUE | EntityACL.MIN_PRIORITY_BITSET));
     return create(acis);
   }
 
   private void normalize() {
-    for (final Entry<ResponsibleAgent, Long> set : this.priority_denials.entrySet()) {
-      if (this.priority_grants.containsKey(set.getKey())) {
-        this.priority_grants.put(
-            set.getKey(), this.priority_grants.get(set.getKey()) & ~set.getValue());
+    for (final Entry<ResponsibleAgent, Long> set : this.priorityDenials.entrySet()) {
+      if (this.priorityGrants.containsKey(set.getKey())) {
+        this.priorityGrants.put(
+            set.getKey(), this.priorityGrants.get(set.getKey()) & ~set.getValue());
       }
-      if (this.normal_denials.containsKey(set.getKey())) {
-        this.normal_denials.put(
-            set.getKey(), this.normal_denials.get(set.getKey()) & ~set.getValue());
+      if (this.normalDenials.containsKey(set.getKey())) {
+        this.normalDenials.put(
+            set.getKey(), this.normalDenials.get(set.getKey()) & ~set.getValue());
       }
-      if (this.normal_grants.containsKey(set.getKey())) {
-        this.normal_grants.put(
-            set.getKey(), this.normal_grants.get(set.getKey()) & ~set.getValue());
+      if (this.normalGrants.containsKey(set.getKey())) {
+        this.normalGrants.put(set.getKey(), this.normalGrants.get(set.getKey()) & ~set.getValue());
       }
     }
-    for (final Entry<ResponsibleAgent, Long> set : this.priority_grants.entrySet()) {
-      if (this.normal_denials.containsKey(set.getKey())) {
-        this.normal_denials.put(
-            set.getKey(), this.normal_denials.get(set.getKey()) & ~set.getValue());
+    for (final Entry<ResponsibleAgent, Long> set : this.priorityGrants.entrySet()) {
+      if (this.normalDenials.containsKey(set.getKey())) {
+        this.normalDenials.put(
+            set.getKey(), this.normalDenials.get(set.getKey()) & ~set.getValue());
       }
-      if (this.normal_grants.containsKey(set.getKey())) {
-        this.normal_grants.put(
-            set.getKey(), this.normal_grants.get(set.getKey()) & ~set.getValue());
+      if (this.normalGrants.containsKey(set.getKey())) {
+        this.normalGrants.put(set.getKey(), this.normalGrants.get(set.getKey()) & ~set.getValue());
       }
     }
-    for (final Entry<ResponsibleAgent, Long> set : this.normal_denials.entrySet()) {
-      if (this.normal_grants.containsKey(set.getKey())) {
-        this.normal_grants.put(
-            set.getKey(), this.normal_grants.get(set.getKey()) & ~set.getValue());
+    for (final Entry<ResponsibleAgent, Long> set : this.normalDenials.entrySet()) {
+      if (this.normalGrants.containsKey(set.getKey())) {
+        this.normalGrants.put(set.getKey(), this.normalGrants.get(set.getKey()) & ~set.getValue());
       }
     }
   }
 
   public void clear() {
-    this.normal_grants.clear();
-    this.normal_denials.clear();
-    this.priority_grants.clear();
-    this.priority_denials.clear();
+    this.normalGrants.clear();
+    this.normalDenials.clear();
+    this.priorityGrants.clear();
+    this.priorityDenials.clear();
   }
 
   protected abstract T create(Collection<EntityACI> acis);
diff --git a/src/main/java/caosdb/server/permissions/EntityACL.java b/src/main/java/caosdb/server/permissions/EntityACL.java
index 79008947823e9625283c03e1dd539328a58fef7f..f2f89765a91cb182b0627dc41356c93b341aba47 100644
--- a/src/main/java/caosdb/server/permissions/EntityACL.java
+++ b/src/main/java/caosdb/server/permissions/EntityACL.java
@@ -32,7 +32,6 @@ import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -49,11 +48,11 @@ public class EntityACL {
   public static final long OWNER_BITSET = 1;
   private final Collection<EntityACI> acl;
 
-  EntityACL(final Collection<EntityACI> acl) {
+  public EntityACL(final Collection<EntityACI> acl) {
     if (acl != null) {
       this.acl = acl;
     } else {
-      this.acl = new ArrayList<EntityACI>();
+      this.acl = new ArrayList<>();
     }
   }
 
@@ -61,14 +60,17 @@ public class EntityACL {
     final EntityACLFactory f = new EntityACLFactory();
     f.grant(OWNER_ROLE, "*");
     f.grant(OTHER_ROLE, "RETRIEVE:*");
+    f.grant(OTHER_ROLE, "USE:*");
+    f.grant(Role.ANONYMOUS_ROLE, "RETRIEVE:*");
+    f.grant(Role.ANONYMOUS_ROLE, "USE:*");
     f.deny(OTHER_ROLE, "UPDATE:*");
     f.deny(OTHER_ROLE, "DELETE");
     f.deny(OTHER_ROLE, true, "EDIT:ACL");
     return f.create();
   }
 
-  EntityACL(final EntityACI... aci) {
-    this.acl = new ArrayList<EntityACI>();
+  public EntityACL(final EntityACI... aci) {
+    this.acl = new ArrayList<>();
     for (final EntityACI a : aci) {
       this.acl.add(a);
     }
@@ -88,7 +90,7 @@ public class EntityACL {
   }
 
   public static final Set<EntityPermission> getPermissionsFromBitSet(final long bitSet) {
-    final HashSet<EntityPermission> ret = new HashSet<EntityPermission>();
+    final Set<EntityPermission> ret = new HashSet<>();
     final boolean[] ba = convertToArray(bitSet);
     for (int i = 0; i < 62; i++) {
       if (ba[i]) {
@@ -104,9 +106,9 @@ public class EntityACL {
       return true;
     }
     if (permission instanceof EntityPermission) {
-      final ArrayList<EntityACI> acl = new ArrayList<EntityACI>(this.acl);
-      acl.addAll(GLOBAL_PERMISSIONS.acl);
-      final Set<EntityPermission> permissions = getPermissionsFor(subject, acl);
+      final List<EntityACI> localAcl = new ArrayList<>(this.acl);
+      localAcl.addAll(GLOBAL_PERMISSIONS.acl);
+      final Set<EntityPermission> permissions = getPermissionsFor(subject, localAcl);
       return permissions.contains(permission);
     }
     return false;
@@ -114,15 +116,13 @@ public class EntityACL {
 
   public static final Set<EntityPermission> getPermissionsFor(
       final Subject subject, final Collection<EntityACI> entityACL) {
-    final ArrayList<Long> acl = new ArrayList<Long>();
+    final List<Long> acl = new ArrayList<>();
     final List<ResponsibleAgent> owners = getOwners(entityACL);
-    final ArrayList<Long> forOthers = new ArrayList<Long>();
+    final List<Long> forOthers = new ArrayList<>();
     for (final EntityACI aci : entityACL) {
-      if (aci.getResponsibleAgent().equals(OWNER_ROLE)) {
-        if (subjectIsOwner(subject, owners)) {
-          acl.add(aci.getBitSet());
-          break;
-        }
+      if (aci.getResponsibleAgent().equals(OWNER_ROLE) && subjectIsOwner(subject, owners)) {
+        acl.add(aci.getBitSet());
+        break;
       }
       if (subjectHasRole(subject, aci.getResponsibleAgent())) {
         acl.add(aci.getBitSet());
@@ -157,9 +157,8 @@ public class EntityACL {
   private static boolean subjectIsOwner(
       final Subject subject, final List<ResponsibleAgent> owners) {
     for (final ResponsibleAgent owner : owners) {
-      if (owner instanceof Role && subject.hasRole(owner.toString())) {
-        return true;
-      } else if (owner instanceof Principal && subject.getPrincipal().equals(owner)) {
+      if ((owner instanceof Role && subject.hasRole(owner.toString()))
+          || (owner instanceof Principal && subject.getPrincipal().equals(owner))) {
         return true;
       }
     }
@@ -171,7 +170,7 @@ public class EntityACL {
   }
 
   public static final List<ResponsibleAgent> getOwners(final Collection<EntityACI> acl) {
-    final ArrayList<ResponsibleAgent> owners = new ArrayList<ResponsibleAgent>();
+    final List<ResponsibleAgent> owners = new ArrayList<>();
     for (final EntityACI aci : acl) {
       if (isOwnerBitSet(aci.getBitSet()) && !aci.getResponsibleAgent().equals(OWNER_ROLE)) {
         owners.add(aci.getResponsibleAgent());
@@ -187,15 +186,15 @@ public class EntityACL {
   public static final long getResultingACL(final Collection<Long> acl) {
     long allowance = 0;
     long denial = Long.MIN_VALUE;
-    long priority_allowance = 0;
-    long priority_denial = Long.MIN_VALUE;
+    long priorityAllowance = 0;
+    long priorityDenial = Long.MIN_VALUE;
 
     for (final long aci : acl) {
       if (isPriorityBitSet(aci)) {
         if (isDenial(aci)) {
-          priority_denial = priority_denial | aci;
+          priorityDenial = priorityDenial | aci;
         } else {
-          priority_allowance = priority_allowance | aci;
+          priorityAllowance = priorityAllowance | aci;
         }
       } else {
         if (isDenial(aci)) {
@@ -205,7 +204,7 @@ public class EntityACL {
         }
       }
     }
-    return ((allowance & ~denial) | (priority_allowance & ~MIN_PRIORITY_BITSET)) & ~priority_denial;
+    return ((allowance & ~denial) | (priorityAllowance & ~MIN_PRIORITY_BITSET)) & ~priorityDenial;
   }
 
   public static final boolean isPriorityBitSet(final long bitSet) {
@@ -254,13 +253,13 @@ public class EntityACL {
   }
 
   public static final EntityACL getPriorityEntityACL(final EntityACL acl) {
-    final ArrayList<EntityACI> priority_acl = new ArrayList<EntityACI>();
+    final List<EntityACI> priorityAcl = new ArrayList<>();
     for (final EntityACI aci : acl.acl) {
       if (isPriorityBitSet(aci.getBitSet())) {
-        priority_acl.add(aci);
+        priorityAcl.add(aci);
       }
     }
-    return new EntityACL(priority_acl);
+    return new EntityACL(priorityAcl);
   }
 
   public static final EntityACL parseFromElement(final Element e) {
@@ -322,7 +321,7 @@ public class EntityACL {
   }
 
   public static final EntityACL combine(final EntityACL... acls) {
-    final ArrayList<EntityACI> newACL = new ArrayList<EntityACI>();
+    final List<EntityACI> newACL = new ArrayList<>();
     for (final EntityACL acl : acls) {
       newACL.addAll(acl.acl);
     }
@@ -341,11 +340,11 @@ public class EntityACL {
   public boolean equals(final Object obj) {
     if (obj instanceof EntityACL) {
       final EntityACL that = (EntityACL) obj;
-      final HashSet<EntityACI> that_acis = new HashSet<EntityACI>();
-      that_acis.addAll(that.acl);
-      final HashSet<EntityACI> this_acis = new HashSet<EntityACI>();
-      this_acis.addAll(this.acl);
-      return that_acis.equals(this_acis);
+      final Set<EntityACI> thatAcis = new HashSet<>();
+      thatAcis.addAll(that.acl);
+      final Set<EntityACI> thisAcis = new HashSet<>();
+      thisAcis.addAll(this.acl);
+      return thatAcis.equals(thisAcis);
     }
     return false;
   }
@@ -361,7 +360,7 @@ public class EntityACL {
 
   public static EntityACL fromJSON(final String input) {
     final Object parse = JSON.parse(input);
-    final ArrayList<EntityACI> acl = new ArrayList<EntityACI>();
+    final List<EntityACI> acl = new ArrayList<>();
     if (parse.getClass().isArray()) {
       final Object[] array = (Object[]) parse;
       for (final Object aci : array) {
@@ -386,7 +385,7 @@ public class EntityACL {
   }
 
   public static String toJSON(final EntityACL acl) {
-    final ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
+    final List<Map<String, Object>> list = new ArrayList<>();
 
     for (final EntityACI aci : acl.acl) {
       list.add(aci.toMap());
diff --git a/src/main/java/caosdb/server/permissions/EntityACLFactory.java b/src/main/java/caosdb/server/permissions/EntityACLFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..eeacb1260729f78f490e592891c0a93a334b42fa
--- /dev/null
+++ b/src/main/java/caosdb/server/permissions/EntityACLFactory.java
@@ -0,0 +1,11 @@
+package caosdb.server.permissions;
+
+import java.util.Collection;
+
+public class EntityACLFactory extends AbstractEntityACLFactory<EntityACL> {
+
+  @Override
+  protected EntityACL create(final Collection<EntityACI> acis) {
+    return new EntityACL(acis);
+  }
+}
diff --git a/src/main/java/caosdb/server/permissions/EntityPermission.java b/src/main/java/caosdb/server/permissions/EntityPermission.java
index c4fd82245d32a488a4e2155e2c3171441f4a2d30..7fae8a76a8cc87cbfb2525c34102d5418d58e94e 100644
--- a/src/main/java/caosdb/server/permissions/EntityPermission.java
+++ b/src/main/java/caosdb/server/permissions/EntityPermission.java
@@ -22,9 +22,11 @@
  */
 package caosdb.server.permissions;
 
+import caosdb.server.CaosDBException;
 import caosdb.server.entity.xml.ToElementable;
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -33,7 +35,7 @@ import org.jdom2.Element;
 public class EntityPermission extends Permission {
 
   private static final long serialVersionUID = 1L;
-  private static ArrayList<EntityPermission> instances = new ArrayList<EntityPermission>();
+  private static List<EntityPermission> instances = new ArrayList<>();
   private final int bitNumber;
 
   public static ToElementable getAllEntityPermissions() {
@@ -59,11 +61,11 @@ public class EntityPermission extends Permission {
     super(shortName, description);
     this.bitNumber = bitNumber;
     if (bitNumber > 61) {
-      throw new RuntimeException(
+      throw new CaosDBException(
           "This bitNumber is too big. This implementation only handles bitNumbers up to 61.");
     }
     if (instances.contains(this)) {
-      throw new RuntimeException("This EntityPermission is defined yet.");
+      throw new CaosDBException("This EntityPermission is defined yet.");
     } else {
       instances.add(this);
     }
@@ -72,7 +74,7 @@ public class EntityPermission extends Permission {
   public static Set<EntityPermission> getPermissionsPerWildCard(final String s) {
     final Pattern pattern = Pattern.compile(s.replaceAll("\\*", ".*"));
 
-    final HashSet<EntityPermission> ret = new HashSet<EntityPermission>();
+    final Set<EntityPermission> ret = new HashSet<>();
     for (final EntityPermission p : instances) {
       final Matcher m = pattern.matcher(p.getShortName());
       if (m.matches()) {
diff --git a/src/main/java/caosdb/server/permissions/Role.java b/src/main/java/caosdb/server/permissions/Role.java
index eed068fc6bed1f8a3e5fd18bcdc6ef30bb9447a1..70e1a61f754b4beeffe8f8fe203b42842d49cb6d 100644
--- a/src/main/java/caosdb/server/permissions/Role.java
+++ b/src/main/java/caosdb/server/permissions/Role.java
@@ -22,6 +22,7 @@
  */
 package caosdb.server.permissions;
 
+import caosdb.server.accessControl.UserSources;
 import java.util.HashMap;
 import org.jdom2.Attribute;
 import org.jdom2.Element;
@@ -30,6 +31,7 @@ public class Role implements ResponsibleAgent {
 
   public static final Role OWNER_ROLE = new Role("?OWNER?");
   public static final Role OTHER_ROLE = new Role("?OTHER?");
+  public static final Role ANONYMOUS_ROLE = new Role(UserSources.ANONYMOUS_ROLE);
 
   private final String role;
 
diff --git a/src/main/java/caosdb/server/query/CQLParser.g4 b/src/main/java/caosdb/server/query/CQLParser.g4
index 12fa0fc7663efca549a8306dd68ca7e910040172..48205d1fece3309570f40e566078f51c96cab1bd 100644
--- a/src/main/java/caosdb/server/query/CQLParser.g4
+++ b/src/main/java/caosdb/server/query/CQLParser.g4
@@ -236,10 +236,12 @@ pov returns [POV filter] locals [Query.Pattern p, String o, String v, String a]
 	(
 		property {$p = $property.pp; $a=$property.agg;} 
 		(
-			( LIKE {$o = $LIKE.text;}
+			( 
+			  LIKE {$o = $LIKE.text;}
 			  ( like_pattern {$v = $like_pattern.ep.toString();}
-			  | value {$v = $value.str;} )
-			| OPERATOR {$o = $OPERATOR.text;} value {$v = $value.str;})
+			    | value {$v = $value.str;} )
+			  | OPERATOR {$o = $OPERATOR.text;} value {$v = $value.str;}
+			)
 			| IS_NULL {$o = "0";}
 			| IS_NOT_NULL {$o = "!0";}
 			| IN datetime {$o = "("; $v=$datetime.text;}
@@ -248,11 +250,14 @@ pov returns [POV filter] locals [Query.Pattern p, String o, String v, String a]
 	) 
 	| 
 	(
-		OPERATOR {$o = $OPERATOR.text;} value {$v = $value.str;}
-		(
-			AS_A
-			property {$p = $property.pp;} 
-		)?
+		( LIKE {$o = $LIKE.text;}
+		  ( like_pattern {$v = $like_pattern.ep.toString();}
+		    | value {$v = $value.str;} )
+		)
+		| ( OPERATOR {$o = $OPERATOR.text;} value {$v = $value.str;}
+		  ( AS_A
+			property {$p = $property.pp;} )?
+		)
 	)
 	
 ;
diff --git a/src/main/java/caosdb/server/transaction/Transaction.java b/src/main/java/caosdb/server/transaction/Transaction.java
index 396cf061502022e06fd2080525e1245c0a95ea68..de1e5e279ee4b1cd252dda0fdf6bb23e8f93e57f 100644
--- a/src/main/java/caosdb/server/transaction/Transaction.java
+++ b/src/main/java/caosdb/server/transaction/Transaction.java
@@ -22,9 +22,6 @@
  */
 package caosdb.server.transaction;
 
-import java.util.HashMap;
-import java.util.List;
-import org.apache.shiro.subject.Subject;
 import caosdb.datetime.UTCDateTime;
 import caosdb.server.accessControl.AuthenticationUtils;
 import caosdb.server.accessControl.Principal;
@@ -41,7 +38,6 @@ import caosdb.server.jobs.Job;
 import caosdb.server.jobs.JobExecutionTime;
 import caosdb.server.jobs.Schedule;
 import caosdb.server.jobs.core.AccessControl;
-import caosdb.server.jobs.core.Atomic;
 import caosdb.server.jobs.core.CheckDatatypePresent;
 import caosdb.server.jobs.core.CheckEntityACLRoles;
 import caosdb.server.jobs.core.Mode;
@@ -49,6 +45,9 @@ import caosdb.server.jobs.core.PickUp;
 import caosdb.server.utils.AbstractObservable;
 import caosdb.server.utils.Info;
 import caosdb.server.utils.Observer;
+import java.util.HashMap;
+import java.util.List;
+import org.apache.shiro.subject.Subject;
 
 public abstract class Transaction<C extends TransactionContainer> extends AbstractObservable
     implements TransactionInterface {
@@ -66,11 +65,10 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
   protected Transaction(final C container) {
     this(container, Info.getInstance());
   }
-  
-  protected Transaction(C container, Observer o){    
+
+  protected Transaction(C container, Observer o) {
     this.container = container;
-    if(o!=null)
-    acceptObserver(o);
+    if (o != null) acceptObserver(o);
   }
 
   public static DatabaseMonitor getMonitor() {
@@ -83,21 +81,16 @@ public abstract class Transaction<C extends TransactionContainer> extends Abstra
 
   protected void makeSchedule() throws Exception {
     // load flag jobs
-    final Job loadContainerFlags =
-        Job.getJob("LoadContainerFlagJobs", Mode.MUST, null, this);
+    final Job loadContainerFlags = Job.getJob("LoadContainerFlagJobs", Mode.MUST, null, this);
     this.schedule.add(loadContainerFlags);
     this.schedule.runJob(loadContainerFlags);
 
-    // all transactions are atomic
-    this.schedule.add(
-        Job.getJob(Atomic.class.getSimpleName(), Mode.MUST, null, this));
-
     // AccessControl
-    this.schedule.add(
-        Job.getJob(AccessControl.class.getSimpleName(), Mode.MUST, null, this));
-    this.schedule.add(
-        Job.getJob(
-            CheckEntityACLRoles.class.getSimpleName(), Mode.MUST, null,  this));
+    this.schedule.add(Job.getJob(AccessControl.class.getSimpleName(), Mode.MUST, null, this));
+    this.schedule.add(Job.getJob(CheckEntityACLRoles.class.getSimpleName(), Mode.MUST, null, this));
+
+    // load permanent container jobs
+    this.schedule.addAll(Job.loadPermanentContainerJobs(this));
 
     for (final EntityInterface e : getContainer()) {
       final List<Job> loadJobs = Job.loadJobs(e, this);
diff --git a/src/main/java/caosdb/server/utils/ServerMessages.java b/src/main/java/caosdb/server/utils/ServerMessages.java
index d4a0f7133d351ad3fc2e358af265327600d46841..63cadf5f3a0eedca04e8dab21a0213a81bf2bd3c 100644
--- a/src/main/java/caosdb/server/utils/ServerMessages.java
+++ b/src/main/java/caosdb/server/utils/ServerMessages.java
@@ -419,11 +419,18 @@ public class ServerMessages {
   public static final Message SERVER_SIDE_SCRIPT_MISSING_CALL =
       new Message(MessageType.Error, 400, "You must specify the `call` field.");
 
-  public static final Message ADDITIONAL_PROPERTY = new Message(MessageType.Warning,0,"This property is an additional property which has no corresponding properties among the properties of the parents.");
+  public static final Message ADDITIONAL_PROPERTY =
+      new Message(
+          MessageType.Warning,
+          0,
+          "This property is an additional property which has no corresponding property among the properties of the parents.");
+
+  public static final Message PROPERTY_WITH_DATATYPE_OVERRIDE =
+      new Message(MessageType.Warning, 0, "This property overrides the datatype.");
+
+  public static final Message PROPERTY_WITH_DESC_OVERRIDE =
+      new Message(MessageType.Warning, 0, "This property overrides the description.");
 
-  public static final Message PROPERTY_WITH_DATATYPE_OVERRIDE = new Message(MessageType.Warning,0,"This property overrides the datatype.");
-  
-  public static final Message PROPERTY_WITH_DESC_OVERRIDE = new Message(MessageType.Warning,0,"This property overrides the description.");
-  
-  public static final Message PROPERTY_WITH_NAME_OVERRIDE = new Message(MessageType.Warning,0,"This property overrides the name.");
+  public static final Message PROPERTY_WITH_NAME_OVERRIDE =
+      new Message(MessageType.Warning, 0, "This property overrides the name.");
 }