diff --git a/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp b/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp
index 0f99ff132ff8344141fac143f263fbb8e931222d..0bfd294f417f9bef5200d32f828b9b95e04625f8 100644
--- a/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp
+++ b/source/RobotAPI/libraries/skills_gui/memory/SkillManagerWrapper.cpp
@@ -242,8 +242,6 @@ namespace armarx::skills::gui
     SkillManagerWrapper::startExecutionWithParams(skills::SkillID& skillId,
                                                   aron::data::DictPtr const params)
     {
-        std::scoped_lock l(mutex_memory);
-
         // Memory???
         if (!memory)
         {
@@ -259,7 +257,11 @@ namespace armarx::skills::gui
             return;
         }
 
-        const auto& skillDescriptions = this->fetchSkills().at(providerId.value());
+        std::map<skills::SkillID, skills::SkillDescription> skillDescriptions;
+        {
+            skillDescriptions = this->fetchSkills().at(providerId.value());
+        }
+
         if (skillDescriptions.find(skillId) == skillDescriptions.end())
         {
             ARMARX_IMPORTANT << "The Skill: '" << skillId.skillName
@@ -281,7 +283,8 @@ namespace armarx::skills::gui
 
         try
         {
-            memory->begin_executeSkill(req.toManagerIce());
+            std::scoped_lock l(mutex_memory);
+            memory->executeSkillAsync(req.toManagerIce());
         }
         catch (Ice::Exception const& e)
         {