diff --git a/aleksis/apps/lesrooster/managers.py b/aleksis/apps/lesrooster/managers.py
index aa9877de0598d27cea6dc0c65d1a187dbc3aff27..a4971e95e6b6d1b6caf735e681093130bf1d2c8e 100644
--- a/aleksis/apps/lesrooster/managers.py
+++ b/aleksis/apps/lesrooster/managers.py
@@ -1,5 +1,6 @@
+from collections.abc import Iterable
 from datetime import time
-from typing import Iterable, Optional, Union
+from typing import Optional, Union
 
 from django.db.models import Max, Min, Q, QuerySet
 from django.db.models.functions import Coalesce
diff --git a/aleksis/apps/lesrooster/util/build.py b/aleksis/apps/lesrooster/util/build.py
index 41ac058a93163a361fc4a3bf43de6372597bdb30..c7fe29fbfd17fccacb27c5c6d007af4018e19843 100644
--- a/aleksis/apps/lesrooster/util/build.py
+++ b/aleksis/apps/lesrooster/util/build.py
@@ -25,11 +25,13 @@ def build_timetable(
     max_slots = len(max_slots)
 
     # Get matching lessons
-    lessons = Lesson.objects.filter(slot_start__time_grid=time_grid).filter_from_type(type_, obj)
+    lessons = Lesson.objects.filter(bundle__slot_start__time_grid=time_grid).filter_from_type(
+        type_, obj
+    )
 
     # Sort lesson periods in a dict
     for lesson in lessons:
-        lesson_periods_per_slot[lesson.slot_start].append(lesson)
+        lesson_periods_per_slot[lesson.bundle.all()[0].slot_start].append(lesson)
 
     # Get matching supervisions
     supervisions = Supervision.objects.filter(break_slot__time_grid=time_grid).filter_from_type(
@@ -65,9 +67,7 @@ def build_timetable(
                 col = {
                     "type": "period",
                     "col": (
-                        lesson_periods_per_slot[actual_slot]
-                        if actual_slot in lesson_periods_per_slot
-                        else []
+                        lesson_periods_per_slot.get(actual_slot, [])
                     ),
                 }