diff --git a/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp b/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp
index 2478cba21ad3b73730ed8aa9c11902c3d2038689..4395b55fd45e6bdb019ee1285fbc5cc3dac648f9 100644
--- a/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp
+++ b/source/RobotAPI/libraries/armem/client/MemoryNameSystem.cpp
@@ -7,6 +7,7 @@
 #include <RobotAPI/libraries/armem/client/Reader.h>
 #include <RobotAPI/libraries/armem/client/Writer.h>
 
+#include <SimoxUtility/algorithm/string/string_tools.h>
 
 namespace armarx::armem::client
 {
diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h
index fb1c1baa557167432ffaa19f46e71d223a5c080d..49885f7eb3d66e561e0a83c496524907afd5d049 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h
@@ -13,6 +13,8 @@
 
 #include <RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeDataVisitorBase.h>
 
+#include <SimoxUtility/algorithm/string/string_tools.h>
+
 
 namespace armarx::armem::gui::instance
 {
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp
index 9a2b8a18ad8032fdf32fca9c0166d515a0356063..a593bad8cf3d2b9b2a08af3adc10ae478f56cf87 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.cpp
@@ -22,3 +22,97 @@
  */
 
 #include "Data.h"
+
+#include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h>
+
+#include <SimoxUtility/algorithm/string/string_tools.h>
+
+namespace armarx::aron::xmltypereader
+{
+
+    void Data::EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att)
+    {
+        if (!HasAttribute(node, att))
+        {
+            throw error::StringNotValidException("XMLReaderData", "EnforceAttribute", "A <" + node.name() + ">-tag does not have the correct attribute", att);
+        }
+    }
+
+    bool Data::HasAttribute(const RapidXmlReaderNode& node, const std::string& att)
+    {
+        return node.has_attribute(att.c_str());
+    }
+
+    std::string Data::GetAttribute(const RapidXmlReaderNode& node, const std::string& att)
+    {
+        EnforceAttribute(node, att);
+        return node.attribute_value(att.c_str());
+    }
+
+    std::string Data::GetAttributeWithDefault(const armarx::RapidXmlReaderNode& node, const std::string& att, const std::string def)
+    {
+        if (!(HasAttribute(node, att)))
+        {
+            return def;
+        }
+        return node.attribute_value(att.c_str());
+    }
+
+    bool Data::AttributeIsTrue(const armarx::RapidXmlReaderNode& node, const std::string& att)
+    {
+        if (HasAttribute(node, att))
+        {
+            std::string v = simox::alg::to_lower(node.attribute_value(att.c_str()));
+            if (v == "1" or v == "true" or v == "wahr" or v == "yes" or v == "ja" or v == "")
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    bool Data::HasTagName(const armarx::RapidXmlReaderNode& node, const std::string& name)
+    {
+        return (simox::alg::to_lower(name) == simox::alg::to_lower(node.name()));
+    }
+
+    void Data::EnforceTagName(const armarx::RapidXmlReaderNode& node, const std::string& name)
+    {
+        if (!(HasTagName(node, name)))
+        {
+            throw error::StringNotValidException("XMLReaderData", "EnforceTagName", "The node <" + node.name() + "> has the wrong tag", name);
+        }
+    }
+
+    std::string Data::GetTagName(const armarx::RapidXmlReaderNode& node)
+    {
+        return simox::alg::to_lower(node.name());
+    }
+
+    bool Data::CheckMinChildSize(const armarx::RapidXmlReaderNode& node, const size_t size)
+    {
+        std::vector<RapidXmlReaderNode> children = node.nodes();
+        return children.size() >= size;
+    }
+
+    bool Data::CheckMaxChildSize(const armarx::RapidXmlReaderNode& node, const size_t size)
+    {
+        std::vector<RapidXmlReaderNode> children = node.nodes();
+        return children.size() <= size;
+    }
+
+    bool Data::CheckExactChildSize(const armarx::RapidXmlReaderNode& node, const size_t size)
+    {
+        std::vector<RapidXmlReaderNode> children = node.nodes();
+        return children.size() == size;
+    }
+
+    void Data::EnforceChildSize(const armarx::RapidXmlReaderNode& node, const size_t size)
+    {
+        if (!Data::CheckExactChildSize(node, size))
+        {
+            throw error::SizeNotValidException("XMLReaderData", "EnforceChildSize", "The node <" + node.name() + "> has the wrong number of children", node.nodes().size(), size);
+        }
+    }
+
+}
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h
index 852bf2bbd0217b7fd9452648203c9f64a8665c2c..4950d51f77149b7f192766d79144bfdfb7fea3c6 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/typeReader/xml/Data.h
@@ -28,12 +28,13 @@
 #include <map>
 
 // ArmarX
-#include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h>
-
 #include <RobotAPI/libraries/aron/core/Concepts.h>
-
 #include <RobotAPI/libraries/aron/core/navigator/type/AllNavigators.h>
 
+namespace armarx
+{
+    class RapidXmlReaderNode;
+}
 
 namespace armarx::aron::xmltypereader
 {
@@ -89,89 +90,28 @@ namespace armarx::aron::xmltypereader
         HANDLE_ALL_ARON_TYPES
 #undef RUN_ARON_MACRO
 
-        static void EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att)
-        {
-            if (!HasAttribute(node, att))
-            {
-                throw error::StringNotValidException("XMLReaderData", "EnforceAttribute", "A <" + node.name() + ">-tag does not have the correct attribute", att);
-            }
-        }
-
-        static bool HasAttribute(const RapidXmlReaderNode& node, const std::string& att)
-        {
-            return node.has_attribute(att.c_str());
-        }
-
-        static std::string GetAttribute(const RapidXmlReaderNode& node, const std::string& att)
-        {
-            EnforceAttribute(node, att);
-            return node.attribute_value(att.c_str());
-        }
-
-        static std::string GetAttributeWithDefault(const RapidXmlReaderNode& node, const std::string& att, const std::string def)
-        {
-            if (!(HasAttribute(node, att)))
-            {
-                return def;
-            }
-            return node.attribute_value(att.c_str());
-        }
-
-        static bool AttributeIsTrue(const RapidXmlReaderNode& node, const std::string& att)
-        {
-            if (HasAttribute(node, att))
-            {
-                std::string v = simox::alg::to_lower(node.attribute_value(att.c_str()));
-                if (v == "1" or v == "true" or v == "wahr" or v == "yes" or v == "ja" or v == "")
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        static bool HasTagName(const RapidXmlReaderNode& node, const std::string& name)
-        {
-            return (simox::alg::to_lower(name) == simox::alg::to_lower(node.name()));
-        }
-
-        static void EnforceTagName(const RapidXmlReaderNode& node, const std::string& name)
-        {
-            if (!(HasTagName(node, name)))
-            {
-                throw error::StringNotValidException("XMLReaderData", "EnforceTagName", "The node <" + node.name() + "> has the wrong tag", name);
-            }
-        }
-
-        static std::string GetTagName(const RapidXmlReaderNode& node)
-        {
-            return simox::alg::to_lower(node.name());
-        }
-
-        static bool CheckMinChildSize(const RapidXmlReaderNode& node, const size_t size)
-        {
-            std::vector<RapidXmlReaderNode> children = node.nodes();
-            return children.size() >= size;
-        }
-
-        static bool CheckMaxChildSize(const RapidXmlReaderNode& node, const size_t size)
-        {
-            std::vector<RapidXmlReaderNode> children = node.nodes();
-            return children.size() <= size;
-        }
-
-        static bool CheckExactChildSize(const RapidXmlReaderNode& node, const size_t size)
-        {
-            std::vector<RapidXmlReaderNode> children = node.nodes();
-            return children.size() == size;
-        }
-
-        static void EnforceChildSize(const RapidXmlReaderNode& node, const size_t size)
-        {
-            if (!Data::CheckExactChildSize(node, size))
-            {
-                throw error::SizeNotValidException("XMLReaderData", "EnforceChildSize", "The node <" + node.name() + "> has the wrong number of children", node.nodes().size(), size);
-            }
-        }
+        static void EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att);
+
+        static bool HasAttribute(const RapidXmlReaderNode& node, const std::string& att);
+
+        static std::string GetAttribute(const RapidXmlReaderNode& node, const std::string& att);
+
+        static std::string GetAttributeWithDefault(const RapidXmlReaderNode& node, const std::string& att, const std::string def);
+
+        static bool AttributeIsTrue(const RapidXmlReaderNode& node, const std::string& att);
+
+        static bool HasTagName(const RapidXmlReaderNode& node, const std::string& name);
+
+        static void EnforceTagName(const RapidXmlReaderNode& node, const std::string& name);
+
+        static std::string GetTagName(const RapidXmlReaderNode& node);
+
+        static bool CheckMinChildSize(const RapidXmlReaderNode& node, const size_t size);
+
+        static bool CheckMaxChildSize(const RapidXmlReaderNode& node, const size_t size);
+
+        static bool CheckExactChildSize(const RapidXmlReaderNode& node, const size_t size);
+
+        static void EnforceChildSize(const RapidXmlReaderNode& node, const size_t size);
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp b/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp
index ef42b1cca0b28496e2b7e7d06f80822608b87e52..db8b7a02f37b948c0030cac5090281b10f400aec 100644
--- a/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp
+++ b/source/RobotAPI/libraries/aron/core/navigator/data/container/Dict.cpp
@@ -29,6 +29,8 @@
 #include <RobotAPI/libraries/aron/core/navigator/type/container/Dict.h>
 #include <RobotAPI/libraries/aron/core/navigator/type/container/Object.h>
 
+#include <SimoxUtility/algorithm/string/string_conversion.h>
+
 namespace armarx::aron::datanavigator
 {
 
diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h b/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h
index 3a6cc964a75c65d44440fa4790ae481542a72e8f..1ca45844db2cedd4cba004e94a57dde857ac491f 100644
--- a/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h
+++ b/source/RobotAPI/libraries/aron/core/navigator/type/Navigator.h
@@ -30,7 +30,7 @@
 #include <string>
 
 // Simox
-#include <SimoxUtility/algorithm/string.h>
+// #include <SimoxUtility/algorithm/string.h>
 
 // ArmarX
 #include <RobotAPI/libraries/aron/core/Exception.h>
diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp b/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp
index 269ec6e20d39a25eefad600651dd9e7e19009062..410ecaedd54896288b2c6d399b3d3994040632c7 100644
--- a/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp
+++ b/source/RobotAPI/libraries/aron/core/navigator/type/container/Object.cpp
@@ -24,8 +24,9 @@
 // Header
 #include "Object.h"
 
-// ArmarX
-#include "SimoxUtility/algorithm/get_map_keys_values.h"
+
+#include <SimoxUtility/algorithm/get_map_keys_values.h>
+#include <SimoxUtility/algorithm/string/string_conversion.h>
 
 
 namespace armarx::aron::typenavigator
diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp b/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp
index 4fed86ff9bd413550c381fb109363ac1c05e1ff6..bded16377622e363c07fd5007de86349d2248a11 100644
--- a/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp
+++ b/source/RobotAPI/libraries/aron/core/navigator/type/container/Tuple.cpp
@@ -24,6 +24,7 @@
 // Header
 #include "Tuple.h"
 
+#include <SimoxUtility/algorithm/string/string_conversion.h>
 
 namespace armarx::aron::typenavigator
 {
diff --git a/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp b/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp
index 96ec0a152eefa4743701f7ed219d3ee557a0ceae..fbea54cbfe068e63adff2a16ef2fdb9dd168959e 100644
--- a/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp
+++ b/source/RobotAPI/libraries/aron/core/navigator/type/ndarray/EigenQuaternion.cpp
@@ -24,6 +24,8 @@
 // Header
 #include "EigenQuaternion.h"
 
+#include <SimoxUtility/algorithm/string/string_conversion.h>
+
 namespace armarx::aron::typenavigator
 {
     // constructors