diff --git a/src/main/java/de/thm/arsnova/CASLogoutSuccessHandler.java b/src/main/java/de/thm/arsnova/CASLogoutSuccessHandler.java
index ad223ea279f8dcc5b97a0ef3633400bc51bfc2df..5d73848f3222c3a269aa1a2144420fe91e3f0f74 100644
--- a/src/main/java/de/thm/arsnova/CASLogoutSuccessHandler.java
+++ b/src/main/java/de/thm/arsnova/CASLogoutSuccessHandler.java
@@ -30,6 +30,9 @@ import org.springframework.security.web.DefaultRedirectStrategy;
 import org.springframework.security.web.RedirectStrategy;
 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
 
+/**
+ * This class gets called when a user has been successfully logged out from CAS.
+ */
 public class CASLogoutSuccessHandler implements LogoutSuccessHandler {
 
 	public static final Logger LOGGER = LoggerFactory.getLogger(CASLogoutSuccessHandler.class);
diff --git a/src/main/java/de/thm/arsnova/CasUserDetailsService.java b/src/main/java/de/thm/arsnova/CasUserDetailsService.java
index 66bf0eff76ce839352ad7c5e1ffd1bb0b39b8ec2..5998d96e82f257570c991e960675c6208c451625 100644
--- a/src/main/java/de/thm/arsnova/CasUserDetailsService.java
+++ b/src/main/java/de/thm/arsnova/CasUserDetailsService.java
@@ -28,6 +28,9 @@ import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.stereotype.Service;
 
+/**
+ * Class to load a user based on the results from CAS.
+ */
 @Service
 public class CasUserDetailsService extends AbstractCasAssertionUserDetailsService {
 
diff --git a/src/main/java/de/thm/arsnova/FeedbackStorage.java b/src/main/java/de/thm/arsnova/FeedbackStorage.java
index 96636e8521df3cef50a0d60cc85a2e59e4bb1de0..07a203b4af61c69b497dadd970c27556acc9b507 100644
--- a/src/main/java/de/thm/arsnova/FeedbackStorage.java
+++ b/src/main/java/de/thm/arsnova/FeedbackStorage.java
@@ -32,6 +32,9 @@ import de.thm.arsnova.entities.Feedback;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * In-memory storage of feedback data.
+ */
 public class FeedbackStorage {
 	private static class FeedbackStorageObject {
 		private final int value;
diff --git a/src/main/java/de/thm/arsnova/LoginAuthenticationFailureHandler.java b/src/main/java/de/thm/arsnova/LoginAuthenticationFailureHandler.java
index 18d2b1cfb7208159984cb4e8abb4f667f000d5bc..706fb388b72d5918c37672207ac9aa4ae505adbd 100644
--- a/src/main/java/de/thm/arsnova/LoginAuthenticationFailureHandler.java
+++ b/src/main/java/de/thm/arsnova/LoginAuthenticationFailureHandler.java
@@ -31,6 +31,10 @@ import org.springframework.security.web.DefaultRedirectStrategy;
 import org.springframework.security.web.RedirectStrategy;
 import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
 
+
+/**
+ * This class gets called when a user failed to login.
+ */
 public class LoginAuthenticationFailureHandler extends
 		SimpleUrlAuthenticationFailureHandler {
 
diff --git a/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java b/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java
index fafaff40001c64989f6a323e346689246a6579f1..68ccd362dd0f707538f0332bbc2053cb4508db80 100644
--- a/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java
+++ b/src/main/java/de/thm/arsnova/LoginAuthenticationSucessHandler.java
@@ -25,6 +25,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
 
+/**
+ * This class gets called when a user successfully logged in.
+ */
 public class LoginAuthenticationSucessHandler extends
 		SimpleUrlAuthenticationSuccessHandler {
 
diff --git a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
index 202558acfbcaa0206f3e870bcac878cae3c8e239..ee9b6a90c88eeadd7322d7e7b41d4f46b41f6a4a 100644
--- a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
+++ b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
@@ -25,6 +25,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.services.UserSessionService;
 
+/**
+ * Assigns a session to the {@link de.thm.arsnova.services.UserSessionService} whenever a user joins a
+ * session.
+ */
 @Aspect
 public class UserSessionAspect {
 
diff --git a/src/main/java/de/thm/arsnova/aop/package-info.java b/src/main/java/de/thm/arsnova/aop/package-info.java
index e23654023f09fb2f9c94ec2ea3d9c1ed16e21b9d..b39e67531f983fae4917abe2d58a45aba9db2494 100644
--- a/src/main/java/de/thm/arsnova/aop/package-info.java
+++ b/src/main/java/de/thm/arsnova/aop/package-info.java
@@ -1 +1,4 @@
+/**
+ * Classes and interfaces to support aspect-oriented programming
+ */
 package de.thm.arsnova.aop;
diff --git a/src/main/java/de/thm/arsnova/config/ExtraConfig.java b/src/main/java/de/thm/arsnova/config/ExtraConfig.java
index f971a219a76f02030d1b4aa025b1d22dd222bd8a..c6966dc1f9a93650af922f06eb60280235a3f5b3 100644
--- a/src/main/java/de/thm/arsnova/config/ExtraConfig.java
+++ b/src/main/java/de/thm/arsnova/config/ExtraConfig.java
@@ -37,6 +37,9 @@ import de.thm.arsnova.socket.ARSnovaSocket;
 import de.thm.arsnova.socket.ARSnovaSocketIOServer;
 import de.thm.arsnova.ImageUtils;
 
+/**
+ * Loads property file and configures non-security related beans and components.
+ */
 @Configuration
 @EnableCaching
 public class ExtraConfig {
diff --git a/src/main/java/de/thm/arsnova/config/SecurityConfig.java b/src/main/java/de/thm/arsnova/config/SecurityConfig.java
index 76a5b047af7bd9615457edc40f32fc0860457224..c63911006a5466cfb9e1850e4601302075fc059b 100644
--- a/src/main/java/de/thm/arsnova/config/SecurityConfig.java
+++ b/src/main/java/de/thm/arsnova/config/SecurityConfig.java
@@ -80,6 +80,9 @@ import de.thm.arsnova.LoginAuthenticationSucessHandler;
 import de.thm.arsnova.security.ApplicationPermissionEvaluator;
 import de.thm.arsnova.security.DbUserDetailsService;
 
+/**
+ * Loads property file and configures components used for authentication.
+ */
 @Configuration
 @EnableGlobalMethodSecurity(prePostEnabled = true)
 @EnableWebSecurity
diff --git a/src/main/java/de/thm/arsnova/config/package-info.java b/src/main/java/de/thm/arsnova/config/package-info.java
index 87aa446414d10c887a085626b792f718940b9b29..817ab1d11e5d1a2b3a4202a1723e045bb60386a6 100644
--- a/src/main/java/de/thm/arsnova/config/package-info.java
+++ b/src/main/java/de/thm/arsnova/config/package-info.java
@@ -1 +1,4 @@
+/**
+ * Configuration of Spring's and ARSnova's components
+ */
 package de.thm.arsnova.config;
diff --git a/src/main/java/de/thm/arsnova/controller/AbstractController.java b/src/main/java/de/thm/arsnova/controller/AbstractController.java
index 4f20a2cfd1e9c63d9fae1e0e47ac687791d42282..bdb2d8f7eb724935efa44e643ef44611b98bb254 100644
--- a/src/main/java/de/thm/arsnova/controller/AbstractController.java
+++ b/src/main/java/de/thm/arsnova/controller/AbstractController.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.controller;
 
+/**
+ * Base class of all controllers.
+ */
 public class AbstractController {
 	protected static final String X_DEPRECATED_API = "X-Deprecated-API";
 	protected static final String X_FORWARDED = "X-Forwarded";
diff --git a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
index da4da99a44352a06c90d828b90bec0d25cd80408..2202338ca018ba719237f5251c2eba8b44f6c07c 100644
--- a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
@@ -37,6 +37,9 @@ import de.thm.arsnova.exceptions.BadRequestException;
 import de.thm.arsnova.services.IQuestionService;
 import de.thm.arsnova.web.DeprecatedApi;
 
+/**
+ * Handles requests related to audience questions, which are also called interposed or feedback questions.
+ */
 @RestController
 @RequestMapping("/audiencequestion")
 public class AudienceQuestionController extends AbstractController {
diff --git a/src/main/java/de/thm/arsnova/controller/CourseController.java b/src/main/java/de/thm/arsnova/controller/CourseController.java
index f35bb4f9683c06db94781b383314ddc994340add..a7104db07fade0def1f882ebf2393addddbec869 100644
--- a/src/main/java/de/thm/arsnova/controller/CourseController.java
+++ b/src/main/java/de/thm/arsnova/controller/CourseController.java
@@ -39,6 +39,9 @@ import de.thm.arsnova.exceptions.NotImplementedException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.services.IUserService;
 
+/**
+ * Provides access to a user's courses in an LMS such as Moodle.
+ */
 @RestController
 public class CourseController extends AbstractController {
 
diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
index a9b2397c182e9db3d21d81c1000170954c423d11..cee5de523fc42842e7e586063bd0f0d2240edba3 100644
--- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
@@ -35,6 +35,12 @@ import de.thm.arsnova.services.IFeedbackService;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.web.DeprecatedApi;
 
+/**
+ * Handles requests concerning the user's feedback, i.e., "too fast" or "faster, please". This HTTP API is
+ * deprecated in favor of the socket implementation.
+ *
+ * @see de.thm.arsnova.socket.ARSnovaSocketIOServer
+ */
 @RestController
 public class FeedbackController extends AbstractController {
 
diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
index cd2577a1e17fc906d828aab36ff8887ebd969f07..59df5aaa872815340e4f142213e4d2a13ea52009 100644
--- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
@@ -44,6 +44,9 @@ import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.IQuestionService;
 import de.thm.arsnova.web.DeprecatedApi;
 
+/**
+ * Handles requests related to questions teachers are asking their students.
+ */
 @RestController
 @RequestMapping("/lecturerquestion")
 public class LecturerQuestionController extends AbstractController {
diff --git a/src/main/java/de/thm/arsnova/controller/LegacyController.java b/src/main/java/de/thm/arsnova/controller/LegacyController.java
index caeb383ad7d7610dadc41393235e1f69b468ded9..c15295d0671d31dbb7c5aed0396721ea56716965 100644
--- a/src/main/java/de/thm/arsnova/controller/LegacyController.java
+++ b/src/main/java/de/thm/arsnova/controller/LegacyController.java
@@ -29,6 +29,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import de.thm.arsnova.services.IQuestionService;
 import de.thm.arsnova.web.DeprecatedApi;
 
+/**
+ * This controller forwards requests from deprecated URLs to their new controller, where the requests are handled.
+ */
 @Controller
 public class LegacyController extends AbstractController {
 
diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java
index ca1667641414f83698f2cd1d334e0b5017870ad7..3b6d96803ec6ae2f34f9f0575d97a4aa87ce5fcf 100644
--- a/src/main/java/de/thm/arsnova/controller/LoginController.java
+++ b/src/main/java/de/thm/arsnova/controller/LoginController.java
@@ -64,6 +64,9 @@ import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.UserSessionService;
 
+/**
+ * Handles authentication specific requests.
+ */
 @Controller
 public class LoginController extends AbstractController {
 
diff --git a/src/main/java/de/thm/arsnova/controller/SecurityExceptionControllerAdvice.java b/src/main/java/de/thm/arsnova/controller/SecurityExceptionControllerAdvice.java
index f1cb01dfae18dcc8336c4a9d253b3e8da2354583..d1a472a24af02881b73b6a71ed7ac201ca8d6064 100644
--- a/src/main/java/de/thm/arsnova/controller/SecurityExceptionControllerAdvice.java
+++ b/src/main/java/de/thm/arsnova/controller/SecurityExceptionControllerAdvice.java
@@ -39,6 +39,9 @@ import de.thm.arsnova.exceptions.PreconditionFailedException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.exceptions.PayloadTooLargeException;
 
+/**
+ * Translates security/authentication related exceptions into HTTP status codes.
+ */
 @ControllerAdvice
 public class SecurityExceptionControllerAdvice {
 
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index d777e1a4d33f69a9f02e6a61254035d41a6b0876..4a75665e843c9962e15737b00c51f32cf875ad93 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -51,6 +51,9 @@ import de.thm.arsnova.services.SessionService.SessionNameComparator;
 import de.thm.arsnova.services.SessionService.SessionShortNameComparator;
 import de.thm.arsnova.web.DeprecatedApi;
 
+/**
+ * Handles requests related to ARSnova sessions.
+ */
 @RestController
 @RequestMapping("/session")
 public class SessionController extends AbstractController {
diff --git a/src/main/java/de/thm/arsnova/controller/SocketController.java b/src/main/java/de/thm/arsnova/controller/SocketController.java
index bbe1bdd485406913a700ff18f9c4b43ffb7802d1..64a58710ff65f74e4a79c52d916c09a672bb9702 100644
--- a/src/main/java/de/thm/arsnova/controller/SocketController.java
+++ b/src/main/java/de/thm/arsnova/controller/SocketController.java
@@ -37,6 +37,9 @@ import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.UserSessionService;
 import de.thm.arsnova.socket.ARSnovaSocket;
 
+/**
+ * Initiates the socket communication.
+ */
 @RestController
 @RequestMapping("/socket")
 public class SocketController extends AbstractController {
diff --git a/src/main/java/de/thm/arsnova/controller/StatisticsController.java b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
index a7bad05c97678e2a3df2c30ab07972a9e379ca80..0acfb9d613a77685849d272adb1c799602f06757 100644
--- a/src/main/java/de/thm/arsnova/controller/StatisticsController.java
+++ b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
@@ -27,6 +27,9 @@ import de.thm.arsnova.services.IStatisticsService;
 import de.thm.arsnova.web.CacheControl;
 import de.thm.arsnova.web.DeprecatedApi;
 
+/**
+ * Allows retrieval of several statistics such as the number of active users.
+ */
 @RestController
 public class StatisticsController extends AbstractController {
 
diff --git a/src/main/java/de/thm/arsnova/controller/UserController.java b/src/main/java/de/thm/arsnova/controller/UserController.java
index 3bc7a769b6e951edc68136416284e3439454960b..a113f184a4569d881391c552f900580f4775234f 100644
--- a/src/main/java/de/thm/arsnova/controller/UserController.java
+++ b/src/main/java/de/thm/arsnova/controller/UserController.java
@@ -35,6 +35,9 @@ import de.thm.arsnova.entities.DbUser;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.UserSessionService;
 
+/**
+ * Handles requests related to ARSnova's own user registration and login process.
+ */
 @Controller
 @RequestMapping("/user")
 public class UserController extends AbstractController {
diff --git a/src/main/java/de/thm/arsnova/controller/WelcomeController.java b/src/main/java/de/thm/arsnova/controller/WelcomeController.java
index 509ed38cd69f28549423d4462721f2ff30677a37..6688df712e4b11647cdcae012cddd01904365cfb 100644
--- a/src/main/java/de/thm/arsnova/controller/WelcomeController.java
+++ b/src/main/java/de/thm/arsnova/controller/WelcomeController.java
@@ -38,6 +38,9 @@ import org.springframework.web.servlet.view.RedirectView;
 
 import de.thm.arsnova.exceptions.NoContentException;
 
+/**
+ * Default controller that handles requests which have not set a path.
+ */
 @Controller
 public class WelcomeController extends AbstractController {
 
diff --git a/src/main/java/de/thm/arsnova/controller/package-info.java b/src/main/java/de/thm/arsnova/controller/package-info.java
index ab9a862ae0e0599f236cf9d7d1914a8180be16cd..71e44bcf6adccfb619a7b805fe327bc6eee1c587 100644
--- a/src/main/java/de/thm/arsnova/controller/package-info.java
+++ b/src/main/java/de/thm/arsnova/controller/package-info.java
@@ -1 +1,4 @@
+/**
+ * The 'C' in MVC
+ */
 package de.thm.arsnova.controller;
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 374d9705a5f1a7a3dcf0ee583937a52ad12d8a12..cad6b9d1e6c27cb6f1735798b1f9573b7c3ac1f9 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -82,6 +82,9 @@ import de.thm.arsnova.events.NewAnswerEvent;
 import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.ISessionService;
 
+/**
+ * Database implementation based on CouchDB.
+ */
 @Component("databaseDao")
 public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware {
 
@@ -1421,6 +1424,9 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 		return result;
 	}
 
+	/**
+	 * Adds convenience methods to CouchDB4J's view class.
+	 */
 	private static class ExtendedView extends NovaView {
 
 		public ExtendedView(final String fullname) {
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 0f6255948f30d502166fd1e81de8d86d498dd997..833761262ac58c9861eaddf7067100f3a96437e5 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -34,6 +34,9 @@ import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 
+/**
+ * All methods the database must support.
+ */
 public interface IDatabaseDao {
 	Session getSessionFromKeyword(String keyword);
 
diff --git a/src/main/java/de/thm/arsnova/dao/package-info.java b/src/main/java/de/thm/arsnova/dao/package-info.java
index 1178f0094e38c4a606d9fb7d96f4ff4747522b98..1b1c0dd99512dc8a48b58c97a9d33b92f34b43a3 100644
--- a/src/main/java/de/thm/arsnova/dao/package-info.java
+++ b/src/main/java/de/thm/arsnova/dao/package-info.java
@@ -1 +1,4 @@
+/**
+ * Classes and interfaces for accessing the database
+ */
 package de.thm.arsnova.dao;
diff --git a/src/main/java/de/thm/arsnova/domain/CourseScore.java b/src/main/java/de/thm/arsnova/domain/CourseScore.java
index 6065b8e0145c5e5cacd72911c35bed70f95e2466..8a689b75cfe359aa01aa39b7dd56ae611310a2c7 100644
--- a/src/main/java/de/thm/arsnova/domain/CourseScore.java
+++ b/src/main/java/de/thm/arsnova/domain/CourseScore.java
@@ -26,6 +26,9 @@ import java.util.Set;
 
 import de.thm.arsnova.entities.User;
 
+/**
+ * Calculates the learning progress for users and their courses.
+ */
 public class CourseScore implements Iterable<QuestionScore> {
 
 	private final Map<String, QuestionScore> scores;
diff --git a/src/main/java/de/thm/arsnova/domain/ILearningProgressFactory.java b/src/main/java/de/thm/arsnova/domain/ILearningProgressFactory.java
index 586b283810a371a80a934e713b267e69895f3712..1504a1498628369e051795e41a64132b2f11f30f 100644
--- a/src/main/java/de/thm/arsnova/domain/ILearningProgressFactory.java
+++ b/src/main/java/de/thm/arsnova/domain/ILearningProgressFactory.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.domain;
 
+/**
+ * Interface for Spring dependency injection.
+ */
 public interface ILearningProgressFactory {
 
 	public abstract LearningProgress create(String progressType, String questionVariant);
diff --git a/src/main/java/de/thm/arsnova/domain/LearningProgress.java b/src/main/java/de/thm/arsnova/domain/LearningProgress.java
index 3cb8d49c6ef47b7ce6abf07a10bece72b62b2d3f..28e8f03f5a07e896b9f7ad4f51beb9563aad6a0a 100644
--- a/src/main/java/de/thm/arsnova/domain/LearningProgress.java
+++ b/src/main/java/de/thm/arsnova/domain/LearningProgress.java
@@ -21,6 +21,9 @@ import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.LearningProgressValues;
 
+/**
+ * Defines the core functionality which the learning progress calculation should provide.
+ */
 public interface LearningProgress {
 
 	public LearningProgressValues getCourseProgress(Session session);
diff --git a/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java b/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java
index 2ef264989613cc62cdf1d868dd9e1513b88abe59..4de4fa37c2cf07aac7f421cafd264bf099e399f8 100644
--- a/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java
+++ b/src/main/java/de/thm/arsnova/domain/LearningProgressFactory.java
@@ -54,6 +54,11 @@ import de.thm.arsnova.events.StatusSessionEvent;
 import de.thm.arsnova.events.UnlockVoteEvent;
 import de.thm.arsnova.events.UnlockVotesEvent;
 
+/**
+ * Creates a learning progress implementation.
+ *
+ * This class additionally clears all learning progress caches and reports this via event system.
+ */
 @Component
 public class LearningProgressFactory implements NovaEventVisitor, ILearningProgressFactory, ApplicationEventPublisherAware {
 
diff --git a/src/main/java/de/thm/arsnova/domain/LearningProgressListener.java b/src/main/java/de/thm/arsnova/domain/LearningProgressListener.java
index 28bc8e0eed4adb152d2c82e6b3ce86795a46225a..641e26ae614ab1475475b58ade2fc851644dcc31 100644
--- a/src/main/java/de/thm/arsnova/domain/LearningProgressListener.java
+++ b/src/main/java/de/thm/arsnova/domain/LearningProgressListener.java
@@ -24,6 +24,11 @@ import org.springframework.stereotype.Component;
 import de.thm.arsnova.events.NovaEvent;
 import de.thm.arsnova.events.NovaEventVisitor;
 
+/**
+ * Listener registration for the learning progress.
+ *
+ * Note that this class is necessary in order for the annotations to work.
+ */
 @Component
 public class LearningProgressListener implements ApplicationListener<NovaEvent> {
 
diff --git a/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java b/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java
index ef718b4f430a8c0a4bec987a32132b2e50e23ae9..72be81b2aa1d7a78106e982986a15f3ce96a3d63 100644
--- a/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java
+++ b/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java
@@ -21,6 +21,9 @@ import de.thm.arsnova.dao.IDatabaseDao;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.LearningProgressValues;
 
+/**
+ * Calculates learning progress based on a question's value.
+ */
 public class PointBasedLearningProgress extends VariantLearningProgress {
 
 	public PointBasedLearningProgress(IDatabaseDao dao) {
diff --git a/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java b/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java
index 9cb4a92d0de1fb7597a7228dac8b873bb13d8458..327174e04eaee30eec92df3a0f7a9f8a1c9a97f9 100644
--- a/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java
+++ b/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java
@@ -21,6 +21,10 @@ import de.thm.arsnova.dao.IDatabaseDao;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.LearningProgressValues;
 
+/**
+ * Calculates learning progress based on overall correctness of an answer. A question is answered correctly iff the
+ * maximum question value possible has been achieved.
+ */
 public class QuestionBasedLearningProgress extends VariantLearningProgress {
 
 	public QuestionBasedLearningProgress(IDatabaseDao dao) {
diff --git a/src/main/java/de/thm/arsnova/domain/QuestionScore.java b/src/main/java/de/thm/arsnova/domain/QuestionScore.java
index d5c1f8c298e841f88facc4d65164e644cc90ae3e..c2021f15ce4bd4d92aa35602561d6a24b98b302c 100644
--- a/src/main/java/de/thm/arsnova/domain/QuestionScore.java
+++ b/src/main/java/de/thm/arsnova/domain/QuestionScore.java
@@ -24,6 +24,9 @@ import java.util.Set;
 
 import de.thm.arsnova.entities.User;
 
+/**
+ * Calculates learning progress score for a specific question.
+ */
 public class QuestionScore implements Iterable<UserScore> {
 
 	private String questionId;
diff --git a/src/main/java/de/thm/arsnova/domain/UserScore.java b/src/main/java/de/thm/arsnova/domain/UserScore.java
index 282fd06e7e73692997fee753e597b91e0c84cfde..2f33a753994cfc3a55f66bb35f2930f9f861ab4c 100644
--- a/src/main/java/de/thm/arsnova/domain/UserScore.java
+++ b/src/main/java/de/thm/arsnova/domain/UserScore.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.domain;
 
 import de.thm.arsnova.entities.User;
 
+/**
+ * The learning progress answer score of a particular user.
+ */
 public class UserScore {
 
 	private String username;
diff --git a/src/main/java/de/thm/arsnova/domain/VariantLearningProgress.java b/src/main/java/de/thm/arsnova/domain/VariantLearningProgress.java
index 74d67138dc1131d43ddddca3fecac51f259fefb7..c394277acfbfc988ca3a1879a6ae269a6f0f507c 100644
--- a/src/main/java/de/thm/arsnova/domain/VariantLearningProgress.java
+++ b/src/main/java/de/thm/arsnova/domain/VariantLearningProgress.java
@@ -23,7 +23,7 @@ import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.LearningProgressValues;
 
 /**
- * Base class for the Learning Progress feature that allows filtering on the question variant.
+ * Base class for the learning progress feature that allows filtering on the question variant.
  */
 abstract class VariantLearningProgress implements LearningProgress {
 
diff --git a/src/main/java/de/thm/arsnova/domain/package-info.java b/src/main/java/de/thm/arsnova/domain/package-info.java
index ee2d2f1de66118173509e1ba7b8f66e6acf2343f..0733c68fb4c53a0c7fd357e3d6967e4fd21fc6c3 100644
--- a/src/main/java/de/thm/arsnova/domain/package-info.java
+++ b/src/main/java/de/thm/arsnova/domain/package-info.java
@@ -1 +1,4 @@
+/**
+ * The 'M' in MVC
+ */
 package de.thm.arsnova.domain;
\ No newline at end of file
diff --git a/src/main/java/de/thm/arsnova/entities/Answer.java b/src/main/java/de/thm/arsnova/entities/Answer.java
index dcc3bc317f960ce65599e2f5b00a0028f1de58e8..ef2d18d82045650a7a9ac816cdf8260cb323e41e 100644
--- a/src/main/java/de/thm/arsnova/entities/Answer.java
+++ b/src/main/java/de/thm/arsnova/entities/Answer.java
@@ -19,6 +19,11 @@ package de.thm.arsnova.entities;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
+/**
+ * Both a regular (single choice, evaluation, etc.) as well as a freetext answer.
+ *
+ * This class has additional fields to transport generated answer statistics.
+ */
 public class Answer {
 
 	private String _id;
diff --git a/src/main/java/de/thm/arsnova/entities/DbUser.java b/src/main/java/de/thm/arsnova/entities/DbUser.java
index 84217b5b7cb89151a6fedad0d37b09144e147df1..dbdbd7e97448bcb9b91033b3a79a7a36dcdbc4fc 100644
--- a/src/main/java/de/thm/arsnova/entities/DbUser.java
+++ b/src/main/java/de/thm/arsnova/entities/DbUser.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * A user account for ARSnova's own registration and login process.
+ */
 public class DbUser {
 	private String id;
 	private String rev;
diff --git a/src/main/java/de/thm/arsnova/entities/Feedback.java b/src/main/java/de/thm/arsnova/entities/Feedback.java
index e2949c913a2259ffde2fbe75e75939ededb5f80e..102002ac856b76fb8667dd4e87d24e1ec8914d0c 100644
--- a/src/main/java/de/thm/arsnova/entities/Feedback.java
+++ b/src/main/java/de/thm/arsnova/entities/Feedback.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.entities;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * The feedback values of a single session.
+ */
 public class Feedback {
 	public static final int MIN_FEEDBACK_TYPE = 0;
 	public static final int MAX_FEEDBACK_TYPE = 3;
diff --git a/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java b/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java
index ce9cc6adb28a1e2ba004d9496476b6af1f81ac6a..807297687f75ca4a27db0eb14b8db347de43f943 100644
--- a/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java
+++ b/src/main/java/de/thm/arsnova/entities/InterposedQuestion.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.entities;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
+/**
+ * A question the user is asking the teacher. Also known as feedback or audience question.
+ */
 public class InterposedQuestion {
 
 	private String _id;
diff --git a/src/main/java/de/thm/arsnova/entities/InterposedReadingCount.java b/src/main/java/de/thm/arsnova/entities/InterposedReadingCount.java
index d6550faa1d9962b645c62ba62a3abdee9bd31ff8..179cc1b4b6796e0354832e84d5982f91be4a5803 100644
--- a/src/main/java/de/thm/arsnova/entities/InterposedReadingCount.java
+++ b/src/main/java/de/thm/arsnova/entities/InterposedReadingCount.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * Wrapper class for counting read and unread interposed questions for a session or a single user.
+ */
 public class InterposedReadingCount {
 
 	private int read;
diff --git a/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java b/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java
index f51d77aea8996157eab8903fd3a8480025b7255d..fcde16cf3731b929d4102ecd74832cbe68b2fc91 100644
--- a/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java
+++ b/src/main/java/de/thm/arsnova/entities/LearningProgressOptions.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * A session's settings regarding the calculation of the learning progress.
+ */
 public class LearningProgressOptions {
 
 	private String type = "questions";
diff --git a/src/main/java/de/thm/arsnova/entities/LoggedIn.java b/src/main/java/de/thm/arsnova/entities/LoggedIn.java
index 796935621856cab0e1ef07bb22ce0b43c562f78b..213f37c697707bc0333186b1b4286591bf737c2d 100644
--- a/src/main/java/de/thm/arsnova/entities/LoggedIn.java
+++ b/src/main/java/de/thm/arsnova/entities/LoggedIn.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.entities;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * Once a user joins a session, this class is used to identify a returning user.
+ */
 public class LoggedIn {
 
 	private String _id;
diff --git a/src/main/java/de/thm/arsnova/entities/PossibleAnswer.java b/src/main/java/de/thm/arsnova/entities/PossibleAnswer.java
index b6648fbd5779cb5b2792b2a2f9c6fd193def9ab7..f66842389ae8a3e8383503960f58522a4f531ded 100644
--- a/src/main/java/de/thm/arsnova/entities/PossibleAnswer.java
+++ b/src/main/java/de/thm/arsnova/entities/PossibleAnswer.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * This class represents an answer option of a question.
+ */
 public class PossibleAnswer {
 
 	private String id;
diff --git a/src/main/java/de/thm/arsnova/entities/Question.java b/src/main/java/de/thm/arsnova/entities/Question.java
index 6a87f338f8cdf15ce418c3b8e6ee86c7e4489f9a..2f449a15c10d9029ef2534212a8180c82857123b 100644
--- a/src/main/java/de/thm/arsnova/entities/Question.java
+++ b/src/main/java/de/thm/arsnova/entities/Question.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.entities;
 import java.util.Date;
 import java.util.List;
 
+/**
+ * A question the teacher is asking.
+ */
 public class Question {
 
 	private String type;
diff --git a/src/main/java/de/thm/arsnova/entities/ServiceDescription.java b/src/main/java/de/thm/arsnova/entities/ServiceDescription.java
index 6d37ad730301bc70b3a147523ef7b37be2620eab..1f756cfa5202936477fb564273bcc12790dcb8b9 100644
--- a/src/main/java/de/thm/arsnova/entities/ServiceDescription.java
+++ b/src/main/java/de/thm/arsnova/entities/ServiceDescription.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * A login service description. For example, this class is used to display the login buttons in ARSnova mobile.
+ */
 public class ServiceDescription {
 	private String id;
 	private String name;
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index 61cd50cfaadef032051b628248e93c4ac62cc971..5994c219a56becb9d3775e41b3ed8c551e8f6799 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -22,6 +22,9 @@ import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
+/**
+ * Represents an ARSnova session.
+ */
 public class Session implements Serializable {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/entities/SessionFeature.java b/src/main/java/de/thm/arsnova/entities/SessionFeature.java
index 4f2879f58c4e3efd9bd9cbf7aca5b33b312c388c..b8f59b38a6eb16bee4f9966bce04368bdfc19bdb 100644
--- a/src/main/java/de/thm/arsnova/entities/SessionFeature.java
+++ b/src/main/java/de/thm/arsnova/entities/SessionFeature.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * Contains fields that describe which specific feature is activated for a session.
+ */
 public class SessionFeature {
 
 	private boolean jitt = true;
diff --git a/src/main/java/de/thm/arsnova/entities/SessionInfo.java b/src/main/java/de/thm/arsnova/entities/SessionInfo.java
index c83d21d1cfda5030c475e5b9d9111c23e389e2e5..9ef283b9fef1168f5ba27f729d00ef3132af8a66 100644
--- a/src/main/java/de/thm/arsnova/entities/SessionInfo.java
+++ b/src/main/java/de/thm/arsnova/entities/SessionInfo.java
@@ -20,6 +20,10 @@ package de.thm.arsnova.entities;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * Summary information of a specific session. For example, this is used to display list entries of 'my sessions' as well
+ * as 'my visited sessions'.
+ */
 public class SessionInfo {
 
 	private String name;
diff --git a/src/main/java/de/thm/arsnova/entities/SortOrder.java b/src/main/java/de/thm/arsnova/entities/SortOrder.java
index f6356f131881f588e6d1d4f9a49b4708335511b6..7eb83a1e7fa2675a0650f95afc52ccc6d81f9fcd 100644
--- a/src/main/java/de/thm/arsnova/entities/SortOrder.java
+++ b/src/main/java/de/thm/arsnova/entities/SortOrder.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.entities;
 
 import java.util.List;
 
+/**
+ * Defines how a question list should be sorted.
+ */
 public class SortOrder {
 
 	private String sessionId;
diff --git a/src/main/java/de/thm/arsnova/entities/Statistics.java b/src/main/java/de/thm/arsnova/entities/Statistics.java
index 1caa6a18cf189a514030c8cc079b509b8776b744..919e24234e66edd820141109befed3efce615cbf 100644
--- a/src/main/java/de/thm/arsnova/entities/Statistics.java
+++ b/src/main/java/de/thm/arsnova/entities/Statistics.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
+/**
+ * Collection of several statistics about ARSnova.
+ */
 public class Statistics {
 
 	private int answers;
diff --git a/src/main/java/de/thm/arsnova/entities/User.java b/src/main/java/de/thm/arsnova/entities/User.java
index 710f909d2ad765dd32d7b0ae60f837b70f8615db..f7bf65ad804d8c79f7db05135c169aef2e780a25 100644
--- a/src/main/java/de/thm/arsnova/entities/User.java
+++ b/src/main/java/de/thm/arsnova/entities/User.java
@@ -28,6 +28,9 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
 
 import de.thm.arsnova.services.UserSessionService;
 
+/**
+ * Represents a user.
+ */
 public class User implements Serializable {
 	public static final String GOOGLE = "google";
 	public static final String TWITTER = "twitter";
diff --git a/src/main/java/de/thm/arsnova/entities/VisitedSession.java b/src/main/java/de/thm/arsnova/entities/VisitedSession.java
index e5af42dfabae4b56d96b5443148c7d7087f0b912..47e961357ae37bbb7297ecb3dfd1855b383cc025 100644
--- a/src/main/java/de/thm/arsnova/entities/VisitedSession.java
+++ b/src/main/java/de/thm/arsnova/entities/VisitedSession.java
@@ -17,7 +17,9 @@
  */
 package de.thm.arsnova.entities;
 
-
+/**
+ * A session a user has visited previously.
+ */
 public class VisitedSession {
 	private String _id;
 	private String name;
diff --git a/src/main/java/de/thm/arsnova/entities/package-info.java b/src/main/java/de/thm/arsnova/entities/package-info.java
index 97e2a5dae5dc067b6a2ba8010f1ec3a88b9b7858..ed8a4656b1050c9d4e0df681eb85c80d97d4a64e 100644
--- a/src/main/java/de/thm/arsnova/entities/package-info.java
+++ b/src/main/java/de/thm/arsnova/entities/package-info.java
@@ -1 +1,4 @@
+/**
+ * Classes to translate objects to and from JSON
+ */
 package de.thm.arsnova.entities;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/Answer.java b/src/main/java/de/thm/arsnova/entities/transport/Answer.java
index 7bc7e8b43048892ab8ed256c5b221bd8efa6c661..dcc884721952a184478406e279105901fad17a6e 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/Answer.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/Answer.java
@@ -24,6 +24,9 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.User;
 
+/**
+ * A user's answer to a question.
+ */
 @JsonInclude(JsonInclude.Include.NON_DEFAULT)
 public class Answer {
 
diff --git a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java b/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
index a47f9e7f905df569aedb7134ceabcf645f680bc8..d8b987ad43d9585cde8ae330468745d9711a3ec9 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
@@ -22,6 +22,10 @@ import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * An answer that is about to get saved in the database. Answers are not saved immediately, they are instead stored
+ * in a queue that is cleared at specific intervals.
+ */
 public class AnswerQueueElement {
 
 	private final Session session;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
index 3b223628faeaac1470052eb9c0ccf216517153cf..6ce7606c3936805e48c42fbc2f60b31721382277 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
@@ -24,6 +24,9 @@ import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * This class is used to allow the import and export of a session.
+ */
 public class ImportExportSession {
 
 	private ImportExportSesssion session;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/InterposedQuestion.java b/src/main/java/de/thm/arsnova/entities/transport/InterposedQuestion.java
index 692ddf955380e0bd4868ec528761e4af9e58b7a4..7cf960a08c356ee6d68854fc7974fb30553db37f 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/InterposedQuestion.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/InterposedQuestion.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.entities.transport;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * A question a student is asking. Also known as feedback or audience question.
+ */
 public class InterposedQuestion {
 
 	private String id;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java
index 081bc4fac60c84b2ed858552ed3ce1da2463c839..be5ccdf79f336b361d8e3d2acc66753ba6841bc9 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressOptions.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities.transport;
 
+/**
+ * A session's settings regarding the calculation of the learning progress.
+ */
 public class LearningProgressOptions {
 
 	private String sessionKeyword;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressValues.java b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressValues.java
index 554f793a3ad78311afeb68e259a349f4f78c489d..22dc4ac87b187b530f5a1436a653ab9c6bc0671d 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/LearningProgressValues.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/LearningProgressValues.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.entities.transport;
 
+/**
+ * The calculated learning progress along with meta-data.
+ */
 public class LearningProgressValues {
 
 	private int courseProgress;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/package-info.java b/src/main/java/de/thm/arsnova/entities/transport/package-info.java
index accb5a5a2d5ddff85d97fd393087bcc996dc35b9..a6920b7c81f41a1c752a0ea3e72ab880ec59016c 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/package-info.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/package-info.java
@@ -1 +1,7 @@
+/**
+ * Contains classes similar to regular entities, but with a reduced set of properties.
+ *
+ * Since sometimes only a subset of properties are needed, sending the whole entity is a waste of bandwith. Therefore,
+ * entities optimized for data transport are located here.
+ */
 package de.thm.arsnova.entities.transport;
diff --git a/src/main/java/de/thm/arsnova/events/ChangeLearningProgressEvent.java b/src/main/java/de/thm/arsnova/events/ChangeLearningProgressEvent.java
index 418711c262f03adbf29fa0fa9273b90495fcf6b8..57bc07686a38b0ae1dfc3b8f83b0c007a5cb50a7 100644
--- a/src/main/java/de/thm/arsnova/events/ChangeLearningProgressEvent.java
+++ b/src/main/java/de/thm/arsnova/events/ChangeLearningProgressEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a learning progress related value changes.
+ */
 public class ChangeLearningProgressEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
index 132f2f4504a8f6d07e395a16df78cb71c29b2fc3..f7ab96dd8136573e2ea15b99ed4a7aa2e3599075 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever all answers of all lecture questions of a session are deleted.
+ */
 public class DeleteAllLectureAnswersEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
index 4c823f7683e0346acb36a273205ef7921d8fdb8e..ad7739791366b9b884932196999663d06092b307 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever all answers of all preparation questions of a session are deleted.
+ */
 public class DeleteAllPreparationAnswersEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
index 6ac6683c41951aaf442fe2848620a3a10ab1bc42..28ce03cfa0437b680e4fd4f2342a080d622fce32 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever all answers of all questions of a session are deleted.
+ */
 public class DeleteAllQuestionsAnswersEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
index e0bb0421f469f86ee4bf5c88554c58e9e3485312..03ece7d5394a8a433dc93cb349f696de22baf44c 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
@@ -19,6 +19,10 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever all questions of a session are deleted. Note that this implies that all answers are deleted as well,
+ * even though the specific answer events are not fired.
+ */
 public class DeleteAllQuestionsEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
index 02ed5a9c00fefe3935c064557964adfe6263077e..5480b5c39ee6ce12b42f2b4692a4aaef55371aba 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a single answer is deleted.
+ */
 public class DeleteAnswerEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java b/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java
index 857e59374c9ca1a8bf87ae40229ff38478bbe38e..54e233819aed20bd996fcb2a8c12ee53afdb0beb 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java
@@ -22,6 +22,9 @@ import java.util.Set;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * Fires whenever the feedback of a specific user has been reset.
+ */
 public class DeleteFeedbackForSessionsEvent extends NovaEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteInterposedQuestionEvent.java b/src/main/java/de/thm/arsnova/events/DeleteInterposedQuestionEvent.java
index a0dbfdef447db7d91c55773d8dc9ecbc625e3b00..6daca8979de7bdbbb5495cd3a6a25dbb7bdfd9ac 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteInterposedQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteInterposedQuestionEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.InterposedQuestion;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever an interposed question is deleted.
+ */
 public class DeleteInterposedQuestionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java b/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
index e92f2e6a19a93d96de5af23e8b0d80cfa505fc70..37e4ada10f6714f3d6084a215bfa524eeb471a3a 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a question is deleted.
+ */
 public class DeleteQuestionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java b/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java
index a4eee9df225da7a299adc2783d0aee8a25c4d3e8..2ad03793e27ea5cb4899b6a1b9bd3d7636845882 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java
@@ -19,6 +19,10 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a session is deleted. Note that this implies that all related data such as interposed questions,
+ * lecturer questions, and answers are deleted as well, even though those events are not fired.
+ */
 public class DeleteSessionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java b/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
index 72d1239b8a0a4ac3734b5efcfb346c4dc1160a1d..c251753086c5c8a17a53541766f7ca6b5ce8ae4a 100644
--- a/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a question is disabled, i.e., it is hidden from students.
+ */
 public class LockQuestionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java b/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
index 0b00e9b6dce738b4f5e1dd642151c5262e8ce6ec..0d382bbe1e4029ef608da5b004f0e0245f7519ec 100644
--- a/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
@@ -22,6 +22,9 @@ import java.util.List;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a set of questions are disabled, i.e., they are hidden from students.
+ */
 public class LockQuestionsEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/LockVoteEvent.java b/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
index 8a695a109268a298f65cc30d3e63644c0723deab..11167ff2356be54ce34e1361fbc13b8356d1cc9c 100644
--- a/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
@@ -22,6 +22,9 @@ import java.util.HashMap;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever voting on a question is disabled.
+ */
 public class LockVoteEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/LockVotesEvent.java b/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
index 2f42f00a14058a223583ecb926e17e85f90d24fd..58a47610c4ec64361b8e013ffdf6a2cdfb58fe4f 100644
--- a/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
@@ -22,6 +22,9 @@ import java.util.List;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever voting of multiple questions is disabled.
+ */
 public class LockVotesEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java b/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
index 624258732ead93d8e8f9e4421a03da45dbe1e3e0..760ca29fbe282fd4d2afb9f8ae53337f5fe4c1bc 100644
--- a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
@@ -22,6 +22,9 @@ import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * Fires whenever a new answer is added.
+ */
 public class NewAnswerEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java b/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
index c06f84cac7eb727f92425427794b6d1ce194932a..1aa43cbcb211c896d22f512f4c442b208c935de3 100644
--- a/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever the feedback changes.
+ */
 public class NewFeedbackEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NewInterposedQuestionEvent.java b/src/main/java/de/thm/arsnova/events/NewInterposedQuestionEvent.java
index 2d0fbfceebae7774ae967ee40be4e67e35d1ae60..f5e45a02ea85544a3b5e3dae979f9f87c5abd42e 100644
--- a/src/main/java/de/thm/arsnova/events/NewInterposedQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewInterposedQuestionEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.InterposedQuestion;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a new interposed (aka. feedback or audience) question is added.
+ */
 public class NewInterposedQuestionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java b/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
index 898104edca8d15b5d69f28cbda2ebe266b3de3b2..7996993ac4958313cefd3a2438a33bd5be82005e 100644
--- a/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a new question is added.
+ */
 public class NewQuestionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NewSessionEvent.java b/src/main/java/de/thm/arsnova/events/NewSessionEvent.java
index 1565443bf254f06a1676566ccf5f1b48871707f0..510bdee8010adfabe82344aa0ac9bf56fc61a58a 100644
--- a/src/main/java/de/thm/arsnova/events/NewSessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewSessionEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a new session is created.
+ */
 public class NewSessionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NovaEvent.java b/src/main/java/de/thm/arsnova/events/NovaEvent.java
index 47117d8d645c3b7fc5c2722b50c093de1391f177..1ceb0fd89fd4fba0031eebda90e1d256f05bd2f8 100644
--- a/src/main/java/de/thm/arsnova/events/NovaEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NovaEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import org.springframework.context.ApplicationEvent;
 
+/**
+ * Base class of an ARSnova event.
+ */
 public abstract class NovaEvent extends ApplicationEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java b/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java
index eba55e64ed22a2391ae3b5d13ec23d8a0460e97a..216c38f8e6b9b803dc18a76a6f13b24939f14c43 100644
--- a/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java
+++ b/src/main/java/de/thm/arsnova/events/NovaEventVisitor.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.events;
 
+/**
+ * Listeners wanting to receive ARSnova's internal events should implement this interface.
+ */
 public interface NovaEventVisitor {
 
 	void visit(NewInterposedQuestionEvent newInterposedQuestionEvent);
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
index adca0cdfde55a92729282445216ceadd0a52f828..d40a6e17a9098ecdc571bfb54f2ac0d73738f33f 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a peer instruction round is canceled.
+ */
 public class PiRoundCancelEvent extends PiRoundEndEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
index db39ab1017a7c83fa84530b4a4c15c467aed5ba5..df301caa22616bcedffad630887e0abb3a972e1e 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
@@ -22,6 +22,10 @@ import java.util.HashMap;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a delayed peer instruction round is initiated. The delayed part denotes that this round might not
+ * have been started yet.
+ */
 public class PiRoundDelayedStartEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
index 2a26f2716b048be7e270bbda0aa4b07d67f220f3..16344c6ac717f1c5dd096beee28538a7da754cfa 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
@@ -22,6 +22,9 @@ import java.util.HashMap;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a peer instruction round has ended.
+ */
 public class PiRoundEndEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
index 0215f9b2e73e8280e0892b971f1e1bc1b7c4d59e..626fd0e1f40b75d33db709e259abb86e5c062285 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
@@ -22,6 +22,9 @@ import java.util.HashMap;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a peer instruction round is reset.
+ */
 public class PiRoundResetEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/SessionEvent.java b/src/main/java/de/thm/arsnova/events/SessionEvent.java
index 2c34956c0365d3fcdf37d3fd9a35902eb242558e..9536db104f1af83b8310640adb00c4455b396a6d 100644
--- a/src/main/java/de/thm/arsnova/events/SessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/SessionEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Base class for all {@link NovaEvent}s that are related to a session.
+ */
 public abstract class SessionEvent extends NovaEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java b/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java
index 19034dc9ae13ab7f3ee000cc90d9c99be876a26b..2a2baf65e1da239a3021c68980d095c5a4f158ec 100644
--- a/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever the status of a session changes, i.e., it is enabled or disabled.
+ */
 public class StatusSessionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java b/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
index acd1b6d0cb5787dd17b9628bd1a21e4d0a79dacb..272f26f6fe7c4b6a22b2d5867db5774a26cb134d 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.events;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a question is enabled, i.e., it becomes visible to students.
+ */
 public class UnlockQuestionEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java b/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
index 5f1e4617e6a2207a8af634ef7daf715792519a99..d8b6a5363b8bb5a0dfe7a295129b6125e1b183ac 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
@@ -22,6 +22,9 @@ import java.util.List;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever a set of questions are enabled, i.e., they become visible to students.
+ */
 public class UnlockQuestionsEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java b/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
index eb8441179fe2124c5a4a351a8df03e24aa457a42..6eb0af7df5eb24d9ebe3b430c8c68bb988e7342d 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
@@ -22,6 +22,9 @@ import java.util.HashMap;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever voting on a question is enabled.
+ */
 public class UnlockVoteEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java b/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
index 90ce5127baba0ccbf2accb92d730a59688df513a..231fef7b8c29d2d65752cf6574ba408d1b8c35d3 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
@@ -22,6 +22,9 @@ import java.util.List;
 import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 
+/**
+ * Fires whenever voting of multiple questions is enabled.
+ */
 public class UnlockVotesEvent extends SessionEvent {
 
 	private static final long serialVersionUID = 1L;
diff --git a/src/main/java/de/thm/arsnova/events/package-info.java b/src/main/java/de/thm/arsnova/events/package-info.java
index acecfa4e5ef8424c1dd8e1c30ee9f49d06cba7e1..838fc4cd66928cc72c857d8cef1f65a2b1fb1cd7 100644
--- a/src/main/java/de/thm/arsnova/events/package-info.java
+++ b/src/main/java/de/thm/arsnova/events/package-info.java
@@ -1,5 +1,4 @@
 /**
- * @author Christoph Thelen
- *
+ * ARSnova's internal event system
  */
 package de.thm.arsnova.events;
diff --git a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
index f2289bf5157b2f9d60e0467023113a4f2a5fa9c5..c9b728742518288d38a567ed398dab1677c6de6a 100644
--- a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Bad Request means status code 400.
+ */
 public class BadRequestException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java b/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
index 8f1f74d51b90f97c572c9a72d7043a5ea50c4638..05ed5bf3bb633258cdecade7a5ec1621bfe76752 100644
--- a/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Forbidden means status code 403.
+ */
 public class ForbiddenException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/NoContentException.java b/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
index adb0e1140eec966d08b85592ca88fc962cb0b84a..f0de3c46c0f629be82b65e8b425d44c410c6e1c6 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * No Content means status code 204.
+ */
 public class NoContentException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java b/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
index caca267d47096bb3d1e3777ff14959f400e5e2e4..0937ebde41a488665a864a5aac53cbc295fd3af5 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Not Found means status code 404.
+ */
 public class NotFoundException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java b/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
index 3e05521971c8e5db16a1d3b1e71d2af08c7ad59d..ed5e30f6516458b30faa96adc3010389e6baf57e 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Not Implemented means status code 501.
+ */
 public class NotImplementedException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java b/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
index 756d8300cf6c514f3142cf7d9a977498fa818420..6562a149b6ddf8e5dc7521ae70ec54165b1be75a 100644
--- a/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Payload Too Large means status code 413.
+ */
 public class PayloadTooLargeException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
index 827f0c5bf6899a518217abae5ba93effebe78699..423b3a4f88440f23c6413f02520d17a11b4f5d5b 100644
--- a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Precondition Failed means status code 412.
+ */
 public class PreconditionFailedException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java b/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
index 4b3e9498408dcf6476029d127e23184e6e33584e..7a4c3dc8a2ef623705b780e29c7d03c167f8fdd9 100644
--- a/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
+++ b/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
@@ -1,5 +1,8 @@
 package de.thm.arsnova.exceptions;
 
+/**
+ * Unauthorized means status code 401.
+ */
 public class UnauthorizedException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 }
diff --git a/src/main/java/de/thm/arsnova/exceptions/package-info.java b/src/main/java/de/thm/arsnova/exceptions/package-info.java
index 8eb89c8019f1eb2130d93eca2c90b6215046937a..ea831c868e3cc413cf3d9f4dba472116c3ed569d 100644
--- a/src/main/java/de/thm/arsnova/exceptions/package-info.java
+++ b/src/main/java/de/thm/arsnova/exceptions/package-info.java
@@ -1 +1,4 @@
+/**
+ * Contains exceptions used to return HTTP status codes
+ */
 package de.thm.arsnova.exceptions;
diff --git a/src/main/java/de/thm/arsnova/package-info.java b/src/main/java/de/thm/arsnova/package-info.java
index b789ffca356d7378501dd2f890115fedd2e1fdc6..b0aeba268cb560b8c09bcc127d146b1ac6d3bf80 100644
--- a/src/main/java/de/thm/arsnova/package-info.java
+++ b/src/main/java/de/thm/arsnova/package-info.java
@@ -1 +1,4 @@
+/**
+ * Miscellaneous classes and interfaces that do not fit in any of the given sub-packages
+ */
 package de.thm.arsnova;
diff --git a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
index 167d1dd06e279b86f73e058a3bb712776a8cf187..488f890cc838ed4e653d130d39a1fb8a8acc86c5 100644
--- a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
+++ b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
@@ -36,6 +36,9 @@ import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
+/**
+ * Provides access control methods that can be used in annotations.
+ */
 public class ApplicationPermissionEvaluator implements PermissionEvaluator {
 
 	@Autowired
diff --git a/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java b/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java
index 0b55e02476ed35c5e3805675059fe604cc89b492..9eb476e8d794ee1d39e0ba17a02a71163e1220c0 100644
--- a/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java
+++ b/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java
@@ -34,6 +34,9 @@ import org.springframework.stereotype.Service;
 import de.thm.arsnova.dao.IDatabaseDao;
 import de.thm.arsnova.entities.DbUser;
 
+/**
+ * Class to load a user based on the username.
+ */
 @Service
 public class DbUserDetailsService implements UserDetailsService {
 	@Autowired
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/services/FeedbackService.java
index 9fadfbd0712f5e0762ee7f7f8d33d56649a365b1..03112362a8f0eaaab6536dfbfd9c2290417c4ce5 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackService.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackService.java
@@ -42,6 +42,9 @@ import de.thm.arsnova.events.NewFeedbackEvent;
 import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.NotFoundException;
 
+/**
+ * Performs all feedback related operations.
+ */
 @Service
 public class FeedbackService implements IFeedbackService, ApplicationEventPublisherAware {
 
diff --git a/src/main/java/de/thm/arsnova/services/IFeedbackService.java b/src/main/java/de/thm/arsnova/services/IFeedbackService.java
index 8fd8b679ab298a218a8a3933f090168d0af6f915..407f323fddaf8966b5182c335c01150cfbb18913 100644
--- a/src/main/java/de/thm/arsnova/services/IFeedbackService.java
+++ b/src/main/java/de/thm/arsnova/services/IFeedbackService.java
@@ -20,6 +20,9 @@ package de.thm.arsnova.services;
 import de.thm.arsnova.entities.Feedback;
 import de.thm.arsnova.entities.User;
 
+/**
+ * The functionality the feedback service should provide.
+ */
 public interface IFeedbackService {
 	void cleanFeedbackVotes();
 
diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java
index 521fbd02fdd303bdc4ee9ec591343a9fe5c7d78d..0a2f1fce3b1c1ff30cd71d6a2a44ea8b5dcf5b4e 100644
--- a/src/main/java/de/thm/arsnova/services/IQuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java
@@ -27,6 +27,9 @@ import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.SortOrder;
 import de.thm.arsnova.entities.User;
 
+/**
+ * The functionality the question service should provide.
+ */
 public interface IQuestionService {
 	Question saveQuestion(Question question);
 
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index a46d51a2ae49d082f823fac7b7d961531f20677c..ab4a395af089c95b1b10df0dec667112b4601b34 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -28,6 +28,9 @@ import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import de.thm.arsnova.entities.transport.LearningProgressValues;
 
+/**
+ * The functionality the session service should provide.
+ */
 public interface ISessionService {
 	Session getSession(String keyword);
 
diff --git a/src/main/java/de/thm/arsnova/services/IStatisticsService.java b/src/main/java/de/thm/arsnova/services/IStatisticsService.java
index a2cbb17534ef4add1e62b415715576f9b348da5b..ca1b2df94b1fa4275677581f4f76d7b80f58a108 100644
--- a/src/main/java/de/thm/arsnova/services/IStatisticsService.java
+++ b/src/main/java/de/thm/arsnova/services/IStatisticsService.java
@@ -19,6 +19,9 @@ package de.thm.arsnova.services;
 
 import de.thm.arsnova.entities.Statistics;
 
+/**
+ * The functionality the statistics service should provide.
+ */
 public interface IStatisticsService {
 	Statistics getStatistics();
 }
diff --git a/src/main/java/de/thm/arsnova/services/IUserService.java b/src/main/java/de/thm/arsnova/services/IUserService.java
index 6428fb03d00983d5fbe91fd3deff77590bf8ef37..4049a48ac933280cabed6102a340fb6f460f7036 100644
--- a/src/main/java/de/thm/arsnova/services/IUserService.java
+++ b/src/main/java/de/thm/arsnova/services/IUserService.java
@@ -24,6 +24,9 @@ import java.util.UUID;
 import de.thm.arsnova.entities.DbUser;
 import de.thm.arsnova.entities.User;
 
+/**
+ * The functionality the user service should provide.
+ */
 public interface IUserService {
 	User getCurrentUser();
 
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index 103b9374bd725f67e440ce5b6790e140419fd55a..4504565269c2e3d79140d08a8199aedd7305ab65 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -74,6 +74,9 @@ import de.thm.arsnova.exceptions.ForbiddenException;
 import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
+/**
+ * Performs all question, interposed question, and answer related operations.
+ */
 @Service
 public class QuestionService implements IQuestionService, ApplicationEventPublisherAware {
 
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 01abb9275e98b637988b3ec5f55dd702b716c776..f9a49bf2fb55819968ed35692de6b853f46d6929 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -55,6 +55,9 @@ import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.exceptions.PayloadTooLargeException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
+/**
+ * Performs all session related operations.
+ */
 @Service
 public class SessionService implements ISessionService, ApplicationEventPublisherAware {
 
diff --git a/src/main/java/de/thm/arsnova/services/StatisticsService.java b/src/main/java/de/thm/arsnova/services/StatisticsService.java
index 979c03126217bc179a0c2c0985d0a90e2dbcb993..ace061a60e86e771eefe6b01e623b4fa78f963bf 100644
--- a/src/main/java/de/thm/arsnova/services/StatisticsService.java
+++ b/src/main/java/de/thm/arsnova/services/StatisticsService.java
@@ -23,6 +23,9 @@ import org.springframework.stereotype.Service;
 import de.thm.arsnova.dao.IDatabaseDao;
 import de.thm.arsnova.entities.Statistics;
 
+/**
+ * Performs all statistics related operations.
+ */
 @Service
 public class StatisticsService implements IStatisticsService {
 
diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java
index ced1cd28f6984f6f6a9fb1a45608816fd938ea98..bf0777c9fc24c304279a8b35f77a05e479ebb2a9 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/services/UserService.java
@@ -71,6 +71,9 @@ import de.thm.arsnova.exceptions.BadRequestException;
 import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 
+/**
+ * Performs all user related operations.
+ */
 @Service
 public class UserService implements IUserService {
 
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionService.java b/src/main/java/de/thm/arsnova/services/UserSessionService.java
index 56b7f7fb39355fb7a2b0e61ea5dccc63791b9f38..03df6b27079c635944a3c0ef02c05edb63b59559 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionService.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionService.java
@@ -22,6 +22,9 @@ import java.util.UUID;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * The functionality the user-session service should provide.
+ */
 public interface UserSessionService {
 
 	enum Role {
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
index 9d18f826f2f1411d72fe4432b21d92372838bb9b..98f817773b670a185dac4875014095e178ce9dd5 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
@@ -27,6 +27,9 @@ import org.springframework.stereotype.Component;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
+/**
+ * This service is used to assign and check for a specific role.
+ */
 @Component
 @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
 public class UserSessionServiceImpl implements UserSessionService, Serializable {
diff --git a/src/main/java/de/thm/arsnova/services/package-info.java b/src/main/java/de/thm/arsnova/services/package-info.java
index ff6c1eba938b0bfbed079b7c9d7ceeb621115f6d..d87d15a849a564276d79631c8f75dc5a420e6d3d 100644
--- a/src/main/java/de/thm/arsnova/services/package-info.java
+++ b/src/main/java/de/thm/arsnova/services/package-info.java
@@ -1 +1,4 @@
+/**
+ * Classes and interfaces for the service layer
+ */
 package de.thm.arsnova.services;
diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index bbed7ccefd8ceee56ebf39db836d3154a68920a2..b764d11f0847e49def5a67e29dd0266700108cb1 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -90,6 +90,9 @@ import de.thm.arsnova.socket.message.Feedback;
 import de.thm.arsnova.socket.message.Question;
 import de.thm.arsnova.socket.message.Session;
 
+/**
+ * Web socket implementation based on Socket.io.
+ */
 @Component
 public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
diff --git a/src/main/java/de/thm/arsnova/socket/message/Feedback.java b/src/main/java/de/thm/arsnova/socket/message/Feedback.java
index 58ea04f774e65c2bcbd9b28cc07358c898e69a0d..b7ca3899b553ba5a01b4caefa0f08fa9e9fce71f 100644
--- a/src/main/java/de/thm/arsnova/socket/message/Feedback.java
+++ b/src/main/java/de/thm/arsnova/socket/message/Feedback.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.socket.message;
 
+/**
+ * The feedback values.
+ */
 public class Feedback {
 
 	private int value;
diff --git a/src/main/java/de/thm/arsnova/socket/message/Question.java b/src/main/java/de/thm/arsnova/socket/message/Question.java
index e47c72d12395c35c084c057260a0b40bc0fef619..0481221866c3dc715933d7dc0af419c69ac77578 100644
--- a/src/main/java/de/thm/arsnova/socket/message/Question.java
+++ b/src/main/java/de/thm/arsnova/socket/message/Question.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.socket.message;
 
+/**
+ * Represents a question.
+ */
 public class Question {
 
 	private final String _id;
diff --git a/src/main/java/de/thm/arsnova/socket/message/Session.java b/src/main/java/de/thm/arsnova/socket/message/Session.java
index 83688e24d4fd98ae7ade17024ca9709b1808b23e..15f49d7fef918c2d044421a29fd88c923074be16 100644
--- a/src/main/java/de/thm/arsnova/socket/message/Session.java
+++ b/src/main/java/de/thm/arsnova/socket/message/Session.java
@@ -17,6 +17,9 @@
  */
 package de.thm.arsnova.socket.message;
 
+/**
+ * Represents a session.
+ */
 public class Session {
 	private String keyword;
 
diff --git a/src/main/java/de/thm/arsnova/socket/message/package-info.java b/src/main/java/de/thm/arsnova/socket/message/package-info.java
index 8267a40404236cc5ca088172168a378698fbe453..98beea04a699cb10d38d1a3d1cac7edf0cef847c 100644
--- a/src/main/java/de/thm/arsnova/socket/message/package-info.java
+++ b/src/main/java/de/thm/arsnova/socket/message/package-info.java
@@ -1 +1,4 @@
+/**
+ * Contains classes that are used as web socket messages
+ */
 package de.thm.arsnova.socket.message;
diff --git a/src/main/java/de/thm/arsnova/socket/package-info.java b/src/main/java/de/thm/arsnova/socket/package-info.java
index 93c3360d8652f3adb4e2cae9a188620e6f14bc7f..d4f65e727417e57da0546892bab342168a7d09d4 100644
--- a/src/main/java/de/thm/arsnova/socket/package-info.java
+++ b/src/main/java/de/thm/arsnova/socket/package-info.java
@@ -1 +1,4 @@
+/**
+ * Classes and interfaces for communication over web sockets
+ */
 package de.thm.arsnova.socket;
diff --git a/src/main/java/de/thm/arsnova/web/CacheControl.java b/src/main/java/de/thm/arsnova/web/CacheControl.java
index a391c980e85966e377a630f6cc845e3e09ba3bcd..c11893b576b678c145637519e6a7ecaaa72e9ba7 100644
--- a/src/main/java/de/thm/arsnova/web/CacheControl.java
+++ b/src/main/java/de/thm/arsnova/web/CacheControl.java
@@ -22,6 +22,9 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Allows specifying HTTP cache headers.
+ */
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface CacheControl {
diff --git a/src/main/java/de/thm/arsnova/web/CacheControlInterceptorHandler.java b/src/main/java/de/thm/arsnova/web/CacheControlInterceptorHandler.java
index 7546eb16db517574711d0ded215a9f009b89f95f..7c721d6a720cdd641e46c15798a71627bc2defed 100644
--- a/src/main/java/de/thm/arsnova/web/CacheControlInterceptorHandler.java
+++ b/src/main/java/de/thm/arsnova/web/CacheControlInterceptorHandler.java
@@ -24,6 +24,9 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
+/**
+ * Adds caching headers to a HTTP request based on {@link CacheControl} annotation.
+ */
 @Component
 public class CacheControlInterceptorHandler extends HandlerInterceptorAdapter {
 
diff --git a/src/main/java/de/thm/arsnova/web/CorsFilter.java b/src/main/java/de/thm/arsnova/web/CorsFilter.java
index 49c65a3461040767add009f80a1b3855ac4cf76f..a250689f22770073b0cf9fb71a6a14126cf386f5 100644
--- a/src/main/java/de/thm/arsnova/web/CorsFilter.java
+++ b/src/main/java/de/thm/arsnova/web/CorsFilter.java
@@ -27,6 +27,9 @@ import javax.servlet.http.HttpServletResponse;
 import org.springframework.stereotype.Component;
 import org.springframework.web.filter.OncePerRequestFilter;
 
+/**
+ * Sets response headers to allow CORS requests.
+ */
 @Component
 public class CorsFilter extends OncePerRequestFilter {
 
diff --git a/src/main/java/de/thm/arsnova/web/DeprecatedApi.java b/src/main/java/de/thm/arsnova/web/DeprecatedApi.java
index 763442d33e0d6a28ba480bcbeb6001081709d697..63db68586f52a2af797e7bd72a4e626062dd3cc5 100644
--- a/src/main/java/de/thm/arsnova/web/DeprecatedApi.java
+++ b/src/main/java/de/thm/arsnova/web/DeprecatedApi.java
@@ -22,6 +22,9 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
+/**
+ * Annotation to denote the deprecation of a controller method.
+ */
 @Target(ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface DeprecatedApi {
diff --git a/src/main/java/de/thm/arsnova/web/DeprecatedApiInterceptorHandler.java b/src/main/java/de/thm/arsnova/web/DeprecatedApiInterceptorHandler.java
index edbd54ccf1bdd9783974e11376ee1a1d1ade7e2e..d7b7d81078269eebd45b80a52b6673f8aa95a2c7 100644
--- a/src/main/java/de/thm/arsnova/web/DeprecatedApiInterceptorHandler.java
+++ b/src/main/java/de/thm/arsnova/web/DeprecatedApiInterceptorHandler.java
@@ -24,6 +24,10 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
+/**
+ * Adds a "deprecated" header to any HTTP response that is served by a controller method with the {@link DeprecatedApi}
+ * annotation.
+ */
 @Component
 public class DeprecatedApiInterceptorHandler extends HandlerInterceptorAdapter {
 
diff --git a/src/main/java/de/thm/arsnova/web/package-info.java b/src/main/java/de/thm/arsnova/web/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..c22db2a2257baadce499d0129eb9529b9a5d77af
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/web/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Contains HTTP related classes and interfaces
+ */
+package de.thm.arsnova.web;