diff --git a/src/main/java/caosdb/server/CaosDBServer.java b/src/main/java/caosdb/server/CaosDBServer.java
index fc6933069e6bd1303a0ad7fccc080e03c6732a30..9da7f9afa1642be553629d8115f693862011ce46 100644
--- a/src/main/java/caosdb/server/CaosDBServer.java
+++ b/src/main/java/caosdb/server/CaosDBServer.java
@@ -635,7 +635,6 @@ public class CaosDBServer extends Application {
     protectedRouter.attach("/scripting", ScriptingResource.class);
     protectedRouter.attach("/Entities/names", EntityNamesResource.class);
     protectedRouter.attach("/Entity/names", EntityNamesResource.class);
-
     protectedRouter.attach("/Entities", EntityResource.class);
     protectedRouter.attach("/Entities/", EntityResource.class);
     protectedRouter.attach("/Entities/{specifier}", EntityResource.class);
diff --git a/src/main/java/caosdb/server/database/BackendTransaction.java b/src/main/java/caosdb/server/database/BackendTransaction.java
index bdace0c928a738f58ee54f393ebfb1205dda2d94..e4b6c617e6b8991e9c5ed4efb79f6bcc53abbbbd 100644
--- a/src/main/java/caosdb/server/database/BackendTransaction.java
+++ b/src/main/java/caosdb/server/database/BackendTransaction.java
@@ -146,6 +146,12 @@ public abstract class BackendTransaction implements Undoable {
     this.addMeasurement(this, t2 - t1);
   }
 
+  /**
+   * Intialiaze the adapters to the database backend.
+   *
+   * <p>Currently this is hard-coded to the MySQL-Backend but the architecture of this class is
+   * designed to make it easy in the future to choose other implementations (i.e. other back-ends)
+   */
   public static void init() {
     if (impl.isEmpty()) {
       setImpl(GetAllNamesImpl.class, MySQLGetAllNames.class);
diff --git a/src/main/java/caosdb/server/database/DatabaseUtils.java b/src/main/java/caosdb/server/database/DatabaseUtils.java
index 5fcc26827651f41169d2df9c7eae4d18b154e94f..84c38fa448b7d8a1035aa28ded7bbfcecc5a88b3 100644
--- a/src/main/java/caosdb/server/database/DatabaseUtils.java
+++ b/src/main/java/caosdb/server/database/DatabaseUtils.java
@@ -186,6 +186,14 @@ public class DatabaseUtils {
     return ret;
   }
 
+  /**
+   * Helper function for parsing MySQL results.
+   *
+   * <p>This function creates SparseEntities and parses only the name, the role and the acl of an
+   * entity.
+   *
+   * <p>Never returns null.
+   */
   public static SparseEntity parseNameRoleACL(ResultSet rs) throws SQLException {
     final SparseEntity ret = new SparseEntity();
     ret.role = bytes2UTF8(rs.getBytes("EntityRole"));
@@ -194,6 +202,14 @@ public class DatabaseUtils {
     return ret;
   }
 
+  /**
+   * Helper function for parsing MySQL results.
+   *
+   * <p>This function creates SparseEntities and parses all fields which belong to a SparseEntity:
+   * id, name, role, acl, description, datatype, and the file properties.
+   *
+   * <p>Never returns null.
+   */
   public static SparseEntity parseEntityResultSet(final ResultSet rs) throws SQLException {
     SparseEntity ret = parseNameRoleACL(rs);
     ret.id = rs.getInt("EntityID");
diff --git a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLGetAllNames.java b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLGetAllNames.java
index 6f69f34396ac5d7cfb2912965a26e7ba704c69c0..d7c641cadebcde93b97187aa7a0ea2ded72d4678 100644
--- a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLGetAllNames.java
+++ b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLGetAllNames.java
@@ -11,6 +11,7 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
+/** Retrieve name, role and acl of all entities from the MySQL backend. */
 public class MySQLGetAllNames extends MySQLTransaction implements GetAllNamesImpl {
 
   public MySQLGetAllNames(Access access) {
diff --git a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java
index ebe2aa5fad8658f6370265743a4a14f870277ad3..907c7471d3a804d0c4e56380ae1bd649a7de04a7 100644
--- a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java
+++ b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java
@@ -31,6 +31,11 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
+/**
+ * Retrieve a single SparseEntity by id.
+ *
+ * <p>A SparseEntity contains only id, name, role, acl, datatype and the file properties.
+ */
 public class MySQLRetrieveSparseEntity extends MySQLTransaction
     implements RetrieveSparseEntityImpl {
 
diff --git a/src/main/java/caosdb/server/database/backend/interfaces/GetAllNamesImpl.java b/src/main/java/caosdb/server/database/backend/interfaces/GetAllNamesImpl.java
index dfd5bd756a06cfdd95817cee5830bd9f161ae0f7..3a89e579d2713457c72ec2df73e1c1c936d50db2 100644
--- a/src/main/java/caosdb/server/database/backend/interfaces/GetAllNamesImpl.java
+++ b/src/main/java/caosdb/server/database/backend/interfaces/GetAllNamesImpl.java
@@ -3,6 +3,11 @@ package caosdb.server.database.backend.interfaces;
 import caosdb.server.database.proto.SparseEntity;
 import java.util.List;
 
+/**
+ * Interface for the retrieval of all known names from the backend.
+ *
+ * <p>The returned list contains SparseEntities which have only their name, role and acl defined.
+ */
 public interface GetAllNamesImpl extends BackendTransactionImpl {
 
   List<SparseEntity> execute();
diff --git a/src/main/java/caosdb/server/entity/EntityInterface.java b/src/main/java/caosdb/server/entity/EntityInterface.java
index fc88f428189a918f8fe09488752d67eecab336ba..21ed5cd85234bd633914302ce2982b2b6f4f9a66 100644
--- a/src/main/java/caosdb/server/entity/EntityInterface.java
+++ b/src/main/java/caosdb/server/entity/EntityInterface.java
@@ -171,8 +171,10 @@ public interface EntityInterface
 
   public abstract void checkPermission(Permission permission);
 
+  /** Return true iff the current thread's subject has a permission. */
   public abstract boolean hasPermission(Permission permission);
 
+  /** Return true iff the given subject has a permission. */
   public abstract boolean hasPermission(Subject subject, Permission permission);
 
   public abstract boolean hasEntityACL();
diff --git a/src/main/java/caosdb/server/jobs/core/RetriveAllNames.java b/src/main/java/caosdb/server/jobs/core/RetriveAllNames.java
index 955bb5aa8302b61841471443afb08efc9d2a2087..d7f58e00c602d5ed9a79d9e03fa08d9941e64217 100644
--- a/src/main/java/caosdb/server/jobs/core/RetriveAllNames.java
+++ b/src/main/java/caosdb/server/jobs/core/RetriveAllNames.java
@@ -8,6 +8,13 @@ import caosdb.server.jobs.JobExecutionTime;
 import caosdb.server.permissions.EntityPermission;
 import caosdb.server.utils.EntityStatus;
 
+/**
+ * A jobs which retrieves all known names for which the requesting user has the RETRIEVE_ENTITY
+ * permission.
+ *
+ * <p>The entites' status are set to VALID because the entities parents and properties do not have
+ * to be retrieved.
+ */
 @JobAnnotation(flag = "names", time = JobExecutionTime.INIT)
 public class RetriveAllNames extends FlagJob {
 
diff --git a/src/main/java/caosdb/server/resource/transaction/handlers/GetNamesRequestHandler.java b/src/main/java/caosdb/server/resource/transaction/handlers/GetNamesRequestHandler.java
index 3c941b7f60a37fcb70f02e17914320a6cb3787e9..f69c112880e833d0c981b903562889e377fe6f23 100644
--- a/src/main/java/caosdb/server/resource/transaction/handlers/GetNamesRequestHandler.java
+++ b/src/main/java/caosdb/server/resource/transaction/handlers/GetNamesRequestHandler.java
@@ -5,6 +5,7 @@ import caosdb.server.resource.transaction.EntityResource;
 
 public class GetNamesRequestHandler extends RequestHandler<RetrieveContainer> {
 
+  /** Adds the `names` flag to the RetrieveContainer which triggers the RetrieveAllNames job. */
   @Override
   public void handle(EntityResource t, RetrieveContainer container) throws Exception {
     container.getFlags().put("names", null);