diff --git a/aleksis/apps/lesrooster/frontend/components/timetable_management/BundleCard.vue b/aleksis/apps/lesrooster/frontend/components/timetable_management/BundleCard.vue
index 83ac94a5a99fa305247a25471d2bad45f7b1f301..505f0c1e5e13da5ac70bf241c300b186ef303af0 100644
--- a/aleksis/apps/lesrooster/frontend/components/timetable_management/BundleCard.vue
+++ b/aleksis/apps/lesrooster/frontend/components/timetable_management/BundleCard.vue
@@ -36,21 +36,23 @@ export default defineComponent({
       return this.bundle.courses || this.bundle.lessons;
     },
     subjects() {
-      return this.children.flatMap(child => child.subject || {
+      const subjects = this.children.flatMap(child => child.subject || {
         name: "",
         colourFg: "#000000",
         colourBg: "#e6e6e6",
       }
                                          );
+      return [...new Set(subjects)];
     },
     teachers() {
-      return this.children.flatMap(child => child.teachers);
+      const teachers = this.children.flatMap(child => child.teachers);
+      return [...new Set(teachers)];
     },
     rooms() {
       const rooms = this.bundle.courses 
             ? this.bundle.courses.map(course => course.defaultRoom)
             : this.bundle.lessons.flatMap(lesson => lesson.rooms);
-      return rooms.filter(n => n);
+      return [...new Set(rooms.filter(room => room))];
     },
     colorFg() {
       if (this.subjects.length === 1) {