diff --git a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
index 5b606d54e098552f0e566e5bedc5de74d62c6aaa..cd6badd8e62649cbcdcfadc77c2bd35cc29801fe 100644
--- a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
@@ -26,14 +26,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.entities.InterposedQuestion;
 import de.thm.arsnova.entities.InterposedReadingCount;
@@ -41,7 +40,7 @@ import de.thm.arsnova.exceptions.BadRequestException;
 import de.thm.arsnova.exceptions.PreconditionFailedException;
 import de.thm.arsnova.services.IQuestionService;
 
-@Controller
+@RestController
 @RequestMapping("/audiencequestion")
 public class AudienceQuestionController extends AbstractController {
 
@@ -51,53 +50,48 @@ public class AudienceQuestionController extends AbstractController {
 	private IQuestionService questionService;
 
 	@RequestMapping(value = "/count", method = RequestMethod.GET)
-	@ResponseBody
 	public final int getInterposedCount(
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		return questionService.getInterposedCount(sessionkey);
 	}
 
 	@RequestMapping(value = "/readcount", method = RequestMethod.GET)
-	@ResponseBody
 	public final InterposedReadingCount getUnreadInterposedCount(
 			@RequestParam("sessionkey") final String sessionkey,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		return questionService.getInterposedReadingCount(sessionkey);
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<InterposedQuestion> getInterposedQuestions(
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
-	) {
+			) {
 		return questionService.getInterposedQuestions(sessionkey);
 	}
 
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.GET)
-	@ResponseBody
 	public final InterposedQuestion getInterposedQuestion(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		return questionService.readInterposedQuestion(questionId);
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.POST)
-	@ResponseBody
 	@ResponseStatus(HttpStatus.CREATED)
 	public final void postInterposedQuestion(
 			@RequestParam final String sessionkey,
 			@RequestBody final InterposedQuestion question,
 			final HttpServletResponse response
-	) {
+			) {
 		if (!sessionkey.equals(question.getSessionId())) {
 			throw new PreconditionFailedException();
 		}
@@ -110,11 +104,10 @@ public class AudienceQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteInterposedQuestion(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		questionService.deleteInterposedQuestion(questionId);
 	}
 
diff --git a/src/main/java/de/thm/arsnova/controller/CourseController.java b/src/main/java/de/thm/arsnova/controller/CourseController.java
index 9becd01437ab0f11834387b5bfa797f61457ff4e..4276c453aade6a3b15538e9e6c248fd8c1d85311 100644
--- a/src/main/java/de/thm/arsnova/controller/CourseController.java
+++ b/src/main/java/de/thm/arsnova/controller/CourseController.java
@@ -27,11 +27,10 @@ import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.model.Course;
@@ -40,7 +39,7 @@ import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.services.IUserService;
 
-@Controller
+@RestController
 public class CourseController extends AbstractController {
 
 	public static final Logger LOGGER = LoggerFactory
@@ -53,10 +52,9 @@ public class CourseController extends AbstractController {
 	private IUserService userService;
 
 	@RequestMapping(value = "/mycourses", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<Course> myCourses(
 			@RequestParam(value = "sortby", defaultValue = "name") final String sortby
-	) {
+			) {
 		String username = userService.getCurrentUser().getUsername();
 
 		if (username == null) {
@@ -73,7 +71,7 @@ public class CourseController extends AbstractController {
 			if (
 					course.getMembership().isMember()
 					&& course.getMembership().getUserrole().equals(UserRole.TEACHER)
-			) {
+					) {
 				result.add(course);
 			}
 		}
diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
index 02aeb0e199d39792d0d15e925f11bd0c6c894161..e5c47d71b7f5b615255e208735e97edc6fab2b30 100644
--- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java
@@ -24,13 +24,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.entities.Feedback;
 import de.thm.arsnova.entities.User;
@@ -38,7 +37,7 @@ import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.IFeedbackService;
 import de.thm.arsnova.services.IUserService;
 
-@Controller
+@RestController
 public class FeedbackController extends AbstractController {
 
 	public static final Logger LOGGER = LoggerFactory.getLogger(FeedbackController.class);
@@ -50,7 +49,6 @@ public class FeedbackController extends AbstractController {
 	private IUserService userService;
 
 	@RequestMapping(value = "/session/{sessionkey}/feedback", method = RequestMethod.GET)
-	@ResponseBody
 	public final Feedback getFeedback(@PathVariable final String sessionkey, final HttpServletResponse response) {
 		response.addHeader("X-Deprecated-API", "1");
 
@@ -58,7 +56,6 @@ public class FeedbackController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/myfeedback", method = RequestMethod.GET)
-	@ResponseBody
 	public final Integer getMyFeedback(@PathVariable final String sessionkey, final HttpServletResponse response) {
 		Integer value = feedbackService.getMyFeedback(sessionkey, userService.getCurrentUser());
 
@@ -71,7 +68,6 @@ public class FeedbackController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/feedbackcount", method = RequestMethod.GET)
-	@ResponseBody
 	public final int getFeedbackCount(@PathVariable final String sessionkey, final HttpServletResponse response) {
 		response.addHeader("X-Deprecated-API", "1");
 
@@ -79,18 +75,16 @@ public class FeedbackController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/roundedaveragefeedback", method = RequestMethod.GET)
-	@ResponseBody
 	public final long getAverageFeedbackRounded(
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		return feedbackService.getAverageFeedbackRounded(sessionkey);
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/averagefeedback", method = RequestMethod.GET)
-	@ResponseBody
 	public final double getAverageFeedback(@PathVariable final String sessionkey, final HttpServletResponse response) {
 		response.addHeader("X-Deprecated-API", "1");
 
@@ -98,13 +92,12 @@ public class FeedbackController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/session/{sessionkey}/feedback", method = RequestMethod.POST)
-	@ResponseBody
 	@ResponseStatus(HttpStatus.CREATED)
 	public final Feedback postFeedback(
 			@PathVariable final String sessionkey,
 			@RequestBody final int value,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		User user = userService.getCurrentUser();
diff --git a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java
index 042a5b2dd34b64760d1b55a8618c8199d6fe0d4b..f6c9e95a191f82053457dbdcba324e6e1431a832 100644
--- a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java
+++ b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java
@@ -27,16 +27,15 @@ import net.sf.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.entities.FoodVote;
 import de.thm.arsnova.services.IFoodService;
 
-@Controller
+@RestController
 @RequestMapping("/canteen/menu/vote")
 public class FoodVoteController extends AbstractController {
 
@@ -50,19 +49,17 @@ public class FoodVoteController extends AbstractController {
 	public final void setFoodVote(
 			@RequestBody final Object menu,
 			final HttpServletResponse response
-		) {
+			) {
 		String menustring = JSONObject.fromObject(menu).getString("menu");
 		foodService.vote(menustring);
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<FoodVote> getFoodVote() {
 		return foodService.getFoodVote();
 	}
 
 	@RequestMapping(value = "/count", method = RequestMethod.GET, produces = "text/plain")
-	@ResponseBody
 	public final String getFoodVoteCount() {
 		return Integer.toString(foodService.getFoodVoteCount());
 	}
diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
index a26dc791ca87297e75f9efee72864026337f4e84..ab0dac16a00018c6beae16d8e15b7a566a06f96c 100644
--- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
@@ -27,23 +27,23 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.entities.Answer;
 import de.thm.arsnova.entities.Question;
 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.services.IQuestionService;
 
-@Controller
+@RestController
 @RequestMapping("/lecturerquestion")
 public class LecturerQuestionController extends AbstractController {
 
@@ -53,11 +53,10 @@ public class LecturerQuestionController extends AbstractController {
 	private IQuestionService questionService;
 
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.GET)
-	@ResponseBody
 	public final Question getQuestion(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		Question question = questionService.getQuestion(questionId);
 		if (question != null) {
 			return question;
@@ -67,7 +66,6 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.POST)
-	@ResponseBody
 	@ResponseStatus(HttpStatus.CREATED)
 	public final Question postQuestion(@RequestBody final Question question, final HttpServletResponse response) {
 		if (questionService.saveQuestion(question) != null) {
@@ -77,36 +75,33 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.PUT)
-	@ResponseBody
 	public final Question updateQuestion(
 			@PathVariable final String questionId,
 			@RequestBody final Question question,
 			final HttpServletResponse response
-	) {
+			) {
 		return this.questionService.update(question);
 	}
 
 	@RequestMapping(value = "/{questionId}/publish", method = RequestMethod.POST)
-	@ResponseBody
 	public final void publishQuestion(
 			@PathVariable final String questionId,
 			@RequestParam(required = false) final Boolean publish,
 			@RequestBody final Question question,
 			final HttpServletResponse response
-	) {
+			) {
 		if (publish != null) {
 			question.setActive(publish);
 		}
 		this.questionService.update(question);
 	}
-	
+
 	@RequestMapping(value = "/publish", method = RequestMethod.POST)
-	@ResponseBody
 	public final void publishAllQuestions(
 			@RequestParam final String sessionkey,
 			@RequestParam(required = false) final Boolean publish,
 			final HttpServletResponse response
-	) {
+			) {
 		boolean p = true;
 		if (publish != null) {
 			p = publish;
@@ -115,13 +110,12 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{questionId}/publishstatistics", method = RequestMethod.POST)
-	@ResponseBody
 	public final void publishStatistics(
 			@PathVariable final String questionId,
 			@RequestParam(required = false) final Boolean showStatistics,
 			@RequestBody final Question question,
 			final HttpServletResponse response
-	) {
+			) {
 		if (showStatistics != null) {
 			question.setShowStatistic(showStatistics);
 		}
@@ -129,13 +123,12 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{questionId}/publishcorrectanswer", method = RequestMethod.POST)
-	@ResponseBody
 	public final void publishCorrectAnswer(
 			@PathVariable final String questionId,
 			@RequestParam(required = false) final Boolean showCorrectAnswer,
 			@RequestBody final Question question,
 			final HttpServletResponse response
-	) {
+			) {
 		if (showCorrectAnswer != null) {
 			question.setShowAnswer(showCorrectAnswer);
 		}
@@ -143,14 +136,13 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<Question> getSkillQuestions(
 			@RequestParam final String sessionkey,
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly,
 			@RequestParam(value = "flashcardsonly", defaultValue = "false") final boolean flashcardsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationQuestionsOnly,
 			final HttpServletResponse response
-	) {
+			) {
 		List<Question> questions;
 		if (lectureQuestionsOnly) {
 			questions = questionService.getLectureQuestions(sessionkey);
@@ -169,14 +161,13 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = { "/" }, method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteSkillQuestions(
 			@RequestParam final String sessionkey,
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly,
 			@RequestParam(value = "flashcardsonly", defaultValue = "false") final boolean flashcardsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationQuestionsOnly,
 			final HttpServletResponse response
-	) {
+			) {
 		if (lectureQuestionsOnly) {
 			this.questionService.deleteLectureQuestions(sessionkey);
 		} else if (flashcardsOnly) {
@@ -189,7 +180,6 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/count", method = RequestMethod.GET)
-	@ResponseBody
 	public final int getSkillQuestionCount(
 			@RequestParam final String sessionkey,
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly,
@@ -210,22 +200,20 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteAnswersAndQuestion(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		questionService.deleteQuestion(questionId);
 	}
 
 	@RequestMapping(value = "/unanswered", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<String> getUnAnsweredSkillQuestionIds(
 			@RequestParam final String sessionkey,
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationQuestionsOnly,
 			final HttpServletResponse response
-	) {
+			) {
 		List<String> answers;
 		if (lectureQuestionsOnly) {
 			answers = questionService.getUnAnsweredLectureQuestionIds(sessionkey);
@@ -258,11 +246,10 @@ public class LecturerQuestionController extends AbstractController {
 	 *             if not logged in
 	 */
 	@RequestMapping(value = "/{questionId}/myanswer", method = RequestMethod.GET)
-	@ResponseBody
 	public final Answer getMyAnswer(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		Answer answer = questionService.getMyAnswer(questionId);
 		if (answer == null) {
 			response.setStatus(HttpStatus.NO_CONTENT.value());
@@ -292,12 +279,11 @@ public class LecturerQuestionController extends AbstractController {
 	 *             if not logged in
 	 */
 	@RequestMapping(value = "/{questionId}/answer/", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<Answer> getAnswers(
 			@PathVariable final String questionId,
 			@RequestParam(value = "piround", required = false) final Integer piRound,
 			final HttpServletResponse response
-	) {
+			) {
 		List<Answer> answers = null;
 		if (null == piRound) {
 			answers = questionService.getAnswers(questionId);
@@ -316,51 +302,46 @@ public class LecturerQuestionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{questionId}/answer/", method = RequestMethod.POST)
-	@ResponseBody
 	public final Answer saveAnswer(
 			@PathVariable final String questionId,
 			@RequestBody final Answer answer,
 			final HttpServletResponse response
-		) {
+			) {
 		return questionService.saveAnswer(answer);
 	}
 
 	@RequestMapping(value = "/{questionId}/answer/{answerId}", method = RequestMethod.PUT)
-	@ResponseBody
 	public final Answer updateAnswer(
 			@PathVariable final String questionId,
 			@PathVariable final String answerId,
 			@RequestBody final Answer answer,
 			final HttpServletResponse response
-		) {
+			) {
 		return questionService.updateAnswer(answer);
 	}
 
 	@RequestMapping(value = "/{questionId}/answer/{answerId}", method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteAnswer(
 			@PathVariable final String questionId,
 			@PathVariable final String answerId,
 			final HttpServletResponse response
-		) {
+			) {
 		questionService.deleteAnswer(questionId, answerId);
 	}
 
 	@RequestMapping(value = "/{questionId}/answer/", method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteAnswers(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		questionService.deleteAnswers(questionId);
 	}
 
 	@RequestMapping(value = "/answers", method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteAllQuestionsAnswers(
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
-	) {
+			) {
 		questionService.deleteAllQuestionsAnswers(sessionkey);
 	}
 
@@ -378,44 +359,40 @@ public class LecturerQuestionController extends AbstractController {
 	 *             if not logged in
 	 */
 	@RequestMapping(value = "/{questionId}/answercount", method = RequestMethod.GET)
-	@ResponseBody
 	public final int getAnswerCount(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		return questionService.getAnswerCount(questionId);
 	}
 
 	@RequestMapping(value = "/{questionId}/freetextanswer/", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<Answer> getFreetextAnswers(
 			@PathVariable final String questionId,
 			final HttpServletResponse response
-	) {
+			) {
 		return questionService.getFreetextAnswers(questionId);
 	}
 
 	@RequestMapping(value = "/myanswers", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<Answer> getMyAnswers(
 			@RequestParam final String sessionkey,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		return questionService.getMyAnswers(sessionkey);
 	}
 
 	@RequestMapping(value = "/answercount", method = RequestMethod.GET)
-	@ResponseBody
 	public final int getTotalAnswerCount(
 			@RequestParam final String sessionkey,
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationQuestionsOnly,
 			final HttpServletResponse response
-	) {
+			) {
 		response.addHeader("X-Deprecated-API", "1");
 
 		if (lectureQuestionsOnly) {
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 27e5c8e1f38dabdbb88147978284ad532e10451b..a6b57586451060bf289e62ed3a39460bb044ee86 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -28,14 +28,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseStatus;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.LoggedIn;
@@ -46,7 +45,7 @@ import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.SessionService.SessionNameComperator;
 import de.thm.arsnova.services.SessionService.SessionShortNameComperator;
 
-@Controller
+@RestController
 @RequestMapping("/session")
 public class SessionController extends AbstractController {
 
@@ -59,20 +58,17 @@ public class SessionController extends AbstractController {
 	private IUserService userService;
 
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET)
-	@ResponseBody
 	public final Session joinSession(@PathVariable final String sessionkey) {
 		return sessionService.joinSession(sessionkey);
 	}
 
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.DELETE)
-	@ResponseBody
 	public final void deleteSession(@PathVariable final String sessionkey) {
 		User user = userService.getCurrentUser();
 		sessionService.deleteSession(sessionkey, user);
 	}
 
 	@RequestMapping(value = "/{sessionkey}/online", method = RequestMethod.POST)
-	@ResponseBody
 	@ResponseStatus(HttpStatus.CREATED)
 	public final LoggedIn registerAsOnlineUser(
 			@PathVariable final String sessionkey,
@@ -90,7 +86,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{sessionkey}/activeusercount", method = RequestMethod.GET)
-	@ResponseBody
 	public final int countActiveUsers(
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
@@ -101,7 +96,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.POST)
-	@ResponseBody
 	@ResponseStatus(HttpStatus.CREATED)
 	public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) {
 		if (session != null && session.isCourseSession()) {
@@ -127,7 +121,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.PUT)
-	@ResponseBody
 	public final Session updateSession(
 			@PathVariable final String sessionkey,
 			@RequestBody final Session session
@@ -136,7 +129,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/", method = RequestMethod.GET)
-	@ResponseBody
 	public final List<Session> getSessions(
 			@RequestParam(value = "ownedonly", defaultValue = "false") final boolean ownedOnly,
 			@RequestParam(value = "visitedonly", defaultValue = "false") final boolean visitedOnly,
@@ -177,7 +169,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{sessionkey}/lock", method = RequestMethod.POST)
-	@ResponseBody
 	public final Session lockSession(
 			@PathVariable final String sessionkey,
 			@RequestParam(required = false) final Boolean lock,
@@ -191,7 +182,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{sessionkey}/learningprogress", method = RequestMethod.GET)
-	@ResponseBody
 	public final int learningProgress(
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
@@ -200,7 +190,6 @@ public class SessionController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/{sessionkey}/mylearningprogress", method = RequestMethod.GET)
-	@ResponseBody
 	public final int myLearningProgress(
 			@PathVariable final String sessionkey,
 			final HttpServletResponse response
diff --git a/src/main/java/de/thm/arsnova/controller/SocketController.java b/src/main/java/de/thm/arsnova/controller/SocketController.java
index 5a7eab5dad1ed569e01e5bf5bca71f3f04dcbaf1..83dd2737fb150b160a73fa69689f8ab93264c51d 100644
--- a/src/main/java/de/thm/arsnova/controller/SocketController.java
+++ b/src/main/java/de/thm/arsnova/controller/SocketController.java
@@ -27,18 +27,17 @@ import net.sf.json.JSONObject;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.UserSessionService;
 import de.thm.arsnova.socket.ARSnovaSocketIOServer;
 
-@Controller
+@RestController
 @RequestMapping("/socket")
 public class SocketController extends AbstractController {
 
@@ -66,7 +65,6 @@ public class SocketController extends AbstractController {
 	}
 
 	@RequestMapping(value = "/url", method = RequestMethod.GET)
-	@ResponseBody
 	public final String getSocketUrl(final HttpServletRequest request) {
 		StringBuilder url = new StringBuilder();
 
diff --git a/src/main/java/de/thm/arsnova/controller/StatisticsController.java b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
index 4d152fda559c4e87f899748d362f2fbf6794b961..99e1d71f1e95de29a030969e7235c426f5971e6c 100644
--- a/src/main/java/de/thm/arsnova/controller/StatisticsController.java
+++ b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
@@ -3,28 +3,25 @@ package de.thm.arsnova.controller;
 import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
 import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.services.IStatisticsService;
 
-@Controller
+@RestController
 public class StatisticsController {
 
 	@Autowired
 	private IStatisticsService statisticsService;
 
 	@RequestMapping(method = RequestMethod.GET, value = "/statistics")
-	@ResponseBody
 	public final Statistics getStatistics() {
 		return statisticsService.getStatistics();
 	}
 
 	@RequestMapping(method = RequestMethod.GET, value = "/statistics/activeusercount", produces = "text/plain")
-	@ResponseBody
 	public final String countActiveUsers(HttpServletResponse response) {
 		response.addHeader("X-Deprecated-API", "1");
 
@@ -32,7 +29,6 @@ public class StatisticsController {
 	}
 
 	@RequestMapping(method = RequestMethod.GET, value = "/statistics/loggedinusercount", produces = "text/plain")
-	@ResponseBody
 	public final String countLoggedInUsers(HttpServletResponse response) {
 		response.addHeader("X-Deprecated-API", "1");
 
@@ -40,7 +36,6 @@ public class StatisticsController {
 	}
 
 	@RequestMapping(method = RequestMethod.GET, value = "/statistics/sessioncount", produces = "text/plain")
-	@ResponseBody
 	public final String countSessions(HttpServletResponse response) {
 		response.addHeader("X-Deprecated-API", "1");