diff --git a/pom.xml b/pom.xml
index 75bc70cf6e1cc9e72bbae7261cac71306b798156..c101484e36729383a59a19bb03c4757d886f0024 100644
--- a/pom.xml
+++ b/pom.xml
@@ -476,7 +476,7 @@
 							<springmvc>true</springmvc>
 							<locations>
 								<location>de.thm.arsnova.controller.v2</location>
-								<location>de.thm.arsnova.entities.v2</location>
+								<location>de.thm.arsnova.model.v2</location>
 							</locations>
 							<schemes>
 								<scheme>http</scheme>
diff --git a/src/main/java/de/thm/arsnova/aop/package-info.java b/src/main/java/de/thm/arsnova/aop/package-info.java
deleted file mode 100644
index b39e67531f983fae4917abe2d58a45aba9db2494..0000000000000000000000000000000000000000
--- a/src/main/java/de/thm/arsnova/aop/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Classes and interfaces to support aspect-oriented programming
- */
-package de.thm.arsnova.aop;
diff --git a/src/main/java/de/thm/arsnova/cache/CacheBusterImpl.java b/src/main/java/de/thm/arsnova/cache/CacheBusterImpl.java
index 0d02684f6b03ef22f757cda9035d244f1826b252..719a3ed968597f83517aadce83e2b397e5c49886 100644
--- a/src/main/java/de/thm/arsnova/cache/CacheBusterImpl.java
+++ b/src/main/java/de/thm/arsnova/cache/CacheBusterImpl.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.cache;
 
-import de.thm.arsnova.events.*;
+import de.thm.arsnova.event.*;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Component;
 
diff --git a/src/main/java/de/thm/arsnova/cache/CacheBusterListener.java b/src/main/java/de/thm/arsnova/cache/CacheBusterListener.java
index eb481df4c4c0c8f7a2c826d81b152db887721b38..07baa649958ad208a6b5b4157a24810638113e5a 100644
--- a/src/main/java/de/thm/arsnova/cache/CacheBusterListener.java
+++ b/src/main/java/de/thm/arsnova/cache/CacheBusterListener.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.cache;
 
-import de.thm.arsnova.events.ArsnovaEvent;
-import de.thm.arsnova.events.ArsnovaEventVisitor;
+import de.thm.arsnova.event.ArsnovaEvent;
+import de.thm.arsnova.event.ArsnovaEventVisitor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/de/thm/arsnova/config/AppConfig.java b/src/main/java/de/thm/arsnova/config/AppConfig.java
index 58d218d6a0f7e63a96b91c5bcf988c1e60c86937..b7dcb3b72b6c2739e3ec429443ef822714cfd402 100644
--- a/src/main/java/de/thm/arsnova/config/AppConfig.java
+++ b/src/main/java/de/thm/arsnova/config/AppConfig.java
@@ -20,13 +20,13 @@ package de.thm.arsnova.config;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
-import de.thm.arsnova.entities.migration.FromV2Migrator;
-import de.thm.arsnova.entities.migration.ToV2Migrator;
+import de.thm.arsnova.model.migration.FromV2Migrator;
+import de.thm.arsnova.model.migration.ToV2Migrator;
 import de.thm.arsnova.util.ImageUtils;
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.client.ConnectorClientImpl;
-import de.thm.arsnova.entities.serialization.CouchDbDocumentModule;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.CouchDbDocumentModule;
+import de.thm.arsnova.model.serialization.View;
 import de.thm.arsnova.web.PathApiVersionContentNegotiationStrategy;
 import de.thm.arsnova.websocket.ArsnovaSocketioServer;
 import de.thm.arsnova.websocket.ArsnovaSocketioServerImpl;
@@ -81,13 +81,11 @@ import java.util.List;
  * AspectJ's weaving).
  */
 @ComponentScan({
-		"de.thm.arsnova.aop",
 		"de.thm.arsnova.cache",
 		"de.thm.arsnova.controller",
-		"de.thm.arsnova.dao",
-		"de.thm.arsnova.events",
+		"de.thm.arsnova.event",
 		"de.thm.arsnova.security",
-		"de.thm.arsnova.services",
+		"de.thm.arsnova.service",
 		"de.thm.arsnova.web"})
 @Configuration
 @EnableAsync
diff --git a/src/main/java/de/thm/arsnova/config/PersistanceConfig.java b/src/main/java/de/thm/arsnova/config/PersistenceConfig.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/config/PersistanceConfig.java
rename to src/main/java/de/thm/arsnova/config/PersistenceConfig.java
index 6c81d4956c5c48ffd2986cfdeff2d187e3078668..713e5fb6640e0bf91a14612036b32ebee963b9f9 100644
--- a/src/main/java/de/thm/arsnova/config/PersistanceConfig.java
+++ b/src/main/java/de/thm/arsnova/config/PersistenceConfig.java
@@ -1,9 +1,9 @@
 package de.thm.arsnova.config;
 
-import de.thm.arsnova.entities.serialization.CouchDbObjectMapperFactory;
-import de.thm.arsnova.persistance.*;
-import de.thm.arsnova.persistance.couchdb.*;
-import de.thm.arsnova.persistance.couchdb.support.MangoCouchDbConnector;
+import de.thm.arsnova.model.serialization.CouchDbObjectMapperFactory;
+import de.thm.arsnova.persistence.*;
+import de.thm.arsnova.persistence.couchdb.*;
+import de.thm.arsnova.persistence.couchdb.support.MangoCouchDbConnector;
 import org.ektorp.impl.StdCouchDbInstance;
 import org.ektorp.spring.HttpClientFactoryBean;
 import org.springframework.beans.factory.annotation.Value;
@@ -14,11 +14,11 @@ import org.springframework.context.annotation.Primary;
 import org.springframework.context.annotation.Profile;
 
 @ComponentScan({
-		"de.thm.arsnova.persistance.couchdb"
+		"de.thm.arsnova.persistence.couchdb"
 })
 @Configuration
 @Profile("!test")
-public class PersistanceConfig {
+public class PersistenceConfig {
 	private static final int MIGRATION_SOCKET_TIMEOUT = 30000;
 
 	@Value("${couchdb.name}") private String couchDbName;
diff --git a/src/main/java/de/thm/arsnova/controller/AbstractEntityController.java b/src/main/java/de/thm/arsnova/controller/AbstractEntityController.java
index 5e27588acdbc74476bb69c5dae805d5c5e62a5b5..0b6c96c8ffe8c3bd5c033aabbff12009b0f2dc4c 100644
--- a/src/main/java/de/thm/arsnova/controller/AbstractEntityController.java
+++ b/src/main/java/de/thm/arsnova/controller/AbstractEntityController.java
@@ -17,11 +17,11 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.Entity;
-import de.thm.arsnova.entities.FindQuery;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.services.EntityService;
-import de.thm.arsnova.services.FindQueryService;
+import de.thm.arsnova.model.Entity;
+import de.thm.arsnova.model.FindQuery;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.service.EntityService;
+import de.thm.arsnova.service.FindQueryService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/thm/arsnova/controller/AnswerController.java b/src/main/java/de/thm/arsnova/controller/AnswerController.java
index d0fd8606c49589d6574735ae66f97f6f10816afb..2f0a8b2f0c1d2fecd77206434d9d524ae9dacc64 100644
--- a/src/main/java/de/thm/arsnova/controller/AnswerController.java
+++ b/src/main/java/de/thm/arsnova/controller/AnswerController.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.services.AnswerService;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.service.AnswerService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
diff --git a/src/main/java/de/thm/arsnova/controller/AuthenticationController.java b/src/main/java/de/thm/arsnova/controller/AuthenticationController.java
index f7bb957e4b4ce8cf12411b3beb7db1f5fac60da3..91b3a35f5cee978aa8b1ab0f80f2aaf2a8e85051 100644
--- a/src/main/java/de/thm/arsnova/controller/AuthenticationController.java
+++ b/src/main/java/de/thm/arsnova/controller/AuthenticationController.java
@@ -1,10 +1,9 @@
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.ClientAuthentication;
-import de.thm.arsnova.entities.LoginCredentials;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.services.UserService;
-import org.pac4j.core.client.Client;
+import de.thm.arsnova.model.ClientAuthentication;
+import de.thm.arsnova.model.LoginCredentials;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.service.UserService;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
diff --git a/src/main/java/de/thm/arsnova/controller/CommentController.java b/src/main/java/de/thm/arsnova/controller/CommentController.java
index ea66759d77bdd2286965d43015b8324ee27ef5a6..5e1ada7ff54a890bc17650c7307dcd451fcab91d 100644
--- a/src/main/java/de/thm/arsnova/controller/CommentController.java
+++ b/src/main/java/de/thm/arsnova/controller/CommentController.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.services.CommentService;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.service.CommentService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
diff --git a/src/main/java/de/thm/arsnova/controller/ContentController.java b/src/main/java/de/thm/arsnova/controller/ContentController.java
index 3856ed20a724b20be0ca45177b6578ee5c39dd19..de17e6d37009184dcaf8b142ca4a254afcde593c 100644
--- a/src/main/java/de/thm/arsnova/controller/ContentController.java
+++ b/src/main/java/de/thm/arsnova/controller/ContentController.java
@@ -17,10 +17,10 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.services.AnswerService;
-import de.thm.arsnova.services.ContentService;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.service.AnswerService;
+import de.thm.arsnova.service.ContentService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java b/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java
index d6223f7a7b9b88a345a72c80adbd896343a9eea7..2016f8defbb7abb9c8ed6eb219905823d625351e 100644
--- a/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java
+++ b/src/main/java/de/thm/arsnova/controller/ControllerExceptionHandler.java
@@ -17,14 +17,14 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.exceptions.ForbiddenException;
-import de.thm.arsnova.exceptions.NoContentException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.NotImplementedException;
-import de.thm.arsnova.exceptions.PayloadTooLargeException;
-import de.thm.arsnova.exceptions.PreconditionFailedException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
+import de.thm.arsnova.web.exceptions.BadRequestException;
+import de.thm.arsnova.web.exceptions.ForbiddenException;
+import de.thm.arsnova.web.exceptions.NoContentException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.NotImplementedException;
+import de.thm.arsnova.web.exceptions.PayloadTooLargeException;
+import de.thm.arsnova.web.exceptions.PreconditionFailedException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
 import org.ektorp.DocumentNotFoundException;
 import org.slf4j.event.Level;
 import org.springframework.http.HttpStatus;
diff --git a/src/main/java/de/thm/arsnova/controller/MotdController.java b/src/main/java/de/thm/arsnova/controller/MotdController.java
index 7193fc3b038b9f6f7cb43f54080515d049d823c3..6b842ee8157f8c1384dd9013be02034548ea6bbc 100644
--- a/src/main/java/de/thm/arsnova/controller/MotdController.java
+++ b/src/main/java/de/thm/arsnova/controller/MotdController.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.Motd;
-import de.thm.arsnova.services.MotdService;
+import de.thm.arsnova.model.Motd;
+import de.thm.arsnova.service.MotdService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
diff --git a/src/main/java/de/thm/arsnova/controller/RoomController.java b/src/main/java/de/thm/arsnova/controller/RoomController.java
index dc1b2fbdf9064b5ac8a468ea396b5e3f8260407e..db38d8a3d3aabc7fa294d2055a40188c9b078319 100644
--- a/src/main/java/de/thm/arsnova/controller/RoomController.java
+++ b/src/main/java/de/thm/arsnova/controller/RoomController.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.services.RoomService;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.service.RoomService;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
diff --git a/src/main/java/de/thm/arsnova/controller/UserController.java b/src/main/java/de/thm/arsnova/controller/UserController.java
index 40a661362641397a1a89809ce66d78139a72b3e7..e6549fbfad400713e66510abca6bc8fae14a049a 100644
--- a/src/main/java/de/thm/arsnova/controller/UserController.java
+++ b/src/main/java/de/thm/arsnova/controller/UserController.java
@@ -1,13 +1,13 @@
 package de.thm.arsnova.controller;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.LoginCredentials;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.serialization.View;
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.exceptions.ForbiddenException;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.LoginCredentials;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.serialization.View;
+import de.thm.arsnova.web.exceptions.BadRequestException;
+import de.thm.arsnova.web.exceptions.ForbiddenException;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.UserService;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
diff --git a/src/main/java/de/thm/arsnova/controller/WelcomeController.java b/src/main/java/de/thm/arsnova/controller/WelcomeController.java
index 40070b7c7b19800bc0700b03d49d8e57393cdef6..29fea9bae5bdad4e0bcaab1f6ee9e13e739702e9 100644
--- a/src/main/java/de/thm/arsnova/controller/WelcomeController.java
+++ b/src/main/java/de/thm/arsnova/controller/WelcomeController.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.controller;
 
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.exceptions.NoContentException;
+import de.thm.arsnova.web.exceptions.BadRequestException;
+import de.thm.arsnova.web.exceptions.NoContentException;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/AuthenticationController.java b/src/main/java/de/thm/arsnova/controller/v2/AuthenticationController.java
index 276e5df78474005858dac072d4cf445049adb665..a7f293d4a6fd2b8727248173ba54e17f84bd3f58 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/AuthenticationController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/AuthenticationController.java
@@ -19,12 +19,12 @@ package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.config.SecurityConfig;
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.ServiceDescription;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.exceptions.UnauthorizedException;
+import de.thm.arsnova.model.ServiceDescription;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
 import de.thm.arsnova.security.User;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.service.UserService;
 import org.pac4j.core.context.J2EContext;
 import org.pac4j.core.exception.HttpAction;
 import org.pac4j.oauth.client.FacebookClient;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/CommentController.java b/src/main/java/de/thm/arsnova/controller/v2/CommentController.java
index 0f9f6e12fa0cf9c6e981c17de596d27e3e242412..dab81e01c66ac7c6fe96c0cd3319224892597779 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/CommentController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/CommentController.java
@@ -18,15 +18,14 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.PaginationController;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.FromV2Migrator;
-import de.thm.arsnova.entities.migration.ToV2Migrator;
-import de.thm.arsnova.entities.migration.v2.Comment;
-import de.thm.arsnova.entities.migration.v2.CommentReadingCount;
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.services.CommentService;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.FromV2Migrator;
+import de.thm.arsnova.model.migration.ToV2Migrator;
+import de.thm.arsnova.model.migration.v2.Comment;
+import de.thm.arsnova.model.migration.v2.CommentReadingCount;
+import de.thm.arsnova.service.CommentService;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.UserService;
 import de.thm.arsnova.web.DeprecatedApi;
 import de.thm.arsnova.web.Pagination;
 import io.swagger.annotations.Api;
@@ -117,7 +116,7 @@ public class CommentController extends PaginationController {
 			@ApiParam(value = "Room-Key from current room", required = true) @RequestParam("sessionkey") final String roomShortId,
 			@ApiParam(value = "the body from the new comment", required = true) @RequestBody final Comment comment
 			) {
-		de.thm.arsnova.entities.Comment commentV3 = fromV2Migrator.migrate(comment);
+		de.thm.arsnova.model.Comment commentV3 = fromV2Migrator.migrate(comment);
 		Room roomV3 = roomService.getByShortId(roomShortId);
 		commentV3.setRoomId(roomV3.getId());
 		commentService.create(commentV3);
diff --git a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
index a0b71d115f336d8328eee3dcab17273cd32aa545..b6bbe1fdbcdf28b72c43ec004c04914376a78640 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
@@ -18,22 +18,21 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.PaginationController;
-import de.thm.arsnova.entities.ChoiceAnswer;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.TextAnswer;
-import de.thm.arsnova.entities.migration.FromV2Migrator;
-import de.thm.arsnova.entities.migration.ToV2Migrator;
-import de.thm.arsnova.entities.migration.v2.Answer;
-import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.exceptions.ForbiddenException;
-import de.thm.arsnova.exceptions.NoContentException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.NotImplementedException;
-import de.thm.arsnova.services.AnswerService;
-import de.thm.arsnova.services.ContentService;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.TimerService;
+import de.thm.arsnova.model.ChoiceAnswer;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.TextAnswer;
+import de.thm.arsnova.model.migration.FromV2Migrator;
+import de.thm.arsnova.model.migration.ToV2Migrator;
+import de.thm.arsnova.model.migration.v2.Answer;
+import de.thm.arsnova.model.migration.v2.Content;
+import de.thm.arsnova.web.exceptions.ForbiddenException;
+import de.thm.arsnova.web.exceptions.NoContentException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.NotImplementedException;
+import de.thm.arsnova.service.AnswerService;
+import de.thm.arsnova.service.ContentService;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.TimerService;
 import de.thm.arsnova.util.PaginationListDecorator;
 import de.thm.arsnova.web.DeprecatedApi;
 import de.thm.arsnova.web.Pagination;
@@ -92,7 +91,7 @@ public class ContentController extends PaginationController {
 	})
 	@RequestMapping(value = "/{contentId}", method = RequestMethod.GET)
 	public Content getContent(@PathVariable final String contentId) {
-		final de.thm.arsnova.entities.Content content = contentService.get(contentId);
+		final de.thm.arsnova.model.Content content = contentService.get(contentId);
 		if (content != null) {
 			return toV2Migrator.migrate(content);
 		}
@@ -108,7 +107,7 @@ public class ContentController extends PaginationController {
 	@RequestMapping(value = "/", method = RequestMethod.POST)
 	@ResponseStatus(HttpStatus.CREATED)
 	public Content postContent(@RequestBody final Content content) {
-		de.thm.arsnova.entities.Content contentV3 = fromV2Migrator.migrate(content);
+		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
 		final String roomId = roomService.getIdByShortId(content.getSessionKeyword());
 		contentV3.setRoomId(roomId);
 		contentService.create(contentV3);
@@ -123,7 +122,7 @@ public class ContentController extends PaginationController {
 	@RequestMapping(value = "/bulk", method = RequestMethod.POST)
 	@ResponseStatus(HttpStatus.CREATED)
 	public List<Content> bulkPostContents(@RequestBody final List<Content> contents) {
-		List<de.thm.arsnova.entities.Content> contentsV3 =
+		List<de.thm.arsnova.model.Content> contentsV3 =
 				contents.stream().map(c -> contentService.create(fromV2Migrator.migrate(c))).collect(Collectors.toList());
 		return contentsV3.stream().map(toV2Migrator::migrate).collect(Collectors.toList());
 	}
@@ -210,7 +209,7 @@ public class ContentController extends PaginationController {
 			) {
 		String roomId = roomService.getIdByShortId(roomShortId);
 		boolean disable = false;
-		Iterable<de.thm.arsnova.entities.Content> contents;
+		Iterable<de.thm.arsnova.model.Content> contents;
 
 		if (disableVote != null) {
 			disable = disableVote;
@@ -236,7 +235,7 @@ public class ContentController extends PaginationController {
 			@RequestParam(required = false) final Boolean publish,
 			@RequestBody final Content content
 			) {
-		de.thm.arsnova.entities.Content contentV3 = fromV2Migrator.migrate(content);
+		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
 		if (publish != null) {
 			contentV3.getState().setVisible(publish);
 		}
@@ -254,7 +253,7 @@ public class ContentController extends PaginationController {
 			) {
 		String roomId = roomService.getIdByShortId(roomShortId);
 		boolean p = publish == null || publish;
-		Iterable<de.thm.arsnova.entities.Content> contents;
+		Iterable<de.thm.arsnova.model.Content> contents;
 
 		if (lectureContentsOnly) {
 			contents = contentService.getByRoomIdAndGroup(roomId, "lecture");
@@ -275,7 +274,7 @@ public class ContentController extends PaginationController {
 			@RequestParam(required = false) final Boolean showStatistics,
 			@RequestBody final Content content
 			) {
-		de.thm.arsnova.entities.Content contentV3 = fromV2Migrator.migrate(content);
+		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
 		if (showStatistics != null) {
 			contentV3.getState().setResponsesVisible(showStatistics);
 		}
@@ -290,7 +289,7 @@ public class ContentController extends PaginationController {
 			@RequestParam(required = false) final Boolean showCorrectAnswer,
 			@RequestBody final Content content
 			) {
-		de.thm.arsnova.entities.Content contentV3 = fromV2Migrator.migrate(content);
+		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
 		if (showCorrectAnswer != null) {
 			contentV3.getState().setSolutionVisible(showCorrectAnswer);
 		}
@@ -310,7 +309,7 @@ public class ContentController extends PaginationController {
 			final HttpServletResponse response
 			) {
 		String roomId = roomService.getIdByShortId(roomShortId);
-		Iterable<de.thm.arsnova.entities.Content> contents;
+		Iterable<de.thm.arsnova.model.Content> contents;
 		if (lectureContentsOnly) {
 			contents = contentService.getByRoomIdAndGroup(roomId, "lecture");
 		} else if (flashcardsOnly) {
@@ -438,14 +437,14 @@ public class ContentController extends PaginationController {
 			@PathVariable final String contentId,
 			final HttpServletResponse response
 			) {
-		final de.thm.arsnova.entities.Content content = contentService.get(contentId);
-		final de.thm.arsnova.entities.Answer answer = answerService.getMyAnswer(contentId);
+		final de.thm.arsnova.model.Content content = contentService.get(contentId);
+		final de.thm.arsnova.model.Answer answer = answerService.getMyAnswer(contentId);
 		if (answer == null) {
 			response.setStatus(HttpStatus.NO_CONTENT.value());
 			return null;
 		}
 
-		if (content.getFormat().equals(de.thm.arsnova.entities.Content.Format.TEXT)) {
+		if (content.getFormat().equals(de.thm.arsnova.model.Content.Format.TEXT)) {
 			return toV2Migrator.migrate((TextAnswer) answer);
 		} else {
 			return toV2Migrator.migrate((ChoiceAnswer) answer, (ChoiceQuestionContent) content);
@@ -474,12 +473,12 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "piround", required = false) final Integer piRound,
 			@RequestParam(value = "all", required = false, defaultValue = "false") final Boolean allAnswers,
 			final HttpServletResponse response) {
-		final de.thm.arsnova.entities.Content content = contentService.get(contentId);
+		final de.thm.arsnova.model.Content content = contentService.get(contentId);
 		if (content instanceof ChoiceQuestionContent) {
 			return toV2Migrator.migrate(answerService.getAllStatistics(contentId),
 					(ChoiceQuestionContent) content, content.getState().getRound());
 		} else {
-			List<de.thm.arsnova.entities.TextAnswer> answers;
+			List<de.thm.arsnova.model.TextAnswer> answers;
 			if (allAnswers) {
 				answers = answerService.getAllTextAnswers(contentId, -1, -1);
 			} else if (null == piRound) {
@@ -507,8 +506,8 @@ public class ContentController extends PaginationController {
 			@RequestBody final Answer answer,
 			final HttpServletResponse response
 			) {
-		final de.thm.arsnova.entities.Content content = contentService.get(contentId);
-		final de.thm.arsnova.entities.Answer answerV3 = fromV2Migrator.migrate(answer, content);
+		final de.thm.arsnova.model.Content content = contentService.get(contentId);
+		final de.thm.arsnova.model.Answer answerV3 = fromV2Migrator.migrate(answer, content);
 
 		if (answerV3 instanceof TextAnswer) {
 			return toV2Migrator.migrate((TextAnswer) answerService.saveAnswer(contentId, answerV3));
@@ -526,8 +525,8 @@ public class ContentController extends PaginationController {
 			@RequestBody final Answer answer,
 			final HttpServletResponse response
 			) {
-		final de.thm.arsnova.entities.Content content = contentService.get(contentId);
-		final de.thm.arsnova.entities.Answer answerV3 = fromV2Migrator.migrate(answer, content);
+		final de.thm.arsnova.model.Content content = contentService.get(contentId);
+		final de.thm.arsnova.model.Answer answerV3 = fromV2Migrator.migrate(answer, content);
 
 		if (answerV3 instanceof TextAnswer) {
 			return toV2Migrator.migrate((TextAnswer) answerService.updateAnswer(answerV3));
diff --git a/src/main/java/de/thm/arsnova/controller/v2/CourseController.java b/src/main/java/de/thm/arsnova/controller/v2/CourseController.java
index 651a8a418ec86395561fd4bd1fcf41e64659610d..17a766d38b3d293a41250fab579a67ee7a4e72f4 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/CourseController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/CourseController.java
@@ -21,10 +21,10 @@ import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.connector.model.UserRole;
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.exceptions.NotImplementedException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.web.exceptions.NotImplementedException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.service.UserService;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java
index 4abe828341a6ef5deeda380e41fa74c40b5d9043..3374251f6521b08aa0d4148b99fd529aa5e06c76 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java
@@ -18,12 +18,12 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.services.FeedbackService;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.Feedback;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.service.FeedbackService;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.UserService;
 import de.thm.arsnova.web.DeprecatedApi;
 import de.thm.arsnova.websocket.ArsnovaSocketioServerImpl;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java b/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java
index 834d1fd97a560bc3067c8c0b2d676a7939bf84bf..5ff4fe6301fbd6b8492eaa4929080d4f5718e07f 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java
@@ -18,8 +18,8 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.services.CommentService;
-import de.thm.arsnova.services.ContentService;
+import de.thm.arsnova.service.CommentService;
+import de.thm.arsnova.service.ContentService;
 import de.thm.arsnova.web.DeprecatedApi;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/MotdController.java b/src/main/java/de/thm/arsnova/controller/v2/MotdController.java
index acdb93d63472348c99020d67273aadc025e539d4..416fa0918547bd041b6a20339877e4a301bf6faa 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/MotdController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/MotdController.java
@@ -18,16 +18,16 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.migration.FromV2Migrator;
-import de.thm.arsnova.entities.migration.ToV2Migrator;
-import de.thm.arsnova.entities.migration.v2.Motd;
-import de.thm.arsnova.entities.migration.v2.MotdList;
-import de.thm.arsnova.exceptions.ForbiddenException;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.migration.FromV2Migrator;
+import de.thm.arsnova.model.migration.ToV2Migrator;
+import de.thm.arsnova.model.migration.v2.Motd;
+import de.thm.arsnova.model.migration.v2.MotdList;
+import de.thm.arsnova.web.exceptions.ForbiddenException;
 import de.thm.arsnova.security.User;
-import de.thm.arsnova.services.MotdService;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.service.MotdService;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.UserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -83,7 +83,7 @@ public class MotdController extends AbstractController {
 		@ApiParam(value = "audience", required = false) @RequestParam(value = "audience", defaultValue = "all") final String audience,
 		@ApiParam(value = "sessionkey", required = false) @RequestParam(value = "sessionkey", required = false) final String roomShortId
 	) {
-		List<de.thm.arsnova.entities.Motd> motds;
+		List<de.thm.arsnova.model.Motd> motds;
 		Date date = new Date(System.currentTimeMillis());
 		if (!clientdate.isEmpty()) {
 			date.setTime(Long.parseLong(clientdate));
@@ -116,9 +116,9 @@ public class MotdController extends AbstractController {
 			@ApiParam(value = "current motd", required = true) @RequestBody final Motd motd,
 			final HttpServletResponse response
 			) {
-		de.thm.arsnova.entities.Motd motdV3 = fromV2Migrator.migrate(motd);
+		de.thm.arsnova.model.Motd motdV3 = fromV2Migrator.migrate(motd);
 		String roomId = roomService.getIdByShortId(motd.getSessionkey());
-		if (de.thm.arsnova.entities.Motd.Audience.ROOM == motdV3.getAudience() && roomId != null) {
+		if (de.thm.arsnova.model.Motd.Audience.ROOM == motdV3.getAudience() && roomId != null) {
 			motdService.save(roomId, motdV3);
 		} else {
 			motdService.save(motdV3);
@@ -133,9 +133,9 @@ public class MotdController extends AbstractController {
 			@ApiParam(value = "motdkey from current motd", required = true) @PathVariable final String motdId,
 			@ApiParam(value = "current motd", required = true) @RequestBody final Motd motd
 			) {
-		de.thm.arsnova.entities.Motd motdV3 = fromV2Migrator.migrate(motd);
+		de.thm.arsnova.model.Motd motdV3 = fromV2Migrator.migrate(motd);
 		String roomId = roomService.getIdByShortId(motd.getSessionkey());
-		if (motdV3.getAudience() == de.thm.arsnova.entities.Motd.Audience.ROOM && roomId != null) {
+		if (motdV3.getAudience() == de.thm.arsnova.model.Motd.Audience.ROOM && roomId != null) {
 			motdService.update(roomId, motdV3);
 		} else {
 			motdService.update(motdV3);
@@ -147,8 +147,8 @@ public class MotdController extends AbstractController {
 	@ApiOperation(value = "deletes a message of the day", nickname = "deleteMotd")
 	@RequestMapping(value = "/{motdId}", method = RequestMethod.DELETE)
 	public void deleteMotd(@ApiParam(value = "Motd-key from the message that shall be deleted", required = true) @PathVariable final String motdId) {
-		de.thm.arsnova.entities.Motd motd = motdService.get(motdId);
-		if (motd.getAudience() == de.thm.arsnova.entities.Motd.Audience.ROOM) {
+		de.thm.arsnova.model.Motd motd = motdService.get(motdId);
+		if (motd.getAudience() == de.thm.arsnova.model.Motd.Audience.ROOM) {
 			motdService.deleteByRoomId(motd.getRoomId(), motd);
 		} else {
 			motdService.delete(motd);
diff --git a/src/main/java/de/thm/arsnova/controller/v2/RoomController.java b/src/main/java/de/thm/arsnova/controller/v2/RoomController.java
index ca3909e36727b9c44405a990c4c7688d3a72327d..9c051b469e06138bf99761f72e4f0ff68558d85f 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/RoomController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/RoomController.java
@@ -18,19 +18,19 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.PaginationController;
-import de.thm.arsnova.entities.migration.FromV2Migrator;
-import de.thm.arsnova.entities.migration.ToV2Migrator;
-import de.thm.arsnova.entities.migration.v2.Room;
-import de.thm.arsnova.entities.migration.v2.RoomFeature;
-import de.thm.arsnova.entities.migration.v2.RoomInfo;
-import de.thm.arsnova.entities.transport.ImportExportContainer;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.RoomServiceImpl;
-import de.thm.arsnova.services.RoomServiceImpl.RoomNameComparator;
-import de.thm.arsnova.services.RoomServiceImpl.RoomShortNameComparator;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.migration.FromV2Migrator;
+import de.thm.arsnova.model.migration.ToV2Migrator;
+import de.thm.arsnova.model.migration.v2.Room;
+import de.thm.arsnova.model.migration.v2.RoomFeature;
+import de.thm.arsnova.model.migration.v2.RoomInfo;
+import de.thm.arsnova.model.transport.ImportExportContainer;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.RoomServiceImpl;
+import de.thm.arsnova.service.RoomServiceImpl.RoomNameComparator;
+import de.thm.arsnova.service.RoomServiceImpl.RoomShortNameComparator;
+import de.thm.arsnova.service.UserService;
 import de.thm.arsnova.web.DeprecatedApi;
 import de.thm.arsnova.web.Pagination;
 import io.swagger.annotations.Api;
@@ -95,7 +95,7 @@ public class RoomController extends PaginationController {
 			nickname = "deleteRoom")
 	@RequestMapping(value = "/{shortId}", method = RequestMethod.DELETE)
 	public void deleteRoom(@ApiParam(value = "Room-Key from current Room", required = true) @PathVariable final String shortId) {
-		de.thm.arsnova.entities.Room room = roomService.getByShortId(shortId);
+		de.thm.arsnova.model.Room room = roomService.getByShortId(shortId);
 		roomService.deleteCascading(room);
 	}
 
@@ -170,7 +170,7 @@ public class RoomController extends PaginationController {
 					"username", defaultValue = "") final String username,
 			final HttpServletResponse response
 			) {
-		List<de.thm.arsnova.entities.Room> rooms;
+		List<de.thm.arsnova.model.Room> rooms;
 
 		if (!"".equals(username)) {
 			final String userId = userService.getByUsername(username).getId();
@@ -231,7 +231,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "sort by", required = false) @RequestParam(value = "sortby", defaultValue = "name") final String sortby,
 			final HttpServletResponse response
 			) {
-		List<de.thm.arsnova.entities.Room> rooms;
+		List<de.thm.arsnova.model.Room> rooms;
 		if (!visitedOnly) {
 			rooms = roomService.getMyRoomsInfo(offset, limit);
 		} else {
@@ -261,7 +261,7 @@ public class RoomController extends PaginationController {
 	public List<RoomInfo> getMyPublicPoolRooms(
 			final HttpServletResponse response
 			) {
-		List<de.thm.arsnova.entities.Room> rooms = roomService.getMyPublicPoolRoomsInfo();
+		List<de.thm.arsnova.model.Room> rooms = roomService.getMyPublicPoolRoomsInfo();
 
 		if (rooms == null || rooms.isEmpty()) {
 			response.setStatus(HttpServletResponse.SC_NO_CONTENT);
@@ -280,7 +280,7 @@ public class RoomController extends PaginationController {
 	public List<Room> getPublicPoolRooms(
 			final HttpServletResponse response
 			) {
-		List<de.thm.arsnova.entities.Room> rooms = roomService.getPublicPoolRoomsInfo();
+		List<de.thm.arsnova.model.Room> rooms = roomService.getPublicPoolRoomsInfo();
 
 		if (rooms == null || rooms.isEmpty()) {
 			response.setStatus(HttpServletResponse.SC_NO_CONTENT);
@@ -330,7 +330,7 @@ public class RoomController extends PaginationController {
 			) {
 		String id = roomService.getIdByShortId(shortId);
 		roomService.setActive(id, false);
-		de.thm.arsnova.entities.Room roomInfo = roomService.copyRoomToPublicPool(shortId, publicPool);
+		de.thm.arsnova.model.Room roomInfo = roomService.copyRoomToPublicPool(shortId, publicPool);
 		roomService.setActive(id, true);
 
 		return toV2Migrator.migrate(roomInfo);
@@ -386,7 +386,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "Room-Key from current Room", required = true) @PathVariable final String shortId,
 			final HttpServletResponse response
 			) {
-		de.thm.arsnova.entities.Room room = roomService.getByShortId(shortId);
+		de.thm.arsnova.model.Room room = roomService.getByShortId(shortId);
 		return toV2Migrator.migrate(room.getSettings());
 	}
 
@@ -398,7 +398,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "Room feature", required = true) @RequestBody final RoomFeature features,
 			final HttpServletResponse response
 			) {
-		de.thm.arsnova.entities.Room room = roomService.getByShortId(shortId);
+		de.thm.arsnova.model.Room room = roomService.getByShortId(shortId);
 		room.setSettings(fromV2Migrator.migrate(features));
 		roomService.update(room);
 
diff --git a/src/main/java/de/thm/arsnova/controller/v2/SocketController.java b/src/main/java/de/thm/arsnova/controller/v2/SocketController.java
index 9dac328ecaf6e908d255daac0b056f31a5756f81..ab9afeef05b24bf5d2dfc09f9e39a2d11ea8644d 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/SocketController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/SocketController.java
@@ -18,8 +18,8 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.service.UserService;
 import de.thm.arsnova.websocket.ArsnovaSocketioServer;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/StatisticsController.java b/src/main/java/de/thm/arsnova/controller/v2/StatisticsController.java
index 3ec01c8f058f68ca9b520ee67973234a49964211..a4529ae54d1a88a1b8c9f1924701ebd3fa67375b 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/StatisticsController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/StatisticsController.java
@@ -18,8 +18,8 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.Statistics;
-import de.thm.arsnova.services.StatisticsService;
+import de.thm.arsnova.model.Statistics;
+import de.thm.arsnova.service.StatisticsService;
 import de.thm.arsnova.web.CacheControl;
 import de.thm.arsnova.web.DeprecatedApi;
 import io.swagger.annotations.Api;
diff --git a/src/main/java/de/thm/arsnova/controller/v2/UserController.java b/src/main/java/de/thm/arsnova/controller/v2/UserController.java
index d07000979a1983d140266759f3d916faf9e89b4d..ea20a0782a7948eaf8ef9ccd8892280037273aa3 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/UserController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/UserController.java
@@ -18,8 +18,8 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractController;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
 import org.springframework.stereotype.Controller;
diff --git a/src/main/java/de/thm/arsnova/events/ArsnovaEvent.java b/src/main/java/de/thm/arsnova/event/ArsnovaEvent.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/events/ArsnovaEvent.java
rename to src/main/java/de/thm/arsnova/event/ArsnovaEvent.java
index 8fab76461697c211118415fe35be7d77dbbe02e5..8c5ac9498433190c1b722cf73a3363016c82405e 100644
--- a/src/main/java/de/thm/arsnova/events/ArsnovaEvent.java
+++ b/src/main/java/de/thm/arsnova/event/ArsnovaEvent.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
 import org.springframework.context.ApplicationEvent;
 
diff --git a/src/main/java/de/thm/arsnova/events/ArsnovaEventVisitor.java b/src/main/java/de/thm/arsnova/event/ArsnovaEventVisitor.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/events/ArsnovaEventVisitor.java
rename to src/main/java/de/thm/arsnova/event/ArsnovaEventVisitor.java
index 1092994d93c1e2e7e142fa3d74611fa415a8a482..4587c4284920c0038a4a3a4f410a9fb913321899 100644
--- a/src/main/java/de/thm/arsnova/events/ArsnovaEventVisitor.java
+++ b/src/main/java/de/thm/arsnova/event/ArsnovaEventVisitor.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
 /**
  * Listeners wanting to receive ARSnova's internal events should implement this interface.
diff --git a/src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java b/src/main/java/de/thm/arsnova/event/ChangeScoreEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java
rename to src/main/java/de/thm/arsnova/event/ChangeScoreEvent.java
index a69a7622c1723cc406f56d320b724f0dae56e11a..e67fc341e88ff29f1307420f4c4324610f9d1007 100644
--- a/src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java
+++ b/src/main/java/de/thm/arsnova/event/ChangeScoreEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a score related value changes.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java b/src/main/java/de/thm/arsnova/event/DeleteAllLectureAnswersEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteAllLectureAnswersEvent.java
index 1f75fcf214d539e0005b6db5b4851ee6773ce091..210ede956a073bcec5187689831ca07fa8b623a9 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteAllLectureAnswersEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever all answers of all lecture questions of a session are deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java b/src/main/java/de/thm/arsnova/event/DeleteAllPreparationAnswersEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteAllPreparationAnswersEvent.java
index 939667318913ff6dca5fb5ba621832ac1d102def..94d7a67c445e2ae7840853496b752879ea4a19ef 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteAllPreparationAnswersEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever all answers of all preparation questions of a session are deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java b/src/main/java/de/thm/arsnova/event/DeleteAllQuestionsAnswersEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteAllQuestionsAnswersEvent.java
index 4aed154481168a39eec7fb480d7408ec7a6ad559..eb587c21300acfb74c21367a55670e2b6d8b6287 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteAllQuestionsAnswersEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever all answers of all questions of a session are deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java b/src/main/java/de/thm/arsnova/event/DeleteAllQuestionsEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteAllQuestionsEvent.java
index fe0c7add70426ccd430e8bedbd0fea097d44d697..7dd76e612659c55ee4fcf9f43feefafe3428a44f 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteAllQuestionsEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever all questions of a session are deleted. Note that this implies that all answers are deleted as well,
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java b/src/main/java/de/thm/arsnova/event/DeleteAnswerEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteAnswerEvent.java
index f8642545bd324a486e9f2876b6eaff00615f16c1..eb9f816bffc8a8db93820c77ef0f69ad47e9ebc9 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteAnswerEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a single answer is deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java b/src/main/java/de/thm/arsnova/event/DeleteCommentEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteCommentEvent.java
index 5ec64a31a92d96ada045dc3cc2885edd54a2db54..f62f3c64e39bb1cd39b583208ed7f3154fdc72f1 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteCommentEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever an comment is deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForRoomsEvent.java b/src/main/java/de/thm/arsnova/event/DeleteFeedbackForRoomsEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/DeleteFeedbackForRoomsEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteFeedbackForRoomsEvent.java
index 18cf1cca73a2c2f0b77e917c1f49bcaee15a6938..5942e19adedc838bcd9dbe8ec1169c85b01ad201 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForRoomsEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteFeedbackForRoomsEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Room;
 
 import java.util.Set;
 
diff --git a/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java b/src/main/java/de/thm/arsnova/event/DeleteQuestionEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteQuestionEvent.java
index 8f3e5392872148e56c9a562fc05d976c9688d633..b2a40f6cfb769c00ed2088e03ce7e5b078b6f8de 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteQuestionEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a content is deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteRoomEvent.java b/src/main/java/de/thm/arsnova/event/DeleteRoomEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/DeleteRoomEvent.java
rename to src/main/java/de/thm/arsnova/event/DeleteRoomEvent.java
index c4b6fc2f83ea453f732c38b1bbf21f0296bf1d7e..2e470d680689775efbed767fe7438031820a15e7 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteRoomEvent.java
+++ b/src/main/java/de/thm/arsnova/event/DeleteRoomEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a session is deleted. Note that this implies that all related data such as comments,
diff --git a/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java b/src/main/java/de/thm/arsnova/event/FeatureChangeEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java
rename to src/main/java/de/thm/arsnova/event/FeatureChangeEvent.java
index 346c06d51c687f39f376771401debfa00a00701c..890425edb912f192e319556de5bfa98d6c52f76c 100644
--- a/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java
+++ b/src/main/java/de/thm/arsnova/event/FeatureChangeEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a new session is created.
diff --git a/src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java b/src/main/java/de/thm/arsnova/event/FlipFlashcardsEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java
rename to src/main/java/de/thm/arsnova/event/FlipFlashcardsEvent.java
index a7484eef5eb626e1846fa7d94707cb67830a1fc6..10a17302f4be7e243e88980ea120e5a779c6161a 100644
--- a/src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java
+++ b/src/main/java/de/thm/arsnova/event/FlipFlashcardsEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever voting on a question is disabled.
diff --git a/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java b/src/main/java/de/thm/arsnova/event/LockFeedbackEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java
rename to src/main/java/de/thm/arsnova/event/LockFeedbackEvent.java
index 2eeadad01055eef46fdca986f24fe26e4c72e430..b7a39b6b92b2dcc27d7794e1045bdce9ab47317e 100644
--- a/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java
+++ b/src/main/java/de/thm/arsnova/event/LockFeedbackEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever voting on a question is disabled.
diff --git a/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java b/src/main/java/de/thm/arsnova/event/LockQuestionEvent.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
rename to src/main/java/de/thm/arsnova/event/LockQuestionEvent.java
index 2949980d272dc2a2184d85151c6bb0418df75442..54bc9ff6a955fbbcdcad17561aeef794eb0df7a4 100644
--- a/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/event/LockQuestionEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a content is disabled, i.e., it is hidden from students.
diff --git a/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java b/src/main/java/de/thm/arsnova/event/LockQuestionsEvent.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
rename to src/main/java/de/thm/arsnova/event/LockQuestionsEvent.java
index 1998da80ef9718547a17dd8f3a2debebc23267f4..8c892967d3a15bec451edbfbef972783cb08701e 100644
--- a/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/event/LockQuestionsEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/LockVoteEvent.java b/src/main/java/de/thm/arsnova/event/LockVoteEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/LockVoteEvent.java
rename to src/main/java/de/thm/arsnova/event/LockVoteEvent.java
index e511a4c9caeb86ac8e4078a708b3de861a45a96d..1463e12e01dd0f6cf22953844ba0971c32b05aa4 100644
--- a/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
+++ b/src/main/java/de/thm/arsnova/event/LockVoteEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/LockVotesEvent.java b/src/main/java/de/thm/arsnova/event/LockVotesEvent.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/events/LockVotesEvent.java
rename to src/main/java/de/thm/arsnova/event/LockVotesEvent.java
index 2339b8593914c1f35def81f8e8b4241e10641116..a18cf149938191b846924c2e7d8853bbc6b08f38 100644
--- a/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
+++ b/src/main/java/de/thm/arsnova/event/LockVotesEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java b/src/main/java/de/thm/arsnova/event/NewAnswerEvent.java
similarity index 87%
rename from src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
rename to src/main/java/de/thm/arsnova/event/NewAnswerEvent.java
index 54ac0cd7579c08ec199f5e947879cad60c023a60..5049bf32ca1465b25bac64c8b84792fba9353d18 100644
--- a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
+++ b/src/main/java/de/thm/arsnova/event/NewAnswerEvent.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a new answer is added.
diff --git a/src/main/java/de/thm/arsnova/events/NewCommentEvent.java b/src/main/java/de/thm/arsnova/event/NewCommentEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/NewCommentEvent.java
rename to src/main/java/de/thm/arsnova/event/NewCommentEvent.java
index df5b09baa0e5520e950077657d118658d3e0d918..3ad2620eaeb8cc8476fc0fea0b4dc41abc19dbdf 100644
--- a/src/main/java/de/thm/arsnova/events/NewCommentEvent.java
+++ b/src/main/java/de/thm/arsnova/event/NewCommentEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a new comment is added.
diff --git a/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java b/src/main/java/de/thm/arsnova/event/NewFeedbackEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
rename to src/main/java/de/thm/arsnova/event/NewFeedbackEvent.java
index cdee0f7eba02625e1dde79fff51273f0363b34dd..f9bcdc5254a862cc7e99e3b848aa032a382bccf7 100644
--- a/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
+++ b/src/main/java/de/thm/arsnova/event/NewFeedbackEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever the feedback changes.
diff --git a/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java b/src/main/java/de/thm/arsnova/event/NewQuestionEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
rename to src/main/java/de/thm/arsnova/event/NewQuestionEvent.java
index cf49229b4d8934a7c506828cd796decfa0625e98..4cf0da993809f66cc4698e2608d586742c1cfc98 100644
--- a/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/event/NewQuestionEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a new content is added.
diff --git a/src/main/java/de/thm/arsnova/events/NewRoomEvent.java b/src/main/java/de/thm/arsnova/event/NewRoomEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/NewRoomEvent.java
rename to src/main/java/de/thm/arsnova/event/NewRoomEvent.java
index 391c5f5c8319715413e1bf9cc11399436f8c5a86..4dd067ba6fa1fff1c32979aa1b8097c4247bdc1d 100644
--- a/src/main/java/de/thm/arsnova/events/NewRoomEvent.java
+++ b/src/main/java/de/thm/arsnova/event/NewRoomEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a new session is created.
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java b/src/main/java/de/thm/arsnova/event/PiRoundCancelEvent.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
rename to src/main/java/de/thm/arsnova/event/PiRoundCancelEvent.java
index 77e41392fea59e4ff19d0990c101195d352c6b9a..969d4a68aa092872a2be4223776db477c795a93f 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
+++ b/src/main/java/de/thm/arsnova/event/PiRoundCancelEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a peer instruction round is canceled.
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java b/src/main/java/de/thm/arsnova/event/PiRoundDelayedStartEvent.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
rename to src/main/java/de/thm/arsnova/event/PiRoundDelayedStartEvent.java
index bd0a79ca203a8ea91641bda3f53f1efa79b021c5..b8880c367497ac6cf20b09a5c527cef41b0251a6 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
+++ b/src/main/java/de/thm/arsnova/event/PiRoundDelayedStartEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.Date;
 import java.util.HashMap;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java b/src/main/java/de/thm/arsnova/event/PiRoundEndEvent.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
rename to src/main/java/de/thm/arsnova/event/PiRoundEndEvent.java
index 0b38d4900f12e20223f5852fc3faa984a35de0ea..ebd864bf7ea003de4cfba5a525956b549008bf20 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
+++ b/src/main/java/de/thm/arsnova/event/PiRoundEndEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java b/src/main/java/de/thm/arsnova/event/PiRoundResetEvent.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
rename to src/main/java/de/thm/arsnova/event/PiRoundResetEvent.java
index 9ad99fa923ef454e1962881e3a5e52a406b0029c..a7045abfd4da888dec2a42c6274924996c7533d1 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
+++ b/src/main/java/de/thm/arsnova/event/PiRoundResetEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/RoomEvent.java b/src/main/java/de/thm/arsnova/event/RoomEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/RoomEvent.java
rename to src/main/java/de/thm/arsnova/event/RoomEvent.java
index 421ce253495a7bbf2fc95ad55f3059b25ace381d..eb32f2aaa923c64b342da10300ce938bfdeac1fe 100644
--- a/src/main/java/de/thm/arsnova/events/RoomEvent.java
+++ b/src/main/java/de/thm/arsnova/event/RoomEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Base class for all {@link ArsnovaEvent}s that are related to a room.
diff --git a/src/main/java/de/thm/arsnova/events/StatusRoomEvent.java b/src/main/java/de/thm/arsnova/event/StatusRoomEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/StatusRoomEvent.java
rename to src/main/java/de/thm/arsnova/event/StatusRoomEvent.java
index ad2b4d1a2958bdc36239f8a288ddde93c47a926f..a981d2f31022df067147d200a3f0cb1e5d21f5e2 100644
--- a/src/main/java/de/thm/arsnova/events/StatusRoomEvent.java
+++ b/src/main/java/de/thm/arsnova/event/StatusRoomEvent.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever the status of a session changes, i.e., it is enabled or disabled.
diff --git a/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java b/src/main/java/de/thm/arsnova/event/UnlockQuestionEvent.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
rename to src/main/java/de/thm/arsnova/event/UnlockQuestionEvent.java
index 6d23f81eb0ba78854022c5b1eca48e8f80d0f9a8..5e09ed349ffb1b08f8c1ffbbaa131d584013c4df 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/event/UnlockQuestionEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 /**
  * Fires whenever a content is enabled, i.e., it becomes visible to students.
diff --git a/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java b/src/main/java/de/thm/arsnova/event/UnlockQuestionsEvent.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
rename to src/main/java/de/thm/arsnova/event/UnlockQuestionsEvent.java
index be6dd5dd42521d2dae45f64cabd6f666037aa02a..a4e5d8c6a1916b3d07f8b33794af26f2fd2dcc75 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/event/UnlockQuestionsEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java b/src/main/java/de/thm/arsnova/event/UnlockVoteEvent.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
rename to src/main/java/de/thm/arsnova/event/UnlockVoteEvent.java
index 0f0a814b9143b1fd5da2600271563e822aa22a30..962f7c54678b7a10cca7ef7b890d56489ef48270 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
+++ b/src/main/java/de/thm/arsnova/event/UnlockVoteEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java b/src/main/java/de/thm/arsnova/event/UnlockVotesEvent.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
rename to src/main/java/de/thm/arsnova/event/UnlockVotesEvent.java
index 8c49926c89628eab1dad2cf24dd6218d45c31612..fdc50180ad5b8caf777ce001919f56cdefe8ca65 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
+++ b/src/main/java/de/thm/arsnova/event/UnlockVotesEvent.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/package-info.java b/src/main/java/de/thm/arsnova/event/package-info.java
similarity index 58%
rename from src/main/java/de/thm/arsnova/events/package-info.java
rename to src/main/java/de/thm/arsnova/event/package-info.java
index 838fc4cd66928cc72c857d8cef1f65a2b1fb1cd7..636c0e300c3f8a9fd12657b7b8f44ce35b86bea8 100644
--- a/src/main/java/de/thm/arsnova/events/package-info.java
+++ b/src/main/java/de/thm/arsnova/event/package-info.java
@@ -1,4 +1,4 @@
 /**
  * ARSnova's internal event system
  */
-package de.thm.arsnova.events;
+package de.thm.arsnova.event;
diff --git a/src/main/java/de/thm/arsnova/entities/Answer.java b/src/main/java/de/thm/arsnova/model/Answer.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/Answer.java
rename to src/main/java/de/thm/arsnova/model/Answer.java
index c81adc7e8dcad3e12919f86249453215f07c3ed0..38eb277f74e71fa0bf9b30ce74a2617d40a4272b 100644
--- a/src/main/java/de/thm/arsnova/entities/Answer.java
+++ b/src/main/java/de/thm/arsnova/model/Answer.java
@@ -1,10 +1,10 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.annotation.JsonView;
 import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver;
-import de.thm.arsnova.entities.serialization.FormatAnswerTypeIdResolver;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.FormatAnswerTypeIdResolver;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/entities/AnswerStatistics.java b/src/main/java/de/thm/arsnova/model/AnswerStatistics.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/AnswerStatistics.java
rename to src/main/java/de/thm/arsnova/model/AnswerStatistics.java
index 336b39ab7a529c73b76929ce5b213c380714d838..bf90c2b044154e5e26216e30e459de9824c7b738 100644
--- a/src/main/java/de/thm/arsnova/entities/AnswerStatistics.java
+++ b/src/main/java/de/thm/arsnova/model/AnswerStatistics.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Collection;
diff --git a/src/main/java/de/thm/arsnova/entities/Attachment.java b/src/main/java/de/thm/arsnova/model/Attachment.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/Attachment.java
rename to src/main/java/de/thm/arsnova/model/Attachment.java
index 1f8d2e4fe9b13c630d0ec4865b6f37679fd035a0..a3905ccd907e03202eff5bff03b8df9acb6e63eb 100644
--- a/src/main/java/de/thm/arsnova/entities/Attachment.java
+++ b/src/main/java/de/thm/arsnova/model/Attachment.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Objects;
diff --git a/src/main/java/de/thm/arsnova/entities/Authorize.java b/src/main/java/de/thm/arsnova/model/Authorize.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/Authorize.java
rename to src/main/java/de/thm/arsnova/model/Authorize.java
index 643cd1289649f4c133d010540f96340d6b7e5396..0458dbd8ad3f5d74c120b0fa18d8936a0955cafd 100644
--- a/src/main/java/de/thm/arsnova/entities/Authorize.java
+++ b/src/main/java/de/thm/arsnova/model/Authorize.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 public class Authorize {
 	private String user;
diff --git a/src/main/java/de/thm/arsnova/entities/ChoiceAnswer.java b/src/main/java/de/thm/arsnova/model/ChoiceAnswer.java
similarity index 89%
rename from src/main/java/de/thm/arsnova/entities/ChoiceAnswer.java
rename to src/main/java/de/thm/arsnova/model/ChoiceAnswer.java
index f11f5b4f5f8271f349f5d20d476e4008e63ada30..00d667f7f1291875f6b0074651f2487b05c18f75 100644
--- a/src/main/java/de/thm/arsnova/entities/ChoiceAnswer.java
+++ b/src/main/java/de/thm/arsnova/model/ChoiceAnswer.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.List;
diff --git a/src/main/java/de/thm/arsnova/entities/ChoiceQuestionContent.java b/src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/ChoiceQuestionContent.java
rename to src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java
index 0b3e34b13d18f802d9a52afebf4c8f5255e728e6..400a4c00d29fca6efd422547dc960d1d3fb12f2b 100644
--- a/src/main/java/de/thm/arsnova/entities/ChoiceQuestionContent.java
+++ b/src/main/java/de/thm/arsnova/model/ChoiceQuestionContent.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/thm/arsnova/entities/ClientAuthentication.java b/src/main/java/de/thm/arsnova/model/ClientAuthentication.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/entities/ClientAuthentication.java
rename to src/main/java/de/thm/arsnova/model/ClientAuthentication.java
index 459df8a3004c82f62f4f833944d9a3c3d22449c0..3d9d22b662bb62c229d0a394062d6db94a169624 100644
--- a/src/main/java/de/thm/arsnova/entities/ClientAuthentication.java
+++ b/src/main/java/de/thm/arsnova/model/ClientAuthentication.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 public class ClientAuthentication {
diff --git a/src/main/java/de/thm/arsnova/entities/Comment.java b/src/main/java/de/thm/arsnova/model/Comment.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/entities/Comment.java
rename to src/main/java/de/thm/arsnova/model/Comment.java
index c8218c48ef997a5497c9018bf743233fc854dbaa..f25331a4ab77696de9a0fc2ad1aad85213ed5b00 100644
--- a/src/main/java/de/thm/arsnova/entities/Comment.java
+++ b/src/main/java/de/thm/arsnova/model/Comment.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/Content.java b/src/main/java/de/thm/arsnova/model/Content.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/entities/Content.java
rename to src/main/java/de/thm/arsnova/model/Content.java
index 11bf0c4f60cb2f5114e4f7d475c64e1c39fe4b8c..471c98a2c44c6158ffb426adc3ac9ad1be3ff13b 100644
--- a/src/main/java/de/thm/arsnova/entities/Content.java
+++ b/src/main/java/de/thm/arsnova/model/Content.java
@@ -1,10 +1,10 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.annotation.JsonView;
 import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver;
-import de.thm.arsnova.entities.serialization.FormatContentTypeIdResolver;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.FormatContentTypeIdResolver;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/Entity.java b/src/main/java/de/thm/arsnova/model/Entity.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/Entity.java
rename to src/main/java/de/thm/arsnova/model/Entity.java
index 9761ed86ae474652792420e97df3718f3b0aaf49..93add05c967e7df2f2a4b4bff56ea2603c004cde 100644
--- a/src/main/java/de/thm/arsnova/entities/Entity.java
+++ b/src/main/java/de/thm/arsnova/model/Entity.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/Feedback.java b/src/main/java/de/thm/arsnova/model/Feedback.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/Feedback.java
rename to src/main/java/de/thm/arsnova/model/Feedback.java
index 235260cd1aa3e725eb5e33a35d3e3b96afe31292..22964d81c561fa84eacdcf48c2ab19ac26f81824 100644
--- a/src/main/java/de/thm/arsnova/entities/Feedback.java
+++ b/src/main/java/de/thm/arsnova/model/Feedback.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/de/thm/arsnova/entities/FindQuery.java b/src/main/java/de/thm/arsnova/model/FindQuery.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/entities/FindQuery.java
rename to src/main/java/de/thm/arsnova/model/FindQuery.java
index 0ad16060818d7eb05358a05a400daf4e53d73b49..d0364c3b76481df3962111966ddcadfc866c7f5a 100644
--- a/src/main/java/de/thm/arsnova/entities/FindQuery.java
+++ b/src/main/java/de/thm/arsnova/model/FindQuery.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/entities/LogEntry.java b/src/main/java/de/thm/arsnova/model/LogEntry.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/LogEntry.java
rename to src/main/java/de/thm/arsnova/model/LogEntry.java
index 894003587d58084fab728614451db6fb2a63eaf4..e66d65c852c818c048ff3c7575a498d201c0cdde 100644
--- a/src/main/java/de/thm/arsnova/entities/LogEntry.java
+++ b/src/main/java/de/thm/arsnova/model/LogEntry.java
@@ -1,8 +1,8 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 import java.util.Date;
 import java.util.Map;
@@ -97,7 +97,7 @@ public class LogEntry extends Entity {
 	}
 
 	@JsonView(View.Persistence.class)
-	public void setLevel(final de.thm.arsnova.entities.migration.v2.LogEntry.LogLevel level) {
+	public void setLevel(final de.thm.arsnova.model.migration.v2.LogEntry.LogLevel level) {
 		this.level = level.ordinal();
 	}
 
diff --git a/src/main/java/de/thm/arsnova/entities/LoginCredentials.java b/src/main/java/de/thm/arsnova/model/LoginCredentials.java
similarity index 88%
rename from src/main/java/de/thm/arsnova/entities/LoginCredentials.java
rename to src/main/java/de/thm/arsnova/model/LoginCredentials.java
index 52668d3bf9550948d6706accf9172502d2b8a0f5..3e90b53a6ba067d5e1d59559574c45fbd5e0c4d4 100644
--- a/src/main/java/de/thm/arsnova/entities/LoginCredentials.java
+++ b/src/main/java/de/thm/arsnova/model/LoginCredentials.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 public class LoginCredentials {
diff --git a/src/main/java/de/thm/arsnova/entities/MigrationState.java b/src/main/java/de/thm/arsnova/model/MigrationState.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/MigrationState.java
rename to src/main/java/de/thm/arsnova/model/MigrationState.java
index 21e2eceb22b8183770fb15ad690ca5b3c433a425..f27bb2f85ed339fb371085e41d8575419d7515e9 100644
--- a/src/main/java/de/thm/arsnova/entities/MigrationState.java
+++ b/src/main/java/de/thm/arsnova/model/MigrationState.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 import java.util.ArrayList;
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/Motd.java b/src/main/java/de/thm/arsnova/model/Motd.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/entities/Motd.java
rename to src/main/java/de/thm/arsnova/model/Motd.java
index 63c04acc2ca175b5f31435ba756c94d534ec4c1b..d67c19fb15739a29ab1c2f1010eaf1839e8d2e96 100644
--- a/src/main/java/de/thm/arsnova/entities/Motd.java
+++ b/src/main/java/de/thm/arsnova/model/Motd.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/Room.java b/src/main/java/de/thm/arsnova/model/Room.java
similarity index 99%
rename from src/main/java/de/thm/arsnova/entities/Room.java
rename to src/main/java/de/thm/arsnova/model/Room.java
index dfb4baf819184919520ce72d03374ba461a40071..cb85893efb65ea757f8da5cefe27c5beaaf83ca5 100644
--- a/src/main/java/de/thm/arsnova/entities/Room.java
+++ b/src/main/java/de/thm/arsnova/model/Room.java
@@ -1,12 +1,11 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
diff --git a/src/main/java/de/thm/arsnova/entities/RoomStatistics.java b/src/main/java/de/thm/arsnova/model/RoomStatistics.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/entities/RoomStatistics.java
rename to src/main/java/de/thm/arsnova/model/RoomStatistics.java
index 6358e1cf923dacbb02c8d99d20b72dfd13f715c2..c2a94122ce12144b524dfc1ef8961bd7fd228935 100644
--- a/src/main/java/de/thm/arsnova/entities/RoomStatistics.java
+++ b/src/main/java/de/thm/arsnova/model/RoomStatistics.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 public class RoomStatistics {
diff --git a/src/main/java/de/thm/arsnova/entities/ScoreOptions.java b/src/main/java/de/thm/arsnova/model/ScoreOptions.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/ScoreOptions.java
rename to src/main/java/de/thm/arsnova/model/ScoreOptions.java
index e5559970d5ed504b383d4b3c3133a1db79081a05..c1791b437afa2a4369477f3542bbebb8d0800521 100644
--- a/src/main/java/de/thm/arsnova/entities/ScoreOptions.java
+++ b/src/main/java/de/thm/arsnova/model/ScoreOptions.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/ServiceDescription.java b/src/main/java/de/thm/arsnova/model/ServiceDescription.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/ServiceDescription.java
rename to src/main/java/de/thm/arsnova/model/ServiceDescription.java
index c6546a72440582bac77867fbccac3416fe34e3df..b7724a921300591a7b153046d6da2c23aa26793f 100644
--- a/src/main/java/de/thm/arsnova/entities/ServiceDescription.java
+++ b/src/main/java/de/thm/arsnova/model/ServiceDescription.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 /**
  * A login service description. For example, this class is used to display the login buttons in ARSnova mobile.
diff --git a/src/main/java/de/thm/arsnova/entities/Statistics.java b/src/main/java/de/thm/arsnova/model/Statistics.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/Statistics.java
rename to src/main/java/de/thm/arsnova/model/Statistics.java
index a4a031cf1652277428d0472a0b7f57c22847c315..fe7f38f4c91b40a725d7bc549ebd0fc8287521c4 100644
--- a/src/main/java/de/thm/arsnova/entities/Statistics.java
+++ b/src/main/java/de/thm/arsnova/model/Statistics.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/TextAnswer.java b/src/main/java/de/thm/arsnova/model/TextAnswer.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/entities/TextAnswer.java
rename to src/main/java/de/thm/arsnova/model/TextAnswer.java
index ce959de9b2d330285ddae89e7fa44b090a7d1a47..2f109c085b31571227c91706310a23ed9369b9eb 100644
--- a/src/main/java/de/thm/arsnova/entities/TextAnswer.java
+++ b/src/main/java/de/thm/arsnova/model/TextAnswer.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/UserProfile.java b/src/main/java/de/thm/arsnova/model/UserProfile.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/UserProfile.java
rename to src/main/java/de/thm/arsnova/model/UserProfile.java
index 1fbb2acc7f87e2f9bfa848407830e97581c065bc..0fc7932733ddc4f3514ebc04dab0323202ad94e0 100644
--- a/src/main/java/de/thm/arsnova/entities/UserProfile.java
+++ b/src/main/java/de/thm/arsnova/model/UserProfile.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.springframework.core.style.ToStringCreator;
 
 import java.util.Date;
diff --git a/src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java b/src/main/java/de/thm/arsnova/model/migration/FromV2Migrator.java
similarity index 79%
rename from src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java
rename to src/main/java/de/thm/arsnova/model/migration/FromV2Migrator.java
index cd529593103ce2219a1814de9fb675738b478208..281e6c3fada5c1d30c90a6410dabb4c8e732ebff 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java
+++ b/src/main/java/de/thm/arsnova/model/migration/FromV2Migrator.java
@@ -15,13 +15,13 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration;
+package de.thm.arsnova.model.migration;
 
-import de.thm.arsnova.entities.ChoiceAnswer;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.TextAnswer;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.migration.v2.*;
+import de.thm.arsnova.model.ChoiceAnswer;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.TextAnswer;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.migration.v2.*;
 import org.checkerframework.checker.nullness.qual.Nullable;
 
 import java.util.ArrayList;
@@ -48,23 +48,23 @@ public class FromV2Migrator {
 	static final String V2_TYPE_YESNO = "yesno";
 	static final String V2_TYPE_FREETEXT = "freetext";
 	static final String V2_TYPE_GRID = "grid";
-	private static final Map<String, de.thm.arsnova.entities.Content.Format> formatMapping;
+	private static final Map<String, de.thm.arsnova.model.Content.Format> formatMapping;
 
 	private boolean ignoreRevision = false;
 
 	static {
 		formatMapping = new HashMap<>();
-		formatMapping.put(V2_TYPE_ABCD, de.thm.arsnova.entities.Content.Format.CHOICE);
-		formatMapping.put(V2_TYPE_SC, de.thm.arsnova.entities.Content.Format.CHOICE);
-		formatMapping.put(V2_TYPE_MC, de.thm.arsnova.entities.Content.Format.CHOICE);
-		formatMapping.put(V2_TYPE_VOTE, de.thm.arsnova.entities.Content.Format.SCALE);
-		formatMapping.put(V2_TYPE_SCHOOL, de.thm.arsnova.entities.Content.Format.SCALE);
-		formatMapping.put(V2_TYPE_YESNO, de.thm.arsnova.entities.Content.Format.BINARY);
-		formatMapping.put(V2_TYPE_FREETEXT, de.thm.arsnova.entities.Content.Format.TEXT);
-		formatMapping.put(V2_TYPE_GRID, de.thm.arsnova.entities.Content.Format.GRID);
+		formatMapping.put(V2_TYPE_ABCD, de.thm.arsnova.model.Content.Format.CHOICE);
+		formatMapping.put(V2_TYPE_SC, de.thm.arsnova.model.Content.Format.CHOICE);
+		formatMapping.put(V2_TYPE_MC, de.thm.arsnova.model.Content.Format.CHOICE);
+		formatMapping.put(V2_TYPE_VOTE, de.thm.arsnova.model.Content.Format.SCALE);
+		formatMapping.put(V2_TYPE_SCHOOL, de.thm.arsnova.model.Content.Format.SCALE);
+		formatMapping.put(V2_TYPE_YESNO, de.thm.arsnova.model.Content.Format.BINARY);
+		formatMapping.put(V2_TYPE_FREETEXT, de.thm.arsnova.model.Content.Format.TEXT);
+		formatMapping.put(V2_TYPE_GRID, de.thm.arsnova.model.Content.Format.GRID);
 	}
 
-	private void copyCommonProperties(final Entity from, final de.thm.arsnova.entities.Entity to) {
+	private void copyCommonProperties(final Entity from, final de.thm.arsnova.model.Entity to) {
 		to.setId(from.getId());
 		if (!ignoreRevision) {
 			to.setRevision(from.getRevision());
@@ -119,12 +119,12 @@ public class FromV2Migrator {
 		return Arrays.stream(motdList.getMotdkeys().split(",")).collect(Collectors.toSet());
 	}
 
-	public de.thm.arsnova.entities.Room migrate(final Room from, final Optional<UserProfile> owner) {
+	public de.thm.arsnova.model.Room migrate(final Room from, final Optional<UserProfile> owner) {
 		if (!owner.isPresent() && from.getCreator() != null ||
 				owner.isPresent() && !owner.get().getLoginId().equals(from.getCreator())) {
 			throw new IllegalArgumentException("Username of owner object does not match session creator.");
 		}
-		final de.thm.arsnova.entities.Room to = new de.thm.arsnova.entities.Room();
+		final de.thm.arsnova.model.Room to = new de.thm.arsnova.model.Room();
 		copyCommonProperties(from, to);
 		to.setCreationTimestamp(new Date(from.getCreationTime()));
 		to.setUpdateTimestamp(new Date());
@@ -137,7 +137,7 @@ public class FromV2Migrator {
 		to.setDescription(from.getPpDescription());
 		to.setClosed(!from.isActive());
 		if (from.hasAuthorDetails()) {
-			final de.thm.arsnova.entities.Room.Author author = new de.thm.arsnova.entities.Room.Author();
+			final de.thm.arsnova.model.Room.Author author = new de.thm.arsnova.model.Room.Author();
 			to.setAuthor(author);
 			author.setName(from.getPpAuthorName());
 			author.setMail(from.getPpAuthorMail());
@@ -146,7 +146,7 @@ public class FromV2Migrator {
 			author.setOrganizationLogo(from.getPpLogo());
 		}
 		if ("public_pool".equals(from.getSessionType())) {
-			final de.thm.arsnova.entities.Room.PoolProperties poolProperties = new de.thm.arsnova.entities.Room.PoolProperties();
+			final de.thm.arsnova.model.Room.PoolProperties poolProperties = new de.thm.arsnova.model.Room.PoolProperties();
 			to.setPoolProperties(poolProperties);
 			poolProperties.setLevel(from.getPpLevel());
 			poolProperties.setCategory(from.getPpSubject());
@@ -157,12 +157,12 @@ public class FromV2Migrator {
 		return to;
 	}
 
-	public de.thm.arsnova.entities.Room migrate(final Room from) {
+	public de.thm.arsnova.model.Room migrate(final Room from) {
 		return migrate(from, Optional.empty());
 	}
 
-	public de.thm.arsnova.entities.Room.Settings migrate(final RoomFeature feature) {
-		de.thm.arsnova.entities.Room.Settings settings = new de.thm.arsnova.entities.Room.Settings();
+	public de.thm.arsnova.model.Room.Settings migrate(final RoomFeature feature) {
+		de.thm.arsnova.model.Room.Settings settings = new de.thm.arsnova.model.Room.Settings();
 		if (feature != null) {
 			settings.setCommentsEnabled(feature.isInterposed() || feature.isInterposedFeedback()
 					|| feature.isTwitterWall() || feature.isTotal());
@@ -179,8 +179,8 @@ public class FromV2Migrator {
 		return settings;
 	}
 
-	public de.thm.arsnova.entities.Content migrate(final Content from) {
-		de.thm.arsnova.entities.Content to;
+	public de.thm.arsnova.model.Content migrate(final Content from) {
+		de.thm.arsnova.model.Content to;
 		switch (from.getQuestionType()) {
 			case V2_TYPE_ABCD:
 			case V2_TYPE_SC:
@@ -193,7 +193,7 @@ public class FromV2Migrator {
 				to.setFormat(formatMapping.get(from.getQuestionType()));
 				choiceQuestionContent.setMultiple(V2_TYPE_MC.equals(from.getQuestionType()));
 				for (int i = 0; i < from.getPossibleAnswers().size(); i++) {
-					de.thm.arsnova.entities.migration.v2.AnswerOption fromOption = from.getPossibleAnswers().get(i);
+					de.thm.arsnova.model.migration.v2.AnswerOption fromOption = from.getPossibleAnswers().get(i);
 					ChoiceQuestionContent.AnswerOption toOption = new ChoiceQuestionContent.AnswerOption();
 					toOption.setLabel(fromOption.getText());
 					toOption.setPoints(fromOption.getValue());
@@ -205,8 +205,8 @@ public class FromV2Migrator {
 
 				break;
 			case V2_TYPE_FREETEXT:
-				to = new de.thm.arsnova.entities.Content();
-				to.setFormat(de.thm.arsnova.entities.Content.Format.TEXT);
+				to = new de.thm.arsnova.model.Content();
+				to.setFormat(de.thm.arsnova.model.Content.Format.TEXT);
 				break;
 			default:
 				throw new IllegalArgumentException("Unsupported content format.");
@@ -218,7 +218,7 @@ public class FromV2Migrator {
 		to.setBody(from.getText());
 		to.setAbstentionsAllowed(from.isAbstention());
 		to.setAbstentionsAllowed(from.isAbstention());
-		de.thm.arsnova.entities.Content.State state = to.getState();
+		de.thm.arsnova.model.Content.State state = to.getState();
 		state.setRound(from.getPiRound());
 		state.setVisible(from.isActive());
 		state.setResponsesVisible(from.isShowStatistic());
@@ -228,7 +228,7 @@ public class FromV2Migrator {
 		return to;
 	}
 
-	public de.thm.arsnova.entities.Answer migrate(final Answer from, final de.thm.arsnova.entities.Content content) {
+	public de.thm.arsnova.model.Answer migrate(final Answer from, final de.thm.arsnova.model.Content content) {
 		if (content instanceof ChoiceQuestionContent) {
 			ChoiceQuestionContent choiceQuestionContent = (ChoiceQuestionContent) content;
 			return migrate(from, choiceQuestionContent.getOptions(), choiceQuestionContent.isMultiple());
@@ -288,12 +288,12 @@ public class FromV2Migrator {
 		return to;
 	}
 
-	public de.thm.arsnova.entities.Comment migrate(final Comment from, @Nullable final UserProfile creator) {
+	public de.thm.arsnova.model.Comment migrate(final Comment from, @Nullable final UserProfile creator) {
 		if (creator == null && from.getCreator() != null ||
 				creator != null && !creator.getLoginId().equals(from.getCreator())) {
 			throw new IllegalArgumentException("Username of creator object does not match comment creator.");
 		}
-		final de.thm.arsnova.entities.Comment to = new de.thm.arsnova.entities.Comment();
+		final de.thm.arsnova.model.Comment to = new de.thm.arsnova.model.Comment();
 		copyCommonProperties(from, to);
 		to.setRoomId(from.getSessionId());
 		if (creator != null) {
@@ -308,12 +308,12 @@ public class FromV2Migrator {
 	}
 
 
-	public de.thm.arsnova.entities.Comment migrate(final Comment from) {
+	public de.thm.arsnova.model.Comment migrate(final Comment from) {
 		return migrate(from, null);
 	}
 
-	public de.thm.arsnova.entities.Motd migrate(final Motd from) {
-		final de.thm.arsnova.entities.Motd to = new de.thm.arsnova.entities.Motd();
+	public de.thm.arsnova.model.Motd migrate(final Motd from) {
+		final de.thm.arsnova.model.Motd to = new de.thm.arsnova.model.Motd();
 		copyCommonProperties(from, to);
 		to.setCreationTimestamp(from.getStartdate());
 		to.setUpdateTimestamp(new Date());
@@ -321,16 +321,16 @@ public class FromV2Migrator {
 		to.setEndDate(from.getEnddate());
 		switch (from.getAudience()) {
 			case "all":
-				to.setAudience(de.thm.arsnova.entities.Motd.Audience.ALL);
+				to.setAudience(de.thm.arsnova.model.Motd.Audience.ALL);
 				break;
 			case "tutors":
-				to.setAudience(de.thm.arsnova.entities.Motd.Audience.AUTHORS);
+				to.setAudience(de.thm.arsnova.model.Motd.Audience.AUTHORS);
 				break;
 			case "students":
-				to.setAudience(de.thm.arsnova.entities.Motd.Audience.PARTICIPANTS);
+				to.setAudience(de.thm.arsnova.model.Motd.Audience.PARTICIPANTS);
 				break;
 			case "session":
-				to.setAudience(de.thm.arsnova.entities.Motd.Audience.ROOM);
+				to.setAudience(de.thm.arsnova.model.Motd.Audience.ROOM);
 				break;
 		}
 		to.setTitle(from.getTitle());
diff --git a/src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java b/src/main/java/de/thm/arsnova/model/migration/ToV2Migrator.java
similarity index 86%
rename from src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java
rename to src/main/java/de/thm/arsnova/model/migration/ToV2Migrator.java
index 4649c0a785fea2c79562ef2f5bac56b92d2a6de7..22ffea137c93846b8414e9df1d15eeff8cbd2266 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java
+++ b/src/main/java/de/thm/arsnova/model/migration/ToV2Migrator.java
@@ -15,13 +15,13 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration;
+package de.thm.arsnova.model.migration;
 
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.RoomStatistics;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.migration.v2.*;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.RoomStatistics;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.migration.v2.*;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -30,7 +30,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import static de.thm.arsnova.entities.migration.FromV2Migrator.*;
+import static de.thm.arsnova.model.migration.FromV2Migrator.*;
 
 /**
  * Converts entities from current model version to legacy version 2.
@@ -39,7 +39,7 @@ import static de.thm.arsnova.entities.migration.FromV2Migrator.*;
  */
 public class ToV2Migrator {
 
-	private void copyCommonProperties(final de.thm.arsnova.entities.Entity from, final Entity to) {
+	private void copyCommonProperties(final de.thm.arsnova.model.Entity from, final Entity to) {
 		to.setId(from.getId());
 		to.setRevision(from.getRevision());
 	}
@@ -65,7 +65,7 @@ public class ToV2Migrator {
 		return to;
 	}
 
-	public Room migrate(final de.thm.arsnova.entities.Room from, final Optional<UserProfile> owner) {
+	public Room migrate(final de.thm.arsnova.model.Room from, final Optional<UserProfile> owner) {
 		final Room to = new Room();
 		copyCommonProperties(from, to);
 		to.setKeyword(from.getShortId());
@@ -87,11 +87,11 @@ public class ToV2Migrator {
 		return to;
 	}
 
-	public Room migrate(final de.thm.arsnova.entities.Room from) {
+	public Room migrate(final de.thm.arsnova.model.Room from) {
 		return migrate(from, Optional.empty());
 	}
 
-	public RoomFeature migrate(final de.thm.arsnova.entities.Room.Settings settings) {
+	public RoomFeature migrate(final de.thm.arsnova.model.Room.Settings settings) {
 		RoomFeature feature = new RoomFeature();
 
 		/* Features */
@@ -159,7 +159,7 @@ public class ToV2Migrator {
 		return feature;
 	}
 
-	public RoomInfo migrateStats(final de.thm.arsnova.entities.Room from) {
+	public RoomInfo migrateStats(final de.thm.arsnova.model.Room from) {
 		RoomInfo to = new RoomInfo(migrate(from));
 		RoomStatistics stats = from.getStatistics();
 		to.setNumQuestions(stats.getContentCount());
@@ -171,7 +171,7 @@ public class ToV2Migrator {
 		return to;
 	}
 
-	public Content migrate(final de.thm.arsnova.entities.Content from) {
+	public Content migrate(final de.thm.arsnova.model.Content from) {
 		final Content to = new Content();
 		copyCommonProperties(from, to);
 		to.setSessionId(from.getRoomId());
@@ -226,7 +226,7 @@ public class ToV2Migrator {
 					throw new IllegalArgumentException("Unsupported content format.");
 			}
 		}
-		de.thm.arsnova.entities.Content.State state = from.getState();
+		de.thm.arsnova.model.Content.State state = from.getState();
 		to.setPiRound(state.getRound());
 		to.setActive(state.isVisible());
 		to.setShowStatistic(state.isResponsesVisible());
@@ -239,8 +239,8 @@ public class ToV2Migrator {
 		return to;
 	}
 
-	public Answer migrate(final de.thm.arsnova.entities.ChoiceAnswer from,
-			final de.thm.arsnova.entities.ChoiceQuestionContent content, final Optional<UserProfile> creator) {
+	public Answer migrate(final de.thm.arsnova.model.ChoiceAnswer from,
+			final de.thm.arsnova.model.ChoiceQuestionContent content, final Optional<UserProfile> creator) {
 		final Answer to = new Answer();
 		copyCommonProperties(from, to);
 		to.setQuestionId(from.getContentId());
@@ -273,13 +273,13 @@ public class ToV2Migrator {
 		return answers.stream().collect(Collectors.joining(","));
 	}
 
-	public Answer migrate(final de.thm.arsnova.entities.ChoiceAnswer from,
-			final de.thm.arsnova.entities.ChoiceQuestionContent content) {
+	public Answer migrate(final de.thm.arsnova.model.ChoiceAnswer from,
+			final de.thm.arsnova.model.ChoiceQuestionContent content) {
 		return migrate(from, content, Optional.empty());
 	}
 
-	public Answer migrate(final de.thm.arsnova.entities.TextAnswer from,
-			final Optional<de.thm.arsnova.entities.Content> content, final Optional<UserProfile> creator) {
+	public Answer migrate(final de.thm.arsnova.model.TextAnswer from,
+			final Optional<de.thm.arsnova.model.Content> content, final Optional<UserProfile> creator) {
 		final Answer to = new Answer();
 		copyCommonProperties(from, to);
 		to.setQuestionId(from.getContentId());
@@ -295,11 +295,11 @@ public class ToV2Migrator {
 		return to;
 	}
 
-	public Answer migrate(final de.thm.arsnova.entities.TextAnswer from) {
+	public Answer migrate(final de.thm.arsnova.model.TextAnswer from) {
 		return migrate(from, Optional.empty(), Optional.empty());
 	}
 
-	public Comment migrate(final de.thm.arsnova.entities.Comment from, final Optional<UserProfile> creator) {
+	public Comment migrate(final de.thm.arsnova.model.Comment from, final Optional<UserProfile> creator) {
 		final Comment to = new Comment();
 		copyCommonProperties(from, to);
 		to.setSessionId(from.getRoomId());
@@ -314,11 +314,11 @@ public class ToV2Migrator {
 		return to;
 	}
 
-	public Comment migrate(final de.thm.arsnova.entities.Comment from) {
+	public Comment migrate(final de.thm.arsnova.model.Comment from) {
 		return migrate(from, Optional.empty());
 	}
 
-	public Motd migrate(final de.thm.arsnova.entities.Motd from) {
+	public Motd migrate(final de.thm.arsnova.model.Motd from) {
 		final Motd to = new Motd();
 		copyCommonProperties(from, to);
 		to.setMotdkey(from.getId());
@@ -347,7 +347,7 @@ public class ToV2Migrator {
 	}
 
 	public List<Answer> migrate(final AnswerStatistics from,
-			final de.thm.arsnova.entities.ChoiceQuestionContent content, int round) {
+			final de.thm.arsnova.model.ChoiceQuestionContent content, int round) {
 		if (round < 1 || round > content.getState().getRound()) {
 			throw new IllegalArgumentException("Invalid value for round");
 		}
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Answer.java b/src/main/java/de/thm/arsnova/model/migration/v2/Answer.java
similarity index 99%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/Answer.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/Answer.java
index d160a6afb18ab4833ed615e9bd6d23ad6f1bd39d..681093b44697a66f2917966e979770b2701c3d75 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/Answer.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/Answer.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/AnswerOption.java b/src/main/java/de/thm/arsnova/model/migration/v2/AnswerOption.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/AnswerOption.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/AnswerOption.java
index b655008a71c83bcc70bbd3030d08941470d25842..7e72b2734057ce958c3f122759e5d79963724ed4 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/AnswerOption.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/AnswerOption.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/ClientAuthentication.java b/src/main/java/de/thm/arsnova/model/migration/v2/ClientAuthentication.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/ClientAuthentication.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/ClientAuthentication.java
index fe187412e632c52200dbe5476f4b0069c95a6013..b4c67c3d3532319333aff3485da06d1c9c5331a0 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/ClientAuthentication.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/ClientAuthentication.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.serialization.View;
 import de.thm.arsnova.security.User;
 import org.springframework.security.authentication.AnonymousAuthenticationToken;
 import org.springframework.security.core.Authentication;
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java b/src/main/java/de/thm/arsnova/model/migration/v2/Comment.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/Comment.java
index 0da816cbf93f296d8ecb2404b5e081e8b05821f9..de12c663051f087477a585b5769af5b46d8e0ca2 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/Comment.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/CommentReadingCount.java b/src/main/java/de/thm/arsnova/model/migration/v2/CommentReadingCount.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/CommentReadingCount.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/CommentReadingCount.java
index 79271bad0eae4cf7bba61baf15b857e75104c61c..686a4149abf97b4eeed1cccc1056cf600f03b015 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/CommentReadingCount.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/CommentReadingCount.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Content.java b/src/main/java/de/thm/arsnova/model/migration/v2/Content.java
similarity index 99%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/Content.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/Content.java
index 04c920121d50fa139963dd4fb0bc9fd2912a7d5f..f804e3259e4a20a4229b693bef825184c7eb85b3 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/Content.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/Content.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/DbUser.java b/src/main/java/de/thm/arsnova/model/migration/v2/DbUser.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/DbUser.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/DbUser.java
index 610be70a6727aec686769ad038d7dc10d140d420..bcb6815e9df937d796e9201aeabdf9e8d8f8e484 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/DbUser.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/DbUser.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 /**
  * A user account for ARSnova's own registration and login process.
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Entity.java b/src/main/java/de/thm/arsnova/model/migration/v2/Entity.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/Entity.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/Entity.java
index 38528ee379bfe713c3aba13cb0c53e6ad6d0f40e..c76a7c1dd8f557ce99db88035f756e97c2b5c942 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/Entity.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/Entity.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 public interface Entity {
 	String getId();
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/LogEntry.java b/src/main/java/de/thm/arsnova/model/migration/v2/LogEntry.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/LogEntry.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/LogEntry.java
index a4c8b35ab52c4e58271c3dc7df5b24e8961bf543..b3e8632d95ebe54ec952825b1256d7f7a0fbc61b 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/LogEntry.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/LogEntry.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 
 import java.util.Map;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/LoggedIn.java b/src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/LoggedIn.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java
index d4b6e0a03a5edcc15495d37e6747b722356df18f..98b87059270a044012570aa05d75f937d4c3b78f 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/LoggedIn.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Motd.java b/src/main/java/de/thm/arsnova/model/migration/v2/Motd.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/Motd.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/Motd.java
index 2a3a80a94c2efe49e4b8e0dd3f4e43514d201088..440dbc9a1c26bc4d313db53e91bab004f82a0e56 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/Motd.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/Motd.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/MotdList.java b/src/main/java/de/thm/arsnova/model/migration/v2/MotdList.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/MotdList.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/MotdList.java
index d044b7b060da6f78f563b57088853997e8f5dfb8..8411386c57b89137a027d1dca22cebf07114fc21 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/MotdList.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/MotdList.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Room.java b/src/main/java/de/thm/arsnova/model/migration/v2/Room.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/Room.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/Room.java
index 0d986332030e261d59967f0cde88184ddb5cf293..566bc5a96f7670ff7a402c89c98e05a8cb13b195 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/Room.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/Room.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.ScoreOptions;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.ScoreOptions;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/RoomFeature.java b/src/main/java/de/thm/arsnova/model/migration/v2/RoomFeature.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/RoomFeature.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/RoomFeature.java
index aed77c9e575ea0718ccedb9bb25305cb7da3b3ab..f8635ac89b339538914c42ad359c06f0d8b3e047 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/RoomFeature.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/RoomFeature.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/RoomInfo.java b/src/main/java/de/thm/arsnova/model/migration/v2/RoomInfo.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/RoomInfo.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/RoomInfo.java
index e2251660652b757f80ff5cef78c02a1ba9c1e874..599115d89bf6ec41755a58bcda58f4156e151b0e 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/RoomInfo.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/RoomInfo.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/VisitedRoom.java b/src/main/java/de/thm/arsnova/model/migration/v2/VisitedRoom.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/entities/migration/v2/VisitedRoom.java
rename to src/main/java/de/thm/arsnova/model/migration/v2/VisitedRoom.java
index 4434d33d24d1333e591240baf34416d0357da98a..ffa741467165b1e5f5b3bcea06bb2c57a126046d 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/v2/VisitedRoom.java
+++ b/src/main/java/de/thm/arsnova/model/migration/v2/VisitedRoom.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration.v2;
+package de.thm.arsnova.model.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 
 /**
diff --git a/src/main/java/de/thm/arsnova/entities/package-info.java b/src/main/java/de/thm/arsnova/model/package-info.java
similarity index 63%
rename from src/main/java/de/thm/arsnova/entities/package-info.java
rename to src/main/java/de/thm/arsnova/model/package-info.java
index ed8a4656b1050c9d4e0df681eb85c80d97d4a64e..91ada1f83648ab601e38cb94ddc8115d4de66b33 100644
--- a/src/main/java/de/thm/arsnova/entities/package-info.java
+++ b/src/main/java/de/thm/arsnova/model/package-info.java
@@ -1,4 +1,4 @@
 /**
  * Classes to translate objects to and from JSON
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentMixIn.java b/src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentMixIn.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentMixIn.java
rename to src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentMixIn.java
index cf0c862f792e6133606a89e02a4108d555794860..74a16826ea9aeb38608e45f908bfc6f340d090e1 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentMixIn.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentMixIn.java
@@ -15,13 +15,13 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.model.Entity;
 
 @JsonIgnoreProperties(value = {"type"}, allowGetters = true)
 public abstract class CouchDbDocumentMixIn {
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java b/src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentModule.java
similarity index 84%
rename from src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
rename to src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentModule.java
index bf6cfd26ce418719134b4c423d34094cbbb27b91..a297aa28a297bd7cf75a615538fc45b825ba3078 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentModule.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.databind.module.SimpleModule;
-import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.model.Entity;
 
 public class CouchDbDocumentModule extends SimpleModule {
 	public CouchDbDocumentModule() {
@@ -28,6 +28,6 @@ public class CouchDbDocumentModule extends SimpleModule {
 	@Override
 	public void setupModule(SetupContext context) {
 		context.setMixInAnnotations(Entity.class, CouchDbDocumentMixIn.class);
-		context.setMixInAnnotations(de.thm.arsnova.entities.migration.v2.Entity.class, CouchDbDocumentV2MixIn.class);
+		context.setMixInAnnotations(de.thm.arsnova.model.migration.v2.Entity.class, CouchDbDocumentV2MixIn.class);
 	}
 }
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentV2MixIn.java b/src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentV2MixIn.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentV2MixIn.java
rename to src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentV2MixIn.java
index b1cba4e5d10209e3d49751e1ba6d4209ae00c6be..4e06a77e6f3aaa851a5038370f82787cdd879375 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentV2MixIn.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/CouchDbDocumentV2MixIn.java
@@ -15,13 +15,13 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.model.Entity;
 
 @JsonIgnoreProperties(value = {"type"}, allowGetters = true)
 public abstract class CouchDbDocumentV2MixIn {
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbObjectMapperFactory.java b/src/main/java/de/thm/arsnova/model/serialization/CouchDbObjectMapperFactory.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/entities/serialization/CouchDbObjectMapperFactory.java
rename to src/main/java/de/thm/arsnova/model/serialization/CouchDbObjectMapperFactory.java
index 6fbbc63596e3d21d51e7649d809bee9b0e3362a2..748b65c6a8350c3572a51d7ffd938d9a453eb7ac 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbObjectMapperFactory.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/CouchDbObjectMapperFactory.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.databind.MapperFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java b/src/main/java/de/thm/arsnova/model/serialization/CouchDbTypeFieldConverter.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java
rename to src/main/java/de/thm/arsnova/model/serialization/CouchDbTypeFieldConverter.java
index b9fefcadb0dc6444cefee70bea07c14b4c00fc18..9918dfc7200a8ea6b3e8e0c29494ce30d5693826 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/CouchDbTypeFieldConverter.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.type.TypeFactory;
 import com.fasterxml.jackson.databind.util.Converter;
-import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.model.Entity;
 
 public class CouchDbTypeFieldConverter implements Converter<Class<? extends Entity>, String> {
 
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldV2Converter.java b/src/main/java/de/thm/arsnova/model/serialization/CouchDbTypeFieldV2Converter.java
similarity index 78%
rename from src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldV2Converter.java
rename to src/main/java/de/thm/arsnova/model/serialization/CouchDbTypeFieldV2Converter.java
index d0ed69da24e64359ee954d715a0aa54b73559c1b..41ee2c09954dde67c44dc06720892f4fc268cdcc 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldV2Converter.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/CouchDbTypeFieldV2Converter.java
@@ -15,20 +15,20 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.type.TypeFactory;
 import com.fasterxml.jackson.databind.util.Converter;
-import de.thm.arsnova.entities.migration.v2.Answer;
-import de.thm.arsnova.entities.migration.v2.Comment;
-import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.migration.v2.DbUser;
-import de.thm.arsnova.entities.migration.v2.Entity;
-import de.thm.arsnova.entities.migration.v2.LogEntry;
-import de.thm.arsnova.entities.migration.v2.Motd;
-import de.thm.arsnova.entities.migration.v2.MotdList;
-import de.thm.arsnova.entities.migration.v2.Room;
+import de.thm.arsnova.model.migration.v2.Answer;
+import de.thm.arsnova.model.migration.v2.Comment;
+import de.thm.arsnova.model.migration.v2.Content;
+import de.thm.arsnova.model.migration.v2.DbUser;
+import de.thm.arsnova.model.migration.v2.Entity;
+import de.thm.arsnova.model.migration.v2.LogEntry;
+import de.thm.arsnova.model.migration.v2.Motd;
+import de.thm.arsnova.model.migration.v2.MotdList;
+import de.thm.arsnova.model.migration.v2.Room;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/FormatAnswerTypeIdResolver.java b/src/main/java/de/thm/arsnova/model/serialization/FormatAnswerTypeIdResolver.java
similarity index 87%
rename from src/main/java/de/thm/arsnova/entities/serialization/FormatAnswerTypeIdResolver.java
rename to src/main/java/de/thm/arsnova/model/serialization/FormatAnswerTypeIdResolver.java
index 5e2f3335bdbb9e908cb66f31119665d0c118e67e..c3d48485a50370ef8ee9789f07b0f506fbd6fd0a 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/FormatAnswerTypeIdResolver.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/FormatAnswerTypeIdResolver.java
@@ -1,14 +1,14 @@
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.databind.DatabindContext;
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase;
 import com.fasterxml.jackson.databind.type.TypeFactory;
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.ChoiceAnswer;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.TextAnswer;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.ChoiceAnswer;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.TextAnswer;
 
 import java.io.IOException;
 
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/FormatContentTypeIdResolver.java b/src/main/java/de/thm/arsnova/model/serialization/FormatContentTypeIdResolver.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/entities/serialization/FormatContentTypeIdResolver.java
rename to src/main/java/de/thm/arsnova/model/serialization/FormatContentTypeIdResolver.java
index 2b28344601f25799e42d92a105ff2b031b51b763..9936b8e97aa0d72cbad2a4bbdd57a589685e7c6b 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/FormatContentTypeIdResolver.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/FormatContentTypeIdResolver.java
@@ -1,12 +1,12 @@
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.databind.DatabindContext;
 import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase;
 import com.fasterxml.jackson.databind.type.TypeFactory;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.Content;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.Content;
 
 import java.io.IOException;
 
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/View.java b/src/main/java/de/thm/arsnova/model/serialization/View.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/entities/serialization/View.java
rename to src/main/java/de/thm/arsnova/model/serialization/View.java
index e57b49f864a45bb66a5349c512e72202cdc9b376..8a68295783a1d0565069f79271c4f7a9990cad30 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/View.java
+++ b/src/main/java/de/thm/arsnova/model/serialization/View.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.serialization;
+package de.thm.arsnova.model.serialization;
 
 public class View {
 	public interface Public {}
diff --git a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java b/src/main/java/de/thm/arsnova/model/transport/AnswerQueueElement.java
similarity index 87%
rename from src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
rename to src/main/java/de/thm/arsnova/model/transport/AnswerQueueElement.java
index 6270b09f9c7e0a55dc7ba31a9c03aa1603e9f66c..b199acb6eec2c03bf635d7e2fc74e3e6eed67dbd 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
+++ b/src/main/java/de/thm/arsnova/model/transport/AnswerQueueElement.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.transport;
+package de.thm.arsnova.model.transport;
 
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 /**
  * An answer that is about to get saved in the database. Answers are not saved immediately, they are instead stored
diff --git a/src/main/java/de/thm/arsnova/entities/transport/ImportExportContainer.java b/src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/entities/transport/ImportExportContainer.java
rename to src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java
index 6ff8bfd5d36e3e3f3751936227a69de34c3b48dd..ac2814acb1dc3cbe87d1bad8774f6381c77e0609 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/ImportExportContainer.java
+++ b/src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java
@@ -15,18 +15,18 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.transport;
+package de.thm.arsnova.model.transport;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.migration.v2.Answer;
-import de.thm.arsnova.entities.migration.v2.Comment;
-import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.migration.v2.Motd;
-import de.thm.arsnova.entities.migration.v2.Room;
-import de.thm.arsnova.entities.migration.v2.RoomFeature;
-import de.thm.arsnova.entities.migration.v2.RoomInfo;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.Answer;
+import de.thm.arsnova.model.migration.v2.Comment;
+import de.thm.arsnova.model.migration.v2.Content;
+import de.thm.arsnova.model.migration.v2.Motd;
+import de.thm.arsnova.model.migration.v2.Room;
+import de.thm.arsnova.model.migration.v2.RoomFeature;
+import de.thm.arsnova.model.migration.v2.RoomInfo;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/transport/ScoreStatistics.java b/src/main/java/de/thm/arsnova/model/transport/ScoreStatistics.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/entities/transport/ScoreStatistics.java
rename to src/main/java/de/thm/arsnova/model/transport/ScoreStatistics.java
index ee81344703345b96660bdcf4d0b4698ecc221a9f..0a09a2292f7d297d0397b51d7e152cdf1afd24ba 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/ScoreStatistics.java
+++ b/src/main/java/de/thm/arsnova/model/transport/ScoreStatistics.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.transport;
+package de.thm.arsnova.model.transport;
 
 import com.fasterxml.jackson.annotation.JsonView;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
diff --git a/src/main/java/de/thm/arsnova/entities/transport/package-info.java b/src/main/java/de/thm/arsnova/model/transport/package-info.java
similarity index 86%
rename from src/main/java/de/thm/arsnova/entities/transport/package-info.java
rename to src/main/java/de/thm/arsnova/model/transport/package-info.java
index a6920b7c81f41a1c752a0ea3e72ab880ec59016c..39062caccb756f2cfa9c0f18c4f24ce242e1e4b0 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/package-info.java
+++ b/src/main/java/de/thm/arsnova/model/transport/package-info.java
@@ -4,4 +4,4 @@
  * 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;
+package de.thm.arsnova.model.transport;
diff --git a/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java b/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java
deleted file mode 100644
index 8396dbedde24ebeca6165e479cc6becd52b1035d..0000000000000000000000000000000000000000
--- a/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.thm.arsnova.persistance;
-
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.services.score.Score;
-
-public interface SessionStatisticsRepository {
-	Score getLearningProgress(Room room);
-}
diff --git a/src/main/java/de/thm/arsnova/persistance/StatisticsRepository.java b/src/main/java/de/thm/arsnova/persistance/StatisticsRepository.java
deleted file mode 100644
index ea334f0d6932f2770a65c3f24aa71c7418a73847..0000000000000000000000000000000000000000
--- a/src/main/java/de/thm/arsnova/persistance/StatisticsRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.thm.arsnova.persistance;
-
-import de.thm.arsnova.entities.Statistics;
-
-public interface StatisticsRepository {
-	Statistics getStatistics();
-}
diff --git a/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java b/src/main/java/de/thm/arsnova/persistence/AnswerRepository.java
similarity index 89%
rename from src/main/java/de/thm/arsnova/persistance/AnswerRepository.java
rename to src/main/java/de/thm/arsnova/persistence/AnswerRepository.java
index f60df296f5c69f71aea87c74921a54c8b805f41b..c07995b557722bf78420a8f18077dcea71d90e8e 100644
--- a/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/AnswerRepository.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistance/AttachmentRepository.java b/src/main/java/de/thm/arsnova/persistence/AttachmentRepository.java
similarity index 52%
rename from src/main/java/de/thm/arsnova/persistance/AttachmentRepository.java
rename to src/main/java/de/thm/arsnova/persistence/AttachmentRepository.java
index 68a8d0c461e9b3f883d75dfbca3a76e3aa88b5ab..fb6bc64e1494ed09dc566db37cf2c6afdb62132f 100644
--- a/src/main/java/de/thm/arsnova/persistance/AttachmentRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/AttachmentRepository.java
@@ -1,6 +1,6 @@
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.Attachment;
+import de.thm.arsnova.model.Attachment;
 
 public interface AttachmentRepository extends CrudRepository<Attachment, String> {
 }
diff --git a/src/main/java/de/thm/arsnova/persistance/CommentRepository.java b/src/main/java/de/thm/arsnova/persistence/CommentRepository.java
similarity index 74%
rename from src/main/java/de/thm/arsnova/persistance/CommentRepository.java
rename to src/main/java/de/thm/arsnova/persistence/CommentRepository.java
index 69881eb480db3ea01ec85941caf5ad9ed1384f70..afa7bf82e6884600184fd7b7c12f0b6db190edc6 100644
--- a/src/main/java/de/thm/arsnova/persistance/CommentRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/CommentRepository.java
@@ -1,8 +1,8 @@
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.migration.v2.CommentReadingCount;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.CommentReadingCount;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistance/ContentRepository.java b/src/main/java/de/thm/arsnova/persistence/ContentRepository.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/persistance/ContentRepository.java
rename to src/main/java/de/thm/arsnova/persistence/ContentRepository.java
index 58828389182d85172f57b3bceb1ae4f4a28770f8..89be0738817873d57dc8cb1212e6b7ba0e70d44b 100644
--- a/src/main/java/de/thm/arsnova/persistance/ContentRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/ContentRepository.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistance/CrudRepository.java b/src/main/java/de/thm/arsnova/persistence/CrudRepository.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/persistance/CrudRepository.java
rename to src/main/java/de/thm/arsnova/persistence/CrudRepository.java
index 2461a2cefaf819bdec1388bbe52df4998533f780..98390d49fa3e5a585438b88cd1d7940a7eefca2d 100644
--- a/src/main/java/de/thm/arsnova/persistance/CrudRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/CrudRepository.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
 /**
  * This is a temporary extension to {@link org.springframework.data.repository.CrudRepository} which simplifies the
diff --git a/src/main/java/de/thm/arsnova/persistance/LogEntryRepository.java b/src/main/java/de/thm/arsnova/persistence/LogEntryRepository.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/persistance/LogEntryRepository.java
rename to src/main/java/de/thm/arsnova/persistence/LogEntryRepository.java
index f6e059a90e271c00ab22fd9719a1cd85d209535b..49d91f5113e6e1ffd4ce75f5f97ea1033a1db241 100644
--- a/src/main/java/de/thm/arsnova/persistance/LogEntryRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/LogEntryRepository.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.migration.v2.LogEntry;
+import de.thm.arsnova.model.migration.v2.LogEntry;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/persistance/MotdRepository.java b/src/main/java/de/thm/arsnova/persistence/MotdRepository.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/persistance/MotdRepository.java
rename to src/main/java/de/thm/arsnova/persistence/MotdRepository.java
index 93df79481197489d85f2ffea5b579e427576d2a2..f320bbe66d3e6c15e51803f72792649c8706f5b9 100644
--- a/src/main/java/de/thm/arsnova/persistance/MotdRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/MotdRepository.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.Motd;
+import de.thm.arsnova.model.Motd;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistance/RoomRepository.java b/src/main/java/de/thm/arsnova/persistence/RoomRepository.java
similarity index 89%
rename from src/main/java/de/thm/arsnova/persistance/RoomRepository.java
rename to src/main/java/de/thm/arsnova/persistence/RoomRepository.java
index b539cc7e259b26e6a2af19abb828bcc35ed14e92..9e811203ca4b6e2691dff15ebb9364ac92c21f0d 100644
--- a/src/main/java/de/thm/arsnova/persistance/RoomRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/RoomRepository.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
 import de.thm.arsnova.connector.model.Course;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ImportExportContainer;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ImportExportContainer;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistence/SessionStatisticsRepository.java b/src/main/java/de/thm/arsnova/persistence/SessionStatisticsRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..7812c1469c5aa3afe9d4f71a5821d0bd21ee775a
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/persistence/SessionStatisticsRepository.java
@@ -0,0 +1,8 @@
+package de.thm.arsnova.persistence;
+
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.service.score.Score;
+
+public interface SessionStatisticsRepository {
+	Score getLearningProgress(Room room);
+}
diff --git a/src/main/java/de/thm/arsnova/persistence/StatisticsRepository.java b/src/main/java/de/thm/arsnova/persistence/StatisticsRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..03e7be384ea81fdfc757eea7e71d89e33a0ef976
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/persistence/StatisticsRepository.java
@@ -0,0 +1,7 @@
+package de.thm.arsnova.persistence;
+
+import de.thm.arsnova.model.Statistics;
+
+public interface StatisticsRepository {
+	Statistics getStatistics();
+}
diff --git a/src/main/java/de/thm/arsnova/persistance/UserRepository.java b/src/main/java/de/thm/arsnova/persistence/UserRepository.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/persistance/UserRepository.java
rename to src/main/java/de/thm/arsnova/persistence/UserRepository.java
index a0ee1b4886c35ec2c3d0ff744f0da10f108efab4..61ab8b2589d247bbfebbb1dd98eab888cb6193d3 100644
--- a/src/main/java/de/thm/arsnova/persistance/UserRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/UserRepository.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance;
+package de.thm.arsnova.persistence;
 
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.UserProfile;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbAnswerRepository.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbAnswerRepository.java
index 9138c8d0505f13045559e214bf54ec29f5352263..026246bb3b9b3cb7bdd8cf3bd548fd579c592b5b 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbAnswerRepository.java
@@ -1,12 +1,12 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Lists;
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.persistance.AnswerRepository;
-import de.thm.arsnova.persistance.LogEntryRepository;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.persistence.AnswerRepository;
+import de.thm.arsnova.persistence.LogEntryRepository;
 import org.ektorp.BulkDeleteDocument;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAttachmentRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbAttachmentRepository.java
similarity index 68%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAttachmentRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbAttachmentRepository.java
index 6e8bbd601159be1fe090c675ad8ef7a1cd809098..409b9170da01da87752f9f3019fb626e3eb0385b 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAttachmentRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbAttachmentRepository.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
-import de.thm.arsnova.entities.Attachment;
-import de.thm.arsnova.persistance.AttachmentRepository;
+import de.thm.arsnova.model.Attachment;
+import de.thm.arsnova.persistence.AttachmentRepository;
 import org.ektorp.CouchDbConnector;
 
 public class CouchDbAttachmentRepository extends CouchDbCrudRepository<Attachment> implements AttachmentRepository {
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbCommentRepository.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbCommentRepository.java
index 1cad0e06f6959722c4ee3f22be53413887f595b1..8b353d242c545e91e57b40a09d5539293048070c 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbCommentRepository.java
@@ -1,11 +1,11 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
 import com.fasterxml.jackson.databind.JsonNode;
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.migration.v2.CommentReadingCount;
-import de.thm.arsnova.persistance.CommentRepository;
-import de.thm.arsnova.persistance.LogEntryRepository;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.CommentReadingCount;
+import de.thm.arsnova.persistence.CommentRepository;
+import de.thm.arsnova.persistence.LogEntryRepository;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.UpdateConflictException;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbContentRepository.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbContentRepository.java
index 71c63836fbf21e79409c258d2b5429272988c10e..5defab3aff88efcdcae75519b36795bb9d7931d6 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbContentRepository.java
@@ -1,9 +1,9 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.LogEntryRepository;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.LogEntryRepository;
 import org.ektorp.BulkDeleteDocument;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCrudRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbCrudRepository.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCrudRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbCrudRepository.java
index dd6c5b975d23c9fa69a5358b679408930ff5d300..39285cd0dc1749133f9cc0694618349f31b9ab4b 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCrudRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbCrudRepository.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
-import de.thm.arsnova.entities.Entity;
-import de.thm.arsnova.persistance.CrudRepository;
+import de.thm.arsnova.model.Entity;
+import de.thm.arsnova.persistence.CrudRepository;
 import org.ektorp.BulkDeleteDocument;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.support.CouchDbRepositorySupport;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbInitializer.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbInitializer.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbInitializer.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbInitializer.java
index 63191a4362f57738368ef0c3400135dcb171a786..697ffc06d95fcda5e40c9e37b94221adb01009b5 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbInitializer.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbInitializer.java
@@ -1,10 +1,10 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import de.thm.arsnova.entities.MigrationState;
-import de.thm.arsnova.persistance.couchdb.migrations.MigrationExecutor;
-import de.thm.arsnova.services.StatusService;
+import de.thm.arsnova.model.MigrationState;
+import de.thm.arsnova.persistence.couchdb.migrations.MigrationExecutor;
+import de.thm.arsnova.service.StatusService;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.DbAccessException;
 import org.ektorp.DocumentNotFoundException;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbLogEntryRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbLogEntryRepository.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbLogEntryRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbLogEntryRepository.java
index c25d5b7b0504cebb6afd4df5b567c3fa1235d665..1af116fa21434b770b276c1c8fbb495f2c817436 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbLogEntryRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbLogEntryRepository.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
-import de.thm.arsnova.entities.migration.v2.LogEntry;
-import de.thm.arsnova.persistance.LogEntryRepository;
+import de.thm.arsnova.model.migration.v2.LogEntry;
+import de.thm.arsnova.persistence.LogEntryRepository;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.support.CouchDbRepositorySupport;
 import org.slf4j.Logger;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbMotdRepository.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbMotdRepository.java
index 0830118c56ae9320c4be1154aae9f51c9620bb26..6d1e01fa896362793b4a26b0658455cece64ed09 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbMotdRepository.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
-import de.thm.arsnova.entities.Motd;
-import de.thm.arsnova.persistance.MotdRepository;
+import de.thm.arsnova.model.Motd;
+import de.thm.arsnova.persistence.MotdRepository;
 import org.ektorp.CouchDbConnector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbRoomRepository.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbRoomRepository.java
index d11af8b7bf6e9b1ee4e74d56f4d4531535c82d54..6a7c4e32ad95e32d12a41d0ad021b0b3004b2929 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbRoomRepository.java
@@ -15,16 +15,16 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
 import de.thm.arsnova.connector.model.Course;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.RoomStatistics;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ImportExportContainer;
-import de.thm.arsnova.persistance.LogEntryRepository;
-import de.thm.arsnova.persistance.MotdRepository;
-import de.thm.arsnova.persistance.RoomRepository;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.RoomStatistics;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ImportExportContainer;
+import de.thm.arsnova.persistence.LogEntryRepository;
+import de.thm.arsnova.persistence.MotdRepository;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.ViewQuery;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbSessionStatisticsRepository.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbSessionStatisticsRepository.java
index ff689d905d7edf936157a8ca08f9355adf6cb44d..4a1b49c7e936debbc1ee2dfb28acad6710e778a9 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbSessionStatisticsRepository.java
@@ -1,9 +1,9 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
 import com.fasterxml.jackson.databind.JsonNode;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
-import de.thm.arsnova.services.score.Score;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
+import de.thm.arsnova.service.score.Score;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.ViewResult;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbStatisticsRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbStatisticsRepository.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbStatisticsRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbStatisticsRepository.java
index 3506f7da41bc4033de687df6536a96da4fb0187a..e45c3dc7e83f5bc47bd27ee1f6a510de566d995f 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbStatisticsRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbStatisticsRepository.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
-import de.thm.arsnova.entities.Statistics;
-import de.thm.arsnova.persistance.StatisticsRepository;
+import de.thm.arsnova.model.Statistics;
+import de.thm.arsnova.persistence.StatisticsRepository;
 import org.ektorp.CouchDbConnector;
 import org.ektorp.DbAccessException;
 import org.ektorp.ViewResult;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbUserRepository.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbUserRepository.java
index fb4364b0c61cc7b970b971639aa1b632b5056a32..f9cf3bcb74e3c97b58d390560c31a53edfa34863 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/CouchDbUserRepository.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb;
+package de.thm.arsnova.persistence.couchdb;
 
 import com.google.common.collect.Lists;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.persistance.UserRepository;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.persistence.UserRepository;
 import org.ektorp.BulkDeleteDocument;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/MigrateFromLegacyCondition.java b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/MigrateFromLegacyCondition.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/migrations/MigrateFromLegacyCondition.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/migrations/MigrateFromLegacyCondition.java
index 0c2d1c68149cfc2ff077703329949db07011bf3f..b81b9369af53afc9065b117a2cdc126011df19c6 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/MigrateFromLegacyCondition.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/MigrateFromLegacyCondition.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.persistance.couchdb.migrations;
+package de.thm.arsnova.persistence.couchdb.migrations;
 
 import org.springframework.context.annotation.Condition;
 import org.springframework.context.annotation.ConditionContext;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/Migration.java b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/Migration.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/migrations/Migration.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/migrations/Migration.java
index 5c74f9dc03c9b60da881196381035fb5eb1f4e44..e2d43a08a89f080e63df63571fad495be53d15ca 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/Migration.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/Migration.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb.migrations;
+package de.thm.arsnova.persistence.couchdb.migrations;
 
 public interface Migration {
 	String getId();
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/MigrationExecutor.java b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/MigrationExecutor.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/migrations/MigrationExecutor.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/migrations/MigrationExecutor.java
index 68554e69cce5cedeba60c56ca8a3d012b90142c1..ff74e2356d6f237ecaf2202c573e31d95381556e 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/MigrationExecutor.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/MigrationExecutor.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb.migrations;
+package de.thm.arsnova.persistence.couchdb.migrations;
 
-import de.thm.arsnova.entities.MigrationState;
+import de.thm.arsnova.model.MigrationState;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/V2ToV3Migration.java b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/V2ToV3Migration.java
similarity index 85%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/migrations/V2ToV3Migration.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/migrations/V2ToV3Migration.java
index 9a258a9519527981937c1d8847bf4294c2de1573..37b57cedfd8b361b963e7a1c227e6b0a133c328e 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/migrations/V2ToV3Migration.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/migrations/V2ToV3Migration.java
@@ -15,23 +15,23 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.persistance.couchdb.migrations;
-
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Motd;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.migration.FromV2Migrator;
-import de.thm.arsnova.entities.migration.v2.DbUser;
-import de.thm.arsnova.entities.migration.v2.LoggedIn;
-import de.thm.arsnova.entities.migration.v2.MotdList;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.RoomRepository;
-import de.thm.arsnova.persistance.UserRepository;
-import de.thm.arsnova.persistance.couchdb.support.MangoCouchDbConnector;
-import de.thm.arsnova.persistance.couchdb.support.PagedMangoResponse;
+package de.thm.arsnova.persistence.couchdb.migrations;
+
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Motd;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.migration.FromV2Migrator;
+import de.thm.arsnova.model.migration.v2.DbUser;
+import de.thm.arsnova.model.migration.v2.LoggedIn;
+import de.thm.arsnova.model.migration.v2.MotdList;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.RoomRepository;
+import de.thm.arsnova.persistence.UserRepository;
+import de.thm.arsnova.persistence.couchdb.support.MangoCouchDbConnector;
+import de.thm.arsnova.persistence.couchdb.support.PagedMangoResponse;
 import org.ektorp.DbAccessException;
 import org.ektorp.DocumentNotFoundException;
 import org.slf4j.Logger;
@@ -185,9 +185,9 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<UserProfile> profilesV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.DbUser> response =
-					fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.DbUser.class);
-			List<de.thm.arsnova.entities.migration.v2.DbUser> dbUsersV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.DbUser> response =
+					fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.DbUser.class);
+			List<de.thm.arsnova.model.migration.v2.DbUser> dbUsersV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (dbUsersV2.size() == 0) {
 				break;
@@ -241,9 +241,9 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<UserProfile> profilesV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.LoggedIn> response =
-					fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.LoggedIn.class);
-			List<de.thm.arsnova.entities.migration.v2.LoggedIn> loggedInsV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.LoggedIn> response =
+					fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.LoggedIn.class);
+			List<de.thm.arsnova.model.migration.v2.LoggedIn> loggedInsV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (loggedInsV2.isEmpty()) {
 				break;
@@ -275,15 +275,15 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<Room> roomsV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.Room> response =
-					fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.Room.class);
-			List<de.thm.arsnova.entities.migration.v2.Room> roomsV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.Room> response =
+					fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.Room.class);
+			List<de.thm.arsnova.model.migration.v2.Room> roomsV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (roomsV2.size() == 0) {
 				break;
 			}
 
-			for (de.thm.arsnova.entities.migration.v2.Room roomV2 : roomsV2) {
+			for (de.thm.arsnova.model.migration.v2.Room roomV2 : roomsV2) {
 				List<UserProfile> profiles = userRepository.findByLoginId(roomV2.getCreator());
 				if (profiles.size() == 0) {
 					logger.warn("Skipping migration of Room {}. Creator {} does not exist.",
@@ -314,15 +314,15 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<Motd> motdsV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.Motd> response =
-					fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.Motd.class);
-			List<de.thm.arsnova.entities.migration.v2.Motd> motdsV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.Motd> response =
+					fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.Motd.class);
+			List<de.thm.arsnova.model.migration.v2.Motd> motdsV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (motdsV2.size() == 0) {
 				break;
 			}
 
-			for (de.thm.arsnova.entities.migration.v2.Motd motdV2 : motdsV2) {
+			for (de.thm.arsnova.model.migration.v2.Motd motdV2 : motdsV2) {
 				if (motdV2.getAudience().equals("session")) {
 					Room room = roomRepository.findByShortId(motdV2.getSessionkey());
 					/* sessionId has not been set for some old MotDs */
@@ -353,15 +353,15 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<Comment> commentsV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.Comment> response =
-					fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.Comment.class);
-			List<de.thm.arsnova.entities.migration.v2.Comment> commentsV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.Comment> response =
+					fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.Comment.class);
+			List<de.thm.arsnova.model.migration.v2.Comment> commentsV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (commentsV2.size() == 0) {
 				break;
 			}
 
-			for (de.thm.arsnova.entities.migration.v2.Comment commentV2 : commentsV2) {
+			for (de.thm.arsnova.model.migration.v2.Comment commentV2 : commentsV2) {
 				try {
 					Room roomV3 = roomRepository.findOne(commentV2.getSessionId());
 					List<UserProfile> profiles = Collections.EMPTY_LIST;
@@ -401,15 +401,15 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<Content> contentsV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.Content> response =
-					fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.Content.class);
-			List<de.thm.arsnova.entities.migration.v2.Content> contentsV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.Content> response =
+					fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.Content.class);
+			List<de.thm.arsnova.model.migration.v2.Content> contentsV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (contentsV2.size() == 0) {
 				break;
 			}
 
-			for (de.thm.arsnova.entities.migration.v2.Content contentV2 : contentsV2) {
+			for (de.thm.arsnova.model.migration.v2.Content contentV2 : contentsV2) {
 				if (roomRepository.existsById(contentV2.getSessionId())) {
 					try {
 						contentsV3.add(migrator.migrate(contentV2));
@@ -439,15 +439,15 @@ public class V2ToV3Migration implements Migration {
 			logger.debug("Migration progress: {}, bookmark: {}", skip, bookmark);
 			query.setBookmark(bookmark);
 			List<Answer> answersV3 = new ArrayList<>();
-			PagedMangoResponse<de.thm.arsnova.entities.migration.v2.Answer> response =
-					 fromConnector.queryForPage(query, de.thm.arsnova.entities.migration.v2.Answer.class);
-			List<de.thm.arsnova.entities.migration.v2.Answer> answersV2 = response.getEntities();
+			PagedMangoResponse<de.thm.arsnova.model.migration.v2.Answer> response =
+					 fromConnector.queryForPage(query, de.thm.arsnova.model.migration.v2.Answer.class);
+			List<de.thm.arsnova.model.migration.v2.Answer> answersV2 = response.getEntities();
 			bookmark = response.getBookmark();
 			if (answersV2.size() == 0) {
 				break;
 			}
 
-			for (de.thm.arsnova.entities.migration.v2.Answer answerV2 : answersV2) {
+			for (de.thm.arsnova.model.migration.v2.Answer answerV2 : answersV2) {
 				if (!roomRepository.existsById(answerV2.getSessionId())) {
 					logger.warn("Skipping migration of Answer {}. Room {} does not exist.",
 							answerV2.getId(), answerV2.getQuestionId());
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoCouchDbConnector.java b/src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoCouchDbConnector.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoCouchDbConnector.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoCouchDbConnector.java
index 6870d989107291dd199b456e40d7ae1bd18864ba..b8f61d21feb9955069481d14c30225fa6632ca26 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoCouchDbConnector.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoCouchDbConnector.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.persistance.couchdb.support;
+package de.thm.arsnova.persistence.couchdb.support;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -8,7 +8,7 @@ import com.fasterxml.jackson.databind.JavaType;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.type.TypeFactory;
 import com.fasterxml.jackson.databind.util.Converter;
-import de.thm.arsnova.entities.serialization.View;
+import de.thm.arsnova.model.serialization.View;
 import org.ektorp.CouchDbInstance;
 import org.ektorp.DbAccessException;
 import org.ektorp.http.HttpResponse;
@@ -17,14 +17,12 @@ import org.ektorp.impl.StdCouchDbConnector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * This Connector adds a query method which uses CouchDB's Mango API to retrieve data.
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoQueryResultParser.java b/src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoQueryResultParser.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoQueryResultParser.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoQueryResultParser.java
index b5eaccfac8e6301f97dda701bc9f8677c9e47d43..c8fd9289ec5512d9f440f1d0e5cfe499205d895b 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoQueryResultParser.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoQueryResultParser.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.persistance.couchdb.support;
+package de.thm.arsnova.persistence.couchdb.support;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonToken;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoResponseHandler.java b/src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoResponseHandler.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoResponseHandler.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoResponseHandler.java
index ebe116b616a8ff1bd258fc45cccc584ba47d0180..84ae2275c7781d5330d61954e23a39523e0db5f5 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/support/MangoResponseHandler.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/support/MangoResponseHandler.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.persistance.couchdb.support;
+package de.thm.arsnova.persistence.couchdb.support;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.ektorp.http.HttpResponse;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/support/PagedMangoResponse.java b/src/main/java/de/thm/arsnova/persistence/couchdb/support/PagedMangoResponse.java
similarity index 90%
rename from src/main/java/de/thm/arsnova/persistance/couchdb/support/PagedMangoResponse.java
rename to src/main/java/de/thm/arsnova/persistence/couchdb/support/PagedMangoResponse.java
index 180d7a45fe8271d96ee7b9d25e27b64e4780b964..a8f4b3793a4c902b78d3a5f17cf904f0c2e670ee 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/support/PagedMangoResponse.java
+++ b/src/main/java/de/thm/arsnova/persistence/couchdb/support/PagedMangoResponse.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.persistance.couchdb.support;
+package de.thm.arsnova.persistence.couchdb.support;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
index acb2861df8d9f8aa6f5b4b694e15ed7d83b99ab9..13ab5f6c949152710bd8d6f23d063f45a46cdf61 100644
--- a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
+++ b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
@@ -17,15 +17,15 @@
  */
 package de.thm.arsnova.security;
 
-import de.thm.arsnova.entities.Motd;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.persistance.CommentRepository;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.MotdRepository;
-import de.thm.arsnova.persistance.RoomRepository;
+import de.thm.arsnova.model.Motd;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.persistence.CommentRepository;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.MotdRepository;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/thm/arsnova/security/CasUserDetailsService.java b/src/main/java/de/thm/arsnova/security/CasUserDetailsService.java
index 430bb749346aaa65e3714196a972f7a4b5637ad7..a723eccb7a02d6bbd15d2962a52505165613bcd6 100644
--- a/src/main/java/de/thm/arsnova/security/CasUserDetailsService.java
+++ b/src/main/java/de/thm/arsnova/security/CasUserDetailsService.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.security;
 
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.service.UserService;
 import org.jasig.cas.client.validation.Assertion;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.cas.userdetails.AbstractCasAssertionUserDetailsService;
diff --git a/src/main/java/de/thm/arsnova/security/CustomLdapUserDetailsMapper.java b/src/main/java/de/thm/arsnova/security/CustomLdapUserDetailsMapper.java
index 822e3d31cc8edd6ed13f39a3265b8b6ea33c2196..e9859decb0dfe3a6584b0ff8b40a1de1dcf63db0 100644
--- a/src/main/java/de/thm/arsnova/security/CustomLdapUserDetailsMapper.java
+++ b/src/main/java/de/thm/arsnova/security/CustomLdapUserDetailsMapper.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.security;
 
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.service.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/de/thm/arsnova/security/GuestUserDetailsService.java b/src/main/java/de/thm/arsnova/security/GuestUserDetailsService.java
index b262ee38f634602ca3df0473c846fe67844ad735..5596de1c14cefc4e40bc8c870efab3ce1d18bc88 100644
--- a/src/main/java/de/thm/arsnova/security/GuestUserDetailsService.java
+++ b/src/main/java/de/thm/arsnova/security/GuestUserDetailsService.java
@@ -17,9 +17,8 @@
  */
 package de.thm.arsnova.security;
 
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.services.UserService;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.service.UserService;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
diff --git a/src/main/java/de/thm/arsnova/security/RegisteredUserDetailsService.java b/src/main/java/de/thm/arsnova/security/RegisteredUserDetailsService.java
index 209e6228201d06146fd9e4481167decea33b88d8..24b3fc1037c506877ac77ddd5cfced763e390fb7 100644
--- a/src/main/java/de/thm/arsnova/security/RegisteredUserDetailsService.java
+++ b/src/main/java/de/thm/arsnova/security/RegisteredUserDetailsService.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.security;
 
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.service.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
diff --git a/src/main/java/de/thm/arsnova/security/User.java b/src/main/java/de/thm/arsnova/security/User.java
index 0dae8e0bc0e1bd9392371cef19e11b1f272479a9..35f1fb64bc7448a532b0477724017431e90a2c28 100644
--- a/src/main/java/de/thm/arsnova/security/User.java
+++ b/src/main/java/de/thm/arsnova/security/User.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.security;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
 import org.springframework.security.core.GrantedAuthority;
 
 import java.util.Collection;
diff --git a/src/main/java/de/thm/arsnova/security/jwt/JwtService.java b/src/main/java/de/thm/arsnova/security/jwt/JwtService.java
index e1f4b1d4099e74bdc3792164de6ea330a2c2f827..204a60f55eb630064e4f38e010fa2d59125aad85 100644
--- a/src/main/java/de/thm/arsnova/security/jwt/JwtService.java
+++ b/src/main/java/de/thm/arsnova/security/jwt/JwtService.java
@@ -4,9 +4,9 @@ import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.UserProfile;
 import de.thm.arsnova.security.User;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.service.UserService;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
diff --git a/src/main/java/de/thm/arsnova/security/pac4j/OauthUserDetailsService.java b/src/main/java/de/thm/arsnova/security/pac4j/OauthUserDetailsService.java
index f3f415be824e131705958805d47c8469aa55f228..cb61fa8032fbb60b76065c18c9137d2deaad9040 100644
--- a/src/main/java/de/thm/arsnova/security/pac4j/OauthUserDetailsService.java
+++ b/src/main/java/de/thm/arsnova/security/pac4j/OauthUserDetailsService.java
@@ -17,9 +17,9 @@
  */
 package de.thm.arsnova.security.pac4j;
 
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.UserProfile;
 import de.thm.arsnova.security.User;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.service.UserService;
 import org.pac4j.oauth.profile.facebook.FacebookProfile;
 import org.pac4j.oauth.profile.google2.Google2Profile;
 import org.pac4j.oauth.profile.twitter.TwitterProfile;
diff --git a/src/main/java/de/thm/arsnova/services/AnswerService.java b/src/main/java/de/thm/arsnova/service/AnswerService.java
similarity index 87%
rename from src/main/java/de/thm/arsnova/services/AnswerService.java
rename to src/main/java/de/thm/arsnova/service/AnswerService.java
index ea1769e10953f0c170b927915b340dfaef4b88c4..536d410dd8057a67f44134bfb24d00d9111fa3e7 100644
--- a/src/main/java/de/thm/arsnova/services/AnswerService.java
+++ b/src/main/java/de/thm/arsnova/service/AnswerService.java
@@ -1,9 +1,9 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.TextAnswer;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.TextAnswer;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/services/AnswerServiceImpl.java b/src/main/java/de/thm/arsnova/service/AnswerServiceImpl.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/services/AnswerServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/AnswerServiceImpl.java
index 29320ebc6e926dd76856e92385cf5e09e0c96404..5b5535ad9ae94961325c58fb4a26e2946d54221c 100644
--- a/src/main/java/de/thm/arsnova/services/AnswerServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/AnswerServiceImpl.java
@@ -15,23 +15,23 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.	 If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
-
-import de.thm.arsnova.entities.Answer;
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.TextAnswer;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.AnswerQueueElement;
-import de.thm.arsnova.events.DeleteAnswerEvent;
-import de.thm.arsnova.events.NewAnswerEvent;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.persistance.AnswerRepository;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.RoomRepository;
+package de.thm.arsnova.service;
+
+import de.thm.arsnova.model.Answer;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.TextAnswer;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.AnswerQueueElement;
+import de.thm.arsnova.event.DeleteAnswerEvent;
+import de.thm.arsnova.event.NewAnswerEvent;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.persistence.AnswerRepository;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.ektorp.DbAccessException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/de/thm/arsnova/services/AttachmentService.java b/src/main/java/de/thm/arsnova/service/AttachmentService.java
similarity index 74%
rename from src/main/java/de/thm/arsnova/services/AttachmentService.java
rename to src/main/java/de/thm/arsnova/service/AttachmentService.java
index 854365313587002a0bb0af9601562c64adb6a904..cb49b4861fe6f6be556f5fd32c31244bd792b8b7 100644
--- a/src/main/java/de/thm/arsnova/services/AttachmentService.java
+++ b/src/main/java/de/thm/arsnova/service/AttachmentService.java
@@ -1,6 +1,6 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Attachment;
+import de.thm.arsnova.model.Attachment;
 import org.springframework.web.multipart.MultipartFile;
 
 public interface AttachmentService extends EntityService<Attachment> {
diff --git a/src/main/java/de/thm/arsnova/services/AttachmentServiceImpl.java b/src/main/java/de/thm/arsnova/service/AttachmentServiceImpl.java
similarity index 88%
rename from src/main/java/de/thm/arsnova/services/AttachmentServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/AttachmentServiceImpl.java
index 75efe93c76f8514f1190aae1186606497efd7bbd..6b2cc2edfe6c84a9e02e298e1b6b07998a8c6d70 100644
--- a/src/main/java/de/thm/arsnova/services/AttachmentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/AttachmentServiceImpl.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Attachment;
-import de.thm.arsnova.persistance.AttachmentRepository;
+import de.thm.arsnova.model.Attachment;
+import de.thm.arsnova.persistence.AttachmentRepository;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 import org.springframework.web.multipart.MultipartFile;
diff --git a/src/main/java/de/thm/arsnova/services/CommentFindQueryService.java b/src/main/java/de/thm/arsnova/service/CommentFindQueryService.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/services/CommentFindQueryService.java
rename to src/main/java/de/thm/arsnova/service/CommentFindQueryService.java
index d80b47a004b5ed445c180e84fbad5c34d61f3955..fdbe5b88644e569b9df24ec3848bfc571ecebd23 100644
--- a/src/main/java/de/thm/arsnova/services/CommentFindQueryService.java
+++ b/src/main/java/de/thm/arsnova/service/CommentFindQueryService.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.FindQuery;
-import de.thm.arsnova.entities.Comment;
+import de.thm.arsnova.model.FindQuery;
+import de.thm.arsnova.model.Comment;
 import org.springframework.stereotype.Service;
 
 import java.util.HashSet;
diff --git a/src/main/java/de/thm/arsnova/services/CommentService.java b/src/main/java/de/thm/arsnova/service/CommentService.java
similarity index 75%
rename from src/main/java/de/thm/arsnova/services/CommentService.java
rename to src/main/java/de/thm/arsnova/service/CommentService.java
index 021499325c7e00fdf8615c6e84032bfbdc47c662..a359bf881312b0c1f99846ade9140444c125e1be 100644
--- a/src/main/java/de/thm/arsnova/services/CommentService.java
+++ b/src/main/java/de/thm/arsnova/service/CommentService.java
@@ -1,7 +1,7 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.migration.v2.CommentReadingCount;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.migration.v2.CommentReadingCount;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java b/src/main/java/de/thm/arsnova/service/CommentServiceImpl.java
similarity index 88%
rename from src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/CommentServiceImpl.java
index e48c848528f5616e490603fd3afd833e7217c0ad..3404880e8cab1bdadc64c4d6504852491002a9cc 100644
--- a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/CommentServiceImpl.java
@@ -1,16 +1,15 @@
-package de.thm.arsnova.services;
-
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.migration.v2.CommentReadingCount;
-import de.thm.arsnova.events.DeleteCommentEvent;
-import de.thm.arsnova.events.NewCommentEvent;
-import de.thm.arsnova.exceptions.ForbiddenException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.persistance.CommentRepository;
-import de.thm.arsnova.persistance.RoomRepository;
+package de.thm.arsnova.service;
+
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.CommentReadingCount;
+import de.thm.arsnova.event.DeleteCommentEvent;
+import de.thm.arsnova.web.exceptions.ForbiddenException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.persistence.CommentRepository;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.ApplicationEventPublisherAware;
diff --git a/src/main/java/de/thm/arsnova/services/ContentService.java b/src/main/java/de/thm/arsnova/service/ContentService.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/services/ContentService.java
rename to src/main/java/de/thm/arsnova/service/ContentService.java
index 587e3e06ede2bcc379aef326cda7534c93ef7f8b..253298413d7e5fc8242fbca3fee26ec8d10e4334 100644
--- a/src/main/java/de/thm/arsnova/services/ContentService.java
+++ b/src/main/java/de/thm/arsnova/service/ContentService.java
@@ -32,10 +32,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.	 If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java b/src/main/java/de/thm/arsnova/service/ContentServiceImpl.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/ContentServiceImpl.java
index b07d6ee1781566349f2d9c5ae3365db9783dc524..4bd0553726bd4ff711fa46c119364dd6a7b28d24 100644
--- a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/ContentServiceImpl.java
@@ -15,18 +15,18 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.	 If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
-
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.events.*;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.persistance.AnswerRepository;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.LogEntryRepository;
-import de.thm.arsnova.persistance.RoomRepository;
+package de.thm.arsnova.service;
+
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.event.*;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.persistence.AnswerRepository;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.LogEntryRepository;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.ektorp.DocumentNotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java b/src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java
index eab3e53561d419404d4ce3d61db76db6f2983cb6..9f11f884ba0477dc8facf99bd70416357a3bf461 100644
--- a/src/main/java/de/thm/arsnova/services/DefaultEntityServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/DefaultEntityServiceImpl.java
@@ -15,14 +15,14 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectReader;
-import de.thm.arsnova.entities.Entity;
-import de.thm.arsnova.entities.serialization.View;
-import de.thm.arsnova.persistance.CrudRepository;
+import de.thm.arsnova.model.Entity;
+import de.thm.arsnova.model.serialization.View;
+import de.thm.arsnova.persistence.CrudRepository;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreFilter;
 
diff --git a/src/main/java/de/thm/arsnova/services/EntityService.java b/src/main/java/de/thm/arsnova/service/EntityService.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/EntityService.java
rename to src/main/java/de/thm/arsnova/service/EntityService.java
index d4df43e52935b50bf69a445f09ee4d92e0d90a9f..9158e4f5b61cc74931805d03d651e44d2784a9cf 100644
--- a/src/main/java/de/thm/arsnova/services/EntityService.java
+++ b/src/main/java/de/thm/arsnova/service/EntityService.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.model.Entity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreFilter;
 
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/service/FeedbackService.java
similarity index 90%
rename from src/main/java/de/thm/arsnova/services/FeedbackService.java
rename to src/main/java/de/thm/arsnova/service/FeedbackService.java
index dbc673578c201fcdd0b294669dfacd02b10c38d8..1b5ab72e691b963939da7516e512e57aace1e836 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackService.java
+++ b/src/main/java/de/thm/arsnova/service/FeedbackService.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Feedback;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 /**
  * The functionality the feedback service should provide.
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java b/src/main/java/de/thm/arsnova/service/FeedbackServiceImpl.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/FeedbackServiceImpl.java
index e5a00e6b62f69f674b99befe1c5ebb0fc38d1b21..81a3660135ac3364ead1f25a448b2449dbc57ec2 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/FeedbackServiceImpl.java
@@ -15,16 +15,16 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
-
-import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.events.DeleteFeedbackForRoomsEvent;
-import de.thm.arsnova.events.NewFeedbackEvent;
-import de.thm.arsnova.exceptions.NoContentException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.persistance.RoomRepository;
+package de.thm.arsnova.service;
+
+import de.thm.arsnova.model.Feedback;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.event.DeleteFeedbackForRoomsEvent;
+import de.thm.arsnova.event.NewFeedbackEvent;
+import de.thm.arsnova.web.exceptions.NoContentException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.ApplicationEventPublisherAware;
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java b/src/main/java/de/thm/arsnova/service/FeedbackStorageService.java
similarity index 70%
rename from src/main/java/de/thm/arsnova/services/FeedbackStorageService.java
rename to src/main/java/de/thm/arsnova/service/FeedbackStorageService.java
index 26d3715c4854a3949b23a631999992bd4e9324d5..74dc27e735366df72b2680afaf6038d8586fea35 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java
+++ b/src/main/java/de/thm/arsnova/service/FeedbackStorageService.java
@@ -1,8 +1,8 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Feedback;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.List;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java b/src/main/java/de/thm/arsnova/service/FeedbackStorageServiceImpl.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/FeedbackStorageServiceImpl.java
index 983c13e23b38fff4de87bcaebd3f430b67a842e0..ef8df172c17eab42df5b86ebec22efc794b01d64 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/FeedbackStorageServiceImpl.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Feedback;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
diff --git a/src/main/java/de/thm/arsnova/services/FindQueryService.java b/src/main/java/de/thm/arsnova/service/FindQueryService.java
similarity index 89%
rename from src/main/java/de/thm/arsnova/services/FindQueryService.java
rename to src/main/java/de/thm/arsnova/service/FindQueryService.java
index 2cf1399c9756fd326456ba01e179c02d852e9a4b..09f3aae1bfe8b003fc66fb125cff0b4922706451 100644
--- a/src/main/java/de/thm/arsnova/services/FindQueryService.java
+++ b/src/main/java/de/thm/arsnova/service/FindQueryService.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Entity;
-import de.thm.arsnova.entities.FindQuery;
+import de.thm.arsnova.model.Entity;
+import de.thm.arsnova.model.FindQuery;
 
 import java.util.Set;
 
diff --git a/src/main/java/de/thm/arsnova/services/MotdService.java b/src/main/java/de/thm/arsnova/service/MotdService.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/services/MotdService.java
rename to src/main/java/de/thm/arsnova/service/MotdService.java
index 25ee3d3987b4062efe057a277a259fe74bdc28b6..6de4cc1d24135a3bec0015c6dfca451ae92683fc 100644
--- a/src/main/java/de/thm/arsnova/services/MotdService.java
+++ b/src/main/java/de/thm/arsnova/service/MotdService.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Motd;
+import de.thm.arsnova.model.Motd;
 
 import java.util.Date;
 import java.util.List;
diff --git a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java b/src/main/java/de/thm/arsnova/service/MotdServiceImpl.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/MotdServiceImpl.java
index 44069df2cc3bb7a705e1e4c0345eb4085005ec61..66f6e0142bfe777046468eaf4756310bb8bbf8af 100644
--- a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/MotdServiceImpl.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.	 If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Motd;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.persistance.MotdRepository;
+import de.thm.arsnova.model.Motd;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.web.exceptions.BadRequestException;
+import de.thm.arsnova.persistence.MotdRepository;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
diff --git a/src/main/java/de/thm/arsnova/services/ResponseProviderService.java b/src/main/java/de/thm/arsnova/service/ResponseProviderService.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/ResponseProviderService.java
rename to src/main/java/de/thm/arsnova/service/ResponseProviderService.java
index 79aaf92b2fb38340d04cbb44aa5e9e7ac3f4fe24..cc311debf2b2166d140347c266a646e0da538b50 100644
--- a/src/main/java/de/thm/arsnova/services/ResponseProviderService.java
+++ b/src/main/java/de/thm/arsnova/service/ResponseProviderService.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import javax.servlet.http.HttpServletResponse;
 
diff --git a/src/main/java/de/thm/arsnova/services/ResponseProviderServiceImpl.java b/src/main/java/de/thm/arsnova/service/ResponseProviderServiceImpl.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/services/ResponseProviderServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/ResponseProviderServiceImpl.java
index abcbba9eb315d42134c138b62ebc5c7b8af1b699..8120714850e44486b1573b5c0ebe7dea627ba72f 100644
--- a/src/main/java/de/thm/arsnova/services/ResponseProviderServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/ResponseProviderServiceImpl.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import org.springframework.context.annotation.Scope;
 import org.springframework.context.annotation.ScopedProxyMode;
diff --git a/src/main/java/de/thm/arsnova/services/RoomFindQueryService.java b/src/main/java/de/thm/arsnova/service/RoomFindQueryService.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/services/RoomFindQueryService.java
rename to src/main/java/de/thm/arsnova/service/RoomFindQueryService.java
index c56a6c9b3616afc64b24b95e9c111bbdd7d3a70a..80edfe8eb078b2628add93b0a1fe8712bbd4f2a8 100644
--- a/src/main/java/de/thm/arsnova/services/RoomFindQueryService.java
+++ b/src/main/java/de/thm/arsnova/service/RoomFindQueryService.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.FindQuery;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.FindQuery;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.UserProfile;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/thm/arsnova/services/RoomService.java b/src/main/java/de/thm/arsnova/service/RoomService.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/services/RoomService.java
rename to src/main/java/de/thm/arsnova/service/RoomService.java
index 7c87d708f486f03dcddaa134a0bcdac5ee2002a2..4fb3543326b3daf89d274cec66bdd3f3faf85c6b 100644
--- a/src/main/java/de/thm/arsnova/services/RoomService.java
+++ b/src/main/java/de/thm/arsnova/service/RoomService.java
@@ -15,13 +15,13 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import de.thm.arsnova.connector.model.Course;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ImportExportContainer;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ImportExportContainer;
+import de.thm.arsnova.model.transport.ScoreStatistics;
 
 import java.util.List;
 import java.util.UUID;
diff --git a/src/main/java/de/thm/arsnova/services/RoomServiceImpl.java b/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/services/RoomServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/RoomServiceImpl.java
index 558eb6704435f34b51d74a69a0a26502b2ae1c7a..5546c98c62b9699945c16066b4a5eee0371a0a69 100644
--- a/src/main/java/de/thm/arsnova/services/RoomServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/RoomServiceImpl.java
@@ -15,37 +15,35 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.model.Course;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.entities.transport.ImportExportContainer;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.events.DeleteRoomEvent;
-import de.thm.arsnova.events.FeatureChangeEvent;
-import de.thm.arsnova.events.FlipFlashcardsEvent;
-import de.thm.arsnova.events.LockFeedbackEvent;
-import de.thm.arsnova.events.NewRoomEvent;
-import de.thm.arsnova.events.StatusRoomEvent;
-import de.thm.arsnova.exceptions.ForbiddenException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.persistance.AnswerRepository;
-import de.thm.arsnova.persistance.CommentRepository;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.LogEntryRepository;
-import de.thm.arsnova.persistance.RoomRepository;
-import de.thm.arsnova.services.score.ScoreCalculator;
-import de.thm.arsnova.services.score.ScoreCalculatorFactory;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.model.transport.ImportExportContainer;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.event.DeleteRoomEvent;
+import de.thm.arsnova.event.FeatureChangeEvent;
+import de.thm.arsnova.event.FlipFlashcardsEvent;
+import de.thm.arsnova.event.LockFeedbackEvent;
+import de.thm.arsnova.event.StatusRoomEvent;
+import de.thm.arsnova.web.exceptions.ForbiddenException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.persistence.AnswerRepository;
+import de.thm.arsnova.persistence.CommentRepository;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.LogEntryRepository;
+import de.thm.arsnova.persistence.RoomRepository;
+import de.thm.arsnova.service.score.ScoreCalculator;
+import de.thm.arsnova.service.score.ScoreCalculatorFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Caching;
 import org.springframework.context.ApplicationEventPublisher;
@@ -58,7 +56,6 @@ import org.springframework.stereotype.Service;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Comparator;
-import java.util.Date;
 import java.util.List;
 import java.util.UUID;
 import java.util.stream.Collectors;
diff --git a/src/main/java/de/thm/arsnova/services/StatisticsService.java b/src/main/java/de/thm/arsnova/service/StatisticsService.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/services/StatisticsService.java
rename to src/main/java/de/thm/arsnova/service/StatisticsService.java
index 0739baa2f2917990c291477b183a431a1884eb35..aa74d212dd6bf569213e5e21bc1aa563f140921c 100644
--- a/src/main/java/de/thm/arsnova/services/StatisticsService.java
+++ b/src/main/java/de/thm/arsnova/service/StatisticsService.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Statistics;
+import de.thm.arsnova.model.Statistics;
 
 /**
  * The functionality the statistics service should provide.
diff --git a/src/main/java/de/thm/arsnova/services/StatisticsServiceImpl.java b/src/main/java/de/thm/arsnova/service/StatisticsServiceImpl.java
similarity index 93%
rename from src/main/java/de/thm/arsnova/services/StatisticsServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/StatisticsServiceImpl.java
index 828607a40a18682064fea57c82dde00a08147feb..53ba877279b8203b1b0c95116336aa648c7071f5 100644
--- a/src/main/java/de/thm/arsnova/services/StatisticsServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/StatisticsServiceImpl.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Statistics;
-import de.thm.arsnova.persistance.StatisticsRepository;
+import de.thm.arsnova.model.Statistics;
+import de.thm.arsnova.persistence.StatisticsRepository;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
diff --git a/src/main/java/de/thm/arsnova/services/StatusService.java b/src/main/java/de/thm/arsnova/service/StatusService.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/StatusService.java
rename to src/main/java/de/thm/arsnova/service/StatusService.java
index 316f0344c0a24c3dabebdbf838ed0e9121abd4f4..7052dfb9af34b6ac4d2b8b7bce9b407d115fabaf 100644
--- a/src/main/java/de/thm/arsnova/services/StatusService.java
+++ b/src/main/java/de/thm/arsnova/service/StatusService.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import java.util.Map;
 
diff --git a/src/main/java/de/thm/arsnova/services/StatusServiceImpl.java b/src/main/java/de/thm/arsnova/service/StatusServiceImpl.java
similarity index 98%
rename from src/main/java/de/thm/arsnova/services/StatusServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/StatusServiceImpl.java
index a8f3ba930aa4f5ab7f8b0cc1b78c2efb9dd48762..d1ca23dd2111fba6281712a0a927aff02e7b3105 100644
--- a/src/main/java/de/thm/arsnova/services/StatusServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/StatusServiceImpl.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import org.springframework.stereotype.Service;
 
diff --git a/src/main/java/de/thm/arsnova/services/TimerService.java b/src/main/java/de/thm/arsnova/service/TimerService.java
similarity index 76%
rename from src/main/java/de/thm/arsnova/services/TimerService.java
rename to src/main/java/de/thm/arsnova/service/TimerService.java
index cbb321b32af07e1cdf39fb4780b0d0ed9c4685af..1db313d6390b890c8aae9814715ea18e025665b9 100644
--- a/src/main/java/de/thm/arsnova/services/TimerService.java
+++ b/src/main/java/de/thm/arsnova/service/TimerService.java
@@ -1,6 +1,6 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 public interface TimerService {
 	void startNewRound(final String contentId, ClientAuthentication user);
diff --git a/src/main/java/de/thm/arsnova/services/TimerServiceImpl.java b/src/main/java/de/thm/arsnova/service/TimerServiceImpl.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/services/TimerServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/TimerServiceImpl.java
index 3a7c7e76bf0b45e4a1081591e8ce7125d0fcf26a..b676a41e1e9120e199bfad295b201d3a8834ca34 100644
--- a/src/main/java/de/thm/arsnova/services/TimerServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/TimerServiceImpl.java
@@ -1,15 +1,15 @@
-package de.thm.arsnova.services;
-
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.events.PiRoundCancelEvent;
-import de.thm.arsnova.events.PiRoundDelayedStartEvent;
-import de.thm.arsnova.events.PiRoundEndEvent;
-import de.thm.arsnova.events.PiRoundResetEvent;
-import de.thm.arsnova.persistance.AnswerRepository;
-import de.thm.arsnova.persistance.ContentRepository;
-import de.thm.arsnova.persistance.RoomRepository;
+package de.thm.arsnova.service;
+
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.event.PiRoundCancelEvent;
+import de.thm.arsnova.event.PiRoundDelayedStartEvent;
+import de.thm.arsnova.event.PiRoundEndEvent;
+import de.thm.arsnova.event.PiRoundResetEvent;
+import de.thm.arsnova.persistence.AnswerRepository;
+import de.thm.arsnova.persistence.ContentRepository;
+import de.thm.arsnova.persistence.RoomRepository;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.ApplicationEventPublisherAware;
diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/service/UserService.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/services/UserService.java
rename to src/main/java/de/thm/arsnova/service/UserService.java
index 814bcd84cfd9ab1356b23a3c93bf5bc201fa6f01..0f2138223930a86752a700ba28b33679942cd107 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/service/UserService.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
 import de.thm.arsnova.security.User;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.GrantedAuthority;
@@ -38,7 +38,7 @@ public interface UserService extends EntityService<UserProfile> {
 
 	ClientAuthentication getCurrentUser();
 
-	de.thm.arsnova.entities.ClientAuthentication getCurrentClientAuthentication();
+	de.thm.arsnova.model.ClientAuthentication getCurrentClientAuthentication();
 
 	boolean isAdmin(String username);
 
diff --git a/src/main/java/de/thm/arsnova/services/UserServiceImpl.java b/src/main/java/de/thm/arsnova/service/UserServiceImpl.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/UserServiceImpl.java
rename to src/main/java/de/thm/arsnova/service/UserServiceImpl.java
index 18d872bf39b90a448430b318ca8dc4b6e1131978..51498b832d4c1c1e9f2dcd11bea0559571aa40d0 100644
--- a/src/main/java/de/thm/arsnova/services/UserServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/service/UserServiceImpl.java
@@ -15,16 +15,16 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import com.codahale.metrics.annotation.Gauge;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.exceptions.BadRequestException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.persistance.UserRepository;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.web.exceptions.BadRequestException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.persistence.UserRepository;
 import de.thm.arsnova.security.GuestUserDetailsService;
 import de.thm.arsnova.security.User;
 import de.thm.arsnova.security.jwt.JwtService;
@@ -65,7 +65,6 @@ import javax.annotation.PreDestroy;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.Map.Entry;
@@ -216,7 +215,7 @@ public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> imple
 	}
 
 	@Override
-	public de.thm.arsnova.entities.ClientAuthentication getCurrentClientAuthentication() {
+	public de.thm.arsnova.model.ClientAuthentication getCurrentClientAuthentication() {
 		Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
 		if (authentication == null || !(authentication.getPrincipal() instanceof User)) {
 			return null;
@@ -225,8 +224,8 @@ public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> imple
 		String jwt = authentication instanceof JwtToken ?
 				(String) authentication.getCredentials() : jwtService.createSignedToken(user);
 
-		de.thm.arsnova.entities.ClientAuthentication clientAuthentication =
-				new de.thm.arsnova.entities.ClientAuthentication(user.getId(), user.getUsername(),
+		de.thm.arsnova.model.ClientAuthentication clientAuthentication =
+				new de.thm.arsnova.model.ClientAuthentication(user.getId(), user.getUsername(),
 						user.getAuthProvider(), jwt);
 
 		return clientAuthentication;
diff --git a/src/main/java/de/thm/arsnova/services/package-info.java b/src/main/java/de/thm/arsnova/service/package-info.java
similarity index 62%
rename from src/main/java/de/thm/arsnova/services/package-info.java
rename to src/main/java/de/thm/arsnova/service/package-info.java
index d87d15a849a564276d79631c8f75dc5a420e6d3d..dfa2ac6653ff0124f47edd81ba7168da78bd6c7f 100644
--- a/src/main/java/de/thm/arsnova/services/package-info.java
+++ b/src/main/java/de/thm/arsnova/service/package-info.java
@@ -1,4 +1,4 @@
 /**
  * Classes and interfaces for the service layer
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
diff --git a/src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java b/src/main/java/de/thm/arsnova/service/score/QuestionBasedScoreCalculator.java
similarity index 94%
rename from src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java
rename to src/main/java/de/thm/arsnova/service/score/QuestionBasedScoreCalculator.java
index 59dfb1e7edb49104f24b616ad331272ca7d78c7b..0eed46c4d470384e693aa2357699ca96ba0dffa2 100644
--- a/src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/service/score/QuestionBasedScoreCalculator.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
 
 /**
  * Calculates learning progress based on overall correctness of an answer. A question is answered correctly if and
diff --git a/src/main/java/de/thm/arsnova/services/score/QuestionScore.java b/src/main/java/de/thm/arsnova/service/score/QuestionScore.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/services/score/QuestionScore.java
rename to src/main/java/de/thm/arsnova/service/score/QuestionScore.java
index fcf7adb16dfb65a8000e99fd363c3947b709e856..0ea10b92d1b197bb60538b2ca4fb3f92a60a7f2e 100644
--- a/src/main/java/de/thm/arsnova/services/score/QuestionScore.java
+++ b/src/main/java/de/thm/arsnova/service/score/QuestionScore.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/src/main/java/de/thm/arsnova/services/score/Score.java b/src/main/java/de/thm/arsnova/service/score/Score.java
similarity index 96%
rename from src/main/java/de/thm/arsnova/services/score/Score.java
rename to src/main/java/de/thm/arsnova/service/score/Score.java
index c0f1d3fa43a94ab6bbc64173f3b53b8bd3b1261f..d3c5e4d299db8a54afe93ccfcffbab8836753314 100644
--- a/src/main/java/de/thm/arsnova/services/score/Score.java
+++ b/src/main/java/de/thm/arsnova/service/score/Score.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 import java.util.HashMap;
 import java.util.HashSet;
diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java b/src/main/java/de/thm/arsnova/service/score/ScoreBasedScoreCalculator.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java
rename to src/main/java/de/thm/arsnova/service/score/ScoreBasedScoreCalculator.java
index a4a7bd5565d2b482217d0aaa607b2afd15ca6fa3..7b34fddbded6fd919ae780831eb87521fe1e6d1b 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/service/score/ScoreBasedScoreCalculator.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
 
 /**
  * Calculates score based on a question's value.
diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java b/src/main/java/de/thm/arsnova/service/score/ScoreCalculator.java
similarity index 83%
rename from src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java
rename to src/main/java/de/thm/arsnova/service/score/ScoreCalculator.java
index d43f0549c040735902f6f0275edcb46b23a0b662..7eb61b0c72983782f91e96174378be3c90b81214 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/service/score/ScoreCalculator.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ScoreStatistics;
 
 /**
  * Defines the core functionality which the score calculation should provide.
diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreCalculatorFactory.java b/src/main/java/de/thm/arsnova/service/score/ScoreCalculatorFactory.java
similarity index 95%
rename from src/main/java/de/thm/arsnova/services/score/ScoreCalculatorFactory.java
rename to src/main/java/de/thm/arsnova/service/score/ScoreCalculatorFactory.java
index 473c1dccefe0f6a921c37ca7812e10f9ea8f63ee..5294a35873516eb7fc0b6e261a1d6393a6092ec7 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreCalculatorFactory.java
+++ b/src/main/java/de/thm/arsnova/service/score/ScoreCalculatorFactory.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
 /**
  * Interface for Spring dependency injection.
diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreCalculatorFactoryImpl.java b/src/main/java/de/thm/arsnova/service/score/ScoreCalculatorFactoryImpl.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/services/score/ScoreCalculatorFactoryImpl.java
rename to src/main/java/de/thm/arsnova/service/score/ScoreCalculatorFactoryImpl.java
index d6816d4eec59f4232903ec6a54e024aab3315b21..78acff908dc1d575d4d06111ef4de0a4b996181d 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreCalculatorFactoryImpl.java
+++ b/src/main/java/de/thm/arsnova/service/score/ScoreCalculatorFactoryImpl.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.events.*;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
+import de.thm.arsnova.event.*;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.context.ApplicationEventPublisher;
diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreCalculatorListener.java b/src/main/java/de/thm/arsnova/service/score/ScoreCalculatorListener.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/services/score/ScoreCalculatorListener.java
rename to src/main/java/de/thm/arsnova/service/score/ScoreCalculatorListener.java
index 113d5d7e213d13c4aba9529d50a5b6cf3a998f02..d78cc886327e289d5649f0476dbfebea9f3755ae 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreCalculatorListener.java
+++ b/src/main/java/de/thm/arsnova/service/score/ScoreCalculatorListener.java
@@ -15,10 +15,10 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.events.ArsnovaEvent;
-import de.thm.arsnova.events.ArsnovaEventVisitor;
+import de.thm.arsnova.event.ArsnovaEvent;
+import de.thm.arsnova.event.ArsnovaEventVisitor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/de/thm/arsnova/services/score/UserScore.java b/src/main/java/de/thm/arsnova/service/score/UserScore.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/services/score/UserScore.java
rename to src/main/java/de/thm/arsnova/service/score/UserScore.java
index 37eb20b87638f7af97ba5baba14ed7e5f7ca56b9..bc91a25594f83537e180a655fc265888e32d9a52 100644
--- a/src/main/java/de/thm/arsnova/services/score/UserScore.java
+++ b/src/main/java/de/thm/arsnova/service/score/UserScore.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 
 /**
  * The learning progress answer score of a particular user.
diff --git a/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java b/src/main/java/de/thm/arsnova/service/score/VariantScoreCalculator.java
similarity index 89%
rename from src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java
rename to src/main/java/de/thm/arsnova/service/score/VariantScoreCalculator.java
index 315a0371a6c7f343a7711b3348dd39076e0cdc9c..de9b62054cc45457a6b4daed1f898dadf0785e0b 100644
--- a/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/service/score/VariantScoreCalculator.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
 import org.springframework.cache.annotation.Cacheable;
 
 /**
diff --git a/src/main/java/de/thm/arsnova/util/ImageUtils.java b/src/main/java/de/thm/arsnova/util/ImageUtils.java
index bdfdfc272c9ef54ca8ee6f83b774834da115b727..5ac24d889fb176f84ebfa3114582e884889f2596 100644
--- a/src/main/java/de/thm/arsnova/util/ImageUtils.java
+++ b/src/main/java/de/thm/arsnova/util/ImageUtils.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.util;
 
-import de.thm.arsnova.entities.migration.v2.Answer;
+import de.thm.arsnova.model.migration.v2.Answer;
 import org.apache.commons.codec.binary.Base64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/src/main/java/de/thm/arsnova/web/InternalEntityAspect.java b/src/main/java/de/thm/arsnova/web/InternalEntityAspect.java
index 3b9de7eb6a4cc32e2d2d81a1d0f55852db4ccf5f..3a59bedc35335f711e3dd95180197007895522fb 100644
--- a/src/main/java/de/thm/arsnova/web/InternalEntityAspect.java
+++ b/src/main/java/de/thm/arsnova/web/InternalEntityAspect.java
@@ -1,6 +1,6 @@
 package de.thm.arsnova.web;
 
-import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.model.Entity;
 import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.Aspect;
 import org.slf4j.Logger;
@@ -15,7 +15,7 @@ import org.slf4j.LoggerFactory;
 public class InternalEntityAspect {
 	private static final Logger logger = LoggerFactory.getLogger(InternalEntityAspect.class);
 
-	@AfterReturning(pointcut = "execution(de.thm.arsnova.entities.Entity+ de.thm.arsnova.controller.*.*(..))", returning = "entity")
+	@AfterReturning(pointcut = "execution(de.thm.arsnova.model.Entity+ de.thm.arsnova.controller.*.*(..))", returning = "entity")
 	public void prohibitInternalEntitySerialization(final Entity entity) {
 		logger.debug("Executing InternalEntityAspect for entity: {}", entity);
 
diff --git a/src/main/java/de/thm/arsnova/web/MaintenanceModeFilter.java b/src/main/java/de/thm/arsnova/web/MaintenanceModeFilter.java
index 7efb6f0350e807938f0f1adb3d867ae45f70c79c..7d2e3bc6f1768a628f79bd8f537db61b590b4cb5 100644
--- a/src/main/java/de/thm/arsnova/web/MaintenanceModeFilter.java
+++ b/src/main/java/de/thm/arsnova/web/MaintenanceModeFilter.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.web;
 
-import de.thm.arsnova.services.StatusService;
+import de.thm.arsnova.service.StatusService;
 import org.springframework.stereotype.Component;
 import org.springframework.web.filter.OncePerRequestFilter;
 
diff --git a/src/main/java/de/thm/arsnova/aop/RangeAspect.java b/src/main/java/de/thm/arsnova/web/RangeAspect.java
similarity index 97%
rename from src/main/java/de/thm/arsnova/aop/RangeAspect.java
rename to src/main/java/de/thm/arsnova/web/RangeAspect.java
index 522d568e7f8af9b7ba44064b193562c81a87b920..9959fab9cd884c9ee25973cb96ca4d10cdb6d757 100644
--- a/src/main/java/de/thm/arsnova/aop/RangeAspect.java
+++ b/src/main/java/de/thm/arsnova/web/RangeAspect.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.aop;
+package de.thm.arsnova.web;
 
 import de.thm.arsnova.util.PaginationListDecorator;
 import de.thm.arsnova.controller.PaginationController;
-import de.thm.arsnova.services.ResponseProviderService;
+import de.thm.arsnova.service.ResponseProviderService;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
diff --git a/src/main/java/de/thm/arsnova/web/ResponseInterceptorHandler.java b/src/main/java/de/thm/arsnova/web/ResponseInterceptorHandler.java
index 3edfc47be5208171e9b10228f57c25a2fb014990..da4afef5e2493d97c8a14876111faaba0f736ebe 100644
--- a/src/main/java/de/thm/arsnova/web/ResponseInterceptorHandler.java
+++ b/src/main/java/de/thm/arsnova/web/ResponseInterceptorHandler.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.web;
 
-import de.thm.arsnova.services.ResponseProviderService;
+import de.thm.arsnova.service.ResponseProviderService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
diff --git a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java b/src/main/java/de/thm/arsnova/web/exceptions/BadRequestException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/BadRequestException.java
index b7e80b833cb0f6053e9d0c1f77fe63813272cdd9..7f417aca25d9f61a91e4254365b7e6948ba0d4f6 100644
--- a/src/main/java/de/thm/arsnova/exceptions/BadRequestException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/BadRequestException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Bad Request means status code 400.
diff --git a/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java b/src/main/java/de/thm/arsnova/web/exceptions/ForbiddenException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/ForbiddenException.java
index 05b21dab60ba76f181a0343c4420d7129814e966..aefe91f3383d8e85e78c40bce1126ad221b23b72 100644
--- a/src/main/java/de/thm/arsnova/exceptions/ForbiddenException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/ForbiddenException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Forbidden means status code 403.
diff --git a/src/main/java/de/thm/arsnova/exceptions/NoContentException.java b/src/main/java/de/thm/arsnova/web/exceptions/NoContentException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/NoContentException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/NoContentException.java
index f3f7e81649b77d04bf4431b45aeebd857b71eff8..0177ac4acd3a1b02f3f4bda77b98adc3f809e3f1 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NoContentException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/NoContentException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * No Content means status code 204.
diff --git a/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java b/src/main/java/de/thm/arsnova/web/exceptions/NotFoundException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/NotFoundException.java
index a0a12b25add162e74557c33502cea8dcc3697b90..faa58e11db4da59ad02496d8bcbfde169f6eb2a3 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NotFoundException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/NotFoundException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Not Found means status code 404.
diff --git a/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java b/src/main/java/de/thm/arsnova/web/exceptions/NotImplementedException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/NotImplementedException.java
index 93f7ed795537fbd2a263059c7add9bc3c3b1f3b7..7941effb45549ff2563e8473152f59dfb30d66de 100644
--- a/src/main/java/de/thm/arsnova/exceptions/NotImplementedException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/NotImplementedException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Not Implemented means status code 501.
diff --git a/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java b/src/main/java/de/thm/arsnova/web/exceptions/PayloadTooLargeException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/PayloadTooLargeException.java
index 9233b58f25fd465979943a782c9a9d4fced27e25..5dff0716a522ef6b77ef9d6a7ea9aee3813f230b 100644
--- a/src/main/java/de/thm/arsnova/exceptions/PayloadTooLargeException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/PayloadTooLargeException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Payload Too Large means status code 413.
diff --git a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java b/src/main/java/de/thm/arsnova/web/exceptions/PreconditionFailedException.java
similarity index 92%
rename from src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/PreconditionFailedException.java
index e14d30c7edd66c8bc7dbd669144eda48a4a64d32..31c1de8b2dbb3d370f1ce0819a7b269cc5c5512d 100644
--- a/src/main/java/de/thm/arsnova/exceptions/PreconditionFailedException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/PreconditionFailedException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Precondition Failed means status code 412.
diff --git a/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java b/src/main/java/de/thm/arsnova/web/exceptions/UnauthorizedException.java
similarity index 91%
rename from src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
rename to src/main/java/de/thm/arsnova/web/exceptions/UnauthorizedException.java
index f6a91249b2681fea1bd816b0b9dadde1ab86748a..e889a0f42c21c2b1bc019429250e16be6a645bf4 100644
--- a/src/main/java/de/thm/arsnova/exceptions/UnauthorizedException.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/UnauthorizedException.java
@@ -1,4 +1,4 @@
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
 
 /**
  * Unauthorized means status code 401.
diff --git a/src/main/java/de/thm/arsnova/exceptions/package-info.java b/src/main/java/de/thm/arsnova/web/exceptions/package-info.java
similarity index 62%
rename from src/main/java/de/thm/arsnova/exceptions/package-info.java
rename to src/main/java/de/thm/arsnova/web/exceptions/package-info.java
index ea831c868e3cc413cf3d9f4dba472116c3ed569d..03df89db51f1e4c190d1858814eabb70ed526558 100644
--- a/src/main/java/de/thm/arsnova/exceptions/package-info.java
+++ b/src/main/java/de/thm/arsnova/web/exceptions/package-info.java
@@ -1,4 +1,4 @@
 /**
  * Contains exceptions used to return HTTP status codes
  */
-package de.thm.arsnova.exceptions;
+package de.thm.arsnova.web.exceptions;
diff --git a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
index 8ade69539251772a94af708a31329b1493d4cedb..be4809c12dece3bd439218a0e59bedea505712cb 100644
--- a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
+++ b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
@@ -28,20 +28,20 @@ import com.corundumstudio.socketio.listener.DataListener;
 import com.corundumstudio.socketio.listener.DisconnectListener;
 import com.corundumstudio.socketio.protocol.Packet;
 import com.corundumstudio.socketio.protocol.PacketType;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.ScoreOptions;
-import de.thm.arsnova.entities.migration.ToV2Migrator;
-import de.thm.arsnova.events.*;
-import de.thm.arsnova.exceptions.NoContentException;
-import de.thm.arsnova.exceptions.NotFoundException;
-import de.thm.arsnova.exceptions.UnauthorizedException;
-import de.thm.arsnova.services.AnswerService;
-import de.thm.arsnova.services.CommentService;
-import de.thm.arsnova.services.FeedbackService;
-import de.thm.arsnova.services.ContentService;
-import de.thm.arsnova.services.RoomService;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.Comment;
+import de.thm.arsnova.model.ScoreOptions;
+import de.thm.arsnova.model.migration.ToV2Migrator;
+import de.thm.arsnova.event.*;
+import de.thm.arsnova.web.exceptions.NoContentException;
+import de.thm.arsnova.web.exceptions.NotFoundException;
+import de.thm.arsnova.web.exceptions.UnauthorizedException;
+import de.thm.arsnova.service.AnswerService;
+import de.thm.arsnova.service.CommentService;
+import de.thm.arsnova.service.FeedbackService;
+import de.thm.arsnova.service.ContentService;
+import de.thm.arsnova.service.RoomService;
+import de.thm.arsnova.service.UserService;
 import de.thm.arsnova.websocket.message.Feedback;
 import de.thm.arsnova.websocket.message.Content;
 import de.thm.arsnova.websocket.message.Room;
@@ -152,7 +152,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 					return;
 				}
 				final String roomId = userService.getRoomIdByUserId(u.getId());
-				final de.thm.arsnova.entities.Room room = roomService.getInternal(roomId, u);
+				final de.thm.arsnova.model.Room room = roomService.getInternal(roomId, u);
 
 				if (room.getSettings().isFeedbackLocked()) {
 					logger.debug("Feedback ignored: User: {}, Room Id: {}, Feedback: {}", u, roomId, data.getValue());
@@ -339,9 +339,9 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		this.useSSL = useSSL;
 	}
 
-	public void reportDeletedFeedback(final ClientAuthentication user, final Set<de.thm.arsnova.entities.Room> rooms) {
+	public void reportDeletedFeedback(final ClientAuthentication user, final Set<de.thm.arsnova.model.Room> rooms) {
 		final List<String> roomShortIds = new ArrayList<>();
-		for (final de.thm.arsnova.entities.Room room : rooms) {
+		for (final de.thm.arsnova.model.Room room : rooms) {
 			roomShortIds.add(room.getShortId());
 		}
 		this.sendToUser(user, "feedbackReset", roomShortIds);
@@ -376,8 +376,8 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	 * relevant Socket.IO data, the client needs to know after joining a session.
 	 */
 	public void reportRoomDataToClient(final String roomId, final ClientAuthentication user, final SocketIOClient client) {
-		final de.thm.arsnova.entities.Room room = roomService.getInternal(roomId, user);
-		final de.thm.arsnova.entities.Room.Settings settings = room.getSettings();
+		final de.thm.arsnova.model.Room room = roomService.getInternal(roomId, user);
+		final de.thm.arsnova.model.Room.Settings settings = room.getSettings();
 
 		client.sendEvent("unansweredLecturerQuestions", contentService.getUnAnsweredLectureContentIds(roomId, user));
 		client.sendEvent("unansweredPreparationQuestions", contentService.getUnAnsweredPreparationContentIds(roomId, user));
@@ -386,7 +386,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		client.sendEvent("countPreparationQuestionAnswers", answerService.countTotalAnswersByRoomId(roomId));
 		client.sendEvent("activeUserCountData", roomService.activeUsers(roomId));
 //		client.sendEvent("learningProgressOptions", room.getLearningProgressOptions());
-		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomId(roomId);
+		final de.thm.arsnova.model.Feedback fb = feedbackService.getByRoomId(roomId);
 		client.sendEvent("feedbackData", fb.getValues());
 
 		if (settings.isFlashcardsEnabled()) {
@@ -403,8 +403,8 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		}
 	}
 
-	public void reportUpdatedFeedbackForRoom(final de.thm.arsnova.entities.Room room) {
-		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomId(room.getId());
+	public void reportUpdatedFeedbackForRoom(final de.thm.arsnova.model.Room room) {
+		final de.thm.arsnova.model.Feedback fb = feedbackService.getByRoomId(room.getId());
 		broadcastInRoom(room.getId(), "feedbackData", fb.getValues());
 		try {
 			final long averageFeedback = feedbackService.calculateRoundedAverageFeedback(room.getId());
@@ -415,7 +415,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	}
 
 	public void reportFeedbackForUserInRoom(final Room room, final ClientAuthentication user) {
-		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomId(room.getKeyword());
+		final de.thm.arsnova.model.Feedback fb = feedbackService.getByRoomId(room.getKeyword());
 		Long averageFeedback;
 		try {
 			averageFeedback = feedbackService.calculateRoundedAverageFeedback(room.getKeyword());
@@ -441,18 +441,18 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		broadcastInRoom(roomId, "activeUserCountData", count);
 	}
 
-	public void reportAnswersToContentAvailable(final de.thm.arsnova.entities.Room room, final Content content) {
+	public void reportAnswersToContentAvailable(final de.thm.arsnova.model.Room room, final Content content) {
 		broadcastInRoom(room.getId(), "answersToLecQuestionAvail", content.get_id());
 	}
 
-	public void reportCommentAvailable(final de.thm.arsnova.entities.Room room, final Comment comment) {
+	public void reportCommentAvailable(final de.thm.arsnova.model.Room room, final Comment comment) {
 		/* TODO role handling implementation, send this only to users with role lecturer */
 		broadcastInRoom(room.getId(), "audQuestionAvail", comment.getId());
 	}
 
-	public void reportContentAvailable(final de.thm.arsnova.entities.Room room, final List<de.thm.arsnova.entities.Content> qs) {
+	public void reportContentAvailable(final de.thm.arsnova.model.Room room, final List<de.thm.arsnova.model.Content> qs) {
 		List<Content> contents = new ArrayList<>();
-		for (de.thm.arsnova.entities.Content q : qs) {
+		for (de.thm.arsnova.model.Content q : qs) {
 			contents.add(new Content(q));
 		}
 
@@ -463,9 +463,9 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		broadcastInRoom(room.getId(), "lecturerQuestionAvailable", contents);
 	}
 
-	public void reportContentsLocked(final de.thm.arsnova.entities.Room room, final List<de.thm.arsnova.entities.Content> qs) {
+	public void reportContentsLocked(final de.thm.arsnova.model.Room room, final List<de.thm.arsnova.model.Content> qs) {
 		List<Content> contents = new ArrayList<>();
-		for (de.thm.arsnova.entities.Content q : qs) {
+		for (de.thm.arsnova.model.Content q : qs) {
 			contents.add(new Content(q));
 		}
 		broadcastInRoom(room.getId(), "lecturerQuestionLocked", contents);
@@ -532,7 +532,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		broadcastInRoom(roomId, "countPreparationQuestionAnswers", answerService.countTotalAnswersByRoomId(roomId));
 
 		// Update the unanswered count for the content variant that was answered.
-		final de.thm.arsnova.entities.Content content = event.getContent();
+		final de.thm.arsnova.model.Content content = event.getContent();
 		if ("lecture".equals(content.getGroups())) {
 			sendToUser(event.getUser(), "unansweredLecturerQuestions", contentService.getUnAnsweredLectureContentIds(roomId, event.getUser()));
 		} else if ("preparation".equals(content.getGroups())) {
@@ -597,7 +597,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	@Override
 	public void visit(LockVotesEvent event) {
 		List<Content> contents = new ArrayList<>();
-		for (de.thm.arsnova.entities.Content q : event.getQuestions()) {
+		for (de.thm.arsnova.model.Content q : event.getQuestions()) {
 			contents.add(new Content(q));
 		}
 		broadcastInRoom(event.getRoom().getId(), "lockVotes", contents);
@@ -606,7 +606,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	@Override
 	public void visit(UnlockVotesEvent event) {
 		List<Content> contents = new ArrayList<>();
-		for (de.thm.arsnova.entities.Content q : event.getQuestions()) {
+		for (de.thm.arsnova.model.Content q : event.getQuestions()) {
 			contents.add(new Content(q));
 		}
 		broadcastInRoom(event.getRoom().getId(), "unlockVotes", contents);
@@ -615,7 +615,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	@Override
 	public void visit(FeatureChangeEvent event) {
 		final String roomId = event.getRoom().getId();
-		final de.thm.arsnova.entities.Room.Settings settings = event.getRoom().getSettings();
+		final de.thm.arsnova.model.Room.Settings settings = event.getRoom().getSettings();
 		broadcastInRoom(roomId, "featureChange", toV2Migrator.migrate(settings));
 
 		if (settings.isFlashcardsEnabled()) {
diff --git a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerListener.java b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerListener.java
index bbb98296581c45334e8399ad91ea2d84a7e1fd5a..1d69bc792375c57b2d5a87b9e7bb16c196d2ff1a 100644
--- a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerListener.java
+++ b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerListener.java
@@ -17,8 +17,8 @@
  */
 package de.thm.arsnova.websocket;
 
-import de.thm.arsnova.events.ArsnovaEvent;
-import de.thm.arsnova.events.ArsnovaEventVisitor;
+import de.thm.arsnova.event.ArsnovaEvent;
+import de.thm.arsnova.event.ArsnovaEventVisitor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
diff --git a/src/main/java/de/thm/arsnova/websocket/WebsocketAuthenticationAspect.java b/src/main/java/de/thm/arsnova/websocket/WebsocketAuthenticationAspect.java
index 9eae5d65584ea5f6c094f3f2caea4b6af1105129..18ef7807352a9af0fe4099936fc3b6334b287680 100644
--- a/src/main/java/de/thm/arsnova/websocket/WebsocketAuthenticationAspect.java
+++ b/src/main/java/de/thm/arsnova/websocket/WebsocketAuthenticationAspect.java
@@ -18,9 +18,9 @@
 package de.thm.arsnova.websocket;
 
 import com.corundumstudio.socketio.SocketIOClient;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 import de.thm.arsnova.security.User;
-import de.thm.arsnova.services.UserService;
+import de.thm.arsnova.service.UserService;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
diff --git a/src/main/java/de/thm/arsnova/websocket/message/Content.java b/src/main/java/de/thm/arsnova/websocket/message/Content.java
index 71886b22068758d2c07d7479abdaf030c990804a..c95f6a2b699a608b3f2eb30672989102eea8e606 100644
--- a/src/main/java/de/thm/arsnova/websocket/message/Content.java
+++ b/src/main/java/de/thm/arsnova/websocket/message/Content.java
@@ -25,7 +25,7 @@ public class Content {
 	private final String _id;
 	private final String variant;
 
-	public Content(de.thm.arsnova.entities.Content content) {
+	public Content(de.thm.arsnova.model.Content content) {
 		this._id = content.getId();
 		/* FIXME: Message does not support content with multiple groups */
 		this.variant = content.getGroups().toArray(new String[1])[0];
diff --git a/src/main/resources/META-INF/aop.xml b/src/main/resources/META-INF/aop.xml
index bfd7f46db985cc34f0d86eef83a0a9609bff1539..fe4871b30ed1a8777f4caccb3c138cc8747a843c 100644
--- a/src/main/resources/META-INF/aop.xml
+++ b/src/main/resources/META-INF/aop.xml
@@ -6,7 +6,7 @@
 	</weaver>
 
 	<aspects>
-		<aspect name="de.thm.arsnova.aop.RangeAspect"/>
+		<aspect name="de.thm.arsnova.web.RangeAspect"/>
 		<aspect name="de.thm.arsnova.web.InternalEntityAspect"/>
 		<aspect name="de.thm.arsnova.websocket.WebsocketAuthenticationAspect"/>
 	</aspects>
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index f5e11a6bba759a95742c65b202cc5719cec1534d..3195f1d88612682ef6c57f673c26bedc550fe578 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -11,7 +11,7 @@
 		<param-name>contextConfigLocation</param-name>
 		<param-value>
 			de.thm.arsnova.config.AppConfig
-			de.thm.arsnova.config.PersistanceConfig
+			de.thm.arsnova.config.PersistenceConfig
 			de.thm.arsnova.config.SecurityConfig
 		</param-value>
 	</context-param>
diff --git a/src/test/java/de/thm/arsnova/config/TestAppConfig.java b/src/test/java/de/thm/arsnova/config/TestAppConfig.java
index 90fdd7697657d59e3e63bdb8d97852b9d8c0b12d..2d40e7060ae7a74078e5916defefef680a60c5ec 100644
--- a/src/test/java/de/thm/arsnova/config/TestAppConfig.java
+++ b/src/test/java/de/thm/arsnova/config/TestAppConfig.java
@@ -1,7 +1,7 @@
 package de.thm.arsnova.config;
 
-import de.thm.arsnova.persistance.UserRepository;
-import de.thm.arsnova.services.StubUserService;
+import de.thm.arsnova.persistence.UserRepository;
+import de.thm.arsnova.service.StubUserService;
 import de.thm.arsnova.websocket.ArsnovaSocketioServer;
 import de.thm.arsnova.websocket.ArsnovaSocketioServerImpl;
 import org.springframework.beans.factory.annotation.Qualifier;
diff --git a/src/test/java/de/thm/arsnova/config/TestPersistanceConfig.java b/src/test/java/de/thm/arsnova/config/TestPersistanceConfig.java
index f602e80d446a9f9beb368490ac8bf86f4a7b64c2..9acd9adfecde08a8a17ded79f7a6624182cdfb74 100644
--- a/src/test/java/de/thm/arsnova/config/TestPersistanceConfig.java
+++ b/src/test/java/de/thm/arsnova/config/TestPersistanceConfig.java
@@ -1,6 +1,6 @@
 package de.thm.arsnova.config;
 
-import de.thm.arsnova.persistance.*;
+import de.thm.arsnova.persistence.*;
 import org.mockito.Mockito;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/src/test/java/de/thm/arsnova/controller/AbstractControllerTest.java b/src/test/java/de/thm/arsnova/controller/AbstractControllerTest.java
index 7d7993da484ca106d4f443cd2d7f7ba2108dca03..271b36b4aec48ca088538f8611e33562f1270856 100644
--- a/src/test/java/de/thm/arsnova/controller/AbstractControllerTest.java
+++ b/src/test/java/de/thm/arsnova/controller/AbstractControllerTest.java
@@ -21,7 +21,7 @@ import de.thm.arsnova.config.AppConfig;
 import de.thm.arsnova.config.TestAppConfig;
 import de.thm.arsnova.config.TestPersistanceConfig;
 import de.thm.arsnova.config.TestSecurityConfig;
-import de.thm.arsnova.services.StubUserService;
+import de.thm.arsnova.service.StubUserService;
 import org.junit.After;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/test/java/de/thm/arsnova/controller/v2/AuthenticationControllerTest.java b/src/test/java/de/thm/arsnova/controller/v2/AuthenticationControllerTest.java
index f3a11842621088d874d57ee5cd94cd3f9411e4ee..7a7681bdc8dbff17749525dab2954d6016ecb598 100644
--- a/src/test/java/de/thm/arsnova/controller/v2/AuthenticationControllerTest.java
+++ b/src/test/java/de/thm/arsnova/controller/v2/AuthenticationControllerTest.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.controller.AbstractControllerTest;
-import de.thm.arsnova.services.StubUserService;
+import de.thm.arsnova.service.StubUserService;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/src/test/java/de/thm/arsnova/controller/v2/CourseControllerTest.java b/src/test/java/de/thm/arsnova/controller/v2/CourseControllerTest.java
index 9801309655ce70b62c92aa170470933ec54b3970..01765d04769164b2d27a66ea079e546581e8153a 100644
--- a/src/test/java/de/thm/arsnova/controller/v2/CourseControllerTest.java
+++ b/src/test/java/de/thm/arsnova/controller/v2/CourseControllerTest.java
@@ -19,8 +19,7 @@ package de.thm.arsnova.controller.v2;
 
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.controller.AbstractControllerTest;
-import de.thm.arsnova.controller.v2.CourseController;
-import de.thm.arsnova.services.StubUserService;
+import de.thm.arsnova.service.StubUserService;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InjectMocks;
diff --git a/src/test/java/de/thm/arsnova/entities/ContentTest.java b/src/test/java/de/thm/arsnova/model/ContentTest.java
similarity index 95%
rename from src/test/java/de/thm/arsnova/entities/ContentTest.java
rename to src/test/java/de/thm/arsnova/model/ContentTest.java
index 2cacd43a1153fbe5438dc88a4040926dbe056bb2..26a14227dc61dd67883eb21d874953173b48bfe4 100644
--- a/src/test/java/de/thm/arsnova/entities/ContentTest.java
+++ b/src/test/java/de/thm/arsnova/model/ContentTest.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
-import de.thm.arsnova.entities.migration.v2.Answer;
-import de.thm.arsnova.entities.migration.v2.AnswerOption;
-import de.thm.arsnova.entities.migration.v2.Content;
+import de.thm.arsnova.model.migration.v2.Answer;
+import de.thm.arsnova.model.migration.v2.AnswerOption;
+import de.thm.arsnova.model.migration.v2.Content;
 import org.junit.Test;
 
 import java.util.ArrayList;
diff --git a/src/test/java/de/thm/arsnova/entities/EntityTest.java b/src/test/java/de/thm/arsnova/model/EntityTest.java
similarity index 99%
rename from src/test/java/de/thm/arsnova/entities/EntityTest.java
rename to src/test/java/de/thm/arsnova/model/EntityTest.java
index 839c14426df859c911f604e629d36eac4c0bdb92..d5edc7e761db8676d477252e17b0cc3138000226 100644
--- a/src/test/java/de/thm/arsnova/entities/EntityTest.java
+++ b/src/test/java/de/thm/arsnova/model/EntityTest.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import org.junit.Test;
 import org.springframework.core.style.ToStringCreator;
diff --git a/src/test/java/de/thm/arsnova/entities/FeedbackTest.java b/src/test/java/de/thm/arsnova/model/FeedbackTest.java
similarity index 98%
rename from src/test/java/de/thm/arsnova/entities/FeedbackTest.java
rename to src/test/java/de/thm/arsnova/model/FeedbackTest.java
index e0f3c1b6761b0354cb37254dbb0be8873b70b108..01ddd3b1fd9b28ffc5a0ddb448cf72f7a16026b3 100644
--- a/src/test/java/de/thm/arsnova/entities/FeedbackTest.java
+++ b/src/test/java/de/thm/arsnova/model/FeedbackTest.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
 import org.junit.Test;
 
diff --git a/src/test/java/de/thm/arsnova/entities/TestClient.java b/src/test/java/de/thm/arsnova/model/TestClient.java
similarity index 92%
rename from src/test/java/de/thm/arsnova/entities/TestClient.java
rename to src/test/java/de/thm/arsnova/model/TestClient.java
index 905c152aae2122745cebcd08035c8fbcc0bb35d3..ffb7c9a525aea7158afcf71ddccf63103925a24b 100644
--- a/src/test/java/de/thm/arsnova/entities/TestClient.java
+++ b/src/test/java/de/thm/arsnova/model/TestClient.java
@@ -15,9 +15,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.model;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
 import org.springframework.security.core.GrantedAuthority;
 
 import java.util.HashSet;
diff --git a/src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java b/src/test/java/de/thm/arsnova/model/migration/FromV2MigratorTest.java
similarity index 93%
rename from src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java
rename to src/test/java/de/thm/arsnova/model/migration/FromV2MigratorTest.java
index fa1c2c82b3da4bb52819771417c5d0988790804d..fec6f4954b14cf12c519d7168a88b9faf34562c1 100644
--- a/src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java
+++ b/src/test/java/de/thm/arsnova/model/migration/FromV2MigratorTest.java
@@ -15,16 +15,16 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration;
+package de.thm.arsnova.model.migration;
 
 import de.thm.arsnova.config.AppConfig;
 import de.thm.arsnova.config.TestAppConfig;
 import de.thm.arsnova.config.TestPersistanceConfig;
 import de.thm.arsnova.config.TestSecurityConfig;
-import de.thm.arsnova.entities.ChoiceAnswer;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.migration.v2.Answer;
+import de.thm.arsnova.model.ChoiceAnswer;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.migration.v2.Answer;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/test/java/de/thm/arsnova/entities/migration/ToV2MigratorTest.java b/src/test/java/de/thm/arsnova/model/migration/ToV2MigratorTest.java
similarity index 95%
rename from src/test/java/de/thm/arsnova/entities/migration/ToV2MigratorTest.java
rename to src/test/java/de/thm/arsnova/model/migration/ToV2MigratorTest.java
index 26a344cfe778de9e240b9799054ffb4adfa642ee..d52d3eb0ce013c19764324ededd5571018127a14 100644
--- a/src/test/java/de/thm/arsnova/entities/migration/ToV2MigratorTest.java
+++ b/src/test/java/de/thm/arsnova/model/migration/ToV2MigratorTest.java
@@ -15,17 +15,17 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities.migration;
+package de.thm.arsnova.model.migration;
 
 import de.thm.arsnova.config.AppConfig;
 import de.thm.arsnova.config.TestAppConfig;
 import de.thm.arsnova.config.TestPersistanceConfig;
 import de.thm.arsnova.config.TestSecurityConfig;
-import de.thm.arsnova.entities.AnswerStatistics;
-import de.thm.arsnova.entities.ChoiceAnswer;
-import de.thm.arsnova.entities.ChoiceQuestionContent;
-import de.thm.arsnova.entities.Content;
-import de.thm.arsnova.entities.migration.v2.Answer;
+import de.thm.arsnova.model.AnswerStatistics;
+import de.thm.arsnova.model.ChoiceAnswer;
+import de.thm.arsnova.model.ChoiceQuestionContent;
+import de.thm.arsnova.model.Content;
+import de.thm.arsnova.model.migration.v2.Answer;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java b/src/test/java/de/thm/arsnova/service/DefaultEntityServiceImplTest.java
similarity index 97%
rename from src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java
rename to src/test/java/de/thm/arsnova/service/DefaultEntityServiceImplTest.java
index 12425ee84b4b2d6cee1abe878c010de9001faf4a..2a8ccbecc4890f0c71ea4951e215eedb6750f217 100644
--- a/src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java
+++ b/src/test/java/de/thm/arsnova/service/DefaultEntityServiceImplTest.java
@@ -1,12 +1,12 @@
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import de.thm.arsnova.config.AppConfig;
 import de.thm.arsnova.config.TestAppConfig;
 import de.thm.arsnova.config.TestPersistanceConfig;
 import de.thm.arsnova.config.TestSecurityConfig;
-import de.thm.arsnova.entities.Room;
-import de.thm.arsnova.persistance.RoomRepository;
+import de.thm.arsnova.model.Room;
+import de.thm.arsnova.persistence.RoomRepository;
 import de.thm.arsnova.test.context.support.WithMockUser;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/src/test/java/de/thm/arsnova/services/StubUserService.java b/src/test/java/de/thm/arsnova/service/StubUserService.java
similarity index 93%
rename from src/test/java/de/thm/arsnova/services/StubUserService.java
rename to src/test/java/de/thm/arsnova/service/StubUserService.java
index 5a53c6604427f475190273fe8fd31affc670b203..a08514848086c4bd2ca5fac35b572a364563f27b 100644
--- a/src/test/java/de/thm/arsnova/services/StubUserService.java
+++ b/src/test/java/de/thm/arsnova/service/StubUserService.java
@@ -15,11 +15,11 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
-import de.thm.arsnova.persistance.UserRepository;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
+import de.thm.arsnova.persistence.UserRepository;
 import de.thm.arsnova.security.User;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
diff --git a/src/test/java/de/thm/arsnova/services/UserServiceTest.java b/src/test/java/de/thm/arsnova/service/UserServiceTest.java
similarity index 97%
rename from src/test/java/de/thm/arsnova/services/UserServiceTest.java
rename to src/test/java/de/thm/arsnova/service/UserServiceTest.java
index 5dd1a377907dcc66f1633396c132b5eec2bd9711..6794fa424733523bb133d1c2d74ad2dca1bad72d 100644
--- a/src/test/java/de/thm/arsnova/services/UserServiceTest.java
+++ b/src/test/java/de/thm/arsnova/service/UserServiceTest.java
@@ -15,14 +15,14 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services;
+package de.thm.arsnova.service;
 
 import de.thm.arsnova.config.AppConfig;
 import de.thm.arsnova.config.TestAppConfig;
 import de.thm.arsnova.config.TestPersistanceConfig;
 import de.thm.arsnova.config.TestSecurityConfig;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.UserProfile;
 import de.thm.arsnova.security.User;
 import de.thm.arsnova.security.pac4j.OAuthToken;
 import org.junit.Test;
diff --git a/src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java b/src/test/java/de/thm/arsnova/service/score/QuestionBasedScoreCalculatorTest.java
similarity index 96%
rename from src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java
rename to src/test/java/de/thm/arsnova/service/score/QuestionBasedScoreCalculatorTest.java
index 007d2f2eecd8922ac9be6f03caa61a08d4479faa..dad34d7b79ba1eca43964b362b13f4e095374437 100644
--- a/src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java
+++ b/src/test/java/de/thm/arsnova/service/score/QuestionBasedScoreCalculatorTest.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.TestClient;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
+import de.thm.arsnova.model.TestClient;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java b/src/test/java/de/thm/arsnova/service/score/ScoreBasedScoreCalculatorTest.java
similarity index 95%
rename from src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java
rename to src/test/java/de/thm/arsnova/service/score/ScoreBasedScoreCalculatorTest.java
index 8461f81c810af4d31811d27322dc7c7be08a6c5a..5469530b0924751a8a526e2e238267d8d63cd115 100644
--- a/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java
+++ b/src/test/java/de/thm/arsnova/service/score/ScoreBasedScoreCalculatorTest.java
@@ -15,12 +15,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.services.score;
+package de.thm.arsnova.service.score;
 
-import de.thm.arsnova.entities.TestClient;
-import de.thm.arsnova.entities.migration.v2.ClientAuthentication;
-import de.thm.arsnova.entities.transport.ScoreStatistics;
-import de.thm.arsnova.persistance.SessionStatisticsRepository;
+import de.thm.arsnova.model.TestClient;
+import de.thm.arsnova.model.migration.v2.ClientAuthentication;
+import de.thm.arsnova.model.transport.ScoreStatistics;
+import de.thm.arsnova.persistence.SessionStatisticsRepository;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/src/test/java/de/thm/arsnova/test/context/support/WithMockUser.java b/src/test/java/de/thm/arsnova/test/context/support/WithMockUser.java
index 249252b79c3544f3a82e546c76afe446e78c5d9b..bcbcece44ebeed297b1d6b7df6dcab94c443122c 100644
--- a/src/test/java/de/thm/arsnova/test/context/support/WithMockUser.java
+++ b/src/test/java/de/thm/arsnova/test/context/support/WithMockUser.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.test.context.support;
 
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.UserProfile;
 import org.springframework.security.test.context.support.WithSecurityContext;
 
 import java.lang.annotation.Documented;
diff --git a/src/test/java/de/thm/arsnova/test/context/support/WithMockUserSecurityContextFactory.java b/src/test/java/de/thm/arsnova/test/context/support/WithMockUserSecurityContextFactory.java
index ed777e26dc202284514bebe9ba78e960510d12e7..b158e109fac92353c91a2fc29e423eb3fda885e3 100644
--- a/src/test/java/de/thm/arsnova/test/context/support/WithMockUserSecurityContextFactory.java
+++ b/src/test/java/de/thm/arsnova/test/context/support/WithMockUserSecurityContextFactory.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.test.context.support;
 
-import de.thm.arsnova.entities.UserProfile;
+import de.thm.arsnova.model.UserProfile;
 import de.thm.arsnova.security.User;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;