diff --git a/lib/main.dart b/lib/main.dart
index 3fd81e6e3263b4feb9eaeeb8b0068848402fe833..c991cd2b21458ec8a50d2fb372010a0e9f05a0b4 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -105,8 +105,6 @@ class _MyHomePageState extends State<MyHomePage> {
   Future<void> fetchTimetable() async {
     final date = appContext.date.value;
 
-    TimetableData? merged;
-
     final profile = await appContext.profile.firstNotNull;
     final selectedClasses = profile.selectedClasses;
 
@@ -114,16 +112,8 @@ class _MyHomePageState extends State<MyHomePage> {
       return Future(() => untis.timetableOf(classid, date).fetched);
     }));
 
-    for (final fetched in allTimetables) {
-      if (merged == null) {
-        merged = fetched;
-      } else {
-        merged = TimetableData.merge(merged, fetched);
-      }
-    }
-
     setState(() {
-      timetable = merged;
+      timetable = TimetableData.mergeAll(allTimetables);
     });
   }
 
diff --git a/lib/untis/timetable.dart b/lib/untis/timetable.dart
index 96e998a8f33aa3c112435c4c81281d2dbe61a4a7..c0617b84590675e329c4aea5bd5bd3c007e206af 100644
--- a/lib/untis/timetable.dart
+++ b/lib/untis/timetable.dart
@@ -20,4 +20,18 @@ class TimetableData {
       rooms: a.rooms.union(b.rooms),
     );
   }
+
+  static TimetableData? mergeAll(Iterable<TimetableData> all) {
+    TimetableData? merged;
+
+    for (final fetched in all) {
+      if (merged == null) {
+        merged = fetched;
+      } else {
+        merged = TimetableData.merge(merged, fetched);
+      }
+    }
+
+    return merged;
+  }
 }