diff --git a/ExcalidrawPlugin.php b/ExcalidrawPlugin.php
index 34b60350ffa3644d691a5dcdc624323d88e20c8c..d3999951551099d3943f89d6278e84f3acb3b9d2 100644
--- a/ExcalidrawPlugin.php
+++ b/ExcalidrawPlugin.php
@@ -1,6 +1,26 @@
 <?php
 
-class ExcalidrawPlugin extends StudIPPlugin implements StandardPlugin, SystemPlugin
+if (
+    interface_exists(StudipModuleExtended::class)
+    && trait_exists(IconNavigationTrait::class)
+) {
+    abstract class ExcalidrawBasePlugin extends StudIPPlugin implements StudipModuleExtended
+    {
+        use IconNavigationTrait;
+    }
+} else {
+    abstract class ExcalidrawBasePlugin extends StudIPPlugin
+    {
+        abstract public function getManyIconNavigation(array $course_ids, ?string $user_id = null): array;
+
+        public function getIconNavigation($course_id, $last_visit, $user_id)
+        {
+            return $this->getManyIconNavigation([$course_id], $user_id)[$course_id] ?? null;
+        }
+    }
+}
+
+class ExcalidrawPlugin extends ExcalidrawBasePlugin implements StandardPlugin, SystemPlugin
 {
     public function __construct()
     {
@@ -37,14 +57,14 @@ class ExcalidrawPlugin extends StudIPPlugin implements StandardPlugin, SystemPlu
         return array('excalidraw' => $tab);
     }
 
-    public function getIconNavigation($course_id, $last_visit, $user_id)
+    public function getManyIconNavigation(array $course_ids, ?string $user_id = null): array
     {
         $navigation = new Navigation(
             $this->_('Whiteboard (Beta)'),
             PluginEngine::getURL($this, [], "excalidraw/overview")
         );
         $navigation->setImage(Icon::create('block-canvas', Icon::ROLE_CLICKABLE));
-        return $navigation;
+        return array_fill_keys($course_ids, $navigation);
     }
 
     public function getNotificationObjects($course_id, $since, $user_id)