diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp
index 5fcb8e0cbb901396b982ad6c3f1b3d76538277e3..6dcea52a55191f03716aea507d13cd6c831d8d87 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp
@@ -10,11 +10,9 @@ namespace armarx::skills::provider
     SkillDescription
     CallbackSkill::GetSkillDescription()
     {
-        return SkillDescription{{"ShowMeCallbacks"},
-                                "This skill does shows callbacks",
-                                nullptr,
-                                armarx::core::time::Duration::MilliSeconds(1000),
-                                nullptr};
+        return SkillDescription{.skillId = skills::SkillID{.skillName = "ShowMeCallbacks"},
+                                .description = "This skill does shows callbacks",
+                                .timeout = armarx::core::time::Duration::MilliSeconds(1000)};
     }
 
     Skill::MainResult
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp
index 1a4d32fe476cd039ad6bd9a6a28fc90cd8d57b28..983902512c03bc28c8d4429fd22c4690aeb14833 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp
@@ -12,18 +12,19 @@ namespace armarx::skills::provider
     SkillDescription
     ChainingSkill::GetSkillDescription()
     {
-        return SkillDescription{{"ChainingSkill"},
-                                "This skill calls the Timeout skill three times. The last "
-                                "execution is aborted due to a timeout of this skill.",
-                                nullptr,
-                                armarx::core::time::Duration::MilliSeconds(5000),
-                                nullptr};
+        return SkillDescription{.skillId = armarx::skills::SkillID{.skillName = "ChainingSkill"},
+                                .description =
+                                    "This skill calls the Timeout skill three times. The last "
+                                    "execution is aborted due to a timeout of this skill.",
+                                .timeout = armarx::core::time::Duration::MilliSeconds(5000)};
     }
 
     Skill::MainResult
     ChainingSkill::main(const MainInput& in)
     {
-        SkillProxy prx(manager, skills::SkillID(*getSkillId().providerId, "Timeout"));
+        SkillProxy prx(
+            manager,
+            skills::SkillID{.providerId = *getSkillId().providerId, .skillName = "Timeout"});
 
         ARMARX_INFO << "CALL PROXY FIRST TIME";
         callSubskill(prx);
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp b/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp
index ccfa7f31a5e4dd7a235f1ef1d60a441441a8a595..6779f1d6a7fb872b80d56cf9547aaceb560218d7 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp
@@ -23,11 +23,12 @@ namespace armarx::skills::provider
         root_profile_params.some_list_of_matrices.push_back(Eigen::Matrix3f::Zero());
         root_profile_params.some_matrix = Eigen::Matrix3f::Zero();
 
-        return SkillDescription{{"HelloWorld"},
-                                "This skill logs a message on ARMARX_IMPORTANT",
-                                root_profile_params.toAron(),
-                                armarx::core::time::Duration::MilliSeconds(1000),
-                                armarx::skills::Example::HelloWorldAcceptedType::ToAronType()};
+        return SkillDescription{.skillId = skills::SkillID{.skillName = "HelloWorld"},
+                                .description = "This skill logs a message on ARMARX_IMPORTANT",
+                                .rootProfileDefaults = root_profile_params.toAron(),
+                                .timeout = armarx::core::time::Duration::MilliSeconds(1000),
+                                .resultType =
+                                    armarx::skills::Example::HelloWorldAcceptedType::ToAronType()};
     }
 
     Skill::MainResult
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp
index ac9bf9af3d980d76695ae64176c60d063a440263..264876a7e0c8094b38b6032a32e115dbbb336c18 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp
@@ -17,11 +17,10 @@ namespace armarx::skills::provider
     IncompleteSkill::GetSkillDescription()
     {
         auto d = HelloWorldSkill::GetSkillDescription();
-        return SkillDescription{{"IncompleteSkill"},
-                                d.description,
-                                {},
-                                d.timeout + armarx::core::time::Duration::Seconds(2),
-                                d.parametersType};
+        return SkillDescription{.skillId = {.skillName = "IncompleteSkill"},
+                                .description = d.description,
+                                .timeout = d.timeout + armarx::core::time::Duration::Seconds(2),
+                                .parametersType = d.parametersType};
     }
 
     Skill::PrepareResult
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
index 4230249f7d9eb30ca641da0bbd5f2934c2307d48..5ab480cd5c05556e2c7ea486ac0ec3976b1eb6df 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
@@ -30,11 +30,10 @@ namespace armarx::skills::provider
 
         // Add another lambda example skill
         {
-            skills::SkillDescription fooDesc({"Foo"},
-                                             "This skill does exactly nothing.",
-                                             nullptr,
-                                             armarx::core::time::Duration::MilliSeconds(1000),
-                                             nullptr);
+            skills::SkillDescription fooDesc{.skillId = SkillID{.skillName = "Foo"},
+                                             .description = "This skill does exactly nothing.",
+                                             .timeout =
+                                                 armarx::core::time::Duration::MilliSeconds(1000)};
             addSkillFactory(fooDesc,
                             []()
                             {
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp
index 9c0266f8ecc2f9f6cf4a3983b832a6786d36be1f..31dc03ae05caf0e2be256487e3a6a4294243e9d0 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp
@@ -12,11 +12,9 @@ namespace armarx::skills::provider
     SkillDescription
     TimeoutSkill::GetSkillDescription()
     {
-        return SkillDescription{{"Timeout"},
-                                "This fails with timeout reached",
-                                nullptr,
-                                armarx::core::time::Duration::MilliSeconds(2000),
-                                nullptr};
+        return SkillDescription{.skillId = SkillID{.skillName = "Timeout"},
+                                .description = "This fails with timeout reached",
+                                .timeout = armarx::core::time::Duration::MilliSeconds(2000)};
     }
 
     PeriodicSkill::StepResult
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index 87450efc502a8430bffab8d205e0e3eec2dbbcb0..191c160194207e561a1be7582c038361299a81ac 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -231,7 +231,8 @@ namespace armarx
             {
                 auto description = skills::SkillDescription::FromIce(desc);
                 auto skillId = skills::SkillID::FromIce(sid);
-                auto providerId = skills::ProviderID(skillId);
+                auto providerId = skillId.providerId.value_or(
+                    skills::ProviderID{.providerName = "UNKNOWN PROVIDER NAME"});
 
                 ARMARX_CHECK(skillId.isFullySpecified());
 
@@ -245,7 +246,7 @@ namespace armarx
             {
                 auto* providerItem = widget.treeWidgetSkills->topLevelItem(i);
                 auto providerName = providerItem->text(0).toStdString();
-                skills::ProviderID providerId(providerName);
+                skills::ProviderID providerId{.providerName = providerName};
 
                 if (skills.find(providerId) == skills.end())
                 {
@@ -264,7 +265,9 @@ namespace armarx
                     auto* skillItem = providerItem->child(j);
                     auto skillName = skillItem->text(0).toStdString();
 
-                    skills::SkillID skillId(providerName, skillName);
+                    skills::SkillID skillId{.providerId =
+                                                skills::ProviderID{.providerName = providerName},
+                                            .skillName = skillName};
 
                     if (providedSkills.find(skillId) == providedSkills.end())
                     {
@@ -286,7 +289,7 @@ namespace armarx
                 {
                     auto el = widget.treeWidgetSkills->topLevelItem(i);
                     auto providerName = el->text(0).toStdString();
-                    skills::ProviderID elProviderId(providerName);
+                    skills::ProviderID elProviderId{.providerName = providerName};
 
                     if (providerId == elProviderId)
                     {
@@ -308,7 +311,7 @@ namespace armarx
                     {
                         auto el = providerItem->child(i);
                         auto skillName = el->text(0).toStdString();
-                        skills::SkillID elSkillId(providerId.providerName, skillName);
+                        skills::SkillID elSkillId{providerId, skillName};
 
                         if (skillId == elSkillId)
                         {
@@ -441,7 +444,7 @@ namespace armarx
 
         std::scoped_lock l(updateMutex);
 
-        auto providerId = skills::ProviderID(selectedSkill.skillId);
+        auto providerId = *selectedSkill.skillId.providerId;
         const auto& skillDescriptions = skills.at(providerId);
         if (skillDescriptions.find(selectedSkill.skillId) == skillDescriptions.end())
         {
@@ -453,10 +456,10 @@ namespace armarx
         char hostname[HOST_NAME_MAX];
         gethostname(hostname, HOST_NAME_MAX);
 
-        skills::SkillExecutionRequest req(selectedSkill.skillId,
+        skills::SkillExecutionRequest req{selectedSkill.skillId,
                                           "Skills.Manager GUI (hostname: " + std::string(hostname) +
                                               ")",
-                                          data);
+                                          data};
 
         ARMARX_CHECK(selectedSkill.skillId.isFullySpecified()); // sanity check
         ARMARX_IMPORTANT << "Executing skill from GUI: " << selectedSkill.skillId << ".";
@@ -525,7 +528,7 @@ namespace armarx
         skillsArgumentsTreeWidgetItem = nullptr;
 
         // We assert that the skill exists
-        ARMARX_CHECK(skills.count(selectedSkill.skillId) > 0);
+        ARMARX_CHECK(skills.count(*selectedSkill.skillId.providerId) > 0);
         ARMARX_CHECK(skills.at(*selectedSkill.skillId.providerId).count(selectedSkill.skillId) > 0);
         auto skillDesc = skills.at(*selectedSkill.skillId.providerId).at(selectedSkill.skillId);
 
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
index 665982d64def770a002ecb73d912d2e7df39550e..1fd2e2f110fe8d34890f8d685c8faa5bc2031b70 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
@@ -154,7 +154,8 @@ namespace armarx
             skills::SkillID skillId;
 
             // make default constructable
-            SelectedSkill() : skillId({""}, "")
+            SelectedSkill() :
+                skillId{.providerId = skills::ProviderID{.providerName = ""}, .skillName = ""}
             {
             }
         } selectedSkill;
diff --git a/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp b/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp
index 13ea609027b68530be6c294d5a79e654be8a7165..3b1d8925fc6694ba7117a4ce3e0db07ecab68586 100644
--- a/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp
+++ b/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp
@@ -133,7 +133,7 @@ namespace armarx::armem
     fromAron(const armarx::skills::arondto::SkillID& dto, skills::SkillID& bo)
     {
         bo.skillName = dto.skillName;
-        bo.providerId = skills::ProviderID("");
+        bo.providerId = skills::ProviderID{.providerName = ""};
         fromAron(dto.providerId, *bo.providerId);
     }
 
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
index 4b57e0b44f8b9f2626514c94dd757407506efb57..833deb3f68144a10a71812f9eb39dbec455d9c0c 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
@@ -39,7 +39,9 @@ namespace armarx::skills::segment
         skills::arondto::SkillExecutionRequest request;
         request.fromAron(commitDataAron);
 
-        skills::SkillExecutionRequest info({{""}, ""}, "", nullptr);
+        skills::SkillExecutionRequest info{
+            .skillId = SkillID{.providerId = ProviderID{.providerName = ""}, .skillName = ""},
+            .executorName = ""};
         armem::fromAron(request, info);
         return info;
     }
diff --git a/source/RobotAPI/libraries/skills/core/ProviderID.cpp b/source/RobotAPI/libraries/skills/core/ProviderID.cpp
index 990898f38fe98a76d6edc4e1ff846ba98af1bf75..53d6aad6807a7002a80a097d94b1e1fb5ec9f864 100644
--- a/source/RobotAPI/libraries/skills/core/ProviderID.cpp
+++ b/source/RobotAPI/libraries/skills/core/ProviderID.cpp
@@ -6,16 +6,6 @@ namespace armarx
 {
     namespace skills
     {
-        ProviderID::ProviderID(const std::string& pname) : providerName(pname)
-        {
-        }
-
-        ProviderID::ProviderID(const skills::SkillID& skillid)
-        {
-            ARMARX_CHECK(skillid.providerId.has_value());
-            providerName = skillid.providerId->providerName;
-        }
-
         bool
         ProviderID::operator==(const ProviderID& other) const
         {
@@ -43,13 +33,13 @@ namespace armarx
         ProviderID
         ProviderID::FromIce(const manager::dto::ProviderID& s)
         {
-            return ProviderID(s.providerName);
+            return ProviderID{.providerName = s.providerName};
         }
 
         ProviderID
         ProviderID::FromIce(const callback::dto::ProviderID& s)
         {
-            return ProviderID(s.providerName);
+            return ProviderID{.providerName = s.providerName};
         }
 
         manager::dto::ProviderID
diff --git a/source/RobotAPI/libraries/skills/core/ProviderID.h b/source/RobotAPI/libraries/skills/core/ProviderID.h
index 10079220ba939f0e3ebfb6ac81cbf86741626b7c..5687f649185fa472d0afe1b7a60e6eb2eba46d34 100644
--- a/source/RobotAPI/libraries/skills/core/ProviderID.h
+++ b/source/RobotAPI/libraries/skills/core/ProviderID.h
@@ -15,10 +15,6 @@ namespace armarx
         class ProviderID
         {
         public:
-            ProviderID() = default;
-            ProviderID(const skills::SkillID& skillid);
-            ProviderID(const std::string& pName);
-
             bool operator==(const ProviderID& other) const;
             bool operator!=(const ProviderID& other) const;
             bool operator<(const ProviderID& other) const;
diff --git a/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp b/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp
index 7ae36dbfa185225e13853229790465692501a78f..135b81c594aaf004d65170c81f65a1a6b9529a07 100644
--- a/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp
+++ b/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp
@@ -4,13 +4,6 @@ namespace armarx
 {
     namespace skills
     {
-        ProviderInfo::ProviderInfo(const ProviderID& pid,
-                                   const provider::dti::SkillProviderInterfacePrx& i,
-                                   const std::map<SkillID, SkillDescription>& skills) :
-            providerId(pid), providerInterface(i), providedSkills(skills)
-        {
-        }
-
         skills::manager::dto::ProviderInfo
         ProviderInfo::toIce() const
         {
@@ -33,7 +26,7 @@ namespace armarx
             {
                 m.insert({skills::SkillID::FromIce(k), skills::SkillDescription::FromIce(v)});
             }
-            return ProviderInfo(skills::ProviderID::FromIce(i.providerId), i.providerInterface, m);
+            return ProviderInfo{skills::ProviderID::FromIce(i.providerId), i.providerInterface, m};
         }
     } // namespace skills
 } // namespace armarx
diff --git a/source/RobotAPI/libraries/skills/core/ProviderInfo.h b/source/RobotAPI/libraries/skills/core/ProviderInfo.h
index f9d3ac132188c8b5a7a9e44f46de86a781c917d2..438a2cf9d894f25f97150dc10ab6c5d9538cdc1e 100644
--- a/source/RobotAPI/libraries/skills/core/ProviderInfo.h
+++ b/source/RobotAPI/libraries/skills/core/ProviderInfo.h
@@ -23,11 +23,6 @@ namespace armarx
             provider::dti::SkillProviderInterfacePrx providerInterface;
             std::map<SkillID, SkillDescription> providedSkills;
 
-            ProviderInfo() = default;
-            ProviderInfo(const ProviderID& pid,
-                         const provider::dti::SkillProviderInterfacePrx& i,
-                         const std::map<SkillID, SkillDescription>& skills);
-
             skills::manager::dto::ProviderInfo toIce() const;
 
             static ProviderInfo FromIce(const manager::dto::ProviderInfo&);
diff --git a/source/RobotAPI/libraries/skills/core/SkillDescription.cpp b/source/RobotAPI/libraries/skills/core/SkillDescription.cpp
index 474b16398ed4f75f1b20af309d2c13717131a99c..2fa37b33ceab97b944e55644c99c530ba3f371c3 100644
--- a/source/RobotAPI/libraries/skills/core/SkillDescription.cpp
+++ b/source/RobotAPI/libraries/skills/core/SkillDescription.cpp
@@ -7,34 +7,6 @@ namespace armarx
 {
     namespace skills
     {
-
-        SkillDescription::SkillDescription(const SkillID& id,
-                                           const std::string& desc,
-                                           const aron::data::DictPtr& defaultParameters,
-                                           const armarx::core::time::Duration& timeout,
-                                           const aron::type::ObjectPtr& parametersType,
-                                           const aron::type::ObjectPtr& resultType) :
-            skillId(id),
-            description(desc),
-            rootProfileDefaults(defaultParameters),
-            timeout(timeout),
-            parametersType(parametersType),
-            resultType(resultType)
-        {
-        }
-
-        // LEGACY CTOR
-        SkillDescription::SkillDescription(const std::string& skillName,
-                                           const std::string& desc,
-                                           const std::vector<std::string>&,
-                                           const armarx::core::time::Duration& timeout,
-                                           const aron::data::DictPtr& data,
-                                           const aron::type::ObjectPtr& parametersType,
-                                           const aron::type::ObjectPtr& resultType) :
-            SkillDescription({skillName}, desc, data, timeout, parametersType, resultType)
-        {
-        }
-
         provider::dto::SkillDescription
         SkillDescription::toProviderIce() const
         {
@@ -69,13 +41,14 @@ namespace armarx
         {
             armarx::core::time::Duration _d;
             armarx::core::time::fromIce(i.timeout, _d);
-            return SkillDescription(
-                SkillID::FromIce(i.skillId, pid),
-                i.description,
-                armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults),
-                _d,
-                armarx::aron::type::Object::FromAronObjectDTO(i.parametersType),
-                armarx::aron::type::Object::FromAronObjectDTO(i.resultType));
+            return SkillDescription{
+                .skillId = SkillID::FromIce(i.skillId, pid),
+                .description = i.description,
+                .rootProfileDefaults =
+                    armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults),
+                .timeout = _d,
+                .parametersType = armarx::aron::type::Object::FromAronObjectDTO(i.parametersType),
+                .resultType = armarx::aron::type::Object::FromAronObjectDTO(i.resultType)};
         }
 
         SkillDescription
@@ -83,13 +56,14 @@ namespace armarx
         {
             armarx::core::time::Duration _d;
             armarx::core::time::fromIce(i.timeout, _d);
-            return SkillDescription(
-                SkillID::FromIce(i.skillId),
-                i.description,
-                armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults),
-                _d,
-                armarx::aron::type::Object::FromAronObjectDTO(i.parametersType),
-                armarx::aron::type::Object::FromAronObjectDTO(i.resultType));
+            return SkillDescription{
+                .skillId = SkillID::FromIce(i.skillId),
+                .description = i.description,
+                .rootProfileDefaults =
+                    armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults),
+                .timeout = _d,
+                .parametersType = armarx::aron::type::Object::FromAronObjectDTO(i.parametersType),
+                .resultType = armarx::aron::type::Object::FromAronObjectDTO(i.resultType)};
         }
     } // namespace skills
 } // namespace armarx
diff --git a/source/RobotAPI/libraries/skills/core/SkillDescription.h b/source/RobotAPI/libraries/skills/core/SkillDescription.h
index 509411adb00ca40cd4757a01623d2a7aae6c8e2b..4bc8a3cd8fe92f7ebdf13c32b1e812be8596fbbd 100644
--- a/source/RobotAPI/libraries/skills/core/SkillDescription.h
+++ b/source/RobotAPI/libraries/skills/core/SkillDescription.h
@@ -17,36 +17,12 @@ namespace armarx
     {
         struct SkillDescription
         {
-
-            SkillDescription() = default;
-            SkillDescription(const SkillID& id,
-                             const std::string& desc,
-                             const aron::data::DictPtr& data = nullptr,
-                             const armarx::core::time::Duration& timeout =
-                                 armarx::core::time::Duration::MilliSeconds(-1),
-                             const aron::type::ObjectPtr& parametersType = nullptr,
-                             const aron::type::ObjectPtr& resultType = nullptr);
-
-            // LEGACY
-            SkillDescription(const std::string& skillName,
-                             const std::string& desc,
-                             const std::vector<std::string>& ignore_me_i_am_not_used_anymore,
-                             const armarx::core::time::Duration& timeout =
-                                 armarx::core::time::Duration::MilliSeconds(-1),
-                             const aron::data::DictPtr& data = nullptr,
-                             const aron::type::ObjectPtr& parametersType = nullptr,
-                             const aron::type::ObjectPtr& resultType = nullptr);
-
-            SkillDescription(const SkillDescription&) = default;
-
-            SkillDescription& operator=(const SkillDescription&) = default;
-
             SkillID skillId;
-            std::string description;
-            aron::data::DictPtr rootProfileDefaults;
-            armarx::core::time::Duration timeout;
-            aron::type::ObjectPtr parametersType;
-            aron::type::ObjectPtr resultType;
+            std::string description = "";
+            aron::data::DictPtr rootProfileDefaults = nullptr;
+            armarx::core::time::Duration timeout = armarx::core::time::Duration::MilliSeconds(-1);
+            aron::type::ObjectPtr parametersType = nullptr;
+            aron::type::ObjectPtr resultType = nullptr;
 
             provider::dto::SkillDescription toProviderIce() const;
             manager::dto::SkillDescription toManagerIce() const;
diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp b/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp
index f048167a136ed66da74f892aa03929049a8455ea..d2f305c1a5e42b5dc28da3285ef46dcbe154b3e6 100644
--- a/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp
+++ b/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp
@@ -4,13 +4,6 @@ namespace armarx
 {
     namespace skills
     {
-        SkillExecutionID::SkillExecutionID(const SkillID& id,
-                                           const std::string& executorName,
-                                           const armarx::core::time::DateTime& time) :
-            skillId(id), executorName(executorName), executionStartedTime(time)
-        {
-        }
-
         skills::manager::dto::SkillExecutionID
         SkillExecutionID::toManagerIce() const
         {
diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionID.h b/source/RobotAPI/libraries/skills/core/SkillExecutionID.h
index 6d9975bb469eead6760e260ead049dec5e1ab4ea..6c4975388e716c5b0491518a356add0b15cbbf5e 100644
--- a/source/RobotAPI/libraries/skills/core/SkillExecutionID.h
+++ b/source/RobotAPI/libraries/skills/core/SkillExecutionID.h
@@ -18,11 +18,6 @@ namespace armarx
     {
         struct SkillExecutionID
         {
-            SkillExecutionID() = default;
-            SkillExecutionID(const SkillID&,
-                             const std::string& executorName,
-                             const armarx::core::time::DateTime&);
-
             bool
             operator==(const SkillExecutionID& other) const
             {
diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp
index f4fdceca8f4fdcdcbcca9d462108c680fe42ea4b..2d6a0181bbbb8990f44ada113c55a69a532ee99f 100644
--- a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp
+++ b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp
@@ -4,18 +4,6 @@ namespace armarx
 {
     namespace skills
     {
-        SkillExecutionRequest::SkillExecutionRequest(
-            const skills::SkillID& skill,
-            const std::string executorName,
-            const armarx::aron::data::DictPtr& params,
-            const callback::dti::SkillProviderCallbackInterfacePrx& callback) :
-            skillId(skill),
-            executorName(executorName),
-            parameters(params),
-            callbackInterface(callback)
-        {
-        }
-
         manager::dto::SkillExecutionRequest
         SkillExecutionRequest::toManagerIce() const
         {
diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h
index 7031f8db1741f4b4fba1481fb4cc810ae0eeaebd..d1f5bbcdd175f9f3516d45856186d453af2f987e 100644
--- a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h
+++ b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h
@@ -21,18 +21,6 @@ namespace armarx
         class SkillExecutionRequest
         {
         public:
-            skills::SkillID skillId;
-            std::string executorName;
-            armarx::aron::data::DictPtr parameters;
-            callback::dti::SkillProviderCallbackInterfacePrx callbackInterface;
-
-            SkillExecutionRequest() = default;
-            SkillExecutionRequest(
-                const skills::SkillID& skill,
-                const std::string executorName,
-                const armarx::aron::data::DictPtr& params,
-                const callback::dti::SkillProviderCallbackInterfacePrx& callback = nullptr);
-
             manager::dto::SkillExecutionRequest toManagerIce() const;
             provider::dto::SkillExecutionRequest toProviderIce() const;
 
@@ -40,6 +28,12 @@ namespace armarx
             static SkillExecutionRequest
             FromIce(const provider::dto::SkillExecutionRequest&,
                     const std::optional<skills::ProviderID>& providerId = std::nullopt);
+
+
+            skills::SkillID skillId;
+            std::string executorName;
+            armarx::aron::data::DictPtr parameters = nullptr;
+            callback::dti::SkillProviderCallbackInterfacePrx callbackInterface = nullptr;
         };
     } // namespace skills
 } // namespace armarx
diff --git a/source/RobotAPI/libraries/skills/core/SkillID.cpp b/source/RobotAPI/libraries/skills/core/SkillID.cpp
index fea0eca316bf58380ae9f8428aeac6d07151cc37..ece268aeeec9234a8dd4b2dcaa437d616988317e 100644
--- a/source/RobotAPI/libraries/skills/core/SkillID.cpp
+++ b/source/RobotAPI/libraries/skills/core/SkillID.cpp
@@ -4,24 +4,6 @@ namespace armarx
 {
     namespace skills
     {
-        SkillID::SkillID(const std::string& skillName) :
-            providerId(std::nullopt), skillName(skillName)
-        {
-        }
-
-        SkillID::SkillID(const ProviderID& providerId, const std::string& skillName) :
-            providerId(providerId), skillName(skillName)
-        {
-            if (simox::alg::contains(providerId.providerName, NAME_SEPARATOR) or
-                simox::alg::contains(skillName, NAME_SEPARATOR))
-            {
-                throw error::SkillException(
-                    __PRETTY_FUNCTION__,
-                    std::string("A skill provider or a skill contains the blacklisted token '") +
-                        NAME_SEPARATOR + "'.");
-            }
-        }
-
         bool
         SkillID::operator==(const SkillID& other) const
         {
@@ -49,7 +31,9 @@ namespace armarx
         SkillID
         SkillID::FromIce(const manager::dto::SkillID& s)
         {
-            return SkillID(s.providerId.providerName, s.skillName);
+            return SkillID{.providerId =
+                               skills::ProviderID{.providerName = s.providerId.providerName},
+                           .skillName = s.skillName};
         }
 
         SkillID
@@ -58,9 +42,9 @@ namespace armarx
         {
             if (providerId.has_value())
             {
-                return SkillID(*providerId, s.skillName);
+                return SkillID{.providerId = *providerId, .skillName = s.skillName};
             }
-            return SkillID(s.skillName);
+            return SkillID{.skillName = s.skillName};
         }
 
         manager::dto::SkillID
diff --git a/source/RobotAPI/libraries/skills/core/SkillID.h b/source/RobotAPI/libraries/skills/core/SkillID.h
index 5d0da2a673c1a10df52ae5789836d233ab643c37..e611a82828442ad378dde77d4d90edf477b5e5f1 100644
--- a/source/RobotAPI/libraries/skills/core/SkillID.h
+++ b/source/RobotAPI/libraries/skills/core/SkillID.h
@@ -19,10 +19,6 @@ namespace armarx
         public:
             static const constexpr char* NAME_SEPARATOR = "/";
 
-            SkillID() = default;
-            SkillID(const std::string& skillName);
-            SkillID(const ProviderID& providerId, const std::string& skillName);
-
             bool operator==(const SkillID& other) const;
             bool operator!=(const SkillID& other) const;
             bool operator<(const SkillID& other) const;
@@ -59,7 +55,7 @@ namespace armarx
 
             std::string toString() const;
 
-            std::optional<ProviderID> providerId;
+            std::optional<ProviderID> providerId = std::nullopt;
             std::string skillName;
         };
 
diff --git a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp
index c5c7e3ac7e75669158a8658217164c2db54c8f51..986aab1bc9be867aa918c14e4471ac9fe3e7cf3f 100644
--- a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp
+++ b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp
@@ -239,14 +239,6 @@ namespace armarx
             throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
         }
 
-        SkillStatusUpdateBase::SkillStatusUpdateBase(
-            const SkillExecutionID& exec,
-            const aron::data::DictPtr& params,
-            const callback::dti::SkillProviderCallbackInterfacePrx& i) :
-            executionId(exec), parameters(params), callbackInterface(i)
-        {
-        }
-
         manager::dto::SkillStatusUpdate
         SkillStatusUpdateBase::toManagerIce() const
         {
@@ -326,10 +318,10 @@ namespace armarx
         TerminatedSkillStatusUpdate
         TerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
         {
-            TerminatedSkillStatusUpdate ret(
-                skills::SkillExecutionID::FromIce(update.executionId),
-                armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                update.callbackInterface);
+            TerminatedSkillStatusUpdate ret{
+                {.executionId = skills::SkillExecutionID::FromIce(update.executionId),
+                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                 .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
             return ret;
         }
@@ -338,10 +330,10 @@ namespace armarx
         TerminatedSkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update,
                                              const std::optional<skills::ProviderID>& providerId)
         {
-            TerminatedSkillStatusUpdate ret(
-                skills::SkillExecutionID::FromIce(update.executionId, providerId),
-                armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                update.callbackInterface);
+            TerminatedSkillStatusUpdate ret{
+                {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
+                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                 .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
             return ret;
         }
@@ -349,9 +341,10 @@ namespace armarx
         SkillStatusUpdate
         SkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
         {
-            SkillStatusUpdate ret(skills::SkillExecutionID::FromIce(update.executionId),
-                                  armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                                  update.callbackInterface);
+            SkillStatusUpdate ret{
+                {.executionId = skills::SkillExecutionID::FromIce(update.executionId),
+                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                 .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
             return ret;
         }
@@ -360,9 +353,10 @@ namespace armarx
         SkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update,
                                    const std::optional<skills::ProviderID>& providerId)
         {
-            SkillStatusUpdate ret(skills::SkillExecutionID::FromIce(update.executionId, providerId),
-                                  armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                                  update.callbackInterface);
+            SkillStatusUpdate ret{
+                {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
+                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                 .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
             return ret;
         }
@@ -370,10 +364,10 @@ namespace armarx
         ActiveOrTerminatedSkillStatusUpdate
         ActiveOrTerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
         {
-            ActiveOrTerminatedSkillStatusUpdate ret(
-                skills::SkillExecutionID::FromIce(update.executionId),
-                armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                update.callbackInterface);
+            ActiveOrTerminatedSkillStatusUpdate ret{
+                {.executionId = skills::SkillExecutionID::FromIce(update.executionId),
+                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                 .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
             return ret;
         }
@@ -383,10 +377,10 @@ namespace armarx
             const provider::dto::SkillStatusUpdate& update,
             const std::optional<skills::ProviderID>& providerId)
         {
-            ActiveOrTerminatedSkillStatusUpdate ret(
-                skills::SkillExecutionID::FromIce(update.executionId, providerId),
-                armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
-                update.callbackInterface);
+            ActiveOrTerminatedSkillStatusUpdate ret{
+                {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
+                 .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
+                 .callbackInterface = update.callbackInterface}};
             skills::fromIce(update.status, ret.status);
             return ret;
         }
diff --git a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h
index 148cd83129ae9e3a6416656206bd4ce5ffa00381..d517fc1ec8aa862d041a4d18fcbcc981f3c6f3f4 100644
--- a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h
+++ b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h
@@ -67,12 +67,6 @@ namespace armarx
             aron::data::DictPtr parameters;
             callback::dti::SkillProviderCallbackInterfacePrx callbackInterface;
 
-            SkillStatusUpdateBase() = default;
-            SkillStatusUpdateBase(const SkillExecutionID& exec,
-                                  const aron::data::DictPtr& params,
-                                  const callback::dti::SkillProviderCallbackInterfacePrx& i);
-            SkillStatusUpdateBase(const SkillStatusUpdateBase&) = default;
-
             // data
             aron::data::DictPtr result = nullptr;
 
@@ -86,8 +80,6 @@ namespace armarx
         {
             TerminatedSkillStatus status = TerminatedSkillStatus::Failed;
 
-            using SkillStatusUpdateBase::SkillStatusUpdateBase;
-
             bool
             hasBeenTerminated() const
             {
@@ -111,8 +103,6 @@ namespace armarx
         {
             ActiveOrTerminatedSkillStatus status = ActiveOrTerminatedSkillStatus::Failed;
 
-            using SkillStatusUpdateBase::SkillStatusUpdateBase;
-
             bool
             hasBeenTerminated() const
             {
@@ -138,8 +128,6 @@ namespace armarx
         {
             SkillStatus status = SkillStatus::Constructing;
 
-            using SkillStatusUpdateBase::SkillStatusUpdateBase;
-
             bool
             operator<(const SkillStatusUpdate& o) const
             {
diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
index 233aa841b730c6f096393634d417bd41eccd7e93..3999c956b3ec3d85be444e7b27d56c27fbc2d98e 100644
--- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
@@ -49,12 +49,11 @@ namespace armarx::plugins
     SkillManagerComponentPlugin::addProvider(const skills::ProviderInfo& providerInfo)
     {
         std::scoped_lock l(skillProviderMapMutex);
-        if (skillProviderMap.find(providerInfo.providerId.providerName) == skillProviderMap.end())
+        if (skillProviderMap.find(providerInfo.providerId) == skillProviderMap.end())
         {
             ARMARX_INFO << "Adding a provider with name '" << providerInfo.providerId.providerName
                         << "'.";
-            skillProviderMap.insert(
-                {providerInfo.providerId.providerName, providerInfo.providerInterface});
+            skillProviderMap.insert({providerInfo.providerId, providerInfo.providerInterface});
         }
         else
         {
@@ -62,7 +61,7 @@ namespace armarx::plugins
                         << providerInfo.providerId.providerName
                         << "' but the provider already exists. "
                         << "Overwriting the old provider info.";
-            skillProviderMap[providerInfo.providerId.providerName] = providerInfo.providerInterface;
+            skillProviderMap[providerInfo.providerId] = providerInfo.providerInterface;
         }
     }
 
@@ -70,7 +69,7 @@ namespace armarx::plugins
     SkillManagerComponentPlugin::removeProvider(const skills::ProviderID& providerId)
     {
         std::scoped_lock l(skillProviderMapMutex);
-        if (auto it = skillProviderMap.find(providerId.providerName); it != skillProviderMap.end())
+        if (auto it = skillProviderMap.find(providerId); it != skillProviderMap.end())
         {
             ARMARX_INFO << "Removing a provider with name '" << providerId.providerName << "'.";
             skillProviderMap.erase(it);
@@ -89,12 +88,12 @@ namespace armarx::plugins
 
         std::unique_lock l(skillProviderMapMutex);
 
-        skills::ProviderID provderId(executionRequest.skillId);
+        skills::ProviderID provderId(*executionRequest.skillId.providerId);
 
         // TODO: Really support regexes!
         if (executionRequest.skillId.providerId->providerName == "*")
         {
-            provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId.skillName);
+            provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId);
         }
 
 
@@ -116,11 +115,11 @@ namespace armarx::plugins
 
             try
             {
-                skills::SkillExecutionRequest provider_executionRequest(
-                    executionRequest.skillId,
-                    executionRequest.executorName,
-                    executionRequest.parameters,
-                    myPrx);
+                skills::SkillExecutionRequest provider_executionRequest{
+                    .skillId = executionRequest.skillId,
+                    .executorName = executionRequest.executorName,
+                    .parameters = executionRequest.parameters,
+                    .callbackInterface = myPrx};
 
                 auto async =
                     provider->begin_executeSkill(provider_executionRequest.toProviderIce());
@@ -162,12 +161,12 @@ namespace armarx::plugins
 
         std::unique_lock l(skillProviderMapMutex);
 
-        skills::ProviderID provderId(executionRequest.skillId);
+        skills::ProviderID provderId(*executionRequest.skillId.providerId);
 
         // TODO: Really support regexes!
         if (executionRequest.skillId.providerId->providerName == "*")
         {
-            provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId.skillName);
+            provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId);
         }
 
 
@@ -189,11 +188,11 @@ namespace armarx::plugins
 
             try
             {
-                skills::SkillExecutionRequest provider_executionRequest(
-                    executionRequest.skillId,
-                    executionRequest.executorName,
-                    executionRequest.parameters,
-                    myPrx);
+                skills::SkillExecutionRequest provider_executionRequest{
+                    .skillId = executionRequest.skillId,
+                    .executorName = executionRequest.executorName,
+                    .parameters = executionRequest.parameters,
+                    .callbackInterface = myPrx};
 
                 auto async =
                     provider->begin_executeSkillAsync(provider_executionRequest.toProviderIce());
diff --git a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp
index e5c169c04ff1ea7dc1ed5cf7ed59f136f1406b9c..e9e86b054b7c3e2eca88d3e7d51b232acc5428f1 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp
@@ -26,7 +26,9 @@ namespace armarx::plugins
         const std::string providerName = p.getName();
 
         // register self to manager
-        skills::ProviderInfo i(skills::ProviderID(providerName), myPrx, getSkillDescriptions());
+        skills::ProviderInfo i{.providerId = skills::ProviderID{.providerName = providerName},
+                               .providerInterface = myPrx,
+                               .providedSkills = getSkillDescriptions()};
 
         ARMARX_INFO << "Adding provider to manager: " << i.providerId;
         manager->addProvider(i.toIce()); // add provider info to manager
@@ -188,12 +190,13 @@ namespace armarx::plugins
     {
         ARMARX_CHECK(executionRequest.skillId.isFullySpecified());
 
-        skills::SkillExecutionID executionId(executionRequest.skillId,
-                                             executionRequest.executorName,
-                                             armarx::core::time::DateTime::Now());
+        skills::SkillExecutionID executionId{.skillId = executionRequest.skillId,
+                                             .executorName = executionRequest.executorName,
+                                             .executionStartedTime =
+                                                 armarx::core::time::DateTime::Now()};
 
         skills::SkillStatusUpdate ret{
-            executionId, executionRequest.parameters, executionRequest.callbackInterface};
+            {executionId, executionRequest.parameters, executionRequest.callbackInterface}};
 
         skills::detail::SkillRuntime* wrapper;
         {
@@ -245,9 +248,9 @@ namespace armarx::plugins
     {
         ARMARX_CHECK(executionRequest.skillId.isFullySpecified());
 
-        skills::SkillExecutionID executionId(executionRequest.skillId,
+        skills::SkillExecutionID executionId{executionRequest.skillId,
                                              executionRequest.executorName,
-                                             armarx::core::time::DateTime::Now());
+                                             armarx::core::time::DateTime::Now()};
 
         skills::detail::SkillRuntime* wrapper;
         {
@@ -387,7 +390,7 @@ namespace armarx
         const skills::provider::dto::SkillID& skillId,
         const Ice::Current& /*unused*/)
     {
-        auto id = skills::SkillID::FromIce(skillId, getName());
+        auto id = skills::SkillID::FromIce(skillId, skills::ProviderID{.providerName = getName()});
         auto o = plugin->getSkillDescription(id);
         if (o.has_value())
         {
@@ -412,7 +415,8 @@ namespace armarx
         const skills::provider::dto::SkillExecutionID& executionId,
         const Ice::Current& /*unused*/)
     {
-        auto execId = skills::SkillExecutionID::FromIce(executionId, getName());
+        auto execId = skills::SkillExecutionID::FromIce(
+            executionId, skills::ProviderID{.providerName = getName()});
         auto o = plugin->getSkillExecutionStatus(execId);
         if (o.has_value())
         {
@@ -438,7 +442,8 @@ namespace armarx
         const skills::provider::dto::SkillExecutionRequest& info,
         const Ice::Current& /*unused*/)
     {
-        auto exec = skills::SkillExecutionRequest::FromIce(info, getName());
+        auto exec = skills::SkillExecutionRequest::FromIce(
+            info, skills::ProviderID{.providerName = getName()});
         auto up = this->plugin->executeSkill(exec);
         return up.toProviderIce();
     }
@@ -448,7 +453,8 @@ namespace armarx
         const skills::provider::dto::SkillExecutionRequest& info,
         const Ice::Current& current /*unused*/)
     {
-        auto exec = skills::SkillExecutionRequest::FromIce(info, getName());
+        auto exec = skills::SkillExecutionRequest::FromIce(
+            info, skills::ProviderID{.providerName = getName()});
         auto id = this->plugin->executeSkillAsync(exec);
         return id.toProviderIce();
     }
@@ -461,7 +467,8 @@ namespace armarx
     {
         skills::provider::dto::ParameterUpdateResult res;
 
-        auto exec = skills::SkillExecutionID::FromIce(id, getName());
+        auto exec =
+            skills::SkillExecutionID::FromIce(id, skills::ProviderID{.providerName = getName()});
         auto prep = armarx::aron::data::Dict::FromAronDictDTO(input);
         res.success = this->plugin->updateSkillParameters(exec, prep);
         return res;
@@ -472,7 +479,8 @@ namespace armarx
                                                  const Ice::Current& /*unused*/)
     {
         skills::provider::dto::AbortSkillResult res;
-        auto exec = skills::SkillExecutionID::FromIce(id, getName());
+        auto exec =
+            skills::SkillExecutionID::FromIce(id, skills::ProviderID{.providerName = getName()});
         res.success = this->plugin->abortSkill(exec);
         return res;
     }
@@ -483,7 +491,8 @@ namespace armarx
         const Ice::Current& /*unused*/)
     {
         skills::provider::dto::AbortSkillResult res;
-        auto exec = skills::SkillExecutionID::FromIce(id, getName());
+        auto exec =
+            skills::SkillExecutionID::FromIce(id, skills::ProviderID{.providerName = getName()});
         res.success = this->plugin->abortSkillAsync(exec);
         return res;
     }
diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
index 5c20567a2592e8e53c547e8dad8073fe50e779b5..b9529ee7ff2225785ffa8df4a4a2dc55be92076f 100644
--- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
+++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
@@ -9,7 +9,7 @@ namespace armarx
             const skills::SkillExecutionID& execId,
             const aron::data::DictPtr& initial_parameters,
             const skills::callback::dti::SkillProviderCallbackInterfacePrx& callbackInterface) :
-            factory(fac), statusUpdate(execId, initial_parameters, callbackInterface)
+            factory(fac), statusUpdate{{execId, initial_parameters, callbackInterface}}
         {
         }
 
@@ -134,9 +134,10 @@ namespace armarx
                 updateStatus(SkillStatus::Aborted, createErrorMessageData(message));
 
                 std::unique_lock l(skillStatusesMutex);
-                auto terminated = TerminatedSkillStatusUpdate(statusUpdate.executionId,
-                                                              statusUpdate.parameters,
-                                                              statusUpdate.callbackInterface);
+                auto terminated = TerminatedSkillStatusUpdate{
+                    {.executionId = statusUpdate.executionId,
+                     .parameters = statusUpdate.parameters,
+                     .callbackInterface = statusUpdate.callbackInterface}};
                 terminated.status = TerminatedSkillStatus::Aborted;
                 return terminated;
             };
@@ -147,9 +148,10 @@ namespace armarx
                 updateStatus(SkillStatus::Failed, createErrorMessageData(message));
 
                 std::unique_lock l(skillStatusesMutex);
-                auto terminated = TerminatedSkillStatusUpdate(statusUpdate.executionId,
-                                                              statusUpdate.parameters,
-                                                              statusUpdate.callbackInterface);
+                auto terminated = TerminatedSkillStatusUpdate{
+                    {.executionId = statusUpdate.executionId,
+                     .parameters = statusUpdate.parameters,
+                     .callbackInterface = statusUpdate.callbackInterface}};
                 terminated.status = TerminatedSkillStatus::Failed;
                 return terminated;
             };
@@ -334,9 +336,10 @@ namespace armarx
 
                 // return result of main method
                 std::unique_lock l(skillStatusesMutex);
-                TerminatedSkillStatusUpdate ret(statusUpdate.executionId,
-                                                statusUpdate.parameters,
-                                                statusUpdate.callbackInterface);
+                TerminatedSkillStatusUpdate ret{
+                    {.executionId = statusUpdate.executionId,
+                     .parameters = statusUpdate.parameters,
+                     .callbackInterface = statusUpdate.callbackInterface}};
                 ret.result = mainRet.data;
                 ret.status = TerminatedSkillStatus::Succeeded;
                 return ret;