diff --git a/program/views.py b/program/views.py
index fbc173350e2417a79e0e429fbecc9b8f6b94b080..bb2f1260ddc5cb203f57001777fe1f08c2105f40 100644
--- a/program/views.py
+++ b/program/views.py
@@ -22,7 +22,7 @@ import json
 import logging
 from datetime import date, datetime, time
 
-from rest_framework import permissions, status, viewsets
+from rest_framework import mixins, permissions, status, viewsets
 from rest_framework.pagination import LimitOffsetPagination
 from rest_framework.response import Response
 
@@ -187,7 +187,13 @@ def json_playout(request):
     )
 
 
-class APIUserViewSet(viewsets.ModelViewSet):
+class APIUserViewSet(
+    mixins.CreateModelMixin,
+    mixins.RetrieveModelMixin,
+    mixins.UpdateModelMixin,
+    mixins.ListModelMixin,
+    viewsets.GenericViewSet,
+):
     """
     /users returns oneself. Superusers see all users. Only superusers may create a user (GET, POST)
     /users/{pk} retrieves or updates a single user. Non-superusers may only update certain fields
@@ -257,10 +263,6 @@ class APIUserViewSet(viewsets.ModelViewSet):
 
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
 
-    def destroy(self, request, *args, **kwargs):
-        """Deleting users is prohibited: Set 'is_active' to False instead"""
-        return Response(status=status.HTTP_400_BAD_REQUEST)
-
 
 class APIShowViewSet(viewsets.ModelViewSet):
     """
@@ -497,7 +499,16 @@ class APIScheduleViewSet(viewsets.ModelViewSet):
         return Response(status=status.HTTP_204_NO_CONTENT)
 
 
-class APITimeSlotViewSet(viewsets.ModelViewSet):
+# TODO: Create is currently not implemented because timeslots are supposed to be inserted
+#       by creating or updating a schedule.
+#       There might be a use case for adding a single timeslot without any conflicts though.
+class APITimeSlotViewSet(
+    mixins.RetrieveModelMixin,
+    mixins.UpdateModelMixin,
+    mixins.DestroyModelMixin,
+    mixins.ListModelMixin,
+    viewsets.GenericViewSet,
+):
     """
     Returns a list of timeslots.
 
@@ -536,13 +547,6 @@ class APITimeSlotViewSet(viewsets.ModelViewSet):
         serializer = TimeSlotSerializer(timeslot)
         return Response(serializer.data)
 
-    def create(self, request, *args, **kwargs):
-        """
-        Timeslots may only be created by adding/updating schedules
-        TODO: Adding single timeslot which fits to schedule?
-        """
-        return Response(status=status.HTTP_400_BAD_REQUEST)
-
     def update(self, request, *args, **kwargs):
         """Link a playlist_id to a timeslot"""