diff --git a/aleksis/apps/chronos/frontend/components/Timetable.vue b/aleksis/apps/chronos/frontend/components/Timetable.vue
index 6cd8e875adf52c96bc8062c4e1ed0001480ef16b..d685684be91e9e63b7c1e2dc0e991ee7b098b7cf 100644
--- a/aleksis/apps/chronos/frontend/components/Timetable.vue
+++ b/aleksis/apps/chronos/frontend/components/Timetable.vue
@@ -10,6 +10,21 @@ export default {
   apollo: {
     availableTimetables: {
       query: gqlAvailableTimetables,
+      result() {
+        if (
+          !this.selected &&
+          this.$route.params.id &&
+          this.$route.params.type
+        ) {
+          this.selectTimetable(
+            this.availableTimetables.find(
+              (t) =>
+                t.objId === this.$route.params.id &&
+                t.type.toLowerCase() === this.$route.params.type
+            )
+          );
+        }
+      },
     },
   },
   data() {
@@ -29,7 +44,7 @@ export default {
         this.$router.push({ name: "chronos.timetable" });
       } else if (
         selected.objId !== this.$route.params.id ||
-        selected.type !== this.$route.params.type
+        selected.type.toLowerCase() !== this.$route.params.type
       ) {
         this.$router.push({
           name: "chronos.timetableWithId",
diff --git a/aleksis/apps/chronos/frontend/index.js b/aleksis/apps/chronos/frontend/index.js
index c6492797fe70c3e789fb1f937c7035ad7b3d1da7..ad8b0516a4e2599588c1646465f7dfc00cd95fa3 100644
--- a/aleksis/apps/chronos/frontend/index.js
+++ b/aleksis/apps/chronos/frontend/index.js
@@ -27,187 +27,8 @@ export default {
       path: "timetable/:type/:id/",
       component: Timetable,
       name: "chronos.timetableWithId",
-    },
-    {
-      path: "",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.allTimetables",
-      meta: {
-        inMenu: true,
-        titleKey: "chronos.timetable.menu_title_all",
-        icon: "mdi-grid",
-        permission: "chronos.view_timetable_overview_rule",
-      },
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "timetable/my/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.myTimetable",
       meta: {
-        inMenu: true,
-        titleKey: "chronos.timetable.menu_title_my",
-        icon: "mdi-account-outline",
-        permission: "chronos.view_my_timetable_rule",
-      },
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "timetable/my/:year/:month/:day/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.myTimetableByDate",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "timetable/:type_/:pk/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.timetable",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "timetable/:type_/:pk/:year/:week/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.timetableByWeek",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "timetable/:type_/:pk/print/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.timetablePrint",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "timetable/:type_/:pk/:regular/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.timetableRegular",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "lessons/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.lessonsDay",
-      meta: {
-        inMenu: true,
-        titleKey: "chronos.lessons.menu_title_daily",
-        icon: "mdi-calendar-outline",
-        permission: "chronos.view_lessons_day_rule",
-      },
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "lessons/:year/:month/:day/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.lessonsDayByDate",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "lessons/:id_/:week/substitution/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.editSubstitution",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "lessons/:id_/:week/substitution/delete/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.deleteSubstitution",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "substitutions/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.substitutions",
-      meta: {
-        inMenu: true,
-        titleKey: "chronos.substitutions.menu_title",
-        icon: "mdi-update",
-        permission: "chronos.view_substitutions_rule",
-      },
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "substitutions/print/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.substitutionsPrint",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "substitutions/:year/:month/:day/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.substitutionsByDate",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "substitutions/:year/:month/:day/print/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.substitutionsPrintByDate",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "supervisions/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.supervisionsDay",
-      meta: {
-        inMenu: true,
-        titleKey: "chronos.supervisions.menu_title_daily",
-        icon: "mdi-calendar-outline",
-        permission: "chronos.view_supervisions_day_rule",
-      },
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "supervisions/:year/:month/:day/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.supervisionsDayByDate",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "supervisions/:id_/:week/substitution/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.editSupervisionSubstitution",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
-      },
-    },
-    {
-      path: "supervisions/:id_/:week/substitution/delete/",
-      component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
-      name: "chronos.deleteSupervisionSubstitution",
-      props: {
-        byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+        permission: "chronos.view_timetables_rule",
       },
     },
   ],
diff --git a/aleksis/apps/chronos/menus.py b/aleksis/apps/chronos/menus.py
deleted file mode 100644
index 810e88c6d75a4cefb95210234fb70d690bb32ea1..0000000000000000000000000000000000000000
--- a/aleksis/apps/chronos/menus.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from django.utils.translation import gettext_lazy as _
-
-MENUS = {
-    "NAV_MENU_CORE": [
-        {
-            "name": _("Timetables"),
-            "url": "#",
-            "svg_icon": "mdi:school-outline",
-            "root": True,
-            "validators": [
-                "menu_generator.validators.is_authenticated",
-                "aleksis.core.util.core_helpers.has_person",
-            ],
-            "submenu": [
-                {
-                    "name": _("My timetable"),
-                    "url": "my_timetable",
-                    "svg_icon": "mdi:account-outline",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "chronos.view_my_timetable_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("All timetables"),
-                    "url": "all_timetables",
-                    "svg_icon": "mdi:grid",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "chronos.view_timetable_overview_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("Daily lessons"),
-                    "url": "lessons_day",
-                    "svg_icon": "mdi:calendar-outline",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "chronos.view_lessons_day_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("Daily supervisions"),
-                    "url": "supervisions_day",
-                    "svg_icon": "mdi:calendar-outline",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "chronos.view_supervisions_day_rule",
-                        ),
-                    ],
-                },
-                {
-                    "name": _("Substitutions"),
-                    "url": "substitutions",
-                    "svg_icon": "mdi:update",
-                    "validators": [
-                        (
-                            "aleksis.core.util.predicates.permission_validator",
-                            "chronos.view_substitutions_rule",
-                        ),
-                    ],
-                },
-            ],
-        }
-    ]
-}