diff --git a/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp b/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp
index c106b825ec8bcf0a8d37d666fbd74d11a8a830c5..0daa2db1c31eeef0ef6dcc1254693a93d82b8e21 100644
--- a/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp
+++ b/source/RobotAPI/components/ArViz/Coin/VisualizationObject.cpp
@@ -101,7 +101,7 @@ namespace armarx::viz::coin
                     VirtualRobot::VisualizationNodePtr vis = factory->getVisualizationFromFile(fullFilename);
                     result = VirtualRobot::ManipulationObjectPtr(new VirtualRobot::ManipulationObject(filename, vis));
                 }
-                else if (ext == ".xml")
+                else if (ext == ".xml" || ext == ".moxml")
                 {
                     result = VirtualRobot::ObjectIO::loadManipulationObject(fullFilename);
 
diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
index eaf9cc141387cd36585733aab4f987c921b02603..31c31934b335d79b7eb426e6606179c21d910546 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
+++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
@@ -342,7 +342,7 @@ namespace armarx
     Ice::StringSeq ObjectPoseObserver::getAvailableProviderNames(const Ice::Current&)
     {
         std::scoped_lock lock(dataMutex);
-        return simox::get_keys(providers);
+        return simox::alg::get_keys(providers);
     }
 
     objpose::ProviderInfo ObjectPoseObserver::getProviderInfo(const std::string& providerName, const Ice::Current&)
diff --git a/source/RobotAPI/components/SkillObserver/SkillObserver.cpp b/source/RobotAPI/components/SkillObserver/SkillObserver.cpp
index a30939b9c88d90368a003d7667ed9beb724877bb..db42b9881eccd454fd50190a60446ae7accf0c12 100644
--- a/source/RobotAPI/components/SkillObserver/SkillObserver.cpp
+++ b/source/RobotAPI/components/SkillObserver/SkillObserver.cpp
@@ -80,7 +80,7 @@ namespace armarx::skills
         return s;
     }
 
-    void SkillObserver::skillsProvided(const SkillProviderInterfacePrx& provider, const SkillDescriptionMap &skills, const Ice::Current&)
+    void SkillObserver::skillsProvided(const SkillProviderInterfacePrx& provider, const SkillDescriptionMap& skills, const Ice::Current&)
     {
         std::lock_guard g{_skills_mutex};
         ARMARX_CHECK_NOT_NULL(provider);
@@ -152,7 +152,7 @@ namespace armarx::skills
 
                         }
                     }
-                    if(!to_remove.empty())
+                    if (!to_remove.empty())
                     {
                         ARMARX_INFO << "removing " << to_remove.size() << " skills (timeout on ping)";
                     }
diff --git a/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointKinematicUnitPassThroughController.h b/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointKinematicUnitPassThroughController.h
index 675ad90c97dd55c2f2c4ddda8856fa3682b2b22f..a0fe164c4803ceb322c451b464c0c6acdc48bebf 100644
--- a/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointKinematicUnitPassThroughController.h
+++ b/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointKinematicUnitPassThroughController.h
@@ -105,7 +105,7 @@ namespace armarx
                 return *_int16;
             }
 
-            template <bool constPtr = ConstPtr, std::enable_if_t < !constPtr, int> = 0>
+            template < bool constPtr = ConstPtr, std::enable_if_t < !constPtr, int > = 0 >
             void setValue(float val)
             {
                 if (_float)
diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/BimanualForceControllers/NJointBimanualObjLevelVelController.cpp b/source/RobotAPI/libraries/RobotAPINJointControllers/BimanualForceControllers/NJointBimanualObjLevelVelController.cpp
index 2a08af75ac30a80201b22ec442ccd14db620b94c..bceb67e36837a6444a2d64249f7088389d019b26 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/BimanualForceControllers/NJointBimanualObjLevelVelController.cpp
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/BimanualForceControllers/NJointBimanualObjLevelVelController.cpp
@@ -284,7 +284,7 @@ namespace armarx
         else
         {
             objectDMP->flow(deltaT, currentPose, currentTwist);
-//            VirtualRobot::MathTools::Quaternion quat = VirtualRobot::MathTools::eigen4f2quat(objectDMP->getTargetPoseMat());
+            //            VirtualRobot::MathTools::Quaternion quat = VirtualRobot::MathTools::eigen4f2quat(objectDMP->getTargetPoseMat());
             LockGuardType guard {controlDataMutex};
             getWriterControlStruct().boxPose = objectDMP->getTargetPoseMat();
             writeControlStruct();
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h b/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
index 540b3ae7c3fce5c4a930e7b074410a06a969b6c6..1787f168640e81199d7c0a72df9ad420b8d705c6 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
+++ b/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
@@ -38,7 +38,7 @@ namespace armarx::armem
             typedef std::shared_ptr<NlohmannJSONDiskReader> NlohmannJSONDiskReaderPtr;
 
             class NlohmannJSONDiskReader :
-                    virtual public DiskReader
+                virtual public DiskReader
             {
             public:
                 NlohmannJSONDiskReader() = default;
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h b/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h
index ee8485cc9c789815002769b0637e7714ef12a43d..4cbd3f01acf8fb033ab18b2debcdf55580a5e2a6 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h
+++ b/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h
@@ -30,8 +30,8 @@
 
 // ArmarX
 #include <RobotAPI/interface/aron.h>
-#include <RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDataNavigator.h>
-#include <RobotAPI/libraries/aron/aroncore/navigators/typenavigator/AronTypeNavigator.h>
+#include <RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronAllDataNavigators.h>
+#include <RobotAPI/libraries/aron/aroncore/navigators/typenavigator/AronAllTypeNavigators.h>
 #include <RobotAPI/libraries/aron/aroncore/io/AronDataIO/LegacyAronDataWriter/LegacyAronDataWriter.h>
 #include <RobotAPI/libraries/aron/aroncore/io/AronDataIO/AronDataWriter.h>
 //#include <RobotAPI/libraries/aron/aroncore/io/AronTypeIO/
@@ -62,12 +62,12 @@ namespace armarx::armem
                 DiskWriter(const std::string& r) :
                     rootPath(r)
                 {
-                    if(!std::filesystem::exists(rootPath))
+                    if (!std::filesystem::exists(rootPath))
                     {
                         std::filesystem::create_directory(rootPath);
                     }
 
-                    if(!std::filesystem::is_directory(rootPath))
+                    if (!std::filesystem::is_directory(rootPath))
                     {
                         throw LocalException("The Path is not valid. It points to a file instead of a folder!");
                     }
@@ -95,12 +95,13 @@ namespace armarx::armem
                                     for (unsigned int i = 0; i < entitySnapshot->instances.size(); ++i)
                                     {
                                         std::filesystem::path entityElementPath = createEntityElementPath(coreKey, providerKey, entityKey, entityHistoryTimestamp, i);
-                                        if(!entityElementPathExists(entityElementPath))
+                                        if (!entityElementPathExists(entityElementPath))
                                         {
                                             std::ofstream ofs;
                                             ofs.open(entityElementPath);
 
-                                            ofs << getEntityAsString(entitySnapshot->instances[i]);
+
+                                            ofs << getDataAsString(wrapData(entitySnapshot->instances[i]));
                                             ofs.close();
                                         }
                                         // check content if file already existent?
@@ -113,7 +114,20 @@ namespace armarx::armem
                 }
 
             protected:
-                virtual std::string getEntityAsString(const EntityInstancePtr&) = 0;
+                aron::datanavigator::AronDictDataNavigatorPtr wrapData(const EntityInstancePtr& e) const
+                {
+                    aron::datanavigator::AronDictDataNavigatorPtr dataWrapped(new aron::datanavigator::AronDictDataNavigator());
+                    dataWrapped->addElement("instanceData", e->data());
+
+                    aron::datanavigator::AronLongDataNavigatorPtr timeWrapped(new aron::datanavigator::AronLongDataNavigator());
+                    timeWrapped->setValue(Time::now().toMilliSeconds());
+                    dataWrapped->addElement("timeWrapped", timeWrapped);
+
+                    // TODO add more metadata
+                    return dataWrapped;
+                }
+
+                virtual std::string getDataAsString(const aron::datanavigator::AronDictDataNavigatorPtr&) = 0;
 
                 std::filesystem::path createCoreSegmentPath(const std::string& name) const
                 {
@@ -150,7 +164,7 @@ namespace armarx::armem
                 }
                 bool ensureCoreSegmentPathExists(const std::filesystem::path& p) const
                 {
-                    if(!std::filesystem::exists(p))
+                    if (!std::filesystem::exists(p))
                     {
                         return std::filesystem::create_directory(p);
                     }
@@ -170,7 +184,7 @@ namespace armarx::armem
                 }
                 bool ensureProviderSegmentPathExists(const std::filesystem::path& p) const
                 {
-                    if(!std::filesystem::exists(p))
+                    if (!std::filesystem::exists(p))
                     {
                         return std::filesystem::create_directory(p);
                     }
@@ -190,7 +204,7 @@ namespace armarx::armem
                 }
                 bool ensureEntityPathExists(const std::filesystem::path& p) const
                 {
-                    if(!std::filesystem::exists(p))
+                    if (!std::filesystem::exists(p))
                     {
                         return std::filesystem::create_directory(p);
                     }
@@ -210,7 +224,7 @@ namespace armarx::armem
                 }
                 bool ensureTimestampPathExists(const std::filesystem::path& p) const
                 {
-                    if(!std::filesystem::exists(p))
+                    if (!std::filesystem::exists(p))
                     {
                         return std::filesystem::create_directory(p);
                     }
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp b/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
index 39fc7877e6a47cf26bf43efbab014337a27905cd..62ff8d75ff2b55444352fc1c908fe292e4e4a11d 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
+++ b/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
@@ -8,10 +8,8 @@ namespace armarx::armem::ltm::io
     {
     }
 
-    std::string NlohmannJSONDiskWriter::getEntityAsString(const EntityInstancePtr& i)
+    std::string NlohmannJSONDiskWriter::getDataAsString(const aron::datanavigator::AronDictDataNavigatorPtr& aronDataNav)
     {
-        const aron::datanavigator::AronDataNavigatorPtr aronDataNav = i->data();
-
         aron::io::AronDataNlohmannJSONWriter dataWriter;
         aron::io::LegacyAronDataWriter::SetupWriterFromAronDataPtr(dataWriter, aronDataNav->getResult());
         return dataWriter.getResult().dump(4);
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h b/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
index 1daac1f1113e016e0e39275b18388eb40e45221b..c2c2ed9c4cc27536862ca499eed28e5446afe716 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
+++ b/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
@@ -42,13 +42,13 @@ namespace armarx::armem
             typedef std::shared_ptr<NlohmannJSONDiskWriter> NlohmannJSONDiskWriterPtr;
 
             class NlohmannJSONDiskWriter :
-                    virtual public DiskWriter
+                virtual public DiskWriter
             {
             public:
                 NlohmannJSONDiskWriter() = delete;
                 NlohmannJSONDiskWriter(const std::string& rootPath);
 
-                virtual std::string getEntityAsString(const EntityInstancePtr&) override;
+                virtual std::string getDataAsString(const aron::datanavigator::AronDictDataNavigatorPtr&) override;
             };
         }
     }
diff --git a/source/RobotAPI/libraries/armem/memory/Entity.cpp b/source/RobotAPI/libraries/armem/memory/Entity.cpp
index b8f8d9bca790031a3f3ea96f815cc0bb057414b0..c41a1310a6928ab77a44eb2c3c95c8891f812353 100644
--- a/source/RobotAPI/libraries/armem/memory/Entity.cpp
+++ b/source/RobotAPI/libraries/armem/memory/Entity.cpp
@@ -135,7 +135,7 @@ namespace armarx::armem
 
     std::vector<Time> Entity::getTimestamps() const
     {
-        return simox::get_keys(history);
+        return simox::alg::get_keys(history);
     }
 
 
diff --git a/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp
index 22117ea7ce659254050c84cd679cef0f915dee23..a923ab3e676ea1ecb4dae600031db21c7bbe2ea4 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp
@@ -187,7 +187,7 @@ BOOST_AUTO_TEST_CASE(test_entity_TimeRange_slice)
 
         BOOST_CHECK_EQUAL(result->history.size(), 2);
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
         std::vector<armem::Time> expected
         {
             armem::Time::microSeconds(2000), armem::Time::microSeconds(3000)
@@ -208,7 +208,7 @@ BOOST_AUTO_TEST_CASE(test_entity_TimeRange_exact)
 
         BOOST_CHECK_EQUAL(result->history.size(), 3);
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
         std::vector<armem::Time> expected
         {
             armem::Time::microSeconds(2000), armem::Time::microSeconds(3000), armem::Time::microSeconds(4000)
@@ -229,8 +229,8 @@ BOOST_AUTO_TEST_CASE(test_entity_TimeRange_all)
 
         BOOST_CHECK_EQUAL(result->history.size(), entity->history.size());
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
-        std::vector<armem::Time> expected = simox::get_keys(entity->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
+        std::vector<armem::Time> expected = simox::alg::get_keys(entity->history);
         BOOST_CHECK_EQUAL_COLLECTIONS(times.begin(), times.end(), expected.begin(), expected.end());
     }
 }
@@ -262,7 +262,7 @@ BOOST_AUTO_TEST_CASE(test_entity_TimeRange_from_start)
 
         BOOST_CHECK_EQUAL(result->history.size(), 2);
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
         std::vector<armem::Time> expected
         {
             armem::Time::microSeconds(1000), armem::Time::microSeconds(2000)
@@ -283,7 +283,7 @@ BOOST_AUTO_TEST_CASE(test_entity_TimeRange_to_end)
 
         BOOST_CHECK_EQUAL(result->history.size(), 3);
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
         std::vector<armem::Time> expected
         {
             armem::Time::microSeconds(3000), armem::Time::microSeconds(4000), armem::Time::microSeconds(5000)
@@ -332,8 +332,8 @@ BOOST_AUTO_TEST_CASE(test_entity_IndexRange_all_default)
 
         BOOST_CHECK_EQUAL(result->history.size(), entity->history.size());
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
-        std::vector<armem::Time> expected = simox::get_keys(entity->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
+        std::vector<armem::Time> expected = simox::alg::get_keys(entity->history);
         BOOST_CHECK_EQUAL_COLLECTIONS(times.begin(), times.end(), expected.begin(), expected.end());
     }
 
@@ -355,7 +355,7 @@ BOOST_AUTO_TEST_CASE(test_entity_IndexRange_slice)
 
         BOOST_CHECK_EQUAL(result->history.size(), 3);
 
-        std::vector<armem::Time> times = simox::get_keys(result->history);
+        std::vector<armem::Time> times = simox::alg::get_keys(result->history);
         std::vector<armem::Time> expected
         {
             armem::Time::microSeconds(2000), armem::Time::microSeconds(3000), armem::Time::microSeconds(4000)
diff --git a/source/RobotAPI/libraries/aron/aroncore/AronFactory.h b/source/RobotAPI/libraries/aron/aroncore/AronFactory.h
index 04ab18cf65ba9916666c104d6796bfa53b1c10a7..6ec2b1604afa7fd576895326a9828c6b466647c5 100644
--- a/source/RobotAPI/libraries/aron/aroncore/AronFactory.h
+++ b/source/RobotAPI/libraries/aron/aroncore/AronFactory.h
@@ -50,7 +50,7 @@ namespace armarx
 
         template <typename Input, typename Output>
         class AronPtrInputFactory :
-                virtual public AronFactory<Input, Output>
+            virtual public AronFactory<Input, Output>
         {
         public:
             AronPtrInputFactory() = default;
@@ -61,7 +61,7 @@ namespace armarx
         protected:
             static void CheckIfInputIsNull(const std::string& c, const std::string& m, const AronPath& p, const Input& i)
             {
-                if(i.get() == nullptr)
+                if (i.get() == nullptr)
                 {
                     throw exception::AronExceptionWithPathInfo(c, m, "The used input is NULL", p);
                 }
@@ -70,7 +70,7 @@ namespace armarx
 
         template <typename Input, typename Output>
         class AronPtrOutputFactory :
-                virtual public AronFactory<Input, Output>
+            virtual public AronFactory<Input, Output>
         {
         public:
             AronPtrOutputFactory() = default;
@@ -81,7 +81,7 @@ namespace armarx
         protected:
             static void CheckIfOutputIsNull(const std::string& c, const std::string& m, const AronPath& p, const Output& o)
             {
-                if(o.get() == nullptr)
+                if (o.get() == nullptr)
                 {
                     throw exception::AronExceptionWithPathInfo(c, m, "The used output is NULL", p);
                 }
@@ -90,8 +90,8 @@ namespace armarx
 
         template <typename Input, typename Output>
         class AronPtrInputPtrOutputFactory :
-                virtual public AronPtrInputFactory<Input, Output>,
-                virtual public AronPtrOutputFactory<Input, Output>
+            virtual public AronPtrInputFactory<Input, Output>,
+            virtual public AronPtrOutputFactory<Input, Output>
         {
         public:
             AronPtrInputPtrOutputFactory() = default;
diff --git a/source/RobotAPI/libraries/aron/aroncore/io/AronDataIO/classWriters/RapidXMLWriter/AronDataRapidXMLWriter.cpp b/source/RobotAPI/libraries/aron/aroncore/io/AronDataIO/classWriters/RapidXMLWriter/AronDataRapidXMLWriter.cpp
index 944ec31b97918e1f82d52156b8bc43ccceb40e16..df6afd5b61fe220e2c23087edd70f671225963b6 100644
--- a/source/RobotAPI/libraries/aron/aroncore/io/AronDataIO/classWriters/RapidXMLWriter/AronDataRapidXMLWriter.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/io/AronDataIO/classWriters/RapidXMLWriter/AronDataRapidXMLWriter.cpp
@@ -31,7 +31,7 @@ namespace armarx
     {
         namespace io
         {
-        // Containers
+            // Containers
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronDataRapidXMLWriter::writeStart##upperType() \
     { \
@@ -43,17 +43,17 @@ namespace armarx
         return true; \
     }
 
-        HANDLE_CONTAINER_DATA
+            HANDLE_CONTAINER_DATA
 #undef RUN_ARON_MACRO
 
-        // Complex Types
+            // Complex Types
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronDataRapidXMLWriter::write##upperType(const std::vector<int>& dims, const std::string& t, const unsigned char* data) \
     { \
         return true; \
     }
 
-        HANDLE_COMPLEX_DATA
+            HANDLE_COMPLEX_DATA
 #undef RUN_ARON_MACRO
 
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
@@ -62,7 +62,7 @@ namespace armarx
         return true; \
     }
 
-        HANDLE_PRIMITIVE_TYPES
+            HANDLE_PRIMITIVE_TYPES
 #undef RUN_ARON_MACRO
 
         }
diff --git a/source/RobotAPI/libraries/aron/aroncore/io/AronTextReader.h b/source/RobotAPI/libraries/aron/aroncore/io/AronTextReader.h
index c1bb433ed1de38c6a03b1baf8eab5614dbb73738..0b2aa76f1503762dba03c4505a3ad18735cec905 100644
--- a/source/RobotAPI/libraries/aron/aroncore/io/AronTextReader.h
+++ b/source/RobotAPI/libraries/aron/aroncore/io/AronTextReader.h
@@ -42,6 +42,6 @@ namespace armarx
             {
             public:
 
+            }
         }
     }
-}
diff --git a/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/NlohmannJSONWriter/AronTypeNlohmannJSONWriter.cpp b/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/NlohmannJSONWriter/AronTypeNlohmannJSONWriter.cpp
index f13315860bd3da3a3715218e4f35106a43f9eb41..f6ac4b6073023ee2cd8b9c7566b3a1067c3c6b43 100644
--- a/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/NlohmannJSONWriter/AronTypeNlohmannJSONWriter.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/NlohmannJSONWriter/AronTypeNlohmannJSONWriter.cpp
@@ -25,61 +25,61 @@
 
 namespace armarx
 {
-namespace aron
-{
-namespace io
-{
+    namespace aron
+    {
+        namespace io
+        {
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronTypeNlohmannJSONWriter::writeStart##upperType##Type() \
-{ \
-    nlohmann::jsonPtr data = nlohmann::jsonPtr(new nlohmann::json()); \
-    AronTypeNlohmannJSONWriterTokenPtr new_token = AronTypeNlohmannJSONWriterTokenPtr(new AronTypeNlohmannJSONWriterToken(AronTypeDescriptor::eAron##upperType##Type, data)); \
-    stack.push(new_token); \
-    return true; \
-} \
-    bool AronTypeNlohmannJSONWriter::writeEnd##upperType##Type() \
-{ \
-    lastRemovedToken = stack.top(); \
-    stack.pop(); \
-    \
-    if (stack.size() > 0) \
     { \
-        AronTypeNlohmannJSONWriterTokenPtr prevToken = stack.top(); \
-        prevToken->addElement(lastRemovedToken->getElement()); \
+        nlohmann::jsonPtr data = nlohmann::jsonPtr(new nlohmann::json()); \
+        AronTypeNlohmannJSONWriterTokenPtr new_token = AronTypeNlohmannJSONWriterTokenPtr(new AronTypeNlohmannJSONWriterToken(AronTypeDescriptor::eAron##upperType##Type, data)); \
+        stack.push(new_token); \
+        return true; \
     } \
-    return true; \
-}
+    bool AronTypeNlohmannJSONWriter::writeEnd##upperType##Type() \
+    { \
+        lastRemovedToken = stack.top(); \
+        stack.pop(); \
+        \
+        if (stack.size() > 0) \
+        { \
+            AronTypeNlohmannJSONWriterTokenPtr prevToken = stack.top(); \
+            prevToken->addElement(lastRemovedToken->getElement()); \
+        } \
+        return true; \
+    }
 
-HANDLE_CONTAINER_TYPES
+            HANDLE_CONTAINER_TYPES
 #undef RUN_ARON_MACRO
 
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronTypeNlohmannJSONWriter::write##upperType##Type(const std::vector<int>& dims, const std::string& t) \
-{ \
-    AronTypeNlohmannJSONWriterTokenPtr token = stack.top(); \
-    nlohmann::jsonPtr j = nlohmann::jsonPtr(new nlohmann::json()); \
-    (*j)["ARON_NDARRAY_DIMENSIONS"] = dims; \
-    (*j)["ARON_NDARRAY_TYPE"] = t; \
-    token->addElement(j); \
-    return true; \
-}
+    { \
+        AronTypeNlohmannJSONWriterTokenPtr token = stack.top(); \
+        nlohmann::jsonPtr j = nlohmann::jsonPtr(new nlohmann::json()); \
+        (*j)["ARON_NDARRAY_DIMENSIONS"] = dims; \
+        (*j)["ARON_NDARRAY_TYPE"] = t; \
+        token->addElement(j); \
+        return true; \
+    }
 
-HANDLE_COMPLEX_TYPES
+            HANDLE_COMPLEX_TYPES
 #undef RUN_ARON_MACRO
 
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronTypeNlohmannJSONWriter::write##upperType##Type() \
-{ \
-    AronTypeNlohmannJSONWriterTokenPtr token = stack.top(); \
-    lowerType x = {}; \
-    nlohmann::jsonPtr j = nlohmann::jsonPtr(new nlohmann::json(x)); \
-    token->addElement(j); \
-    return true; \
-}
+    { \
+        AronTypeNlohmannJSONWriterTokenPtr token = stack.top(); \
+        lowerType x = {}; \
+        nlohmann::jsonPtr j = nlohmann::jsonPtr(new nlohmann::json(x)); \
+        token->addElement(j); \
+        return true; \
+    }
 
-HANDLE_PRIMITIVE_TYPES
+            HANDLE_PRIMITIVE_TYPES
 #undef RUN_ARON_MACRO
 
-}
-}
+        }
+    }
 }
diff --git a/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/RapidXMLWriter/AronTypeRapidXMLWriter.cpp b/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/RapidXMLWriter/AronTypeRapidXMLWriter.cpp
index adf1101bf6e922dc40ac4641f7b4e45ff9ed91f0..4dcf9562ff8cfbe2bc7778b452cc7e7259c08992 100644
--- a/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/RapidXMLWriter/AronTypeRapidXMLWriter.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/RapidXMLWriter/AronTypeRapidXMLWriter.cpp
@@ -25,47 +25,47 @@
 
 namespace armarx
 {
-namespace aron
-{
-namespace io
-{
-bool AronTypeXMLWriter::writeStartDictType()
-{
-    return true;
-}
+    namespace aron
+    {
+        namespace io
+        {
+            bool AronTypeXMLWriter::writeStartDictType()
+            {
+                return true;
+            }
 
-bool AronTypeXMLWriter::writeEndDictType()
-{
-    return true;
-}
+            bool AronTypeXMLWriter::writeEndDictType()
+            {
+                return true;
+            }
 
-bool AronTypeXMLWriter::writeStartListType()
-{
-    return true;
-}
+            bool AronTypeXMLWriter::writeStartListType()
+            {
+                return true;
+            }
 
-bool AronTypeXMLWriter::writeEndListType()
-{
-    return true;
-}
+            bool AronTypeXMLWriter::writeEndListType()
+            {
+                return true;
+            }
 
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronTypeXMLWriter::write##upperType##Type(const std::vector<int>& d, const std::string& t) \
-{ \
-    return true; \
-}
+    { \
+        return true; \
+    }
 
-HANDLE_COMPLEX_TYPES
+            HANDLE_COMPLEX_TYPES
 #undef RUN_ARON_MACRO
 
 #define RUN_ARON_MACRO(upperType, lowerType, capsType) \
     bool AronTypeXMLWriter::write##upperType##Type() \
-{ \
-    return true; \
-}
+    { \
+        return true; \
+    }
 
-HANDLE_PRIMITIVE_TYPES
+            HANDLE_PRIMITIVE_TYPES
 #undef RUN_ARON_MACRO
-}
-}
+        }
+    }
 }
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDataNavigator.h b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDataNavigator.h
index c14fede048d6c48f0817cccd52dc50d8bdac34e6..08f001f7e926ef8d84f73d73780ea084528f44b1 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDataNavigator.h
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDataNavigator.h
@@ -86,6 +86,61 @@ namespace armarx
             private:
                 static const AronDataNavigatorFactoryPtr FACTORY;
             };
+
+            class AronContainerDataNavigator;
+            typedef std::shared_ptr<AronContainerDataNavigator> AronContainerDataNavigatorPtr;
+
+            class AronContainerDataNavigator :
+                virtual public AronDataNavigator
+            {
+            public:
+                using PointerType = AronContainerDataNavigatorPtr;
+
+                // constructors
+                AronContainerDataNavigator() =  delete;
+                AronContainerDataNavigator(const AronDataDescriptor& d, const AronPath& p = AronPath()) :
+                    AronDataNavigator(d, p)
+                {
+
+                }
+            };
+
+            class AronComplexDataNavigator;
+            typedef std::shared_ptr<AronComplexDataNavigator> AronComplexDataNavigatorPtr;
+
+            class AronComplexDataNavigator :
+                virtual public AronDataNavigator
+            {
+            public:
+                using PointerType = AronComplexDataNavigatorPtr;
+
+                // constructors
+                AronComplexDataNavigator() =  delete;
+                AronComplexDataNavigator(const AronDataDescriptor& d, const AronPath& p = AronPath()) :
+                    AronDataNavigator(d, p)
+                {
+
+                }
+            };
+
+            class AronPrimitiveDataNavigator;
+            typedef std::shared_ptr<AronPrimitiveDataNavigator> AronPrimitiveDataNavigatorPtr;
+
+            class AronPrimitiveDataNavigator :
+                virtual public AronDataNavigator
+            {
+            public:
+                using PointerType = AronPrimitiveDataNavigatorPtr;
+
+                // constructors
+                AronPrimitiveDataNavigator() =  delete;
+                AronPrimitiveDataNavigator(const AronDataDescriptor& d, const AronPath& p = AronPath()) :
+                    AronDataNavigator(d, p)
+                {
+
+                }
+            };
+
         }
     }
 }
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.cpp b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.cpp
index b72d694a486e67e55bdcdf4f81c631de27c36f77..43f756bba635144c03c498149c9a07d383ffa257 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.cpp
@@ -40,6 +40,7 @@ namespace armarx
             AronDictDataNavigator::AronDictDataNavigator(const data::AronDictPtr& o, const AronPath& path) :
                 AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAronDict, path),
                 AronDataNavigator(AronDataDescriptor::eAronDict, path),
+                AronContainerDataNavigator(AronDataDescriptor::eAronDict, path),
                 aron(o)
             {
                 CheckAronPtrForNull("AronDictDataNavigator", "AronDictDataNavigator", getPath(), aron);
@@ -53,6 +54,7 @@ namespace armarx
             AronDictDataNavigator::AronDictDataNavigator(const AronPath& path) :
                 AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAronDict, path),
                 AronDataNavigator(AronDataDescriptor::eAronDict, path),
+                AronContainerDataNavigator(AronDataDescriptor::eAronDict, path),
                 aron(new data::AronDict())
             {
             }
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.h b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.h
index 3b1124c4c398f88951a8274c7be3064d7387fc5c..287718efe7b433f5c653ea83e34483d08d073762 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.h
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronDictDataNavigator.h
@@ -42,7 +42,7 @@ namespace armarx
             typedef std::shared_ptr<AronDictDataNavigator> AronDictDataNavigatorPtr;
 
             class AronDictDataNavigator :
-                virtual public AronDataNavigator
+                virtual public AronContainerDataNavigator
             {
             public:
                 using PointerType = AronDictDataNavigatorPtr;
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.cpp b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.cpp
index c57bea07ff8737e66fa62c1f2a2c247f17d94c4e..63e0840087beb63471f2ad60478c0b9b75b0aa04 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.cpp
@@ -39,6 +39,7 @@ namespace armarx
             AronListDataNavigator::AronListDataNavigator(const data::AronListPtr& l, const AronPath& path) :
                 AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAronList, path),
                 AronDataNavigator(AronDataDescriptor::eAronList, path),
+                AronContainerDataNavigator(AronDataDescriptor::eAronList, path),
                 aron(l)
             {
                 CheckAronPtrForNull("AronListDataNavigator", "AronListDataNavigator", getPath(), aron);
@@ -53,6 +54,7 @@ namespace armarx
             AronListDataNavigator::AronListDataNavigator(const AronPath& path) :
                 AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAronList, path),
                 AronDataNavigator(AronDataDescriptor::eAronList, path),
+                AronContainerDataNavigator(AronDataDescriptor::eAronList, path),
                 aron(new data::AronList())
             {
             }
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.h b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.h
index 87b0b00d6cbd00ccb2a0c60c072b365393ab8ffc..2a7ea718f405223b7f6d11b3d53f6289f9c62a0f 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.h
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronListDataNavigator.h
@@ -41,7 +41,7 @@ namespace armarx
             typedef std::shared_ptr<AronListDataNavigator> AronListDataNavigatorPtr;
 
             class AronListDataNavigator :
-                virtual public AronDataNavigator
+                virtual public AronContainerDataNavigator
             {
             public:
                 using PointerType = AronListDataNavigatorPtr;
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.cpp b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.cpp
index bd252a0d7f071fd10ba6b3fbcb5377a63fa70f61..5c748218f11e8262bee7d7fbb424966e0830372a 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.cpp
@@ -42,6 +42,7 @@ namespace armarx
             AronNDArrayDataNavigator::AronNDArrayDataNavigator(const data::AronNDArrayPtr& o, const AronPath& path) :
                 AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAronNDArray, path),
                 AronDataNavigator(AronDataDescriptor::eAronNDArray, path),
+                AronComplexDataNavigator(AronDataDescriptor::eAronNDArray, path),
                 aron(o)
             {
                 CheckAronPtrForNull("AronNDArrayDataNavigator", "AronNDArrayDataNavigator", getPath(), aron);
@@ -50,6 +51,7 @@ namespace armarx
             AronNDArrayDataNavigator::AronNDArrayDataNavigator(const AronPath& path) :
                 AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAronNDArray, path),
                 AronDataNavigator(AronDataDescriptor::eAronNDArray, path),
+                AronComplexDataNavigator(AronDataDescriptor::eAronNDArray, path),
                 aron(new data::AronNDArray())
             {
 
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.h b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.h
index 96a88acf3a06ccee70096da5c45732a6622b3ac0..3a32dd987cca25d01015ee5e15be396be9209c59 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.h
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronNDArrayDataNavigator.h
@@ -41,7 +41,7 @@ namespace armarx
             typedef std::shared_ptr<AronNDArrayDataNavigator> AronNDArrayDataNavigatorPtr;
 
             class AronNDArrayDataNavigator :
-                virtual public AronDataNavigator
+                virtual public AronComplexDataNavigator
             {
             public:
                 using PointerType = AronNDArrayDataNavigatorPtr;
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.cpp b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.cpp
index 66b98dcbc53ce24e306fabf101cc08acbfb68404..a1c14461afe71328a4d352e74840386aab42e56f 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.cpp
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.cpp
@@ -38,6 +38,7 @@ namespace armarx
     Aron##upperType##DataNavigator::Aron##upperType##DataNavigator(const AronPath& path) : \
         AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAron##upperType, path), \
         AronDataNavigator(AronDataDescriptor::eAron##upperType, path), \
+        AronPrimitiveDataNavigator(AronDataDescriptor::eAron##upperType, path), \
         aron(new data::Aron##upperType()) \
     { \
         aron->value = {}; \
@@ -45,6 +46,7 @@ namespace armarx
     Aron##upperType##DataNavigator::Aron##upperType##DataNavigator(const data::Aron##upperType##Ptr& o, const AronPath& path) : \
         AronNavigator<AronDataDescriptor, data::AronData>::AronNavigator(AronDataDescriptor::eAron##upperType, path), \
         AronDataNavigator(AronDataDescriptor::eAron##upperType, path), \
+        AronPrimitiveDataNavigator(AronDataDescriptor::eAron##upperType, path), \
         aron(o) \
     { \
     } \
diff --git a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.h b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.h
index 10f9fe6dcd1bbb4ecdf070d4a3075d3f6fbd95bb..2dc5f7a58e903b361ff9aab5a35a8207f9849519 100644
--- a/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.h
+++ b/source/RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronPrimitiveDataNavigator.h
@@ -42,7 +42,7 @@ namespace armarx
     typedef std::shared_ptr<Aron##upperType##DataNavigator> Aron##upperType##DataNavigatorPtr; \
     \
     class Aron##upperType##DataNavigator : \
-        virtual public AronDataNavigator \
+        virtual public AronPrimitiveDataNavigator \
     { \
     public: \
         using PointerType = Aron##upperType##DataNavigatorPtr; \
diff --git a/source/RobotAPI/libraries/core/Pose.cpp b/source/RobotAPI/libraries/core/Pose.cpp
index 7cc1ec24e04d0eee40c77fb5dc705b3a86187531..0bca83408ff4831cd028c664aed9c20f7e056c1f 100644
--- a/source/RobotAPI/libraries/core/Pose.cpp
+++ b/source/RobotAPI/libraries/core/Pose.cpp
@@ -346,7 +346,7 @@ namespace armarx
 
 void armarx::fromIce(const Vector3BasePtr& ice, Eigen::Vector3f& vector)
 {
-    vector = fromIce(ice );
+    vector = fromIce(ice);
 }
 
 void armarx::fromIce(const QuaternionBasePtr& ice, Eigen::Quaternionf& quaternion)