diff --git a/src/shared/Modules/Module.cpp b/src/shared/Modules/Module.cpp
index a3474ea5a461379d9d0c6e3f1241a432b0d95d66..43b12f3ea76625dc14d73909c6224be27f34f0a8 100644
--- a/src/shared/Modules/Module.cpp
+++ b/src/shared/Modules/Module.cpp
@@ -37,8 +37,7 @@ Module::Module(ModuleId id) : id(id)
 
                     QAction *close = new QAction("Close");
                     connect(close, &QAction::triggered, this,
-                            [this]()
-                            { emit closeMe(std::shared_ptr<Module>(this)); });
+                            [this]() { emit closeMe(this); });
                     menu.addAction(close);
 
                     QAction *replace = new QAction("Replace");
@@ -50,7 +49,7 @@ Module::Module(ModuleId id) : id(id)
                     if (customContextMenuActions.size() > 0)
                     {
                         menu.addSeparator();
-                        menu.addActions(customContextMenuActions);
+                        this->addActionsToMenu(menu);
                     }
 
                     // Load hub actions
@@ -61,6 +60,14 @@ Module::Module(ModuleId id) : id(id)
     }
 }
 
+void Module::addActionsToMenu(QMenu &menu)
+{
+    std::for_each(customContextMenuActions.begin(),
+                  customContextMenuActions.end(),
+                  [&menu](std::unique_ptr<QAction> action)
+                  { menu.addAction(action.get()); });
+}
+
 ModuleId Module::getId() const { return id; }
 
 QString Module::getModuleName() const
diff --git a/src/shared/Modules/Module.h b/src/shared/Modules/Module.h
index 416063ee4eaccb70993542bf97909dc0cece7c76..7d1800bc41953280c92018f094f1d259a972165c 100644
--- a/src/shared/Modules/Module.h
+++ b/src/shared/Modules/Module.h
@@ -62,5 +62,8 @@ signals:
 
 protected:
     ModuleId id;
-    QList<QAction*> customContextMenuActions;
+    QList<std::unique_ptr<QAction>> customContextMenuActions;
+
+private:
+    void addActionsToMenu(QMenu& menu);
 };