diff --git a/full/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java b/full/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
index a06f738..290351c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
+++ b/full/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
@@ -19,6 +19,12 @@
 import de.ids_mannheim.korap.entity.Resource;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 
+/** Parser for extracting data from free-resources.json containing
+ * listing free (non-licensed) corpora.
+ * 
+ * @author margaretha
+ *
+ */
 @Component
 public class FreeResourceParser {
     private Logger log = LogManager.getLogger(FreeResourceParser.class);
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java
index 72378be..2137ab8 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java
@@ -25,8 +25,7 @@
 import net.sf.ehcache.Element;
 
 /**
- * EM: there is no authentication here, just implementation for
- * creating token context etc.
+ * Authentication provider using JWT tokens
  * 
  * Created by hanl on 5/23/14.
  */
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
index a180921..7a8e295 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
@@ -15,6 +15,11 @@
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.user.User;
 
+/** Authentication provider for Bearer tokens
+ * 
+ * @author margaretha
+ *
+ */
 @Component
 public class OAuth2Authentication implements AuthenticationIface {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java
index e59d21f..a5fab90 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java
@@ -1,22 +1,21 @@
 package de.ids_mannheim.korap.authentication;
 
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.EncryptionIface;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.utils.TimeUtils;
+import java.util.Map;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.joda.time.DateTime;
 
-import java.util.Map;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.config.KustvaktConfiguration;
+import de.ids_mannheim.korap.constant.TokenType;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.interfaces.EncryptionIface;
+import de.ids_mannheim.korap.security.context.TokenContext;
+import de.ids_mannheim.korap.user.User;
+import de.ids_mannheim.korap.utils.TimeUtils;
 
 /**
  * implementation of the AuthenticationIface to handle korap
diff --git a/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java b/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
index 4d710ef..de7ac08 100644
--- a/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
+++ b/full/src/main/java/de/ids_mannheim/korap/config/NamedVCLoader.java
@@ -24,6 +24,11 @@
 import de.ids_mannheim.korap.util.QueryException;
 import de.ids_mannheim.korap.web.SearchKrill;
 
+/** Loads predefined virtual corpora at server start up and cache them.
+ * 
+ * @author margaretha
+ *
+ */
 @Component
 public class NamedVCLoader implements Runnable{
     @Autowired
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/GroupMemberStatus.java b/full/src/main/java/de/ids_mannheim/korap/constant/GroupMemberStatus.java
index c9b5229..11ed922 100644
--- a/full/src/main/java/de/ids_mannheim/korap/constant/GroupMemberStatus.java
+++ b/full/src/main/java/de/ids_mannheim/korap/constant/GroupMemberStatus.java
@@ -1,6 +1,6 @@
 package de.ids_mannheim.korap.constant;
 
-/** Defines the status of a user-group member
+/** Defines possible statuses of a user-group member
  * 
  * @author margaretha
  *
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusAccessStatus.java b/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusAccessStatus.java
index 0b0ab0d..437038c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusAccessStatus.java
+++ b/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusAccessStatus.java
@@ -2,7 +2,7 @@
 
 import de.ids_mannheim.korap.entity.VirtualCorpusAccess;
 
-/** Defines possible statusess of {@link VirtualCorpusAccess}
+/** Defines possible statuses of {@link VirtualCorpusAccess}
  * 
  * @author margaretha
  * @see VirtualCorpusAccess
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java b/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java
index 229eec2..3d6b4fa 100644
--- a/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java
+++ b/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java
@@ -8,13 +8,22 @@
  *
  */
 public enum VirtualCorpusType {
-    // available for all
+    /**
+     * available for all
+     */
     SYSTEM, 
-    // available to project group members
+    // 
+    /** available to project group members
+     * 
+     */
     PROJECT, 
-    // available only for the creator
+    /**
+     * available only for the creator
+     */
     PRIVATE, 
-    // available for all, but not listed for all
+    /**
+     * available for all, but not listed for all 
+     */
     PUBLISHED;
     
     public String displayName () {
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java
index 62d8e02..249f144 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDaoImpl.java
@@ -17,6 +17,8 @@
 import de.ids_mannheim.korap.user.User;
 
 /**
+ * Describes database queries and transactions regarding admin users.
+ * 
  * @author margaretha
  *
  */
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/PrivilegeDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/PrivilegeDao.java
index 80a52a2..9bdb351 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/PrivilegeDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/PrivilegeDao.java
@@ -18,8 +18,9 @@
 import de.ids_mannheim.korap.entity.Role;
 import de.ids_mannheim.korap.entity.Role_;
 
-/** Manages database transactions regarding {@link Privilege} entity or 
- *  database table.
+/**
+ * Manages database queries and transactions regarding
+ * {@link Privilege} entity or database table.
  * 
  * @see Privilege
  * @see PrivilegeType
@@ -34,7 +35,7 @@
 
     @PersistenceContext
     private EntityManager entityManager;
-    
+
     public void addPrivilegesToRole (Role role,
             List<PrivilegeType> privilegeTypes) {
         for (PrivilegeType type : privilegeTypes) {
@@ -46,8 +47,8 @@
     public void deletePrivilegeFromRole (int roleId,
             PrivilegeType privilegeType) {
         List<Privilege> privilegeList = retrievePrivilegeByRoleId(roleId);
-        for (Privilege p: privilegeList){
-            if (p.getName().equals(privilegeType)){
+        for (Privilege p : privilegeList) {
+            if (p.getName().equals(privilegeType)) {
                 entityManager.remove(p);
                 break;
             }
@@ -66,6 +67,6 @@
         query.where(criteriaBuilder
                 .equal(root.get(Privilege_.role).get(Role_.id), roleId));
         Query q = entityManager.createQuery(query);
-       return q.getResultList();
+        return q.getResultList();
     }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java
index bd24b21..0467893 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java
@@ -22,7 +22,9 @@
 import de.ids_mannheim.korap.entity.UserGroupMember;
 import de.ids_mannheim.korap.entity.UserGroupMember_;
 
-/** Manages database transactions regarding {@link Role} entity or database table. 
+/**
+ * Manages database queries and transactions regarding {@link Role}
+ * entity or database table.
  * 
  * @author margaretha
  * @see Role
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupDao.java
index 2e59379..691eaca 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupDao.java
@@ -36,8 +36,9 @@
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
-/** Manages database transactions regarding {@link UserGroup} entity and 
- *  database table.
+/**
+ * Manages database queries and transactions regarding
+ * {@link UserGroup} entity and database table.
  * 
  * @author margaretha
  * 
@@ -117,14 +118,18 @@
         entityManager.merge(group);
     }
 
-    /** Retrieves the UserGroup by the given group id. This methods does not 
-     *  fetch group members because only group admin is allowed to see them. 
-     *  Group members have to be retrieved separately.
+    /**
+     * Retrieves the UserGroup by the given group id. This methods
+     * does not
+     * fetch group members because only group admin is allowed to see
+     * them.
+     * Group members have to be retrieved separately.
      * 
      * @see UserGroupMember
-     * @param groupId group id
+     * @param groupId
+     *            group id
      * @return UserGroup
-     * @throws KustvaktException 
+     * @throws KustvaktException
      */
     public UserGroup retrieveGroupById (int groupId) throws KustvaktException {
         return retrieveGroupById(groupId, false);
@@ -156,10 +161,12 @@
         }
     }
 
-
-    /** Retrieves only user-groups that are active (not hidden or deleted).
+    /**
+     * Retrieves only user-groups that are active (not hidden or
+     * deleted).
      * 
-     * @param userId user id
+     * @param userId
+     *            user id
      * @return a list of UserGroup
      * @throws KustvaktException
      */
@@ -183,9 +190,8 @@
                         userId),
                 criteriaBuilder.notEqual(members.get(UserGroupMember_.status),
                         GroupMemberStatus.DELETED));
-        //                criteriaBuilder.equal(members.get(UserGroupMember_.status),
-        //                        GroupMemberStatus.ACTIVE));
-
+        // criteriaBuilder.equal(members.get(UserGroupMember_.status),
+        // GroupMemberStatus.ACTIVE));
 
         query.select(root);
         query.where(restrictions);
@@ -261,7 +267,9 @@
 
     }
 
-    /** This is an admin function. It retrieves all groups given the userId 
+    /**
+     * This is an admin function. It retrieves all groups given the
+     * userId
      * and status.
      * 
      * @param userId
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupMemberDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupMemberDao.java
index 6d1975e..cbfabd7 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupMemberDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/UserGroupMemberDao.java
@@ -25,7 +25,9 @@
 import de.ids_mannheim.korap.exceptions.StatusCodes;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
-/** Manages database transactions regarding {@link UserGroupMember} entity and 
+/**
+ * Manages database queries and transactions regarding
+ * {@link UserGroupMember} entity and
  * database table.
  * 
  * @author margaretha
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusAccessDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusAccessDao.java
index 3df91d3..9e6a7eb 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusAccessDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusAccessDao.java
@@ -25,8 +25,10 @@
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
-/** Manages database transactions regarding {@link VirtualCorpusAccess} entity 
- *  and its corresponding database table.
+/**
+ * Manages database queries and transactions regarding
+ * {@link VirtualCorpusAccess} entity and its corresponding database
+ * table.
  * 
  * @author margaretha
  *
@@ -148,11 +150,13 @@
         return q.getResultList();
     }
 
-    /** Hidden accesses are only created for published or system VC. 
+    /**
+     * Hidden accesses are only created for published or system VC.
      * 
      * Warn: The actual hidden accesses are not checked.
      * 
-     * @param vcId vcId 
+     * @param vcId
+     *            vcId
      * @return true if there is a hidden access, false otherwise
      * @throws KustvaktException
      */
@@ -173,10 +177,10 @@
                 builder.equal(accessVC.get(VirtualCorpus_.id), vcId),
                 builder.equal(access.get(VirtualCorpusAccess_.status),
                         VirtualCorpusAccessStatus.HIDDEN)
-//                ,
-//                builder.notEqual(access.get(VirtualCorpusAccess_.deletedBy),
-//                        "NULL")
-                );
+        // ,
+        // builder.notEqual(access.get(VirtualCorpusAccess_.deletedBy),
+        // "NULL")
+        );
 
         query.select(access);
         query.where(p);
@@ -203,9 +207,9 @@
 
     public void deleteAccess (VirtualCorpusAccess access, String deletedBy) {
         // soft delete
-        
+
         // hard delete
-        if (!entityManager.contains(access)){
+        if (!entityManager.contains(access)) {
             access = entityManager.merge(access);
         }
         entityManager.remove(access);
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusDao.java
index ab4fbb8..0a16309 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/VirtualCorpusDao.java
@@ -38,8 +38,9 @@
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
 /**
- * VirtualCorpusDao manages SQL queries regarding virtual corpora,
- * e.g. retrieving and storing virtual corpora.
+ * VirtualCorpusDao manages database queries and transactions
+ * regarding virtual corpora, e.g. retrieving and storing virtual
+ * corpora.
  * 
  * @author margaretha
  *
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/ResourceDto.java b/full/src/main/java/de/ids_mannheim/korap/dto/ResourceDto.java
index 8b03ec9..27952a6 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/ResourceDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/ResourceDto.java
@@ -6,7 +6,8 @@
 import lombok.Setter;
 
 /**
- * Data transfer object for resource description (e.g. for KorapSRU).
+ * Data transfer object for resource / corpus description (e.g. for
+ * KorapSRU).
  * 
  * @author margaretha
  *
@@ -21,7 +22,6 @@
     private String[] languages;
     private Map<Integer, String> layers;
 
-
     @Override
     public String toString () {
         return "resourceId= " + resourceId + ", description= " + description
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusAccessDto.java b/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusAccessDto.java
index 74d0df6..5e8a6e7 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusAccessDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusAccessDto.java
@@ -4,6 +4,9 @@
 import lombok.Setter;
 
 /**
+ * Defines the structure of virtual corpus accesses, e.g. as JSON
+ * objects in HTTP Responses.
+ * 
  * @author margaretha
  *
  */
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java b/full/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
index 5f8d0cb..da5c2d3 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
@@ -13,10 +13,8 @@
 
 /**
  * ResourceConverter prepares data transfer objects (DTOs) from
- * {@link Resource}
- * entities. DTO structure defines controllers output, namely the
- * structure of
- * JSON objects in HTTP responses.
+ * {@link Resource} entities. DTO structure defines controllers
+ * output, namely the structure of JSON objects in HTTP responses.
  * 
  * @author margaretha
  *
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/converter/UserGroupConverter.java b/full/src/main/java/de/ids_mannheim/korap/dto/converter/UserGroupConverter.java
index 3978799..cadedf9 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/converter/UserGroupConverter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/converter/UserGroupConverter.java
@@ -14,9 +14,11 @@
 import de.ids_mannheim.korap.entity.UserGroupMember;
 import edu.emory.mathcs.backport.java.util.Collections;
 
-/** Manages conversion of  {@link UserGroup} objects to their data access objects (DTO), 
- * e.g. UserGroupDto. DTO structure defines controllers output, namely the structure of 
- * JSON objects in HTTP responses.
+/**
+ * UserGroupConverter manages conversion of {@link UserGroup} objects
+ * to their data access objects (DTO), e.g. UserGroupDto. DTO
+ * structure defines controllers output, namely the structure of JSON
+ * objects in HTTP responses.
  * 
  * @author margaretha
  *
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusAccessConverter.java b/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusAccessConverter.java
index abd2dab..74ebeec 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusAccessConverter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusAccessConverter.java
@@ -7,10 +7,12 @@
 
 import de.ids_mannheim.korap.dto.VirtualCorpusAccessDto;
 import de.ids_mannheim.korap.entity.VirtualCorpusAccess;
+
 /**
- * VirtualCorpusAccessConverter prepares data transfer objects (DTOs) from {@link VirtualCorpusAccess}
- * entities. DTO structure defines controllers output, namely the structure of 
- * JSON objects in HTTP responses.
+ * VirtualCorpusAccessConverter prepares data transfer objects (DTOs)
+ * from {@link VirtualCorpusAccess} entities. DTO structure defines
+ * controllers output, namely the structure of JSON objects in HTTP
+ * responses.
  * 
  * @author margaretha
  *
@@ -18,22 +20,23 @@
 @Component
 public class VirtualCorpusAccessConverter {
 
-    public List<VirtualCorpusAccessDto> createVCADto (List<VirtualCorpusAccess> accessList) {
+    public List<VirtualCorpusAccessDto> createVCADto (
+            List<VirtualCorpusAccess> accessList) {
         List<VirtualCorpusAccessDto> dtos = new ArrayList<>(accessList.size());
-        for (VirtualCorpusAccess access : accessList){
+        for (VirtualCorpusAccess access : accessList) {
             VirtualCorpusAccessDto dto = new VirtualCorpusAccessDto();
             dto.setAccessId(access.getId());
             dto.setCreatedBy(access.getCreatedBy());
-            
+
             dto.setVcId(access.getVirtualCorpus().getId());
             dto.setVcName(access.getVirtualCorpus().getName());
-            
+
             dto.setUserGroupId(access.getUserGroup().getId());
             dto.setUserGroupName(access.getUserGroup().getName());
-            
+
             dtos.add(dto);
         }
         return dtos;
     }
-    
+
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java b/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java
index 9fec23d..7a13e89 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java
@@ -10,9 +10,9 @@
 import de.ids_mannheim.korap.utils.JsonUtils;
 
 /**
- * VirtualCorpusConverter prepares data transfer objects (DTOs) from {@link VirtualCorpus}
- * entities. DTO structure defines controllers output, namely the structure of 
- * JSON objects in HTTP responses.
+ * VirtualCorpusConverter prepares data transfer objects (DTOs) from
+ * {@link VirtualCorpus} entities. DTO structure defines controllers
+ * output, namely the structure of JSON objects in HTTP responses.
  * 
  * @author margaretha
  *
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/Privilege.java b/full/src/main/java/de/ids_mannheim/korap/entity/Privilege.java
index 2254e5d..9838f8a 100644
--- a/full/src/main/java/de/ids_mannheim/korap/entity/Privilege.java
+++ b/full/src/main/java/de/ids_mannheim/korap/entity/Privilege.java
@@ -15,7 +15,8 @@
 import lombok.Getter;
 import lombok.Setter;
 
-/**  
+/**
+ * Describes privilege table listing users and their roles.
  * 
  * @author margaretha
  *
@@ -23,7 +24,7 @@
 @Getter
 @Setter
 @Entity
-@Table(name="privilege")
+@Table(name = "privilege")
 public class Privilege {
 
     @Id
@@ -31,11 +32,12 @@
     private int id;
     @Enumerated(EnumType.STRING)
     private PrivilegeType name;
-    @ManyToOne(fetch=FetchType.LAZY)
+    @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "role_id", referencedColumnName = "id")
     private Role role;
 
     public Privilege () {}
+
     public Privilege (PrivilegeType name, Role role) {
         this.name = name;
         this.role = role;
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/UserGroup.java b/full/src/main/java/de/ids_mannheim/korap/entity/UserGroup.java
index 568e674..3705719 100644
--- a/full/src/main/java/de/ids_mannheim/korap/entity/UserGroup.java
+++ b/full/src/main/java/de/ids_mannheim/korap/entity/UserGroup.java
@@ -18,14 +18,17 @@
 import lombok.Getter;
 import lombok.Setter;
 
-/** Describes user groups.
+/**
+ * Describes user group table and its relations to UserGroupMember and
+ * VirtualCorpusAccess.
  * 
- * Any user may create a user group and send invitations to group 
+ * Any user may create a user group and send invitations to group
  * member by username. Any group member may reject the invitation
  * or unsubscribe from the group.
  * 
  * @author margaretha
  * @see UserGroupMember
+ * @see VirtualCorpusAccess
  */
 @Setter
 @Getter
@@ -54,13 +57,11 @@
             cascade = CascadeType.REMOVE)
     private List<VirtualCorpusAccess> virtualCorpusAccess;
 
-
     @Override
     public String toString () {
         return "id=" + id + ", name= " + name + ", createdBy= " + createdBy;
     }
 
-
     @Override
     public int compareTo (UserGroup o) {
         if (this.getId() > o.getId()) {
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/VirtualCorpus.java b/full/src/main/java/de/ids_mannheim/korap/entity/VirtualCorpus.java
index 4a6aeeb..24bdc6d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/entity/VirtualCorpus.java
+++ b/full/src/main/java/de/ids_mannheim/korap/entity/VirtualCorpus.java
@@ -19,12 +19,14 @@
 import lombok.Getter;
 import lombok.Setter;
 
-/** Describes virtual corpora.
+/**
+ * Describes the virtual corpora table and its relation to
+ * VirtualCorpusAccess.
  * 
- *  Any user may create a virtual corpus and share it to a user group.
- *  However, if the user is not a user-group admin, the virtual corpus 
- *  will not be shared until a user-group admin accept his/her request.
- *   
+ * Any user may create a virtual corpus and share it to a user group.
+ * However, if the user is not a user-group admin, the virtual corpus
+ * will not be shared until a user-group admin accept his/her request.
+ * 
  * @author margaretha
  *
  * @see VirtualCorpusAccess
@@ -34,7 +36,7 @@
 @Getter
 @Entity
 @Table(name = "virtual_corpus")
-public class VirtualCorpus implements Comparable<VirtualCorpus>{
+public class VirtualCorpus implements Comparable<VirtualCorpus> {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2ClientType.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2ClientType.java
index 60209be..dd1da81 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2ClientType.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2ClientType.java
@@ -1,20 +1,32 @@
 package de.ids_mannheim.korap.oauth2.constant;
 
+/**
+ * Defines possible OAuth2 client types.
+ * 
+ * Quoted from RFC 6749:
+ * <ul> 
+ * 
+ * <li> <b>Confidential clients</b> are clients capable of maintaining
+ * the confidentiality of their
+ * credentials (e.g., client implemented on a secure server with
+ * restricted access to the client credentials), or capable of secure
+ * client authentication using other means.
+ * </li>
+ * 
+ * <li>
+ * <b>Public clients</b> are Clients incapable of maintaining the
+ * confidentiality of their credentials (e.g., clients executing on
+ * the device used by the resource owner, such as an installed
+ * native application or a web browser-based application), and
+ * incapable of secure client authentication via any other means.
+ * Mobile and Javascript apps are considered public clients.
+ * </li>
+ * </ul>
+ * 
+ * @author margaretha
+ *
+ */
 public enum OAuth2ClientType {
 
-    // EM: from RFC 6749
-        
-//    Clients capable of maintaining the confidentiality of their
-//    credentials (e.g., client implemented on a secure server with
-//    restricted access to the client credentials), or capable of secure
-//    client authentication using other means.
-    CONFIDENTIAL, 
-    
-//    Clients incapable of maintaining the confidentiality of their
-//    credentials (e.g., clients executing on the device used by the
-//    resource owner, such as an installed native application or a web
-//    browser-based application), and incapable of secure client
-//    authentication via any other means. Mobile and Javascript apps 
-//    are considered public clients. 
-    PUBLIC;
+    CONFIDENTIAL, PUBLIC;
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Error.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Error.java
index fbdb5a7..4b76a26 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Error.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Error.java
@@ -1,12 +1,17 @@
 package de.ids_mannheim.korap.oauth2.constant;
 
+/**
+ * Lists possible OAuth2 errors as described in RFC 6749 and 6750.
+ * 
+ * @author margaretha
+ *
+ */
 public class OAuth2Error {
 
     public static final String ERROR = "error";
     public static final String DESCRIPTION = "error_description";
     public static final String URI = "error_uri";
 
-
     /**
      * The request is missing a required parameter, includes an
      * invalid parameter value, includes a parameter more than
@@ -92,12 +97,22 @@
     public static final String TEMPORARILY_UNAVAILABLE =
             "temporarily_unavailable";
 
-
-    // extensions
-    
+    /**
+     * The request requires higher privileges than provided by the
+     * access token.
+     */
     public static final String INSUFFICIENT_SCOPE = "insufficient_scope";
 
+    /**
+     * The access token provided is revoked, malformed, or
+     * invalid for other reasons.
+     */
     public static final String INVALID_TOKEN = "invalid_token";
 
+    /**
+     * The access token provided is expired. This error is a
+     * specialization of invalid_token error and not part of
+     * the RFCs.
+     */
     public static final String EXPIRED_TOKEN = "expired_token";
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
index a714420..aeb1c92 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
@@ -16,6 +16,13 @@
 import de.ids_mannheim.korap.constant.OAuth2Scope;
 import de.ids_mannheim.korap.oauth2.entity.AccessScope;
 
+/**
+ * AccessScopeDao manages database queries and transactions regarding
+ * access scopes.
+ * 
+ * @author margaretha
+ *
+ */
 @Repository
 @Transactional
 public class AccessScopeDao {
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
index b5f4173..3a9b585 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessTokenDao.java
@@ -34,6 +34,12 @@
 import de.ids_mannheim.korap.oauth2.entity.RefreshToken_;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
+/**
+ * Manages database queries and transactions regarding access tokens.
+ * 
+ * @author margaretha
+ *
+ */
 @Repository
 @Transactional
 public class AccessTokenDao extends KustvaktCacheable {
@@ -129,7 +135,8 @@
         CriteriaQuery<RefreshToken> query =
                 builder.createQuery(RefreshToken.class);
         Root<RefreshToken> root = query.from(RefreshToken.class);
-        Join<RefreshToken, OAuth2Client> client = root.join(RefreshToken_.client);
+        Join<RefreshToken, OAuth2Client> client =
+                root.join(RefreshToken_.client);
         query.select(root);
         query.where(builder.equal(client.get(OAuth2Client_.id), clientId));
         TypedQuery<RefreshToken> q = entityManager.createQuery(query);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
index aa05d5d..b145f44 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDao.java
@@ -8,17 +8,26 @@
 import de.ids_mannheim.korap.oauth2.entity.AccessScope;
 import de.ids_mannheim.korap.oauth2.entity.Authorization;
 
+/**
+ * AuthorizationDao is an interface describing methods for managing
+ * authorizations.
+ * 
+ * @author margaretha
+ *
+ */
 public interface AuthorizationDao {
 
     public Authorization storeAuthorizationCode (String clientId, String userId,
             String code, Set<AccessScope> scopes, String redirectURI,
-            ZonedDateTime authenticationTime, String nonce) throws KustvaktException;
-    
+            ZonedDateTime authenticationTime, String nonce)
+            throws KustvaktException;
+
     public Authorization retrieveAuthorizationCode (String code)
             throws KustvaktException;
-    
+
     public Authorization updateAuthorization (Authorization authorization)
             throws KustvaktException;
 
-    public List<Authorization> retrieveAuthorizationsByClientId (String clientId);
+    public List<Authorization> retrieveAuthorizationsByClientId (
+            String clientId);
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java
index 538c655..2cc570b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AuthorizationDaoImpl.java
@@ -27,6 +27,13 @@
 import de.ids_mannheim.korap.oauth2.entity.Authorization_;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
+/**
+ * Implementations of {@link AuthorizationDao} managing database
+ * queries and transactions regarding OAuth2 authorizations.
+ * 
+ * @author margaretha
+ *
+ */
 @Transactional
 @Repository
 public class AuthorizationDaoImpl implements AuthorizationDao {
@@ -35,7 +42,7 @@
     private EntityManager entityManager;
     @Autowired
     private FullConfiguration config;
-    
+
     public Authorization storeAuthorizationCode (String clientId, String userId,
             String code, Set<AccessScope> scopes, String redirectURI,
             ZonedDateTime authenticationTime, String nonce)
@@ -55,7 +62,7 @@
         authorization.setRedirectURI(redirectURI);
         authorization.setUserAuthenticationTime(authenticationTime);
         authorization.setNonce(nonce);
-        
+
         ZonedDateTime now =
                 ZonedDateTime.now(ZoneId.of(Attributes.DEFAULT_TIME_ZONE));
         authorization.setCreatedDate(now);
@@ -101,7 +108,8 @@
 
     @SuppressWarnings("unchecked")
     @Override
-    public List<Authorization> retrieveAuthorizationsByClientId (String clientId) {
+    public List<Authorization> retrieveAuthorizationsByClientId (
+            String clientId) {
         CriteriaBuilder builder = entityManager.getCriteriaBuilder();
         CriteriaQuery<Authorization> query =
                 builder.createQuery(Authorization.class);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java
index ed848bc..9c807c2 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/CachedAuthorizationDaoImpl.java
@@ -20,6 +20,13 @@
 import de.ids_mannheim.korap.utils.ParameterChecker;
 import net.sf.ehcache.Element;
 
+/**
+ * Implementations of {@link AuthorizationDao} using a cache instead
+ * of a database.
+ * 
+ * @author margaretha
+ *
+ */
 public class CachedAuthorizationDaoImpl extends KustvaktCacheable
         implements AuthorizationDao {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java
index 7bde510..a3507b7 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/OAuth2ClientDao.java
@@ -29,6 +29,11 @@
 import de.ids_mannheim.korap.oauth2.entity.RefreshToken_;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
+/** Manages database queries and transactions regarding OAuth2 clients. 
+ * 
+ * @author margaretha
+ *
+ */
 @Transactional
 @Repository
 public class OAuth2ClientDao {
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/RefreshTokenDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/RefreshTokenDao.java
index 8ee798b..87c7a6d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/RefreshTokenDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/RefreshTokenDao.java
@@ -28,6 +28,12 @@
 import de.ids_mannheim.korap.oauth2.entity.RefreshToken_;
 import de.ids_mannheim.korap.utils.ParameterChecker;
 
+/**
+ * Manages database queries and transactions regarding refresh tokens.
+ * 
+ * @author margaretha
+ *
+ */
 @Repository
 @Transactional
 public class RefreshTokenDao {
@@ -71,7 +77,7 @@
                 builder.createQuery(RefreshToken.class);
         Root<RefreshToken> root = query.from(RefreshToken.class);
         root.fetch(RefreshToken_.client);
-        
+
         query.select(root);
         query.where(builder.equal(root.get(RefreshToken_.token), token));
         Query q = entityManager.createQuery(query);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientDto.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientDto.java
index 3f6199b..fccffb8 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientDto.java
@@ -3,6 +3,13 @@
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
 
+/**
+ * Describes the client_id and the client_secret of a client after
+ * client registration or reset secret.
+ * 
+ * @author margaretha
+ *
+ */
 @JsonInclude(Include.NON_EMPTY)
 public class OAuth2ClientDto {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java
index 85003ae..3970c8d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2ClientInfoDto.java
@@ -6,6 +6,11 @@
 import de.ids_mannheim.korap.oauth2.constant.OAuth2ClientType;
 import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
 
+/** Describes information about an OAuth2 client.
+ * 
+ * @author margaretha
+ *
+ */
 @JsonInclude(Include.NON_EMPTY)
 public class OAuth2ClientInfoDto {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2UserClientDto.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2UserClientDto.java
index 02ab148..3fa44b5 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2UserClientDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dto/OAuth2UserClientDto.java
@@ -1,5 +1,10 @@
 package de.ids_mannheim.korap.oauth2.dto;
 
+/** Lists authorized OAuth2 clients of a user
+ * 
+ * @author margaretha
+ *
+ */
 public class OAuth2UserClientDto {
     
     private String clientId;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
index 15d9da5..5a8a498 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
@@ -15,11 +15,18 @@
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * Defines the oauth2_access_scope database table mapping and access
+ * scope relations to Authorization, AccessToken and RefreshToken.
+ * 
+ * @author margaretha
+ *
+ */
 @Getter
 @Setter
 @Entity
 @Table(name = "oauth2_access_scope")
-public class AccessScope implements Serializable{
+public class AccessScope implements Serializable {
 
     private static final long serialVersionUID = -7356877266702636705L;
 
@@ -35,10 +42,10 @@
 
     @ManyToMany(mappedBy = "scopes", fetch = FetchType.LAZY)
     private List<Authorization> authorizations;
-    
+
     @ManyToMany(mappedBy = "scopes", fetch = FetchType.LAZY)
     private List<AccessToken> accessTokens;
-    
+
     @ManyToMany(mappedBy = "scopes", fetch = FetchType.LAZY)
     private List<RefreshToken> refreshTokens;
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
index ba381de..a94b081 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessToken.java
@@ -20,6 +20,13 @@
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * Defines oauth2_access_token database table mapping and access token
+ * relations to AccessScope and RefreshToken.
+ * 
+ * @author margaretha
+ *
+ */
 @Getter
 @Setter
 @Entity
@@ -59,7 +66,7 @@
                     columnNames = { "token_id", "scope_id" }))
     private Set<AccessScope> scopes;
 
-    @ManyToOne(fetch=FetchType.LAZY)
-    @JoinColumn(name="refresh_token")
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "refresh_token")
     private RefreshToken refreshToken;
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
index bb38fb5..76813ff 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/Authorization.java
@@ -18,6 +18,13 @@
 import lombok.Getter;
 import lombok.Setter;
 
+/**
+ * Describes oauth2_authorization database table mapping and
+ * authorization relations to AccessScope.
+ * 
+ * @author margaretha
+ *
+ */
 @Getter
 @Setter
 @Entity
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java
index 8023e32..5e2c929 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2Client.java
@@ -16,7 +16,8 @@
 
 import de.ids_mannheim.korap.oauth2.constant.OAuth2ClientType;
 
-/**
+/** Describe oauth2_client database table mapping.
+ * 
  * @author margaretha
  *
  */
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java
index 3396d0b..0ab27c1 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/OAuth2ClientUrl.java
@@ -8,7 +8,8 @@
 import lombok.Getter;
 import lombok.Setter;
 
-/**
+/** Describes oauth2_client_url database table mapping
+ * 
  * @author margaretha
  *
  */
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/RefreshToken.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/RefreshToken.java
index a60aef5..4830468 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/RefreshToken.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/RefreshToken.java
@@ -17,6 +17,13 @@
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+/**
+ * Describes oauth2_refresh_token database table mapping and refresh
+ * token relations to access scopes, access tokens, and oauth2 clients.
+ * 
+ * @author margaretha
+ *
+ */
 @Entity
 @Table(name = "oauth2_refresh_token")
 public class RefreshToken {
@@ -31,8 +38,8 @@
     private ZonedDateTime expiryDate;
     @Column(name = "user_id")
     private String userId;
-//    @Column(name = "client_id")
-//    private String clientId;
+    // @Column(name = "client_id")
+    // private String clientId;
     @Column(name = "user_auth_time", updatable = false)
     private ZonedDateTime userAuthenticationTime;
     @Column(name = "is_revoked")
@@ -40,9 +47,9 @@
 
     @OneToMany(fetch = FetchType.EAGER, mappedBy = "refreshToken")
     private Set<AccessToken> accessTokens;
-    
-    @ManyToOne(fetch=FetchType.LAZY)
-    @JoinColumn(name="client")
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "client")
     private OAuth2Client client;
 
     @ManyToMany(fetch = FetchType.EAGER)
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/OAuth2RevokeTokenSuperRequest.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/OAuth2RevokeTokenSuperRequest.java
index 183d2a3..347a233 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/OAuth2RevokeTokenSuperRequest.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/OAuth2RevokeTokenSuperRequest.java
@@ -5,12 +5,20 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.oltu.oauth2.as.request.OAuthRequest;
 import org.apache.oltu.oauth2.common.OAuth;
 import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
 import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
 import org.apache.oltu.oauth2.common.utils.OAuthUtils;
 import org.apache.oltu.oauth2.common.validators.OAuthValidator;
 
+/**
+ * A custom request based on {@link OAuthRequest}. It defines token
+ * revocation request that should have been sent from a super client.
+ * 
+ * @author margaretha
+ *
+ */
 public class OAuth2RevokeTokenSuperRequest {
     protected HttpServletRequest request;
     protected OAuthValidator<HttpServletRequest> validator;
@@ -49,13 +57,13 @@
     public String getClientId () {
         return request.getParameter(OAuth.OAUTH_CLIENT_ID);
     }
-    
+
     public String getSuperClientId () {
         return request.getParameter(RevokeTokenSuperValidator.SUPER_CLIENT_ID);
     }
-    
+
     public String getSuperClientSecret () {
-        return request.getParameter(RevokeTokenSuperValidator.
-                SUPER_CLIENT_SECRET);
+        return request
+                .getParameter(RevokeTokenSuperValidator.SUPER_CLIENT_SECRET);
     }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/RevokeTokenSuperValidator.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/RevokeTokenSuperValidator.java
index 650e8a5..454f0e5 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/RevokeTokenSuperValidator.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/RevokeTokenSuperValidator.java
@@ -12,6 +12,13 @@
 
 import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
 
+/**
+ * Defines required request parameters for
+ * OAuth2RevokeTokenSuperRequest and validates the request method.
+ * 
+ * @author margaretha
+ *
+ */
 public class RevokeTokenSuperValidator
         extends AbstractValidator<HttpServletRequest> {
 
@@ -42,12 +49,10 @@
         if (enforceClientAuthentication) {
             Set<String> missingParameters = new HashSet<String>();
 
-            if (OAuthUtils
-                    .isEmpty(request.getParameter(SUPER_CLIENT_ID))) {
+            if (OAuthUtils.isEmpty(request.getParameter(SUPER_CLIENT_ID))) {
                 missingParameters.add(SUPER_CLIENT_ID);
             }
-            if (OAuthUtils
-                    .isEmpty(request.getParameter(SUPER_CLIENT_SECRET))) {
+            if (OAuthUtils.isEmpty(request.getParameter(SUPER_CLIENT_SECRET))) {
                 missingParameters.add(SUPER_CLIENT_SECRET);
             }
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
index a88355e..f7d6405 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
@@ -34,6 +34,11 @@
 import de.ids_mannheim.korap.oauth2.oltu.OAuth2RevokeTokenSuperRequest;
 import de.ids_mannheim.korap.oauth2.service.OAuth2TokenService;
 
+/** Implementation of token service using Apache Oltu.
+ * 
+ * @author margaretha
+ *
+ */
 @Service
 public class OltuTokenService extends OAuth2TokenService {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/OpenIdHttpRequestWrapper.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/OpenIdHttpRequestWrapper.java
index 8f6d80b..a489ef6 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/OpenIdHttpRequestWrapper.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/OpenIdHttpRequestWrapper.java
@@ -9,6 +9,11 @@
 import com.nimbusds.oauth2.sdk.ParseException;
 import com.nimbusds.oauth2.sdk.http.HTTPRequest;
 
+/** A request wrapper based on HTTPRequest.
+ * 
+ * @author margaretha
+ *
+ */
 public class OpenIdHttpRequestWrapper extends HTTPRequest {
 
     private Map<String, String> params;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/JWKService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/JWKService.java
index c157662..df9fb17 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/JWKService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/JWKService.java
@@ -20,6 +20,11 @@
 
 import de.ids_mannheim.korap.config.FullConfiguration;
 
+/** JWK services for generating key pair and key set.
+ * 
+ * @author margaretha
+ *
+ */
 @Service
 public class JWKService {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdAuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdAuthorizationService.java
index 5997ca0..2d3ee33 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdAuthorizationService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdAuthorizationService.java
@@ -31,6 +31,11 @@
 import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
 import de.ids_mannheim.korap.oauth2.service.OAuth2AuthorizationService;
 
+/** Authorization service implementation using open id. 
+ * 
+ * @author margaretha
+ *
+ */
 @Service
 public class OpenIdAuthorizationService extends OAuth2AuthorizationService {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdConfigService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdConfigService.java
index 0820f3f..bcec0fa 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdConfigService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdConfigService.java
@@ -6,6 +6,10 @@
 import de.ids_mannheim.korap.config.FullConfiguration;
 import de.ids_mannheim.korap.oauth2.openid.OpenIdConfiguration;
 
+/**
+ * @author margaretha
+ *
+ */
 @Service
 public class OpenIdConfigService {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdTokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdTokenService.java
index 15570e1..3da8545 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdTokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/openid/service/OpenIdTokenService.java
@@ -55,6 +55,8 @@
 import de.ids_mannheim.korap.utils.TimeUtils;
 
 /**
+ * Token service implementation using OpenId.
+ * 
  * ID Tokens MUST be signed using JWS and optionally both signed and
  * then encrypted using JWS [JWS] and JWE [JWE] respectively.
  * 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
index 4fab78a..4a50c8a 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
@@ -19,6 +19,11 @@
 import de.ids_mannheim.korap.oauth2.entity.Authorization;
 import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
 
+/** Describes business logic behind OAuth2 authorization requests.
+ * 
+ * @author margaretha
+ *
+ */
 @Service(value = "authorizationService")
 public class OAuth2AuthorizationService {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
index f1e4de0..dbe097c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ClientService.java
@@ -35,6 +35,9 @@
 import de.ids_mannheim.korap.web.input.OAuth2ClientJson;
 
 /**
+ * Defines business logic related to OAuth2 client including
+ * client registration and client authentication.
+ * 
  * According to RFC 6749, an authorization server MUST:
  * <ul>
  * <li>
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
index 7632032..d2d59eb 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
@@ -19,9 +19,13 @@
 import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
 import de.ids_mannheim.korap.oauth2.dao.AccessScopeDao;
 import de.ids_mannheim.korap.oauth2.entity.AccessScope;
-import de.ids_mannheim.korap.oauth2.entity.AccessScope;
 import de.ids_mannheim.korap.security.context.TokenContext;
 
+/** Defines business logic related to OAuth2 scopes.
+ * 
+ * @author margaretha
+ *
+ */
 public class OAuth2ScopeServiceImpl implements OAuth2ScopeService {
 
     @Autowired
@@ -46,15 +50,16 @@
         int index;
         OAuth2Scope oauth2Scope = null;
         for (String scope : scopes) {
-            try{
-                oauth2Scope = Enum.valueOf(OAuth2Scope.class, scope.toUpperCase());
+            try {
+                oauth2Scope =
+                        Enum.valueOf(OAuth2Scope.class, scope.toUpperCase());
             }
             catch (IllegalArgumentException e) {
                 throw new KustvaktException(StatusCodes.INVALID_SCOPE,
                         scope + " is an invalid scope",
                         OAuth2Error.INVALID_SCOPE);
             }
-            
+
             index = definedScopes.indexOf(new AccessScope(oauth2Scope));
             if (index == -1) {
                 throw new KustvaktException(StatusCodes.INVALID_SCOPE,
diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionConstraint.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionConstraint.java
index 19040e9..0b5caba 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionConstraint.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionConstraint.java
@@ -4,8 +4,6 @@
 
 import de.ids_mannheim.korap.config.Attributes;
 import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.resource.rewrite.KoralNode;
-import de.ids_mannheim.korap.resource.rewrite.RewriteTask;
 import de.ids_mannheim.korap.user.User;
 
 /**
diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
index 9d3d952..71c5903 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/CollectionRewrite.java
@@ -16,9 +16,7 @@
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.query.object.KoralMatchOperator;
 import de.ids_mannheim.korap.query.object.KoralOperation;
-import de.ids_mannheim.korap.resource.rewrite.KoralNode;
-import de.ids_mannheim.korap.resource.rewrite.KoralNode.RewriteIdentifier;
-import de.ids_mannheim.korap.resource.rewrite.RewriteTask;
+import de.ids_mannheim.korap.rewrite.KoralNode.RewriteIdentifier;
 import de.ids_mannheim.korap.user.User;
 import de.ids_mannheim.korap.user.User.CorpusAccess;
 import de.ids_mannheim.korap.utils.JsonUtils;
diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java
index f4c2f49..092fe9e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/FullRewriteHandler.java
@@ -3,12 +3,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 
 import de.ids_mannheim.korap.config.FullConfiguration;
-import de.ids_mannheim.korap.resource.rewrite.CollectionCleanRewrite;
-// import de.ids_mannheim.korap.resource.rewrite.IdWriter;
-import de.ids_mannheim.korap.resource.rewrite.RewriteHandler;
 
 /**
- * Defines rewrite handling methods relevant only in full version.
+ * Defines rewrite handling methods, relevant only in full version.
  * 
  * @author margaretha
  *
@@ -17,7 +14,7 @@
 
     @Autowired
     private VirtualCorpusRewrite vcRewrite;
-    
+
     public FullRewriteHandler (FullConfiguration config) {
         super(config);
     }
diff --git a/full/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java b/full/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java
index 55110d0..39c76d4 100644
--- a/full/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java
+++ b/full/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java
@@ -9,14 +9,19 @@
 import de.ids_mannheim.korap.config.KustvaktConfiguration;
 import de.ids_mannheim.korap.entity.VirtualCorpus;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.resource.rewrite.KoralNode;
-import de.ids_mannheim.korap.resource.rewrite.KoralNode.RewriteIdentifier;
-import de.ids_mannheim.korap.resource.rewrite.RewriteTask;
+import de.ids_mannheim.korap.rewrite.KoralNode.RewriteIdentifier;
 import de.ids_mannheim.korap.service.VirtualCorpusService;
 import de.ids_mannheim.korap.user.User;
 import de.ids_mannheim.korap.util.StatusCodes;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
+/**
+ * Rewrites virtual corpus reference with the corresponding koral
+ * query describing the actual virtual corpus query.
+ * 
+ * @author margaretha
+ *
+ */
 @Component
 public class VirtualCorpusRewrite implements RewriteTask.RewriteQuery {
 
@@ -83,7 +88,7 @@
         String ref = jsonNode.at("/ref").asText();
         koralNode.remove("ref", new RewriteIdentifier("ref", ref));
 
-        ref = ref.substring(vcOwner.length()+1, ref.length());
+        ref = ref.substring(vcOwner.length() + 1, ref.length());
         koralNode.set("ref", ref, new RewriteIdentifier("ref", ref));
     }
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/OpenIdResponseHandler.java b/full/src/main/java/de/ids_mannheim/korap/web/OpenIdResponseHandler.java
index 3729bd2..ce467a8 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/OpenIdResponseHandler.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/OpenIdResponseHandler.java
@@ -27,6 +27,11 @@
 import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
 import net.minidev.json.JSONObject;
 
+/** Generates OpenId specific responses.
+ * 
+ * @author margaretha
+ *
+ */
 @Service
 public class OpenIdResponseHandler extends KustvaktResponseHandler {
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java
index 88c8840..97dbbcd 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java
@@ -26,7 +26,7 @@
 import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.utils.TimeUtils;
 import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AdminFilter;
 import de.ids_mannheim.korap.web.filter.PiwikFilter;
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
index ed0d30d..b3594fd 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
@@ -45,7 +45,7 @@
 import de.ids_mannheim.korap.utils.ServiceInfo;
 import de.ids_mannheim.korap.utils.TimeUtils;
 import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.filter.DemoUserFilter;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
index 020eb97..4ad63dc 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
@@ -28,6 +28,7 @@
 
 import de.ids_mannheim.korap.constant.OAuth2Scope;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
 import de.ids_mannheim.korap.oauth2.oltu.OAuth2AuthorizationRequest;
 import de.ids_mannheim.korap.oauth2.oltu.OAuth2RevokeTokenRequest;
 import de.ids_mannheim.korap.oauth2.oltu.OAuth2RevokeTokenSuperRequest;
@@ -36,11 +37,22 @@
 import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.web.OAuth2ResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.utils.FormRequestWrapper;
 
+/**
+ * OAuth2Controller describes OAuth2 web API for authorization
+ * for both internal (e.g Kalamar) and external (third party) clients.
+ * 
+ * Possible authorization scopes are listed in {@link OAuth2Scope} For
+ * more information about OAuth2 authorization mechanisms, see RFC
+ * 6749.
+ * 
+ * @author margaretha
+ *
+ */
 @Controller
 @Path("{version}/oauth2")
 @ResourceFilters({ APIVersionFilter.class })
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java
index 6eae61c..5b3602e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java
@@ -42,14 +42,22 @@
 import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.web.OpenIdResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.utils.MapUtils;
 
+/**
+ * Describes OAuth2 webAPI with OpenId Connect implementation, an
+ * additional authentication protocol allowing clients to verify
+ * user authentication data represented by ID tokens.
+ * 
+ * @author margaretha
+ *
+ */
 @Controller
 @Path("{version}/oauth2/openid")
-@ResourceFilters({APIVersionFilter.class})
+@ResourceFilters({ APIVersionFilter.class })
 public class OAuth2WithOpenIdController {
 
     @Autowired
@@ -62,7 +70,7 @@
     private OpenIdConfigService configService;
     @Autowired
     private OAuth2ScopeService scopeService;
-    
+
     @Autowired
     private OpenIdResponseHandler openIdResponseHandler;
 
@@ -142,7 +150,7 @@
         URI uri = null;
         try {
             scopeService.verifyScope(tokenContext, OAuth2Scope.AUTHORIZE);
-            
+
             if (isAuthentication) {
                 authzService.checkRedirectUriParam(map);
             }
@@ -161,7 +169,6 @@
         return builder.build();
     }
 
-
     @POST
     @Path("token")
     @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
index 38e7474..4dd7c83 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
@@ -29,7 +29,7 @@
 import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.web.OAuth2ResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.input.OAuth2ClientJson;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java
index 0cff51e..0d15e46 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java
@@ -14,7 +14,7 @@
 
 import de.ids_mannheim.korap.dto.ResourceDto;
 import de.ids_mannheim.korap.service.ResourceService;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.PiwikFilter;
 
 /**
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
index f44fb3f..d1cb539 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
@@ -53,7 +53,7 @@
 import de.ids_mannheim.korap.utils.StringUtils;
 import de.ids_mannheim.korap.utils.TimeUtils;
 import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.filter.DemoUserFilter;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
index c356d78..314c1a6 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
@@ -29,8 +29,8 @@
 import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.service.UserGroupService;
-import de.ids_mannheim.korap.web.APIVersionFilter;
 import de.ids_mannheim.korap.web.KustvaktResponseHandler;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.filter.PiwikFilter;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
index 12ce7bf..180e319 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
@@ -31,7 +31,7 @@
 import de.ids_mannheim.korap.security.context.TokenContext;
 import de.ids_mannheim.korap.service.VirtualCorpusService;
 import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
+import de.ids_mannheim.korap.web.filter.APIVersionFilter;
 import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
 import de.ids_mannheim.korap.web.filter.BlockingFilter;
 import de.ids_mannheim.korap.web.filter.PiwikFilter;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/utils/MapUtils.java b/full/src/main/java/de/ids_mannheim/korap/web/utils/MapUtils.java
index df2dfc1..b4d9266 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/utils/MapUtils.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/utils/MapUtils.java
@@ -8,12 +8,18 @@
 
 import javax.ws.rs.core.MultivaluedMap;
 
-/**
+/** Utility methods for maps
+ * 
  * @author margaretha
  *
  */
 public class MapUtils {
 
+    /** Converts {@link MultivaluedMap} to {@link Map}
+     * 
+     * @param multivaluedMap
+     * @return
+     */
     public static Map<String, String> toMap (
             MultivaluedMap<String, String> multivaluedMap) {
         
diff --git a/full/src/test/java/de/ids_mannheim/korap/misc/KoralNodeTest.java b/full/src/test/java/de/ids_mannheim/korap/misc/KoralNodeTest.java
index c0c7012..c4fbbef 100644
--- a/full/src/test/java/de/ids_mannheim/korap/misc/KoralNodeTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/misc/KoralNodeTest.java
@@ -5,7 +5,7 @@
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
-import de.ids_mannheim.korap.resource.rewrite.KoralNode;
+import de.ids_mannheim.korap.rewrite.KoralNode;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
 /**
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java b/full/src/test/java/de/ids_mannheim/korap/rewrite/CollectionRewriteTest.java
similarity index 98%
rename from full/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
rename to full/src/test/java/de/ids_mannheim/korap/rewrite/CollectionRewriteTest.java
index e055529..630d290 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/CollectionRewriteTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/rewrite/CollectionRewriteTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.resource.rewrite;
+package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -13,8 +13,10 @@
 import de.ids_mannheim.korap.config.TestVariables;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
+import de.ids_mannheim.korap.rewrite.CollectionCleanRewrite;
 import de.ids_mannheim.korap.rewrite.CollectionConstraint;
 import de.ids_mannheim.korap.rewrite.CollectionRewrite;
+import de.ids_mannheim.korap.rewrite.RewriteHandler;
 import de.ids_mannheim.korap.user.User;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java b/full/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java
similarity index 98%
rename from full/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
rename to full/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java
index f159049..dc80bbb 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/FoundryRewriteTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/rewrite/FoundryRewriteTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.resource.rewrite;
+package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -14,7 +14,8 @@
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
-import de.ids_mannheim.korap.resource.LayerMapper;
+import de.ids_mannheim.korap.rewrite.LayerMapper;
+import de.ids_mannheim.korap.rewrite.RewriteHandler;
 import de.ids_mannheim.korap.user.KorAPUser;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/IdRewriteTest.java b/full/src/test/java/de/ids_mannheim/korap/rewrite/IdRewriteTest.java
similarity index 92%
rename from full/src/test/java/de/ids_mannheim/korap/resource/rewrite/IdRewriteTest.java
rename to full/src/test/java/de/ids_mannheim/korap/rewrite/IdRewriteTest.java
index ed8f4a3..8f45dc9 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/IdRewriteTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/rewrite/IdRewriteTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.resource.rewrite;
+package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -13,6 +13,8 @@
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
+import de.ids_mannheim.korap.rewrite.IdWriter;
+import de.ids_mannheim.korap.rewrite.RewriteHandler;
 import de.ids_mannheim.korap.user.KorAPUser;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java b/full/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java
similarity index 91%
rename from full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java
rename to full/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java
index 2fe92d8..85691ab 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/ResultRewriteTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/rewrite/ResultRewriteTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.resource.rewrite;
+package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.Assert.assertEquals;
 
@@ -9,6 +9,7 @@
 import de.ids_mannheim.korap.config.TestVariables;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.rewrite.CollectionRewrite;
+import de.ids_mannheim.korap.rewrite.RewriteHandler;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
 /**
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java b/full/src/test/java/de/ids_mannheim/korap/rewrite/RewriteHandlerTest.java
similarity index 93%
rename from full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
rename to full/src/test/java/de/ids_mannheim/korap/rewrite/RewriteHandlerTest.java
index 30ecd1f..9c33f31 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandlerTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/rewrite/RewriteHandlerTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.resource.rewrite;
+package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -13,6 +13,10 @@
 import de.ids_mannheim.korap.config.SpringJerseyTest;
 import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.query.serialize.QuerySerializer;
+import de.ids_mannheim.korap.rewrite.CollectionCleanRewrite;
+import de.ids_mannheim.korap.rewrite.FoundryInject;
+import de.ids_mannheim.korap.rewrite.IdWriter;
+import de.ids_mannheim.korap.rewrite.RewriteHandler;
 import de.ids_mannheim.korap.utils.JsonUtils;
 
 /** EM: to do: Fix tests
diff --git a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/VirtualCorpusRewriteTest.java b/full/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewriteTest.java
similarity index 98%
rename from full/src/test/java/de/ids_mannheim/korap/resource/rewrite/VirtualCorpusRewriteTest.java
rename to full/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewriteTest.java
index 7702beb..6922522 100644
--- a/full/src/test/java/de/ids_mannheim/korap/resource/rewrite/VirtualCorpusRewriteTest.java
+++ b/full/src/test/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewriteTest.java
@@ -1,4 +1,4 @@
-package de.ids_mannheim.korap.resource.rewrite;
+package de.ids_mannheim.korap.rewrite;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
