diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py
index eeea67bb49fb117186f9b8ee3383bac313732677..3c71f8c2a208add14d778f434d0be032941dc51a 100644
--- a/server/app/apis/competitions.py
+++ b/server/app/apis/competitions.py
@@ -25,7 +25,7 @@ class CompetitionsList(Resource):
         item = dbc.add.competition(**args)
 
         # Add default slide
-        dbc.add.slide(item)
+        dbc.add.slide(item.id)
         return item_response(schema.dump(item))
 
 
diff --git a/server/app/apis/components.py b/server/app/apis/components.py
index c712a4e6518d8b878595a98cc38d1d3ad5d9cd81..c895f02322d16c8f603b97c7c60644db4ea36233 100644
--- a/server/app/apis/components.py
+++ b/server/app/apis/components.py
@@ -46,6 +46,5 @@ class ComponentList(Resource):
     @check_jwt(editor=True)
     def post(self, competition_id, slide_id):
         args = component_create_parser.parse_args()
-        item_slide = dbc.get.slide(competition_id, slide_id)
-        item = dbc.add.component(item_slide=item_slide, **args)
+        item = dbc.add.component(slide_id=slide_id, **args)
         return item_response(schema.dump(item))
diff --git a/server/app/apis/questions.py b/server/app/apis/questions.py
index 9b519e5f91f6c9495cc9bd27f07d717948b0b24b..5797872a9865bd693989eb0322d8a9818796e86b 100644
--- a/server/app/apis/questions.py
+++ b/server/app/apis/questions.py
@@ -30,10 +30,9 @@ class QuestionListForSlide(Resource):
         return list_response(list_schema.dump(items))
 
     @check_jwt(editor=True)
-    def post(self, slide_id, competition_id):
+    def post(self, competition_id, slide_id):
         args = question_parser.parse_args(strict=True)
-        item_slide = dbc.get.slide(competition_id, slide_id)
-        item = dbc.add.question(item_slide=item_slide, **args)
+        item = dbc.add.question(slide_id=slide_id, **args)
         return item_response(schema.dump(item))
 
 
diff --git a/server/app/apis/slides.py b/server/app/apis/slides.py
index fffdff0bec150c3458ee73f5462855bfb6480e7e..72562480a49fa82d04bd7a5ff154a70560fb42da 100644
--- a/server/app/apis/slides.py
+++ b/server/app/apis/slides.py
@@ -22,11 +22,9 @@ class SlidesList(Resource):
 
     @check_jwt(editor=True)
     def post(self, competition_id):
-        item_comp = dbc.get.one(Competition, competition_id)
-        item_slide = dbc.add.slide(item_comp)
-        dbc.add.question(f"Fråga {item_slide.order + 1}", 10, 0, item_slide)
-        dbc.utils.refresh(item_comp)
-        return list_response(list_schema.dump(item_comp.slides))
+        item_slide = dbc.add.slide(competition_id)
+        dbc.add.question(f"Fråga {item_slide.order + 1}", 10, 0, item_slide.id)
+        return item_response(schema.dump(item_slide))
 
 
 @api.route("/<slide_id>")
diff --git a/server/app/apis/teams.py b/server/app/apis/teams.py
index 535de69560b7fccc85fed442419a725ca84be7a5..6596244c9085b850106e567a6974ced5428413aa 100644
--- a/server/app/apis/teams.py
+++ b/server/app/apis/teams.py
@@ -23,8 +23,7 @@ class TeamsList(Resource):
     @check_jwt(editor=True)
     def post(self, competition_id):
         args = team_parser.parse_args(strict=True)
-        item_comp = dbc.get.one(Competition, competition_id)
-        item_team = dbc.add.team(args["name"], item_comp)
+        item_team = dbc.add.team(args["name"], competition_id)
         return item_response(schema.dump(item_team))
 
 
diff --git a/server/app/database/controller/add.py b/server/app/database/controller/add.py
index 7b77732bc409f9158df50742c234d56f676bcd36..732790568bad300538728903e7f0a3a23d5292a9 100644
--- a/server/app/database/controller/add.py
+++ b/server/app/database/controller/add.py
@@ -91,13 +91,13 @@ def city(name):
     return db_add(City(name))
 
 
-def component(type_id, item_slide, data, x=0, y=0, w=0, h=0):
+def component(type_id, slide_id, data, x=0, y=0, w=0, h=0):
     """
     Adds a component to the slide at the specified coordinates with the
     provided size and data .
     """
 
-    return db_add(Component(item_slide.id, type_id, data, x, y, w, h))
+    return db_add(Component(slide_id, type_id, data, x, y, w, h))
 
 
 def image(filename, user_id):
@@ -114,12 +114,12 @@ def user(email, password, role_id, city_id, name=None):
     return db_add(User(email, password, role_id, city_id, name))
 
 
-def question(name, total_score, type_id, item_slide):
+def question(name, total_score, type_id, slide_id):
     """
     Adds a question to the specified slide using the provided arguments.
     """
 
-    return db_add(Question(name, total_score, type_id, item_slide.id))
+    return db_add(Question(name, total_score, type_id, slide_id))
 
 
 def question_alternative(text, value, question_id):
@@ -137,10 +137,10 @@ def code(pointer, view_type_id):
     return db_add(Code(code_string, pointer, view_type_id))
 
 
-def team(name, item_competition):
+def team(name, competition_id):
     """ Adds a team with the specified name to the provided competition. """
 
-    item = db_add(Team(name, item_competition.id))
+    item = db_add(Team(name, competition_id))
 
     # Add code for the team
     code(item.id, 1)
@@ -148,11 +148,11 @@ def team(name, item_competition):
     return item
 
 
-def slide(item_competition):
+def slide(competition_id):
     """ Adds a slide to the provided competition. """
 
-    order = Slide.query.filter(Slide.competition_id == item_competition.id).count()  # first element has index 0
-    return db_add(Slide(order, item_competition.id))
+    order = Slide.query.filter(Slide.competition_id == competition_id).count()  # first element has index 0
+    return db_add(Slide(order, competition_id))
 
 
 def competition(name, year, city_id):
@@ -164,7 +164,7 @@ def competition(name, year, city_id):
     item_competition = _competition(name, year, city_id)
 
     # Add one slide for the competition
-    slide(item_competition)
+    slide(item_competition.id)
 
     # TODO: Add two teams
 
diff --git a/server/app/database/controller/copy.py b/server/app/database/controller/copy.py
index a6b408ec301e093d6e47bca359968c052ac62aa1..cd6bbd77e8d201e187a2443ea86afd1eda693a67 100644
--- a/server/app/database/controller/copy.py
+++ b/server/app/database/controller/copy.py
@@ -40,7 +40,7 @@ def _component(item_component, item_slide_new):
 
     add.component(
         item_component.type_id,
-        item_slide_new,
+        item_slide_new.id,
         item_component.data,
         item_component.x,
         item_component.y,
@@ -66,7 +66,7 @@ def slide_to_competition(item_slide_old, item_competition):
     Does not copy team, question answers.
     """
 
-    item_slide_new = add.slide(item_competition)
+    item_slide_new = add.slide(item_competition.id)
 
     # Copy all fields
     item_slide_new.title = item_slide_old.title
diff --git a/server/populate.py b/server/populate.py
index c9813b401e9ed3be376924ae2d382b714490ec95..d842671e8f983fcd87dd2ce6c01f2758008d1363 100644
--- a/server/populate.py
+++ b/server/populate.py
@@ -50,8 +50,8 @@ def _add_items():
         dbc.edit.default(item_comp.slides[0], timer=5, title="test-slide-title")
 
         # Add two more slides to competition
-        dbc.add.slide(item_comp)
-        dbc.add.slide(item_comp)
+        dbc.add.slide(item_comp.id)
+        dbc.add.slide(item_comp.id)
 
         # Add slides
         for j, item_slide in enumerate(item_comp.slides):
@@ -67,7 +67,7 @@ def _add_items():
                 name=f"Question {j}: {question_types_items[j].name}",
                 total_score=j,
                 type_id=question_types_items[j].id,
-                item_slide=item_slide,
+                slide_id=item_slide.id,
             )
 
             for i in range(3):
@@ -80,7 +80,7 @@ def _add_items():
                 y = random.randrange(1, 500)
                 w = random.randrange(150, 400)
                 h = random.randrange(150, 400)
-                dbc.add.component(1, item_slide, {"text": f"hej{k}"}, x, y, w, h)
+                dbc.add.component(1, item_slide.id, {"text": f"hej{k}"}, x, y, w, h)
 
         # TODO: Remove comments when slide without questions is fixed
         # item_slide = dbc.add.slide(item_comp)
@@ -92,7 +92,7 @@ def _add_items():
 
         # Add teams
         for name in teams:
-            dbc.add.team(f"{name}{i}", item_comp)
+            dbc.add.team(f"{name}{i}", item_comp.id)
 
 
 if __name__ == "__main__":
diff --git a/server/tests/test_app.py b/server/tests/test_app.py
index 48e74c5a606fb9c2a04d66eb782f8ed1eba2a68c..b268f3e5472e3dfc652c8ceea5c0aa92ce601444 100644
--- a/server/tests/test_app.py
+++ b/server/tests/test_app.py
@@ -258,6 +258,8 @@ def test_slide_api(client):
     # Add slide
     response, body = post(client, f"/api/competitions/{CID}/slides", headers=headers)
     assert response.status_code == codes.OK
+
+    response, body = get(client, f"/api/competitions/{CID}/slides", headers=headers)
     assert body["count"] == 4
 
     # Get slide
diff --git a/server/tests/test_helpers.py b/server/tests/test_helpers.py
index 190e248c0ad358b077889df8b9e5052b16489a35..a90574bb8b5db708f4b8e378b1138eac36096b66 100644
--- a/server/tests/test_helpers.py
+++ b/server/tests/test_helpers.py
@@ -43,8 +43,8 @@ def add_default_values():
     for j in range(2):
         item_comp = dbc.add.competition(f"Tävling {j}", 2012, item_city.id)
         # Add two more slides to competition
-        dbc.add.slide(item_comp)
-        dbc.add.slide(item_comp)
+        dbc.add.slide(item_comp.id)
+        dbc.add.slide(item_comp.id)
 
         # Add slides
         for i, item_slide in enumerate(item_comp.slides):
@@ -56,10 +56,10 @@ def add_default_values():
             dbc.utils.commit_and_refresh(item_slide)
 
             # Add question to competition
-            dbc.add.question(name=f"Q{i+1}", total_score=i + 1, type_id=1, item_slide=item_slide)
+            dbc.add.question(name=f"Q{i+1}", total_score=i + 1, type_id=1, slide_id=item_slide.id)
 
             # Add text component
-            dbc.add.component(1, item_slide, {"text": "Text"}, i, 2 * i, 3 * i, 4 * i)
+            dbc.add.component(1, item_slide.id, {"text": "Text"}, i, 2 * i, 3 * i, 4 * i)
 
 
 def get_body(response):