diff --git a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp
index 8c89fe3ab4fc6c35cbecf8f4db83d3cf0c47d4ca..1a2da63dc54e7c9fa09cb876f6e4c87a4ec55aff 100644
--- a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp
+++ b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp
@@ -13,10 +13,16 @@ namespace armarx::skills::gui
     void
     SkillExecutionTreeWidget::runContextMenu(const QPoint& pos)
     {
+        // sanity check
+        ARMARX_CHECK(selectionValid());
+
         QMenu* menu = new QMenu();
 
         // Stop skill
         QAction* stopSkillAction = new QAction("Stop execution", this);
+        const auto& executions = memory->fetchExecutions();
+        if (!executions.contains(selectedExecution.skillExecutionId))
+            return;
         skills::SkillStatus currentStatus =
             memory->fetchExecutions().at(selectedExecution.skillExecutionId).status;
         stopSkillAction->setDisabled(currentStatus == skills::SkillStatus::Aborted ||
@@ -93,11 +99,21 @@ namespace armarx::skills::gui
         ___qtreewidgetitem->setText(2, "SkillID");
         ___qtreewidgetitem->setText(1, "Executor");
         ___qtreewidgetitem->setText(0, "Timestamp");
+
+        connectSignals();
     }
 
     void
     SkillExecutionTreeWidget::connectSignals()
     {
+        connect(this,
+                &QTreeWidget::customContextMenuRequested,
+                this,
+                &SkillExecutionTreeWidget::runContextMenu);
+        connect(this,
+                &QTreeWidget::currentItemChanged,
+                this,
+                &SkillExecutionTreeWidget::executionSelectionChanged);
     }
 
     inline bool