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 cc1a20422db636341d4fe152722291151a183262..d5c7c1db6188744ec29edb72384b9deecad97ac2 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
@@ -56,6 +56,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
@@ -233,14 +234,15 @@ public class ContentController extends PaginationController {
 	@RequestMapping(value = "/{contentId}/publish", method = RequestMethod.POST)
 	public void publishContent(
 			@PathVariable final String contentId,
-			@RequestParam(required = false) final Boolean publish,
+			@RequestParam(defaultValue = "true", required = false) final boolean publish,
 			@RequestBody final Content content
-			) {
+			) throws IOException {
 		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
-		if (publish != null) {
-			contentV3.getState().setVisible(publish);
+		boolean p = publish;
+		if (content != null) {
+			p = contentV3.getState().isVisible();
 		}
-		contentService.update(contentV3);
+		contentService.patch(contentV3, Collections.singletonMap("visible", p), de.thm.arsnova.model.Content::getState);
 	}
 
 	@ApiOperation(value = "Publish all contents",
@@ -272,14 +274,15 @@ public class ContentController extends PaginationController {
 	@RequestMapping(value = "/{contentId}/publishstatistics", method = RequestMethod.POST)
 	public void publishStatistics(
 			@PathVariable final String contentId,
-			@RequestParam(required = false) final Boolean showStatistics,
+			@RequestParam(defaultValue = "true", required = false) final Boolean showStatistics,
 			@RequestBody final Content content
-			) {
+			) throws IOException {
 		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
-		if (showStatistics != null) {
-			contentV3.getState().setResponsesVisible(showStatistics);
+		boolean p = showStatistics;
+		if (content != null) {
+			p = contentV3.getState().isResponsesVisible();
 		}
-		contentService.update(contentV3);
+		contentService.patch(contentV3, Collections.singletonMap("responsesVisible", p), de.thm.arsnova.model.Content::getState);
 	}
 
 	@ApiOperation(value = "Publish correct answer from content with provided id",
@@ -287,14 +290,15 @@ public class ContentController extends PaginationController {
 	@RequestMapping(value = "/{contentId}/publishcorrectanswer", method = RequestMethod.POST)
 	public void publishCorrectAnswer(
 			@PathVariable final String contentId,
-			@RequestParam(required = false) final Boolean showCorrectAnswer,
+			@RequestParam(defaultValue = "true", required = false) final boolean showCorrectAnswer,
 			@RequestBody final Content content
-			) {
+			) throws IOException {
 		de.thm.arsnova.model.Content contentV3 = fromV2Migrator.migrate(content);
-		if (showCorrectAnswer != null) {
-			contentV3.getState().setSolutionVisible(showCorrectAnswer);
+		boolean p = showCorrectAnswer;
+		if (content != null) {
+			p = contentV3.getState().isSolutionVisible();
 		}
-		contentService.update(contentV3);
+		contentService.patch(contentV3, Collections.singletonMap("solutionVisible", p), de.thm.arsnova.model.Content::getState);
 	}
 
 	@ApiOperation(value = "Get contents",