diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp
index bae1d2799cd774e3426a8951b1aeeb7fd6def329..bd9838975d655b40e7d7afd8e1139874b9b2b6a0 100644
--- a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp
+++ b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp
@@ -109,7 +109,9 @@ namespace armarx::skills::gui
         // Text
         this->executeSkillButton->setText(
             QString::fromStdString(SkillDetailGroupBox::EXECUTE_SKILL_BUTTON_TEXT));
-        this->show();
+
+        // not implemented -> disable
+        profileMenuWidget->resetArgsToProfile->setDisabled(true);
 
         connectSignals();
     }
@@ -131,6 +133,16 @@ namespace armarx::skills::gui
                 &SkillDetailGroupBox::updateGui,
                 skillDetailsTreeWidget,
                 &SkillDetailsTreeWidget::updateGui);
+
+        // profile buttons
+        connect(profileMenuWidget->copyArgsToClipboard,
+                &QPushButton::clicked,
+                skillDetailsTreeWidget,
+                &SkillDetailsTreeWidget::copyCurrentConfig);
+        connect(profileMenuWidget->setArgsFromClipboard,
+                &QPushButton::clicked,
+                skillDetailsTreeWidget,
+                &SkillDetailsTreeWidget::pasteCurrentConfig);
     }
 
 
diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp
index c3ead07a4d496ac4edcdcbd4d464717fad9bb97b..a38eeb9790b820fc5a3ea6148a4cf52b71784252 100644
--- a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp
+++ b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp
@@ -88,6 +88,17 @@ namespace armarx::skills::gui
         skills::SkillID sid = shownSkill.value().skillId;
 
         // we assume the id to be fully specified, as it is checked while constructing
+        // sanity check
+        ARMARX_CHECK(sid.isFullySpecified());
+
+        // maybe the search is empty?
+        auto skillsMap = memory->fetchSkills();
+        if (!skillsMap.contains(sid.providerId.value()) ||
+            !skillsMap.at(sid.providerId.value()).contains(sid))
+        {
+            this->resetWidget();
+            return;
+        }
 
         auto descr = memory->fetchSkills().at(sid.providerId.value()).at(sid);
 
diff --git a/source/RobotAPI/libraries/skills_gui/skills/SkillTreeWidget.cpp b/source/RobotAPI/libraries/skills_gui/skills/SkillTreeWidget.cpp
index f20960ce87c074788ae9c2a6f82780944591499c..29b9fb1800b4c4991198bff61a492b6fd0f436b0 100644
--- a/source/RobotAPI/libraries/skills_gui/skills/SkillTreeWidget.cpp
+++ b/source/RobotAPI/libraries/skills_gui/skills/SkillTreeWidget.cpp
@@ -52,6 +52,9 @@ namespace armarx::skills::gui
             }
 
             ++i;
+
+            // sanity check
+            ARMARX_CHECK(skills.contains(providerId));
             auto& providedSkills = skills.at(providerId);
 
             int j = 0;