diff --git a/python_payload/st3m/run.py b/python_payload/st3m/run.py
index c1ecc6cdd25eda9d730a5e9f7fb217c6c1d8c500..014e716b8ea85737989dfa40caa39534730ae7e1 100644
--- a/python_payload/st3m/run.py
+++ b/python_payload/st3m/run.py
@@ -94,13 +94,13 @@ class ApplicationMenu(SimpleMenu):
         leds.update()
 
 
-def _make_bundle_menu(mgr: BundleManager, kind: str) -> SimpleMenu:
-    entries: List[MenuItem] = [MenuItemBack()]
+def _get_bundle_menu_entries(mgr: BundleManager, kind: str) -> List[MenuItem]:
+    entries: List[MenuItem] = []
     ids = sorted(mgr.bundles.keys(), key=str.lower)
     for id in ids:
         bundle = mgr.bundles[id]
         entries += bundle.menu_entries(kind)
-    return ApplicationMenu(entries)
+    return entries
 
 
 def _make_compositor(reactor: Reactor, vm: ViewManager) -> overlays.Compositor:
@@ -243,16 +243,14 @@ def run_main() -> None:
             MenuItemAction("Reboot", machine.reset),
         ],
     )
-    menu_main = SunMenu(
-        [
-            MenuItemForeground("Badge", _make_bundle_menu(bundles, "Badge")),
-            MenuItemForeground("Music", _make_bundle_menu(bundles, "Music")),
-            MenuItemForeground("Media", _make_bundle_menu(bundles, "Media")),
-            MenuItemForeground("Games", _make_bundle_menu(bundles, "Games")),
-            MenuItemForeground("Apps", _make_bundle_menu(bundles, "Apps")),
-            MenuItemForeground("System", menu_system),
-        ],
-    )
+    categories = [
+        MenuItemForeground(kind, ApplicationMenu([MenuItemBack()] + entries))
+        for kind in ["Badge", "Music", "Media", "Apps", "Games"]
+        if (entries := _get_bundle_menu_entries(bundles, kind))
+    ]
+    categories.append(MenuItemForeground("System", menu_system))
+    menu_main = SunMenu(categories)
+
     if override_main_app is not None:
         requested = [b for b in bundles.bundles.values() if b.name == override_main_app]
         if len(requested) > 1: