diff --git a/server/app/apis/auth.py b/server/app/apis/auth.py
index 920d2d65ea482e70a51c4547419656f97f157a31..2f525327acbed96e3bfb574df3c6991e80605fa4 100644
--- a/server/app/apis/auth.py
+++ b/server/app/apis/auth.py
@@ -32,11 +32,12 @@ class AuthSignup(Resource):
         password = args.get("password")
         role_id = args.get("role_id")
         city_id = args.get("city_id")
+        name = args.get("name")
 
         if User.query.filter(User.email == email).count() > 0:
             api.abort(codes.BAD_REQUEST, "User already exists")
 
-        item_user = dbc.add.default(User(email, password, role_id, city_id))
+        item_user = dbc.add.default(User(email, password, role_id, city_id, name))
         if not item_user:
             api.abort(codes.BAD_REQUEST, "User could not be created")
 
diff --git a/server/app/core/controller/add.py b/server/app/core/controller/add.py
index 14c5eecf04940b2daf1c6e563b09f617e68b3cf1..c693715e35c4aa579f1a86ddd9f3af137eeb6e4c 100644
--- a/server/app/core/controller/add.py
+++ b/server/app/core/controller/add.py
@@ -1,11 +1,20 @@
 from app.core import db
-from app.core.models import Blacklist, City, Competition, Role, Slide, User
+from app.core.models import Blacklist, City, Competition, Question, Role, Slide, Team, User
 
 
+def add_decorator(func):
+    def wrapper(*args, **kwargs):
+        item = func(*args, **kwargs)
+        db.session.add(item)
+        db.session.commit()
+        db.session.refresh(item)
+        return item
+
+    return wrapper
+
+
+@add_decorator
 def default(item):
-    db.session.add(item)
-    db.session.commit()
-    db.session.refresh(item)
     return item
 
 
@@ -14,10 +23,27 @@ def blacklist(jti):
     db.session.commit()
 
 
+@add_decorator
 def slide(item_competition):
     order = Slide.query.filter(Slide.competition_id == item_competition.id).count()
-    item = Slide(order, item_competition.id)
-    db.session.add(item)
-    db.session.commit()
-    db.session.refresh(item)
-    return item
+    return Slide(order, item_competition.id)
+
+
+@add_decorator
+def user(email, plaintext_password, item_role, item_city, name=None):
+    return User(email, plaintext_password, item_role.id, item_city.id, name)
+
+
+@add_decorator
+def question(name, order, item_type, item_slide):
+    return Question(name, order, item_type.id, item_slide.id)
+
+
+@add_decorator
+def competition(name, year, item_style, item_city):
+    return Competition(name, year, item_style.id, item_city.id)
+
+
+@add_decorator
+def team(name, item_competition):
+    return Team(name, item_competition.id)
diff --git a/server/app/core/models.py b/server/app/core/models.py
index 7800fbb818f851662a8f51cb490b04000b795ec5..5a4b344bc71f19d49a166fdc2cbff2a080c5a7e6 100644
--- a/server/app/core/models.py
+++ b/server/app/core/models.py
@@ -51,12 +51,13 @@ class User(db.Model):
 
     media = db.relationship("Media", backref="upload_by")
 
-    def __init__(self, email, plaintext_password, role_id, city_id):
+    def __init__(self, email, plaintext_password, role_id, city_id, name=None):
         self._password = bcrypt.generate_password_hash(plaintext_password)
         self.email = email
         self.role_id = role_id
         self.city_id = city_id
         self.authenticated = False
+        self.name = name
 
     @hybrid_property
     def password(self):
diff --git a/server/populate.py b/server/populate.py
index 01c3cb0d99bec49119f65e16faf9999a3f135a99..445ce993c8c489037cbda2bfb06414b9361e1f2d 100644
--- a/server/populate.py
+++ b/server/populate.py
@@ -10,60 +10,61 @@ def _add_items():
     media_types = ["Image", "Video"]
     question_types = ["Boolean", "Multiple", "Text"]
     roles = ["Admin", "Editor"]
-    cities = ["Linköping", "Stockholm", "Norrkäping"]
+    cities = ["Linköping", "Stockholm", "Norrköping", "Örkelljunga"]
     teams = ["Gymnasieskola A", "Gymnasieskola B", "Gymnasieskola C"]
 
-    for item in media_types:
-        db.session.add(MediaType(item))
+    for team_name in media_types:
+        db.session.add(MediaType(team_name))
     db.session.commit()
 
-    for item in question_types:
-        db.session.add(QuestionType(item))
+    for team_name in question_types:
+        db.session.add(QuestionType(team_name))
     db.session.commit()
 
-    for item in roles:
-        db.session.add(Role(item))
+    for team_name in roles:
+        db.session.add(Role(team_name))
     db.session.commit()
 
-    for item in cities:
-        db.session.add(City(item))
+    for team_name in cities:
+        db.session.add(City(team_name))
     db.session.commit()
 
-    db.session.add(Style("Main Style", ""))
-    db.session.commit()
+    item_style1 = dbc.add.default(Style("Main Style", ""))
 
-    dbc.add.default(User("admin@test.se", "password", 2, 1))
-    dbc.add.default(User("test@test.se", "password", 1, 1))
+    item_admin = Role.query.filter(Role.name == "Admin").one()
+    item_editor = Role.query.filter(Role.name == "Editor").one()
 
-    # Add competitions to db
-    for i in range(3):
-        dbc.add.default(Competition(f"Test{i+1}", 1971, 1, 1))
+    item_city = City.query.filter(City.name == "Linköping").one()
 
-    comps = Competition.query.all()
-    for comp in comps:
+    item_text = QuestionType.query.filter(QuestionType.name == "Text").one()
 
-        # Add slides to competitions
-        for _ in range(3):
-            dbc.add.slide(comp)
+    # Add users
+    dbc.add.user("admin@test.se", "password", item_admin, item_city)
+    dbc.add.user("test@test.se", "password", item_editor, item_city)
+
+    # Add competitions to db
+    for i in range(3):
+        dbc.add.competition(f"Test{i+1}", 1971, item_style1, item_city)
 
-        # Add teams to competitions
-        for item in teams:
-            db.session.add(Team(item, comp.id))
-        db.session.commit()
+    item_comps = Competition.query.all()
+    # Add
+    for item_comp in item_comps:
+        for i in range(1):
+            # Add slide to competition
+            item_slide = dbc.add.slide(item_comp)
 
-        # Adds questions
-        slides = Slide.query.filter(Slide.competition_id == comp.id).all()
-        for i, slide in enumerate(slides, start=1):
-            db.session.add(Question(f"Q{i}", i, 1, slide.id))
-        db.session.commit()
+            # Add question to competition
+            dbc.add.question(f"Q{i+1}", i + 1, item_text, item_slide)
 
-    team = Team.query.filter(Team.competition_id == 1).first()
-    print(team.name)
+        # Add teams to competition
+        for team_name in teams:
+            dbc.add.team(team_name, item_comp)
 
 
-app = create_app("configmodule.DevelopmentConfig")
+if __name__ == "__main__":
+    app = create_app("configmodule.DevelopmentConfig")
 
-with app.app_context():
-    db.drop_all()
-    db.create_all()
-    _add_items()
+    with app.app_context():
+        db.drop_all()
+        db.create_all()
+        _add_items()