diff --git a/program/services.py b/program/services.py
index 9ec5d4cada7b1ed7395a2f296df7f5546367b09f..fc323d4120aa6ad729d280cd760270d6b708cff8 100644
--- a/program/services.py
+++ b/program/services.py
@@ -69,7 +69,7 @@ class ProjectedEntry(TypedDict):
     end: str
     error: str | None
     hash: str
-    solution_choices: set
+    solution_choices: set[str]
     start: str
 
 
@@ -422,9 +422,9 @@ def make_conflicts(data: ScheduleData, schedule_pk: int | None, show_pk: int) ->
 
     # Generate conflicts and add schedule
     conflicts = generate_conflicts(timeslots)
-    conflicts["schedule"] = model_to_dict(new_schedule)
 
-    return conflicts
+    # create a new dictionary by adding "schedule" to conflicts
+    return dict(conflicts, schedule=model_to_dict(new_schedule))
 
 
 def generate_timeslots(schedule: Schedule) -> list[TimeSlot]:
@@ -571,15 +571,14 @@ def generate_timeslots(schedule: Schedule) -> list[TimeSlot]:
     return timeslots
 
 
-# TODO: add type annotations
-def generate_conflicts(timeslots):
+def generate_conflicts(timeslots: list[TimeSlot]) -> Conflicts:
     """
     Tests a list of timeslot objects for colliding timeslots in the database
     Returns a list of conflicts containing dicts of projected timeslots, collisions and
     solutions
     """
 
-    conflicts = {}
+    conflicts: Conflicts = {}
     projected = []
     solutions = {}