From 01407bbbf341a91b5346725921bad45c6c43a6a4 Mon Sep 17 00:00:00 2001
From: Fabian Peller-Konrad <fabian.peller-konrad@kit.edu>
Date: Fri, 1 Jul 2022 09:52:26 +0200
Subject: [PATCH] renamed enums of aron. Splitted aron in codegeneration and
 core. Updates to skills framework. Fixed aron dto types and removed useless
 ice type.

---
 .../AronCodeGenerator/CMakeLists.txt          |   2 +-
 .../applications/AronCodeGenerator/main.cpp   |   4 +-
 .../SkillProviderExample.cpp                  |   9 +-
 .../SkillProviderExample.h                    |   8 +-
 .../SkillManagerMonitorWidgetController.cpp   |  36 +-
 .../SkillManagerMonitorWidgetController.h     |  11 +-
 .../visitors/AronTreeWidgetConverter.cpp      |   7 -
 .../visitors/AronTreeWidgetConverter.h        |   1 -
 .../visitors/AronTreeWidgetCreator.cpp        |   3 -
 .../visitors/AronTreeWidgetCreator.h          |   1 -
 .../visitors/AronTreeWidgetModalCreator.cpp   |   6 -
 .../visitors/AronTreeWidgetModalCreator.h     |   1 -
 source/RobotAPI/interface/aron/Aron.ice       |  70 +-
 .../skills/SkillManagerInterface.ice          |   9 +-
 .../ltm/base/converter/image/Converter.h      |   2 +-
 .../ltm/base/converter/object/Converter.h     |   2 +-
 .../imageExtractor/DepthImageExtractor.cpp    |   2 +-
 .../imageExtractor/DepthImageExtractor.h      |   2 +-
 .../imageExtractor/ImageExtractor.cpp         |   2 +-
 .../extractor/imageExtractor/ImageExtractor.h |   2 +-
 source/RobotAPI/libraries/armem/util/util.h   |   4 +-
 .../armem_gui/instance/InstanceView.cpp       |   8 +-
 .../TypedDataDisplayVisitor.cpp               |   4 +-
 .../TypedDataDisplayVisitor.h                 |   1 -
 .../tree_builders/TypedDataTreeBuilder.cpp    |   2 +-
 .../tree_visitors/TreeTypedDataVisitor.cpp    |   4 +-
 .../tree_visitors/TreeTypedDataVisitor.h      |   6 +-
 .../tree_visitors/TreeTypedJSONConverter.cpp  |   8 +-
 .../tree_visitors/TreeTypedJSONConverter.h    |   1 -
 .../libraries/armem_gui/test/ArMemGuiTest.cpp |   2 +-
 .../server/instance/SegmentAdapter.cpp        |   2 +-
 .../armem_robot/aron_conversions.cpp          |   4 -
 source/RobotAPI/libraries/aron/CMakeLists.txt |   2 +-
 .../aron/codegeneration/CMakeLists.txt        | 124 +++
 .../codegenerator/codewriter/CodeWriter.h     |   8 +-
 .../codegenerator/codewriter/Factory.h        |   0
 .../codewriter/cpp/AronGeneratedClass.h       |   0
 .../codegenerator/codewriter/cpp/Writer.cpp   |   6 +-
 .../codegenerator/codewriter/cpp/Writer.h     |   6 +-
 .../codewriter/cpp/generator/All.h            |   1 -
 .../codewriter/cpp/generator/Factory.cpp      |  64 ++
 .../codewriter/cpp/generator/Factory.h        |   2 +-
 .../codewriter/cpp/generator/Generator.cpp    |  76 +-
 .../codewriter/cpp/generator/Generator.h      |  46 +-
 .../codewriter/cpp/generator/any/All.h        |   0
 .../cpp/generator/any/AnyObject.cpp           |  33 +-
 .../codewriter/cpp/generator/any/AnyObject.h  |  10 +-
 .../codewriter/cpp/generator/container/All.h  |   0
 .../cpp/generator/container/Dict.cpp          |   0
 .../codewriter/cpp/generator/container/Dict.h |  12 +-
 .../cpp/generator/container/List.cpp          |   0
 .../codewriter/cpp/generator/container/List.h |  12 +-
 .../cpp/generator/container/Object.cpp        | 204 +++++
 .../cpp/generator/container/Object.h          |  17 +-
 .../cpp/generator/container/Pair.cpp          |   0
 .../codewriter/cpp/generator/container/Pair.h |  12 +-
 .../cpp/generator/container/Tuple.cpp         |   0
 .../cpp/generator/container/Tuple.h           |  12 +-
 .../cpp/generator/detail/AnyGenerator.cpp     |   0
 .../cpp/generator/detail/AnyGenerator.h}      |   4 +-
 .../generator/detail/ContainerGenerator.cpp   |   0
 .../cpp/generator/detail/ContainerGenerator.h |   0
 .../cpp/generator/detail/NDArrayGenerator.cpp |   0
 .../cpp/generator/detail/NDArrayGenerator.h   |   0
 .../generator/detail/PrimitiveGenerator.cpp   |   0
 .../cpp/generator/detail/PrimitiveGenerator.h |   0
 .../generator/detail/SpecializedGenerator.cpp |   0
 .../generator/detail/SpecializedGenerator.h   |   2 +-
 .../codewriter/cpp/generator/enum/All.h       |   0
 .../codewriter/cpp/generator/enum/IntEnum.cpp |   2 +-
 .../codewriter/cpp/generator/enum/IntEnum.h   |  12 +-
 .../codewriter/cpp/generator/ndarray/All.h    |   0
 .../cpp/generator/ndarray/Image.cpp           |  12 +-
 .../codewriter/cpp/generator/ndarray/Image.h  |  20 +-
 .../cpp/generator/ndarray/Matrix.cpp          |  23 +-
 .../codewriter/cpp/generator/ndarray/Matrix.h |  17 +-
 .../cpp/generator/ndarray/NDArray.cpp         |   0
 .../cpp/generator/ndarray/NDArray.h           |  10 +-
 .../cpp/generator/ndarray/PointCloud.cpp      |  27 +-
 .../cpp/generator/ndarray/PointCloud.h        |  17 +-
 .../cpp/generator/ndarray/Quaternion.cpp      |  17 +-
 .../cpp/generator/ndarray/Quaternion.h        |  17 +-
 .../codewriter/cpp/generator/primitive/All.h  |   0
 .../cpp/generator/primitive/Bool.cpp          |   0
 .../codewriter/cpp/generator/primitive/Bool.h |   2 +-
 .../cpp/generator/primitive/Double.cpp        |   0
 .../cpp/generator/primitive/Double.h          |   4 +-
 .../cpp/generator/primitive/Float.cpp         |   0
 .../cpp/generator/primitive/Float.h           |   4 +-
 .../cpp/generator/primitive/Int.cpp           |   0
 .../codewriter/cpp/generator/primitive/Int.h  |   4 +-
 .../cpp/generator/primitive/Long.cpp          |   0
 .../codewriter/cpp/generator/primitive/Long.h |   4 +-
 .../cpp/generator/primitive/String.cpp        |   0
 .../cpp/generator/primitive/String.h          |   4 +-
 .../codewriter/cpp/generator/toplevel/All.h   |   0
 .../cpp/generator/toplevel/IntEnumClass.cpp   |   2 +-
 .../cpp/generator/toplevel/IntEnumClass.h     |  16 +-
 .../cpp/generator/toplevel/ObjectClass.cpp    |   4 +-
 .../cpp/generator/toplevel/ObjectClass.h      |  18 +-
 .../codegenerator/helper/ReaderInfo.h         |   0
 .../codegenerator/helper/WriterInfo.h         |   0
 .../aron/codegeneration/test/CMakeLists.txt   | 147 ++++
 .../test/aron/AnyTest.xml                     |   0
 .../test/aron/BaseClassTest.xml               |   0
 .../test/aron/DerivedClassTest.xml            |   2 +-
 .../test/aron/DictTest.xml                    |   0
 .../aron/codegeneration/test/aron/DtoTest.xml |  16 +
 .../test/aron/EnumTest.xml                    |   0
 .../test/aron/HumanPoseTest.xml               |   0
 .../test/aron/IKResult.xml                    |   0
 .../test/aron/ImageTest.xml                   |   0
 .../test/aron/ListTest.xml                    |   0
 .../test/aron/MatrixTest.xml                  |   0
 .../test/aron/NaturalIKTest.xml               |   0
 .../test/aron/ObjectTest.xml                  |   0
 .../test/aron/OptionalTest.xml                |   0
 .../test/aron/OrientationTest.xml             |   0
 .../test/aron/PointCloudTest.xml              |   0
 .../test/aron/PoseTest.xml                    |   0
 .../test/aron/PositionTest.xml                |   0
 .../test/aron/PrimitiveTest.xml               |   3 -
 .../test/aron/QuaternionTest.xml              |   0
 .../test/aron/TemplateTest.xml                |   0
 .../test/aronCodeGenerationTest.cpp           |  37 +-
 .../test/aronExtendsTest.cpp                  |   4 +-
 .../test/aronNavigateTest.cpp                 |   5 +-
 .../test/aronOperatorTest.cpp                 |   0
 .../test/aronRandomizedTest.cpp               |   0
 .../typereader/Reader.h                       |   8 +-
 .../typereader/helper/GenerateInfo.h          |   0
 .../typereader/helper/GenerateIntEnumInfo.h   |   0
 .../typereader/helper/GenerateTypeInfo.h      |   0
 .../typereader/xml/Data.cpp                   |   2 +-
 .../typereader/xml/Data.h                     |  14 +-
 .../typereader/xml/Factory.cpp                | 157 ++--
 .../typereader/xml/Factory.h                  |   5 +-
 .../typereader/xml/Reader.cpp                 |   8 +-
 .../typereader/xml/Reader.h                   |   4 +-
 .../AronCodeGenerator.cpp                     |  39 -
 .../codegenerationhelper/AronCodeGenerator.h  |  50 --
 .../aron/codegenerationhelper/CMakeLists.txt  |  20 -
 .../libraries/aron/common/CMakeLists.txt      |   4 +-
 .../libraries/aron/common/aron_conversions.h  |   3 -
 .../aron/common/aron_conversions/core.cpp     |   1 -
 .../aron/common/aron_conversions/core.h       |  79 +-
 .../aron/common/aron_conversions/eigen.h      |   2 +
 .../aron/common/aron_conversions/framed.h     |   2 +
 .../common/aron_conversions/packagepath.h     |   2 +
 .../aron/common/aron_conversions/simox.h      |   2 +
 .../aron/common/aron_conversions/stl.cpp      |   2 +-
 .../aron/common/aron_conversions/stl.h        | 195 +----
 .../aron/common/aron_conversions/time.cpp     |  19 +-
 .../aron/common/aron_conversions/time.h       |  11 +-
 .../aron/common/test/MyCustomType.cpp         |   2 +-
 .../aron/common/test/aron_common_test.cpp     |   3 +-
 .../aron/common/util/object_finders.h         |   2 +-
 .../libraries/aron/core/CMakeLists.txt        |  98 +--
 .../RobotAPI/libraries/aron/core/Descriptor.h | 354 ++++----
 source/RobotAPI/libraries/aron/core/Path.cpp  |   1 -
 .../libraries/aron/core/aron_conversions.cpp  |   6 +
 .../libraries/aron/core/aron_conversions.h    | 391 +++++++++
 .../codewriter/cpp/generator/Factory.cpp      |  65 --
 .../cpp/generator/container/Object.cpp        | 104 ---
 .../cpp/generator/detail/AnyGenerator.h       |  66 --
 .../cpp/generator/detail/DtoGenerator.cpp     |  25 -
 .../codewriter/cpp/generator/dto/All.h        |   8 -
 .../codewriter/cpp/generator/dto/DateTime.cpp |  88 --
 .../codewriter/cpp/generator/dto/DateTime.h   |  46 --
 .../libraries/aron/core/data/rw/json/Data.h   |  76 +-
 .../aron/core/data/variant/Factory.cpp        |  20 +-
 .../core/data/variant/complex/NDArray.cpp     |  14 +-
 .../aron/core/data/variant/container/Dict.cpp |   8 +-
 .../aron/core/data/variant/container/Dict.h   |   2 +-
 .../aron/core/data/variant/container/List.cpp |  10 +-
 .../data/variant/detail/SpecializedVariant.h  |   4 +-
 .../aron/core/data/variant/primitive/Bool.cpp |   8 +-
 .../core/data/variant/primitive/Double.cpp    |   8 +-
 .../core/data/variant/primitive/Float.cpp     |   8 +-
 .../aron/core/data/variant/primitive/Int.cpp  |   8 +-
 .../aron/core/data/variant/primitive/Long.cpp |   8 +-
 .../core/data/variant/primitive/String.cpp    |   8 +-
 .../aron/core/data/visitor/RecursiveVisitor.h |  61 +-
 .../aron/core/data/visitor/Visitor.h          |  61 +-
 .../nlohmannJSON/NlohmannJSONVisitor.cpp      |   2 +-
 .../data/visitor/variant/VariantVisitor.cpp   |  20 +-
 .../data/visitor/variant/VariantVisitor.h     |   4 -
 .../aron/core/legacy/DataVisitor.cpp          | 127 ---
 .../libraries/aron/core/legacy/DataVisitor.h  | 265 ------
 .../libraries/aron/core/legacy/Randomizer.h   | 631 --------------
 .../aron/core/legacy/TypedDataVisitor.cpp     | 258 ------
 .../aron/core/legacy/TypedDataVisitor.h       | 379 ---------
 .../libraries/aron/core/test/CMakeLists.txt   | 146 ----
 .../libraries/aron/core/test/Randomizer.cpp   |  24 -
 .../libraries/aron/core/test/Randomizer.h     | 771 ------------------
 .../aron/core/type/converter/Converter.h      |   8 -
 .../libraries/aron/core/type/rw/Reader.h      |  11 +-
 .../libraries/aron/core/type/rw/Writer.h      |   3 -
 .../libraries/aron/core/type/rw/json/Data.h   |  95 ++-
 .../nlohmannJSON/NlohmannJSONReader.cpp       |   7 -
 .../reader/nlohmannJSON/NlohmannJSONReader.h  |  35 +-
 .../type/rw/reader/variant/VariantReader.cpp  |   9 -
 .../type/rw/reader/variant/VariantReader.h    |  37 +-
 .../nlohmannJSON/NlohmannJSONWriter.cpp       |   7 -
 .../writer/nlohmannJSON/NlohmannJSONWriter.h  |   1 -
 .../type/rw/writer/variant/VariantWriter.cpp  |   7 -
 .../type/rw/writer/variant/VariantWriter.h    |   1 -
 .../libraries/aron/core/type/variant/All.h    |   1 -
 .../aron/core/type/variant/Factory.cpp        |  39 +-
 .../aron/core/type/variant/any/AnyObject.cpp  |   4 +-
 .../aron/core/type/variant/container/Dict.cpp |   4 +-
 .../aron/core/type/variant/container/List.cpp |   4 +-
 .../core/type/variant/container/Object.cpp    |   4 +-
 .../aron/core/type/variant/container/Pair.cpp |   4 +-
 .../core/type/variant/container/Tuple.cpp     |   4 +-
 .../aron/core/type/variant/dto/All.h          |  11 -
 .../aron/core/type/variant/dto/DateTime.cpp   |  61 --
 .../aron/core/type/variant/dto/DateTime.h     |  51 --
 .../aron/core/type/variant/enum/IntEnum.cpp   |   4 +-
 .../core/type/variant/forward_declarations.h  |   1 -
 .../aron/core/type/variant/ndarray/Image.cpp  |   8 +-
 .../aron/core/type/variant/ndarray/Matrix.cpp |  14 +-
 .../core/type/variant/ndarray/NDArray.cpp     |   4 +-
 .../core/type/variant/ndarray/PointCloud.cpp  |  18 +-
 .../core/type/variant/ndarray/Quaternion.cpp  |   8 +-
 .../aron/core/type/variant/primitive/Bool.cpp |   4 +-
 .../core/type/variant/primitive/Double.cpp    |   4 +-
 .../core/type/variant/primitive/Float.cpp     |   4 +-
 .../aron/core/type/variant/primitive/Int.cpp  |   4 +-
 .../aron/core/type/variant/primitive/Long.cpp |   4 +-
 .../core/type/variant/primitive/String.cpp    |   4 +-
 .../aron/core/type/visitor/RecursiveVisitor.h |  41 +-
 .../aron/core/type/visitor/Visitor.h          |  41 +-
 .../type/visitor/variant/VariantVisitor.cpp   |   9 +-
 .../type/visitor/variant/VariantVisitor.h     |   2 -
 .../manager/SkillManagerComponentPlugin.cpp   |  22 +
 .../manager/SkillManagerComponentPlugin.h     |   3 +
 .../skills/provider/PeriodicSkill.cpp         |   2 +-
 .../libraries/skills/provider/PeriodicSkill.h |   2 +-
 .../provider/PeriodicSpecializedSkill.h       |   2 +-
 .../libraries/skills/provider/Skill.cpp       |  49 +-
 .../libraries/skills/provider/Skill.h         |  14 +-
 .../skills/provider/SpecializedSkill.h        |  12 +-
 .../detail/SkillImplementationWrapper.cpp     |   2 +-
 .../helper/LambdaSkillImplementation.cpp      |   2 +-
 .../helper/LambdaSkillImplementation.h        |   2 +-
 246 files changed, 2034 insertions(+), 4808 deletions(-)
 create mode 100644 source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/CodeWriter.h (87%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/Factory.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/AronGeneratedClass.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/Writer.cpp (98%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/Writer.h (87%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/All.h (89%)
 create mode 100644 source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.cpp
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/Factory.h (93%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/Generator.cpp (87%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/Generator.h (70%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/any/All.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp (56%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/any/AnyObject.h (76%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/All.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Dict.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Dict.h (82%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/List.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/List.h (82%)
 create mode 100644 source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.cpp
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Object.h (73%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Pair.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Pair.h (82%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Tuple.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/container/Tuple.h (82%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.h => codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h} (94%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h (94%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/enum/All.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp (98%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/enum/IntEnum.h (85%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/All.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp (91%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/Image.h (75%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp (79%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h (77%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h (85%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp (77%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h (77%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp (84%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h (77%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/All.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Bool.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Bool.h (97%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Double.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Double.h (90%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Float.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Float.h (90%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Int.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Int.h (90%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Long.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/Long.h (90%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/String.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/primitive/String.h (90%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/toplevel/All.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp (99%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h (88%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp (98%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h (82%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/helper/ReaderInfo.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/codegenerator/helper/WriterInfo.h (100%)
 create mode 100644 source/RobotAPI/libraries/aron/codegeneration/test/CMakeLists.txt
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/AnyTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/BaseClassTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/DerivedClassTest.xml (82%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/DictTest.xml (100%)
 create mode 100644 source/RobotAPI/libraries/aron/codegeneration/test/aron/DtoTest.xml
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/EnumTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/HumanPoseTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/IKResult.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/ImageTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/ListTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/MatrixTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/NaturalIKTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/ObjectTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/OptionalTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/OrientationTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/PointCloudTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/PoseTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/PositionTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/PrimitiveTest.xml (89%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/QuaternionTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aron/TemplateTest.xml (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aronCodeGenerationTest.cpp (88%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aronExtendsTest.cpp (93%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aronNavigateTest.cpp (95%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aronOperatorTest.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/test/aronRandomizedTest.cpp (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/Reader.h (89%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/helper/GenerateInfo.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/helper/GenerateIntEnumInfo.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/helper/GenerateTypeInfo.h (100%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/xml/Data.cpp (98%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/xml/Data.h (92%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/xml/Factory.cpp (76%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/xml/Factory.h (94%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/xml/Reader.cpp (97%)
 rename source/RobotAPI/libraries/aron/{core => codegeneration}/typereader/xml/Reader.h (94%)
 delete mode 100644 source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.h
 delete mode 100644 source/RobotAPI/libraries/aron/codegenerationhelper/CMakeLists.txt
 create mode 100644 source/RobotAPI/libraries/aron/core/aron_conversions.cpp
 create mode 100644 source/RobotAPI/libraries/aron/core/aron_conversions.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/All.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/legacy/DataVisitor.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/legacy/DataVisitor.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/legacy/Randomizer.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/test/Randomizer.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/test/Randomizer.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/type/variant/dto/All.h
 delete mode 100644 source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.cpp
 delete mode 100644 source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.h

diff --git a/source/RobotAPI/applications/AronCodeGenerator/CMakeLists.txt b/source/RobotAPI/applications/AronCodeGenerator/CMakeLists.txt
index bc1a0f51a..c25c4215e 100644
--- a/source/RobotAPI/applications/AronCodeGenerator/CMakeLists.txt
+++ b/source/RobotAPI/applications/AronCodeGenerator/CMakeLists.txt
@@ -1,5 +1,5 @@
 armarx_component_set_name("AronCodeGeneratorApp")
-set(COMPONENT_LIBS ArmarXCore aron)
+set(COMPONENT_LIBS ArmarXCore aroncodegenerator)
 
 set(SOURCES
     main.cpp
diff --git a/source/RobotAPI/applications/AronCodeGenerator/main.cpp b/source/RobotAPI/applications/AronCodeGenerator/main.cpp
index 5da09c7a9..a71ec2996 100644
--- a/source/RobotAPI/applications/AronCodeGenerator/main.cpp
+++ b/source/RobotAPI/applications/AronCodeGenerator/main.cpp
@@ -39,8 +39,8 @@
 #include <ArmarXCore/libraries/cppgen/CppMethod.h>
 #include <ArmarXCore/libraries/cppgen/CppClass.h>
 
-#include <RobotAPI/libraries/aron/core/typereader/xml/Reader.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.h>
 
 using namespace armarx;
 using namespace aron;
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
index cbfbc89cc..dc471cdf1 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
@@ -19,8 +19,9 @@ namespace armarx::skills::provider
             armarx::skills::Example::HelloWorldAcceptedType::ToAronType()
         })
     {}
-    Skill::Status HelloWorldSkill::execute(const aron::data::DictPtr& d, const CallbackT&)
+    Skill::Status HelloWorldSkill::main(const aron::data::DictPtr& d, const CallbackT&)
     {
+
         ARMARX_IMPORTANT << "Hi, from the Hello World Skill.\n" <<
                             "I received the following data: \n" <<
                             aron::converter::AronNlohmannJSONConverter::ConvertToNlohmannJSON(d).dump(2) << "\n" <<
@@ -37,7 +38,7 @@ namespace armarx::skills::provider
             nullptr
         })
     {}
-    Skill::Status ChainingSkill::execute(const aron::data::DictPtr& d, const CallbackT&)
+    Skill::Status ChainingSkill::main(const aron::data::DictPtr& d, const CallbackT&)
     {
         armarx::skills::Example::HelloWorldAcceptedType exec1;
         armarx::skills::Example::HelloWorldAcceptedType exec2;
@@ -72,7 +73,7 @@ namespace armarx::skills::provider
             nullptr
         })
     {}
-    Skill::Status TimeoutSkill::execute(const aron::data::DictPtr& d, const CallbackT&)
+    Skill::Status TimeoutSkill::main(const aron::data::DictPtr& d, const CallbackT&)
     {
         int i = 0;
         while (!timeoutReached)
@@ -99,7 +100,7 @@ namespace armarx::skills::provider
             nullptr
         })
     {}
-    Skill::Status CallbackSkill::execute(const aron::data::DictPtr& d, const CallbackT& callback)
+    Skill::Status CallbackSkill::main(const aron::data::DictPtr& d, const CallbackT& callback)
     {
         ARMARX_IMPORTANT << "Logging three updates via the callback";
         auto up1 = std::make_shared<aron::data::Dict>();
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
index 57853d642..8ed9ffc9e 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
@@ -36,14 +36,14 @@ namespace armarx::skills::provider
     {
     public:
         HelloWorldSkill();
-        Status execute(const aron::data::DictPtr&, const CallbackT&) final;
+        Status main(const aron::data::DictPtr&, const CallbackT&) final;
     };
 
     class ChainingSkill : public Skill
     {
     public:
         ChainingSkill();
-        Status execute(const aron::data::DictPtr&, const CallbackT&) final;
+        Status main(const aron::data::DictPtr&, const CallbackT&) final;
     };
 
 
@@ -51,7 +51,7 @@ namespace armarx::skills::provider
     {
     public:
         TimeoutSkill();
-        Status execute(const aron::data::DictPtr&, const CallbackT&) final;
+        Status main(const aron::data::DictPtr&, const CallbackT&) final;
     };
 
 
@@ -59,7 +59,7 @@ namespace armarx::skills::provider
     {
     public:
         CallbackSkill();
-        Status execute(const aron::data::DictPtr&, const CallbackT&) final;
+        Status main(const aron::data::DictPtr&, const CallbackT&) final;
     };
 
     /**
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index c29af8fca..6ad23607b 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -159,7 +159,7 @@ namespace armarx
             return;
 
         // remove non-existing ones
-        auto managerSkills = manager->getSkillProviders();
+        auto managerSkills = manager->getSkillDescriptions();
         std::vector<std::string> removedProviders;
         for (auto it = skills.begin(); it != skills.end();)
         {
@@ -178,16 +178,11 @@ namespace armarx
 
         // add new ones
         std::vector<std::string> newProviders;
-        for (const auto& [providerName, provider] : managerSkills)
+        for (const auto& [providerName, providerSkills] : managerSkills)
         {
             if (skills.find(providerName) == skills.end())
             {
-                SkillProviderData providerData;
-                providerData.providerName = providerName;
-                providerData.skillDescriptions = provider->getSkills();
-                providerData.skillProviderPrx = provider;
-                skills.insert(std::make_pair(providerName, providerData));
-
+                skills.insert(std::make_pair(providerName, providerSkills));
                 newProviders.push_back(providerName);
             }
         }
@@ -208,13 +203,13 @@ namespace armarx
         }
 
         // add new providers
-        for (const auto& [providerName, provider] : skills)
+        for (const auto& [providerName, providerSkills] : skills)
         {
             if (auto it = std::find(newProviders.begin(), newProviders.end(), providerName); it != newProviders.end())
             {
                 auto item = new QTreeWidgetItem(widget.treeWidgetSkills);
                 item->setText(0, QString::fromStdString(providerName));
-                for (const auto& [name, sk] : provider.skillDescriptions)
+                for (const auto& [name, sk] : providerSkills)
                 {
                     auto itsk = new QTreeWidgetItem(item);
                     item->addChild(itsk);
@@ -224,21 +219,24 @@ namespace armarx
         }
 
         // update status
+        auto managerStatuses = manager->getSkillExecutionStatuses();
         for (int i = 0;  i < widget.treeWidgetSkills->topLevelItemCount(); ++i)
         {
             try
             {
                 QTreeWidgetItem* item = widget.treeWidgetSkills->topLevelItem(i);
                 auto providerName = item->text(0).toStdString();
+
+                auto allStatusesForProvider = managerStatuses.at(providerName);
+
                 for (int j = 0; j < item->childCount(); ++j)
                 {
                     QTreeWidgetItem* skillItem = item->child(j);
                     auto skillName = skillItem->text(0).toStdString();
 
-                    auto& providerPrx = skills.at(providerName).skillProviderPrx;
-                    auto statusUpdate = providerPrx->getSkillExecutionStatus(skillName);
+                    auto statusForSkill = allStatusesForProvider.at(skillName);
 
-                    skillItem->setText(2, QString::fromStdString(ExecutionStatus2String.at(statusUpdate.header.status)));
+                    skillItem->setText(2, QString::fromStdString(ExecutionStatus2String.at(statusForSkill.header.status)));
                 }
             }
             catch (const std::exception& e)
@@ -257,8 +255,8 @@ namespace armarx
             return;
         }
 
-        const auto& prv = skills.at(selectedSkill.providerName);
-        if (!prv.skillDescriptions.count(selectedSkill.skillName))
+        const auto& skillDescriptions = skills.at(selectedSkill.providerName);
+        if (!skillDescriptions.count(selectedSkill.skillName))
         {
             return;
         }
@@ -273,7 +271,7 @@ namespace armarx
         ARMARX_INFO << "Executing skill from GUI: " << selectedSkill.providerName << "/" << selectedSkill.skillName;
         // Note that we execute the skill in a seperate thread so that the GUI thread does not freeze.
         //executions.emplace_back([&](){ manager->executeSkill(exInfo); });
-        manager->executeSkill(exInfo);
+        manager->begin_executeSkill(exInfo);
     }
 
     void SkillManagerMonitorWidgetController::stopSkill()
@@ -283,8 +281,8 @@ namespace armarx
             return;
         }
 
-        const auto& prv = skills.at(selectedSkill.providerName);
-        if (!prv.skillDescriptions.count(selectedSkill.skillName))
+        const auto& skillDescriptions = skills.at(selectedSkill.providerName);
+        if (!skillDescriptions.count(selectedSkill.skillName))
         {
             return;
         }
@@ -330,7 +328,7 @@ namespace armarx
         aronTreeWidgetController = nullptr;
         skillsArgumentsTreeWidgetItem = nullptr;
 
-        auto skillDesc = skills.at(selectedSkill.providerName).skillDescriptions.at(selectedSkill.skillName);
+        auto skillDesc = skills.at(selectedSkill.providerName).at(selectedSkill.skillName);
 
         {
             auto it = new QTreeWidgetItem(widget.treeWidgetSkillDetails,
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
index debeaedff..00e15a756 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
@@ -108,15 +108,8 @@ namespace armarx
             std::string skillName;
         };
 
-        struct SkillProviderData
-        {
-            std::string providerName;
-            skills::provider::dto::SkillDescriptionMap skillDescriptions;
-            skills::provider::dti::SkillProviderInterfacePrx skillProviderPrx;
-        };
-
-        // Data taken from observer
-        std::map<std::string, SkillProviderData> skills = {};
+        // Data taken from observer (snapshot of it)
+        skills::manager::dto::SkillDescriptionMapMap skills = {};
 
         // User Input
         SelectedSkill selectedSkill;
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp
index 149fa1988..04fab49b6 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp
@@ -217,13 +217,6 @@ namespace armarx
         createdAronString->fromString(str);
     }
 
-    void
-    AronTreeWidgetConverterVisitor::visitAronVariant(const aron::type::DateTimePtr& i)
-    {
-        auto l = std::make_shared<aron::type::Long>();
-        visitLong(l);
-    }
-
     void AronTreeWidgetConverterVisitor::visitUnknown(Input&)
     {
         ARMARX_WARNING_S << "Received an unknown type when trying to convert a skill argument type to an aron data object.";
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.h
index e7cdcc999..a7d071906 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.h
@@ -70,7 +70,6 @@ namespace armarx
         void visitAronVariant(const aron::type::DoublePtr&) override;
         void visitAronVariant(const aron::type::BoolPtr&) override;
         void visitAronVariant(const aron::type::StringPtr&) override;
-        void visitAronVariant(const aron::type::DateTimePtr&) override;
         void visitUnknown(Input&) override;
     };
 }
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp
index 7c6b0ceaf..5e8cab9ee 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp
@@ -121,9 +121,6 @@ namespace armarx
     void
     AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::StringPtr& i)
     { createSimpleTreeViewWidget(i, ""); }
-    void
-    AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::DateTimePtr& i)
-    { createSimpleTreeViewWidget(i, "0"); }
 
     void AronTreeWidgetCreatorVisitor::visitUnknown(Input&)
     {
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.h
index eaaf07bd4..5a696d52c 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.h
@@ -68,7 +68,6 @@ namespace armarx
         void visitAronVariant(const aron::type::DoublePtr& i) override;
         void visitAronVariant(const aron::type::BoolPtr& i) override;
         void visitAronVariant(const aron::type::StringPtr& i) override;
-        void visitAronVariant(const aron::type::DateTimePtr& i) override;
         void visitUnknown(Input&) override;
     };
 }
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
index c0db71919..07c0eee7a 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
@@ -118,12 +118,6 @@ namespace armarx
         createdModal = std::make_shared<AronTreeWidgetTextInputModalController>(label, item, parent);
     }
 
-    void
-    AronTreeWidgetModalCreatorVisitor::visitAronVariant(const aron::type::DateTimePtr& i)
-    {
-        createdModal = std::make_shared<AronTreeWidgetTextInputModalController>(label, item, parent);
-    }
-
     void AronTreeWidgetModalCreatorVisitor::visitUnknown(Input&)
     {
         ARMARX_WARNING_S << "Received an unknown type when trying to create a tree view widget modal for a skill argument type.";
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.h
index d2cd06df1..26764e6d2 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.h
@@ -76,7 +76,6 @@ namespace armarx
         void visitAronVariant(const aron::type::DoublePtr& i) override;
         void visitAronVariant(const aron::type::BoolPtr& i) override;
         void visitAronVariant(const aron::type::StringPtr& i) override;
-        void visitAronVariant(const aron::type::DateTimePtr& i) override;
         void visitUnknown(Input&) override;
     };
 }
diff --git a/source/RobotAPI/interface/aron/Aron.ice b/source/RobotAPI/interface/aron/Aron.ice
index 8667b1aaf..c766750c2 100644
--- a/source/RobotAPI/interface/aron/Aron.ice
+++ b/source/RobotAPI/interface/aron/Aron.ice
@@ -28,25 +28,25 @@ module armarx
         {
             enum Maybe
             {
-                eNone,
-                eOptional,
-                eRawPointer,
-                eUniquePointer,
-                eSharedPointer
+                NONE,
+                OPTIONAL,
+                RAW_PTR,
+                UNIQUE_PTR,
+                SHARED_PTR
             };
 
             module ndarray
             {
                 enum ElementType
                 {
-                    uint8,
-                    int8,
-                    uint16,
-                    int16,
-                    uint32,
-                    int32,
-                    float32,
-                    float64
+                    UINT8,
+                    INT8,
+                    UINT16,
+                    INT16,
+                    UINT32,
+                    INT32,
+                    FLOAT32,
+                    FLOAT64
                 };
             };
 
@@ -54,8 +54,8 @@ module armarx
             {
                 enum PixelType
                 {
-                    rgb24,
-                    depth32
+                    RGB24,
+                    DEPTH32
                 };
             };
 
@@ -63,13 +63,13 @@ module armarx
             {
                 enum VoxelType
                 {
-                    PointXYZ,
-                    PointXYZI,
-                    PointXYZL,
-                    PointXYZRGB,
-                    PointXYZRGBL,
-                    PointXYZRGBA,
-                    PointXYZHSV
+                    POINT_XYZ,
+                    POINT_XYZI,
+                    POINT_XYZL,
+                    POINT_XYZRGB,
+                    POINT_XYZRGBL,
+                    POINT_XYZRGBA,
+                    POINT_XYZHSV
                 };
             };
 
@@ -77,11 +77,11 @@ module armarx
             {
                 enum ElementType
                 {
-                    int16,
-                    int32,
-                    int64,
-                    float32,
-                    float64
+                    INT16,
+                    INT32,
+                    INT64,
+                    FLOAT32,
+                    FLOAT64
                 };
             };
 
@@ -89,8 +89,8 @@ module armarx
             {
                 enum ElementType
                 {
-                    float32,
-                    float64
+                    FLOAT32,
+                    FLOAT64
                 };
             };
 
@@ -98,7 +98,7 @@ module armarx
             {
                 class GenericType {
                     string VERSION = ARON_VERSION;
-                    Maybe maybe = Maybe::eNone;
+                    Maybe maybe = Maybe::NONE;
                 }
                 sequence<GenericType> GenericTypeSeq;
                 dictionary<string, GenericType> GenericTypeDict;
@@ -122,6 +122,9 @@ module armarx
                 //class FloatEnum extends GenericType { string enumName; StringFloatDict acceptedValues; }
                 //class StringEnum extends GenericType { string enumName; StringStringDict acceptedValues; }
 
+                /* ***** Any Types ***** */
+                class AnyObject extends GenericType { };
+
                 /* ***** Primitive Types ***** */
                 class AronInt extends GenericType { };
                 class AronLong extends GenericType { };
@@ -129,13 +132,6 @@ module armarx
                 class AronFloat extends GenericType { };
                 class AronString extends GenericType { };
                 class AronBool extends GenericType { };
-
-                /* ***** DTO Types ***** */
-                class AronDateTime extends GenericType { };
-                class AronDuration extends GenericType { };
-
-                /* ***** Any Types ***** */
-                class AnyObject extends GenericType {};
             };
         };
 
diff --git a/source/RobotAPI/interface/skills/SkillManagerInterface.ice b/source/RobotAPI/interface/skills/SkillManagerInterface.ice
index e35bb3e34..28712a953 100644
--- a/source/RobotAPI/interface/skills/SkillManagerInterface.ice
+++ b/source/RobotAPI/interface/skills/SkillManagerInterface.ice
@@ -40,7 +40,6 @@ module armarx
                     string skillName;
                     aron::data::dto::Dict params;
                 };
-
                 struct ProviderInfo
                 {
                     string providerName;
@@ -48,18 +47,26 @@ module armarx
                     provider::dto::SkillDescriptionMap providedSkills;
                 };
 
+                // Provider data types
                 dictionary<string, provider::dto::SkillDescriptionMap> SkillDescriptionMapMap;
+                dictionary<string, provider::dto::SkillStatusUpdateMap> SkillStatusUpdateMapMap;
             }
 
             module dti
             {
                 interface SkillManagerInterface extends callback::dti::SkillProviderCallbackInterface
                 {
+                    // There is by design no method to access the providerPrx. You should only communicate with the manager
+
                     void addProvider(dto::ProviderInfo providerInfo);
                     void removeProvider(string providerName);
+
                     dto::SkillDescriptionMapMap getSkillDescriptions();
+                    dto::SkillStatusUpdateMapMap getSkillExecutionStatuses();
+
                     void executeSkill(dto::SkillExecutionRequest skillExecutionInfo);
                     void abortSkill(string providerName, string skillName);
+
                 };
             }
         }
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h
index a2b2df045..8cb070f09 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/image/Converter.h
@@ -15,7 +15,7 @@ namespace armarx::armem::server::ltm
     {
     public:
         ImageConverter(const ConverterType t, const std::string& id, const std::string& s):
-            Converter(t, id, s, aron::type::Descriptor::eImage)
+            Converter(t, id, s, aron::type::Descriptor::IMAGE)
         {}
 
         virtual ~ImageConverter() = default;
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/converter/object/Converter.h b/source/RobotAPI/libraries/armem/server/ltm/base/converter/object/Converter.h
index e5c8e9f80..35f1a9d96 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/converter/object/Converter.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/converter/object/Converter.h
@@ -15,7 +15,7 @@ namespace armarx::armem::server::ltm
     {
     public:
         ObjectConverter(const ConverterType t, const std::string& id, const std::string& s):
-            Converter(t, id, s, aron::type::Descriptor::eObject)
+            Converter(t, id, s, aron::type::Descriptor::OBJECT)
         {}
 
         virtual ~ObjectConverter() = default;
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.cpp
index 4640cca47..e0b4c1c6a 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.cpp
@@ -10,7 +10,7 @@ namespace armarx::armem::server::ltm::extractor
         auto dict = aron::data::Dict::DynamicCastAndCheck(data);
         for (const auto& [key, child] : dict->getElements())
         {
-            if (child && child->getDescriptor() == aron::data::Descriptor::eNDArray)
+            if (child && child->getDescriptor() == aron::data::Descriptor::NDARRAY)
             {
                 auto ndarray = aron::data::NDArray::DynamicCastAndCheck(child);
                 auto shape = ndarray->getShape();
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.h b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.h
index 09b305e3c..f7857c267 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/DepthImageExtractor.h
@@ -20,7 +20,7 @@ namespace armarx::armem::server::ltm::extractor
     {
     public:
         DepthImageExtractor() :
-            Extractor(aron::type::Descriptor::eImage, "depthimage")
+            Extractor(aron::type::Descriptor::IMAGE, "depthimage")
         {
             enabled = true;
         };
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.cpp b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.cpp
index c646a4f47..767de1c5c 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.cpp
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.cpp
@@ -10,7 +10,7 @@ namespace armarx::armem::server::ltm::extractor
         auto dict = aron::data::Dict::DynamicCastAndCheck(data);
         for (const auto& [key, child] : dict->getElements())
         {
-            if (child && child->getDescriptor() == aron::data::Descriptor::eNDArray)
+            if (child && child->getDescriptor() == aron::data::Descriptor::NDARRAY)
             {
                 auto ndarray = aron::data::NDArray::DynamicCastAndCheck(child);
                 auto shape = ndarray->getShape();
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h
index be9c80ba7..c8ef9669d 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/extractor/imageExtractor/ImageExtractor.h
@@ -20,7 +20,7 @@ namespace armarx::armem::server::ltm::extractor
     {
     public:
         ImageExtractor() :
-            Extractor(aron::type::Descriptor::eImage, "image")
+            Extractor(aron::type::Descriptor::IMAGE, "image")
         {
             enabled = true;
         };
diff --git a/source/RobotAPI/libraries/armem/util/util.h b/source/RobotAPI/libraries/armem/util/util.h
index 7ffdfbfdc..d6f9c58a2 100644
--- a/source/RobotAPI/libraries/armem/util/util.h
+++ b/source/RobotAPI/libraries/armem/util/util.h
@@ -28,7 +28,7 @@
 
 #include <RobotAPI/libraries/armem/client/MemoryNameSystem.h>
 #include <RobotAPI/libraries/armem/core/wm/memory_definitions.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/AronGeneratedClass.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h>
 
 
 namespace armarx::armem
@@ -55,7 +55,7 @@ namespace armarx::armem
 
 #if 0
         // item.data() is by definition a DictNavigator
-        if (item.data()->getDescriptor() != aron::data::Descriptor::eDict)
+        if (item.data()->getDescriptor() != aron::data::Descriptor::DICT)
         {
             return std::nullopt;
         }
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
index 61918cb20..5f6833487 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
@@ -282,7 +282,7 @@ namespace armarx::armem::gui::instance
         aron::type::Descriptor type = static_cast<aron::type::Descriptor>(item->data(int(Columns::TYPE), Qt::UserRole).toInt());
         switch (type)
         {
-            case aron::type::Descriptor::eImage:
+            case aron::type::Descriptor::IMAGE:
             {
                 if (const std::optional<aron::Path> path = getElementPath(item))
                 {
@@ -699,7 +699,7 @@ namespace armarx::armem::gui::instance
             // pixelType = aron::type::Image::pixelTypeFromName(imageData->getType());
 
             // For now we assume it comes from c++ where '5' means CV_32FC1 (=5)
-            pixelType = (imageData->getType() == "5" ? PixelType::depth32 : PixelType::rgb24);
+            pixelType = (imageData->getType() == "5" ? PixelType::DEPTH32 : PixelType::RGB24);
         }
         catch (const aron::error::AronException&)
         {
@@ -711,12 +711,12 @@ namespace armarx::armem::gui::instance
         {
             switch (pixelType.value())
             {
-                case PixelType::rgb24:
+                case PixelType::RGB24:
                     ARMARX_CHECK_EQUAL(shape.at(2), 3) << "Expected Rgb24 image to have 3 bytes per pixel.";
                     image = QImage(imageData->getData(), cols, rows, QImage::Format::Format_RGB888);
                     break;
 
-                case PixelType::depth32:
+                case PixelType::DEPTH32:
                     image = imageView->convertDepth32ToRGB32(*imageData);
                     clearLimitsHistory = false;
                     break;
diff --git a/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp b/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp
index 7898b78f6..6b7e2a77a 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp
@@ -84,12 +84,12 @@ namespace armarx::aron
         value << DataDisplayVisitor::getValue(data);
     }
 
-    void TypedDataDisplayVisitor::visitDateTime(const data::VariantPtr& data, const type::VariantPtr& type)
+    /*void TypedDataDisplayVisitor::visitDateTime(const data::VariantPtr& data, const type::VariantPtr& type)
     {
         auto l = data::Long::DynamicCastAndCheck(data);
         armem::Time time { armem::Duration::MicroSeconds(l->getValue()) };
         value << armem::toDateTimeMilliSeconds(time);
-    }
+    }*/
 
 
     template <typename ScalarT>
diff --git a/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.h b/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.h
index 699e54996..9d0193e37 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.h
@@ -39,7 +39,6 @@ namespace armarx::aron
         void visitInt(const data::VariantPtr& data, const type::VariantPtr& type) override;
         void visitLong(const data::VariantPtr& data, const type::VariantPtr& type) override;
         void visitString(const data::VariantPtr& data, const type::VariantPtr& type) override;
-        void visitDateTime(const data::VariantPtr& data, const type::VariantPtr& type) override;
 
 
         void visitMatrix(const data::VariantPtr& data, const type::VariantPtr& type) override;
diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp b/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp
index 70edd5a51..baf2fc6b4 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.cpp
@@ -185,7 +185,7 @@ namespace armarx::armem::gui::instance
         std::string typeName = instance::sanitizeTypeName(type->getFullName());
         switch (type->getMaybe())
         {
-            case aron::type::Maybe::eOptional:
+            case aron::type::Maybe::OPTIONAL:
                 typeName = "Optional[" + typeName + "]";
                 break;
             default:
diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.cpp b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.cpp
index ef1dbf9e0..c37bff2f8 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.cpp
@@ -14,13 +14,13 @@
 namespace armarx::armem::gui::instance
 {
 
-    void TreeTypedDataVisitor::streamValueText(const aron::data::Long& data, const aron::type::DateTime& type, std::stringstream& ss) const
+    /*void TreeTypedDataVisitor::streamValueText(const aron::data::Long& data, const aron::type::DateTime& type, std::stringstream& ss) const
     {
         (void) type;
         armem::Time time { armem::Duration::MicroSeconds(data.getValue()) };
         armem::toDateTimeMilliSeconds(time);
         ss << armem::toDateTimeMilliSeconds(time);
-    }
+    }*/
 
     void TreeTypedDataVisitor::streamValueText(const aron::data::NDArray& data, const aron::type::Matrix& type, std::stringstream& ss) const
     {
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 465bbd623..8ee94fd6c 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedDataVisitor.h
@@ -139,7 +139,7 @@ namespace armarx::armem::gui::instance
             auto t = *aron::type::String::DynamicCastAndCheck(type);
             this->addValueRow(key, d, t);
         }
-        void visitDateTime(const aron::data::VariantPtr& data, const aron::type::VariantPtr& type) override
+        /*void visitDateTime(const aron::data::VariantPtr& data, const aron::type::VariantPtr& type) override
         {
             ARMARX_CHECK_NOT_NULL(data);
             ARMARX_CHECK_NOT_NULL(type);
@@ -148,7 +148,7 @@ namespace armarx::armem::gui::instance
             auto d = *aron::data::Long::DynamicCastAndCheck(data);
             auto t = *aron::type::DateTime::DynamicCastAndCheck(type);
             this->addValueRow(key, d, t);
-        }
+        }*/
 
 
         void visitMatrix(const aron::data::VariantPtr& data, const aron::type::VariantPtr& type) override
@@ -249,7 +249,7 @@ namespace armarx::armem::gui::instance
         }
 
         using TreeDataVisitorBase::streamValueText;
-        void streamValueText(const aron::data::Long& data, const aron::type::DateTime& type, std::stringstream& ss) const;
+        //void streamValueText(const aron::data::Long& data, const aron::type::DateTime& type, std::stringstream& ss) const;
         void streamValueText(const aron::data::NDArray& data, const aron::type::Matrix& type, std::stringstream& ss) const;
 
         void streamPoseText(const aron::data::NDArray& data, const aron::type::Matrix& type, std::stringstream& ss) const;
diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp
index e9bfd3adf..0a6e9e32c 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.cpp
@@ -244,9 +244,9 @@ namespace armarx::armem::gui::instance
         insertIntoJSON(key, s);
     }
 
-    void
-    TreeTypedJSONConverter::visitDateTime(DataInput& elementData, TypeInput& /*elementType*/)
-    {
+    //void
+    //TreeTypedJSONConverter::visitDateTime(DataInput& elementData, TypeInput& /*elementType*/)
+    /*{
         const std::string key = elementData->getPath().getLastElement();
         int64_t l = *aron::data::Long::DynamicCastAndCheck(elementData);
         armem::Time time { armem::Duration::MicroSeconds(l) };
@@ -255,7 +255,7 @@ namespace armarx::armem::gui::instance
         {
             insertIntoJSON(key + "_hr", armem::toDateTimeMilliSeconds(time));
         }
-    }
+    }*/
 
     template <typename ElementType>
     void
diff --git a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.h b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.h
index 978701f94..e299f8f64 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/tree_visitors/TreeTypedJSONConverter.h
@@ -42,7 +42,6 @@ namespace armarx::armem::gui::instance
         void visitDouble(DataInput& elementData, TypeInput& elementType) override;
         void visitBool(DataInput& elementData, TypeInput& elementType) override;
         void visitString(DataInput& elementData, TypeInput& elementType) override;
-        void visitDateTime(DataInput& elementData, TypeInput& elementType) override;
 
     private:
         std::stack<std::pair<std::string, nlohmann::json>> jsonStack;
diff --git a/source/RobotAPI/libraries/armem_gui/test/ArMemGuiTest.cpp b/source/RobotAPI/libraries/armem_gui/test/ArMemGuiTest.cpp
index af5f91496..627d1a2ea 100644
--- a/source/RobotAPI/libraries/armem_gui/test/ArMemGuiTest.cpp
+++ b/source/RobotAPI/libraries/armem_gui/test/ArMemGuiTest.cpp
@@ -110,7 +110,7 @@ BOOST_AUTO_TEST_CASE(test_sanitizeTypeName_ndarry)
     {
         tn::NDArray type;
         type.setNumberDimensions(3); //old: { 3, 2, 1});
-        type.setElementType(armarx::aron::type::ndarray::float32);
+        type.setElementType(armarx::aron::type::ndarray::FLOAT32);
         test_sanitize(type.getFullName(), "NDArray");
     }
     {
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
index 7a36b0cbc..2144a7da9 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp
@@ -28,7 +28,7 @@
 #include <RobotAPI/libraries/ArmarXObjects/ObjectID.h>
 #include <RobotAPI/libraries/ArmarXObjects/predictions.h>
 #include <RobotAPI/libraries/armem_objects/aron/ObjectInstance.aron.generated.h>
-#include <RobotAPI/libraries/aron/common/aron_conversions/core.h>
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 
 #include <ArmarXCore/core/ice_conversions/ice_conversions_templates.h>
 #include <ArmarXCore/core/time/CycleUtil.h>
diff --git a/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp b/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp
index 4fc3ce642..3bd7b2dfb 100644
--- a/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp
+++ b/source/RobotAPI/libraries/armem_robot/aron_conversions.cpp
@@ -6,10 +6,6 @@
 #include <RobotAPI/libraries/ArmarXObjects/ObjectID.h>
 #include <RobotAPI/libraries/ArmarXObjects/aron_conversions.h>
 
-#include <RobotAPI/libraries/aron/common/aron_conversions/core.h>
-#include <RobotAPI/libraries/aron/common/aron_conversions/stl.h>
-#include <RobotAPI/libraries/aron/common/aron_conversions/armarx.h>
-
 
 namespace armarx::armem::robot
 {
diff --git a/source/RobotAPI/libraries/aron/CMakeLists.txt b/source/RobotAPI/libraries/aron/CMakeLists.txt
index c45ff0856..ce4f7bc99 100644
--- a/source/RobotAPI/libraries/aron/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/CMakeLists.txt
@@ -1,4 +1,4 @@
 add_subdirectory(core)
 add_subdirectory(converter)
-add_subdirectory(codegenerationhelper)
+add_subdirectory(codegeneration)
 add_subdirectory(common)
diff --git a/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt b/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt
new file mode 100644
index 000000000..3aed01744
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt
@@ -0,0 +1,124 @@
+set(LIB_NAME aroncodegenerator)
+
+armarx_component_set_name("${LIB_NAME}")
+armarx_set_target("Library: ${LIB_NAME}")
+
+find_package(Simox QUIET)
+armarx_build_if(Simox_FOUND "Simox not available")
+
+set(LIBS
+    ArmarXCoreInterfaces
+    ArmarXCore
+    RobotAPIInterfaces
+    cppgen
+    aron
+    SimoxUtility
+)
+
+set(LIB_FILES
+    typereader/xml/Data.cpp
+    typereader/xml/Factory.cpp
+    typereader/xml/Reader.cpp
+
+    codegenerator/codewriter/cpp/Writer.cpp
+    codegenerator/codewriter/cpp/generator/Generator.cpp
+    codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp
+    codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp
+    codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp
+    codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp
+    codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp
+    codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
+    codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
+    codegenerator/codewriter/cpp/generator/container/Dict.cpp
+    codegenerator/codewriter/cpp/generator/container/List.cpp
+    codegenerator/codewriter/cpp/generator/container/Object.cpp
+    codegenerator/codewriter/cpp/generator/container/Tuple.cpp
+    codegenerator/codewriter/cpp/generator/container/Pair.cpp
+    codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp
+    codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
+    codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
+    codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
+    codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
+    codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
+    codegenerator/codewriter/cpp/generator/primitive/Int.cpp
+    codegenerator/codewriter/cpp/generator/primitive/Long.cpp
+    codegenerator/codewriter/cpp/generator/primitive/Float.cpp
+    codegenerator/codewriter/cpp/generator/primitive/Double.cpp
+    codegenerator/codewriter/cpp/generator/primitive/String.cpp
+    codegenerator/codewriter/cpp/generator/primitive/Bool.cpp
+    codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
+    codegenerator/codewriter/cpp/generator/Factory.cpp
+)
+
+set(LIB_HEADERS
+    typereader/helper/GenerateInfo.h
+    typereader/helper/GenerateTypeInfo.h
+    typereader/helper/GenerateIntEnumInfo.h
+
+    typereader/Reader.h
+    typereader/xml/Data.h
+    typereader/xml/Factory.h
+    typereader/xml/Reader.h
+
+    codegenerator/helper/WriterInfo.h
+    codegenerator/helper/ReaderInfo.h
+
+    codegenerator/codewriter/CodeWriter.h
+    codegenerator/codewriter/Factory.h
+
+    codegenerator/codewriter/cpp/AronGeneratedClass.h
+    codegenerator/codewriter/cpp/Writer.h
+    codegenerator/codewriter/cpp/generator/Generator.h
+    codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
+    codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h
+    codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h
+    codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h
+    codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
+    codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
+    codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
+    codegenerator/codewriter/cpp/generator/toplevel/All.h
+    codegenerator/codewriter/cpp/generator/container/Dict.h
+    codegenerator/codewriter/cpp/generator/container/List.h
+    codegenerator/codewriter/cpp/generator/container/Object.h
+    codegenerator/codewriter/cpp/generator/container/Tuple.h
+    codegenerator/codewriter/cpp/generator/container/Pair.h
+    codegenerator/codewriter/cpp/generator/container/All.h
+    codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
+    codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
+    codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
+    codegenerator/codewriter/cpp/generator/ndarray/Image.h
+    codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
+    codegenerator/codewriter/cpp/generator/ndarray/All.h
+    codegenerator/codewriter/cpp/generator/enum/IntEnum.h
+    codegenerator/codewriter/cpp/generator/enum/All.h
+    codegenerator/codewriter/cpp/generator/primitive/Int.h
+    codegenerator/codewriter/cpp/generator/primitive/Long.h
+    codegenerator/codewriter/cpp/generator/primitive/Float.h
+    codegenerator/codewriter/cpp/generator/primitive/Double.h
+    codegenerator/codewriter/cpp/generator/primitive/String.h
+    codegenerator/codewriter/cpp/generator/primitive/Bool.h
+    codegenerator/codewriter/cpp/generator/primitive/All.h
+    codegenerator/codewriter/cpp/generator/any/AnyObject.h
+    codegenerator/codewriter/cpp/generator/any/All.h
+    codegenerator/codewriter/cpp/generator/All.h
+    codegenerator/codewriter/cpp/generator/Factory.h
+)
+
+
+armarx_add_library(
+    LIB_NAME
+        "${LIB_NAME}"
+    SOURCES
+        "${LIB_FILES}"
+    HEADERS
+        "${LIB_HEADERS}"
+    LIBS
+        "${LIBS}"
+)
+
+add_library(AronCodegenerator ALIAS "${LIB_NAME}")
+add_library(RobotAPI::AronCodegenerator ALIAS "${LIB_NAME}")
+add_library(RobotAPI::aroncodegenerator ALIAS "${LIB_NAME}")
+
+# add unit tests
+add_subdirectory(test)
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/CodeWriter.h
similarity index 87%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/CodeWriter.h
index 0bbf6ca52..942d036f3 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/CodeWriter.h
@@ -35,10 +35,10 @@
 
 #include <RobotAPI/libraries/aron/core/type/variant/All.h>
 
-#include <RobotAPI/libraries/aron/core/codegenerator/helper/WriterInfo.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h>
-#include <RobotAPI/libraries/aron/core/typereader/helper/GenerateTypeInfo.h>
-#include <RobotAPI/libraries/aron/core/typereader/helper/GenerateIntEnumInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateTypeInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateIntEnumInfo.h>
 
 namespace armarx::aron::codegenerator
 {
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/Factory.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/Factory.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/Factory.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/Factory.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/AronGeneratedClass.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/AronGeneratedClass.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
similarity index 98%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
index c5da7452b..777dbb0b3 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
@@ -194,7 +194,7 @@ namespace armarx::aron::codegenerator::cpp
             else
             {
                 c->addInherit("public armarx::aron::codegenerator::cpp::AronGeneratedClass");
-                c->addInclude("<RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/AronGeneratedClass.h>");
+                c->addInclude("<RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h>");
             }
 
             for (const std::string& s : additionalIncludes)
@@ -265,7 +265,7 @@ namespace armarx::aron::codegenerator::cpp
             setupMemberFields(c, publicGenerateIntEnumType.doc_values, generator);
 
             c->addInherit("public armarx::aron::codegenerator::cpp::AronGeneratedClass");
-            c->addInclude("<RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/AronGeneratedClass.h>");
+            c->addInclude("<RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h>");
 
             // ctor
             c->addCtor(generator.toCopyCtor(c->getName()));
@@ -300,7 +300,7 @@ namespace armarx::aron::codegenerator::cpp
     CppClassPtr Writer::setupBasicCppClass(const typereader::GenerateInfo& info, const Generator& gen) const
     {
         const auto& type = gen.getType();
-        if (type.getMaybe() != type::Maybe::eNone)
+        if (type.getMaybe() != type::Maybe::NONE)
         {
             // Should not happen since we check the maybe flag on creation of the generator. However, better to double check
             throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Somehow the maybe flag of a top level object declaration is set. This is not valid!", std::to_string((int) type.getMaybe()) + " aka " + type::defaultconversion::string::Maybe2String.at(type.getMaybe()), type.getPath());
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.h
similarity index 87%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.h
index 2e6cc994c..1ce3857fe 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.h
@@ -30,15 +30,15 @@
 #include <vector>
 
 // Parent class
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/CodeWriter.h>
 
 // ArmarX
 #include <ArmarXCore/libraries/cppgen/CppMethod.h>
 #include <ArmarXCore/libraries/cppgen/CppClass.h>
 
 #include <RobotAPI/libraries/aron/core/type/variant/All.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h>
 
 namespace armarx::aron::codegenerator::cpp
 {
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/All.h
similarity index 89%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/All.h
index 65ec2eca7..36169d4a2 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/All.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/All.h
@@ -6,7 +6,6 @@
 #include "enum/All.h"
 #include "primitive/All.h"
 #include "any/All.h"
-#include "dto/All.h"
 
 namespace  {
 
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.cpp
new file mode 100644
index 000000000..d159608a2
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.cpp
@@ -0,0 +1,64 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
+ * Karlsruhe Institute of Technology (KIT), all rights reserved.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+// STD/STL
+
+// Header
+#include "Factory.h"
+
+// ArmarX
+#include "All.h"
+#include "enum/All.h"
+
+namespace armarx::aron::codegenerator::cpp
+{
+    // Access method
+    std::unique_ptr<Generator> GeneratorFactory::create(const type::Variant& n, const Path& path) const
+    {
+        auto desc = n.getDescriptor();
+        switch(desc)
+        {
+            case type::Descriptor::LIST: return std::make_unique<generator::List>(dynamic_cast<const type::List&>(n));
+            case type::Descriptor::DICT: return std::make_unique<generator::Dict>(dynamic_cast<const type::Dict&>(n));
+            case type::Descriptor::OBJECT: return std::make_unique<generator::Object>(dynamic_cast<const type::Object&>(n));
+            case type::Descriptor::TUPLE: return std::make_unique<generator::Tuple>(dynamic_cast<const type::Tuple&>(n));
+            case type::Descriptor::PAIR: return std::make_unique<generator::Pair>(dynamic_cast<const type::Pair&>(n));
+            case type::Descriptor::NDARRAY: return std::make_unique<generator::NDArray>(dynamic_cast<const type::NDArray&>(n));
+            case type::Descriptor::MATRIX: return std::make_unique<generator::Matrix>(dynamic_cast<const type::Matrix&>(n));
+            case type::Descriptor::QUATERNION: return std::make_unique<generator::Quaternion>(dynamic_cast<const type::Quaternion&>(n));
+            case type::Descriptor::IMAGE: return std::make_unique<generator::Image>(dynamic_cast<const type::Image&>(n));
+            case type::Descriptor::POINTCLOUD: return std::make_unique<generator::PointCloud>(dynamic_cast<const type::PointCloud&>(n));
+            case type::Descriptor::INT_ENUM: return std::make_unique<generator::IntEnum>(dynamic_cast<const type::IntEnum&>(n));
+            case type::Descriptor::INT: return std::make_unique<generator::Int>(dynamic_cast<const type::Int&>(n));
+            case type::Descriptor::LONG: return std::make_unique<generator::Long>(dynamic_cast<const type::Long&>(n));
+            case type::Descriptor::FLOAT: return std::make_unique<generator::Float>(dynamic_cast<const type::Float&>(n));
+            case type::Descriptor::DOUBLE: return std::make_unique<generator::Double>(dynamic_cast<const type::Double&>(n));
+            case type::Descriptor::STRING: return std::make_unique<generator::String>(dynamic_cast<const type::String&>(n));
+            case type::Descriptor::BOOL: return std::make_unique<generator::Bool>(dynamic_cast<const type::Bool&>(n));
+            case type::Descriptor::ANY_OBJECT: return std::make_unique<generator::AnyObject>(dynamic_cast<const type::AnyObject&>(n));
+            case type::Descriptor::UNKNOWN: break;
+        }
+        throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Cannot create a generator", std::to_string((int) desc), path);
+    }
+
+}
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.h
similarity index 93%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.h
index 6f30af229..cc75cbe6b 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Factory.h
@@ -29,7 +29,7 @@
 
 // ArmarX
 #include <RobotAPI/libraries/aron/core/type/variant/All.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/All.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/All.h>
 #include <RobotAPI/libraries/aron/core/Descriptor.h>
 
 namespace armarx::aron::codegenerator::cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp
similarity index 87%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp
index 7db187e3e..fa4ead59d 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp
@@ -108,15 +108,15 @@ namespace armarx::aron::codegenerator::cpp
     {
         switch (getType().getMaybe())
         {
-            case type::Maybe::eNone:
+            case type::Maybe::NONE:
                 return getInstantiatedCppTypename();
-            case type::Maybe::eOptional:
+            case type::Maybe::OPTIONAL:
                 return "std::optional<" + getInstantiatedCppTypename() + ">";
-            case type::Maybe::eRawPointer:
+            case type::Maybe::RAW_PTR:
                 return getInstantiatedCppTypename() + "*";
-            case type::Maybe::eSharedPointer:
+            case type::Maybe::SHARED_PTR:
                 return "std::shared_ptr<" + getInstantiatedCppTypename() + ">";
-            case type::Maybe::eUniquePointer:
+            case type::Maybe::UNIQUE_PTR:
                 return "std::unique_ptr<" + getInstantiatedCppTypename() + ">";
             default:
                 throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Received unknown maybe enum", std::to_string((int) getType().getMaybe()), getType().getPath());
@@ -127,15 +127,15 @@ namespace armarx::aron::codegenerator::cpp
     {
         switch (getType().getMaybe())
         {
-            case type::Maybe::eNone:
+            case type::Maybe::NONE:
                 return getInstantiatedCppTypename();
-            case type::Maybe::eOptional:
+            case type::Maybe::OPTIONAL:
                 return "std::make_optional<" + getInstantiatedCppTypename() + ">";
-            case type::Maybe::eRawPointer:
+            case type::Maybe::RAW_PTR:
                 return getInstantiatedCppTypename() + "*";
-            case type::Maybe::eSharedPointer:
+            case type::Maybe::SHARED_PTR:
                 return "std::make_shared<" + getInstantiatedCppTypename() + ">";
-            case type::Maybe::eUniquePointer:
+            case type::Maybe::UNIQUE_PTR:
                 return "std::make_unique<" + getInstantiatedCppTypename() + ">";
             default:
                 throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Received unknown maybe enum", std::to_string((int) getType().getMaybe()), getType().getPath());
@@ -151,15 +151,15 @@ namespace armarx::aron::codegenerator::cpp
     {
         switch (getType().getMaybe())
         {
-            case type::Maybe::eNone:
+            case type::Maybe::NONE:
                 return getClassCppTypename();
-            case type::Maybe::eOptional:
+            case type::Maybe::OPTIONAL:
                 return "std::optional<" + getClassCppTypename() + ">";
-            case type::Maybe::eRawPointer:
+            case type::Maybe::RAW_PTR:
                 return getClassCppTypename() + "*";
-            case type::Maybe::eSharedPointer:
+            case type::Maybe::SHARED_PTR:
                 return "std::shared_ptr<" + getClassCppTypename() + ">";
-            case type::Maybe::eUniquePointer:
+            case type::Maybe::UNIQUE_PTR:
                 return "std::unique_ptr<" + getClassCppTypename() + ">";
             default:
                 throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Received unknown maybe enum", std::to_string((int) getType().getMaybe()), getType().getPath());
@@ -209,7 +209,7 @@ namespace armarx::aron::codegenerator::cpp
         doc << "@brief writeType() - This method returns a new type from the class structure using a type writer implementation. This function is static. \n";
         doc << "@return - the result of the writer implementation";
 
-        CppMethodPtr m = CppMethodPtr(new CppMethod("template<class WriterT>\nstatic typename WriterT::ReturnType writeType(WriterT& " + ARON_WRITER_ACCESSOR + ", std::vector<std::string> " + ARON_TEMPLATE_INSTANTIATIONS_ACCESSOR + " = {}, armarx::aron::type::Maybe "+ ARON_MAYBE_TYPE_ACCESSOR +" = armarx::aron::type::Maybe::eNone, const armarx::aron::Path& "+ARON_PATH_ACCESSOR+" = armarx::aron::Path())", doc.str()));
+        CppMethodPtr m = CppMethodPtr(new CppMethod("template<class WriterT>\nstatic typename WriterT::ReturnType writeType(WriterT& " + ARON_WRITER_ACCESSOR + ", std::vector<std::string> " + ARON_TEMPLATE_INSTANTIATIONS_ACCESSOR + " = {}, armarx::aron::type::Maybe "+ ARON_MAYBE_TYPE_ACCESSOR +" = armarx::aron::type::Maybe::NONE, const armarx::aron::Path& "+ARON_PATH_ACCESSOR+" = armarx::aron::Path())", doc.str()));
         CppBlockPtr b = std::make_shared<CppBlock>();
         b->addLine("using _Aron_T [[maybe_unused]] = typename WriterT::ReturnType;");
 
@@ -370,11 +370,11 @@ namespace armarx::aron::codegenerator::cpp
     std::string Generator::resolveMaybeAccessor(const std::string& s) const
     {
         const auto& t = getType();
-        if (t.getMaybe() == type::Maybe::eOptional)
+        if (t.getMaybe() == type::Maybe::OPTIONAL)
         {
             return s + ".value()";
         }
-        if (t.getMaybe() == type::Maybe::eRawPointer || t.getMaybe() == type::Maybe::eSharedPointer || t.getMaybe() == type::Maybe::eUniquePointer)
+        if (t.getMaybe() == type::Maybe::RAW_PTR || t.getMaybe() == type::Maybe::SHARED_PTR || t.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             return "*" + s;
         }
@@ -384,19 +384,19 @@ namespace armarx::aron::codegenerator::cpp
     std::string Generator::resolveMaybeGenerator(const std::string& s) const
     {
         const auto& t = getType();
-        if (t.getMaybe() == type::Maybe::eOptional)
+        if (t.getMaybe() == type::Maybe::OPTIONAL)
         {
             return s + " = std::make_optional<" + getInstantiatedCppTypename() + ">();";
         }
-        if (t.getMaybe() == type::Maybe::eRawPointer)
+        if (t.getMaybe() == type::Maybe::RAW_PTR)
         {
             return s + " = new " + getInstantiatedCppTypename() + "();";
         }
-        if (t.getMaybe() == type::Maybe::eSharedPointer)
+        if (t.getMaybe() == type::Maybe::SHARED_PTR)
         {
             return s + " = std::make_shared<" + getInstantiatedCppTypename() + ">();";
         }
-        if (t.getMaybe() == type::Maybe::eUniquePointer)
+        if (t.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             return s + " = std::make_unique<" + getInstantiatedCppTypename() + ">();";
         }
@@ -408,12 +408,12 @@ namespace armarx::aron::codegenerator::cpp
         const auto& type = getType();
         switch (type.getMaybe())
         {
-            case type::Maybe::eNone:
+            case type::Maybe::NONE:
                 return ".";
-            case type::Maybe::eOptional: //[[fallthrough]];
-            case type::Maybe::eRawPointer: //[[fallthrough]];
-            case type::Maybe::eSharedPointer: //[[fallthrough]];
-            case type::Maybe::eUniquePointer:
+            case type::Maybe::OPTIONAL: //[[fallthrough]];
+            case type::Maybe::RAW_PTR: //[[fallthrough]];
+            case type::Maybe::SHARED_PTR: //[[fallthrough]];
+            case type::Maybe::UNIQUE_PTR:
                 return "->";
         }
         throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Received unknown maybe enum", std::to_string((int) type.getMaybe()), type.getPath());
@@ -424,14 +424,14 @@ namespace armarx::aron::codegenerator::cpp
         const auto& type = getType();
         switch (type.getMaybe())
         {
-            case type::Maybe::eRawPointer:
+            case type::Maybe::RAW_PTR:
                 return cppAccessor;
-            case type::Maybe::eSharedPointer: //[[fallthrough]];
-            case type::Maybe::eUniquePointer:
+            case type::Maybe::SHARED_PTR: //[[fallthrough]];
+            case type::Maybe::UNIQUE_PTR:
                 return cppAccessor + ".get()";
 
-            case type::Maybe::eNone: //[[fallthrough]];
-            case type::Maybe::eOptional: break;
+            case type::Maybe::NONE: //[[fallthrough]];
+            case type::Maybe::OPTIONAL: break;
         }
         throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Received invalid maybe enum (not a pointer?)", std::to_string((int) type.getMaybe()), type.getPath());
     }
@@ -439,13 +439,13 @@ namespace armarx::aron::codegenerator::cpp
     CppBlockPtr Generator::resolveMaybeResetHardBlock(const CppBlockPtr& block_if_data, const std::string& cppAccessor) const
     {
         const auto& type = getType();
-        if (type.getMaybe() == type::Maybe::eOptional)
+        if (type.getMaybe() == type::Maybe::OPTIONAL)
         {
             CppBlockPtr b = std::make_shared<CppBlock>();
             b->addLine(cppAccessor + " = std::nullopt;");
             return b;
         }
-        else if (type.getMaybe() == type::Maybe::eRawPointer || type.getMaybe() == type::Maybe::eSharedPointer || type.getMaybe() == type::Maybe::eUniquePointer)
+        else if (type.getMaybe() == type::Maybe::RAW_PTR || type.getMaybe() == type::Maybe::SHARED_PTR || type.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             CppBlockPtr b = std::make_shared<CppBlock>();
             b->addLine(cppAccessor + " = nullptr;");
@@ -457,7 +457,7 @@ namespace armarx::aron::codegenerator::cpp
     CppBlockPtr Generator::resolveMaybeResetSoftBlock(const CppBlockPtr& block_if_data, const std::string& cppAccessor) const
     {
         const auto& type = getType();
-        if (type.getMaybe() == type::Maybe::eOptional || type.getMaybe() == type::Maybe::eRawPointer || type.getMaybe() == type::Maybe::eSharedPointer || type.getMaybe() == type::Maybe::eUniquePointer)
+        if (type.getMaybe() == type::Maybe::OPTIONAL || type.getMaybe() == type::Maybe::RAW_PTR || type.getMaybe() == type::Maybe::SHARED_PTR || type.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             CppBlockPtr b = std::make_shared<CppBlock>();
             b->addLine("if (" + cppAccessor + ") // if " + cppAccessor + " contains data");
@@ -470,7 +470,7 @@ namespace armarx::aron::codegenerator::cpp
     CppBlockPtr Generator::resolveMaybeWriteBlock(const CppBlockPtr& block_if_data, const std::string& cppAccessor) const
     {
         const auto& type = getType();
-        if (type.getMaybe() == type::Maybe::eOptional || type.getMaybe() == type::Maybe::eRawPointer || type.getMaybe() == type::Maybe::eSharedPointer || type.getMaybe() == type::Maybe::eUniquePointer)
+        if (type.getMaybe() == type::Maybe::OPTIONAL || type.getMaybe() == type::Maybe::RAW_PTR || type.getMaybe() == type::Maybe::SHARED_PTR || type.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             CppBlockPtr b = std::make_shared<CppBlock>();
             b->addLine("if (" + cppAccessor + ") // if " + cppAccessor + " contains data");
@@ -483,7 +483,7 @@ namespace armarx::aron::codegenerator::cpp
     CppBlockPtr Generator::resolveMaybeReadBlock(const CppBlockPtr& block_if_data, const std::string& cppAccessor, const std::string& variantAccessor) const
     {
         const auto& type = getType();
-        if (type.getMaybe() == type::Maybe::eOptional || type.getMaybe() == type::Maybe::eRawPointer || type.getMaybe() == type::Maybe::eSharedPointer || type.getMaybe() == type::Maybe::eUniquePointer)
+        if (type.getMaybe() == type::Maybe::OPTIONAL || type.getMaybe() == type::Maybe::RAW_PTR || type.getMaybe() == type::Maybe::SHARED_PTR || type.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             CppBlockPtr b = std::make_shared<CppBlock>();
             b->addLine("if (not (" + ARON_READER_ACCESSOR + ".readNull(" + variantAccessor + "))) // if aron contains data");
@@ -501,7 +501,7 @@ namespace armarx::aron::codegenerator::cpp
     CppBlockPtr Generator::resolveMaybeEqualsBlock(const CppBlockPtr& block_if_data, const std::string& accessor, const std::string& otherInstanceAccessor) const
     {
         const auto& type = getType();
-        if (type.getMaybe() == type::Maybe::eOptional || type.getMaybe() == type::Maybe::eRawPointer || type.getMaybe() == type::Maybe::eSharedPointer || type.getMaybe() == type::Maybe::eUniquePointer)
+        if (type.getMaybe() == type::Maybe::OPTIONAL || type.getMaybe() == type::Maybe::RAW_PTR || type.getMaybe() == type::Maybe::SHARED_PTR || type.getMaybe() == type::Maybe::UNIQUE_PTR)
         {
             CppBlockPtr b = std::make_shared<CppBlock>();
             b->addLine("if (not ((bool) " + accessor + " == (bool) " + otherInstanceAccessor + ")) // check if both contain data");
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.h
similarity index 70%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.h
index 604815e5e..57b140cc6 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.h
@@ -26,8 +26,8 @@
 #include <RobotAPI/interface/aron.h>
 #include <RobotAPI/libraries/aron/core/Exception.h>
 #include <RobotAPI/libraries/aron/core/type/variant/Variant.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/helper/WriterInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h>
 
 #include <ArmarXCore/libraries/cppgen/CppBlock.h>
 #include <ArmarXCore/libraries/cppgen/CppField.h>
@@ -48,43 +48,11 @@ namespace armarx::aron::codegenerator::cpp
     {
         const std::map<type::Maybe, std::string> Maybe2CppString =
         {
-            {type::Maybe::eNone, "armarx::aron::type::Maybe::eNone"},
-            {type::Maybe::eOptional, "armarx::aron::type::Maybe::eOptional"},
-            {type::Maybe::eRawPointer, "armarx::aron::type::Maybe::eRawPointer"},
-            {type::Maybe::eSharedPointer, "armarx::aron::type::Maybe::eSharedPointer"},
-            {type::Maybe::eUniquePointer, "armarx::aron::type::Maybe::eUniquePointer"}
-        };
-
-        const std::map<type::matrix::ElementType, std::string> MatrixElementType2CppString =
-        {
-            {type::matrix::int16, "::armarx::aron::type::matrix::int16"},
-            {type::matrix::int32, "::armarx::aron::type::matrix::int32"},
-            {type::matrix::int64, "::armarx::aron::type::matrix::int64"},
-            {type::matrix::float32, "::armarx::aron::type::matrix::float32"},
-            {type::matrix::float64, "::armarx::aron::type::matrix::float64"}
-        };
-
-        const std::map<type::pointcloud::VoxelType, std::string> VoxelType2CppString =
-        {
-            {type::pointcloud::VoxelType::PointXYZ, "::armarx::aron::type::pointcloud::VoxelType::PointXYZ"},
-            {type::pointcloud::VoxelType::PointXYZI, "::armarx::aron::type::pointcloud::VoxelType::PointXYZI"},
-            {type::pointcloud::VoxelType::PointXYZL, "::armarx::aron::type::pointcloud::VoxelType::PointXYZL"},
-            {type::pointcloud::VoxelType::PointXYZRGB, "::armarx::aron::type::pointcloud::VoxelType::PointXYZRGB"},
-            {type::pointcloud::VoxelType::PointXYZRGBL, "::armarx::aron::type::pointcloud::VoxelType::PointXYZRGBL"},
-            {type::pointcloud::VoxelType::PointXYZRGBA, "::armarx::aron::type::pointcloud::VoxelType::PointXYZRGBA"},
-            {type::pointcloud::VoxelType::PointXYZHSV, "::armarx::aron::type::pointcloud::VoxelType::PointXYZHSV"}
-        };
-
-        const std::map<type::image::PixelType, std::string> PixelType2CppString =
-        {
-            {type::image::PixelType::rgb24, "::armarx::aron::type::image::PixelType::rgb24"},
-            {type::image::PixelType::depth32, "::armarx::aron::type::image::PixelType::depth32"}
-        };
-
-        const std::map<type::quaternion::ElementType, std::string> QuaternionElementType2Cpp =
-        {
-            {type::quaternion::ElementType::float32, "::armarx::aron::type::quaternion::ElementType::float32"},
-            {type::quaternion::ElementType::float64, "::armarx::aron::type::quaternion::ElementType::float64"}
+            {type::Maybe::NONE, "::armarx::aron::type::Maybe::NONE"},
+            {type::Maybe::OPTIONAL, "::armarx::aron::type::Maybe::OPTIONAL"},
+            {type::Maybe::RAW_PTR, "::armarx::aron::type::Maybe::RAW_PTR"},
+            {type::Maybe::SHARED_PTR, "::armarx::aron::type::Maybe::SHARED_PTR"},
+            {type::Maybe::UNIQUE_PTR, "::armarx::aron::type::Maybe::UNIQUE_PTR"}
         };
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/All.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/All.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
similarity index 56%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
index 169262339..b81341ae2 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
@@ -37,14 +37,43 @@ namespace armarx::aron::codegenerator::cpp::generator
             simox::meta::get_type_name<type::dto::AnyObject>(),
             e)
     {
-        if (type.getMaybe() != type::Maybe::eSharedPointer)
+        // if the type is not known, we only accept shared ptr for unspecified aron dicts
+        if (type.getMaybe() != type::Maybe::SHARED_PTR)
         {
-            throw error::ValueNotValidException(__PRETTY_FUNCTION__, "At the momen the any object type must be a shared_ptr! Got ", std::to_string((int) type.getMaybe()) + " aka " + type::defaultconversion::string::Maybe2String.at(type.getMaybe()), type.getPath());
+            throw error::ValueNotValidException(__PRETTY_FUNCTION__, "At the moment the unknown any object type must be a shared_ptr! ", std::to_string((int) type.getMaybe()) + " aka " + type::defaultconversion::string::Maybe2String.at(type.getMaybe()), type.getPath());
         }
+
     }
 
     /* virtual implementations */
 
+    std::vector<std::string> AnyObject::getRequiredIncludes() const
+    {
+        std::vector<std::string> required_includes = {"<RobotAPI/libraries/aron/core/data/converter/variant/VariantConverter.h>"};
+        return required_includes;
+    }
+
+    CppBlockPtr AnyObject::getWriteBlock(const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const
+    {
+        auto block_if_data = std::make_shared<CppBlock>();
+        std::string escaped_accessor = this->EscapeAccessor(cppAccessor);
+        variantAccessor = Generator::ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
+
+        block_if_data->addLine(variantAccessor + " = armarx::aron::data::readAndWrite<armarx::aron::data::FromVariantConverter<WriterT>>(" + cppAccessor + "); // of " + cppAccessor);
+
+        return block_if_data;
+    }
+
+    CppBlockPtr AnyObject::getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const
+    {
+        auto block_if_data = std::make_shared<CppBlock>();
+        std::string escaped_accessor = this->EscapeAccessor(cppAccessor);
+
+        block_if_data->addLine(cppAccessor + " = armarx::aron::data::Dict::DynamicCastAndCheck(armarx::aron::data::readAndWrite<aron::data::ToVariantConverter<ReaderT>>(" + variantAccessor + ")); // of " + cppAccessor);
+
+        return block_if_data;
+    }
+
     CppBlockPtr AnyObject::getWriteTypeBlock(const std::string& typeAccessor, const std::string& accessor, const Path& p, std::string& variantAccessor) const
     {
         CppBlockPtr b = std::make_shared<CppBlock>();
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/AnyObject.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/AnyObject.h
similarity index 76%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/AnyObject.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/AnyObject.h
index 5d777de42..bfa7692ff 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/any/AnyObject.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/any/AnyObject.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/any/AnyObject.h>
 
 
@@ -38,6 +38,12 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~AnyObject() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
+
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
+
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/All.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/All.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Dict.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Dict.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Dict.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Dict.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Dict.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Dict.h
similarity index 82%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Dict.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Dict.h
index f822086cf..ae26828fd 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Dict.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Dict.h
@@ -24,7 +24,7 @@
 #pragma once
 
 #include <RobotAPI/libraries/aron/core/type/variant/container/Dict.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
 
 namespace armarx::aron::codegenerator::cpp::generator
 {
@@ -37,10 +37,10 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Dict() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/List.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/List.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/List.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/List.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/List.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/List.h
similarity index 82%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/List.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/List.h
index 26aa99b33..5c7302a68 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/List.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/List.h
@@ -24,7 +24,7 @@
 #pragma once
 
 #include <RobotAPI/libraries/aron/core/type/variant/container/List.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
 
 
 namespace armarx::aron::codegenerator::cpp::generator
@@ -38,10 +38,10 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~List() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.cpp
new file mode 100644
index 000000000..c7a8773cb
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.cpp
@@ -0,0 +1,204 @@
+/*
+ * This file is part of ArmarX.
+ *
+ * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
+ * Karlsruhe Institute of Technology (KIT), all rights reserved.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+// Header
+#include "Object.h"
+
+#include <SimoxUtility/meta/type_name.h>
+#include <SimoxUtility/algorithm/vector.hpp>
+
+
+namespace armarx::aron::codegenerator::cpp::generator
+{
+
+    namespace
+    {
+        std::pair<std::string, bool> checkForDtoTypeReplacements(const std::string& c)
+        {
+            static const std::map<std::string, std::string> DTO_REPLACEMENTS =
+            {
+                {"armarx::arondto::Duration", "armarx::core::time::Duration"},
+                {"armarx::arondto::DateTime", "armarx::core::time::DateTime"}
+            };
+
+            if (DTO_REPLACEMENTS.count(c) > 0)
+            {
+                auto s = DTO_REPLACEMENTS.at(c);
+                return {s, true};
+            }
+
+            // dont change the input
+            return {c, false};
+        }
+
+        std::vector<std::string> checkForAdditionalIncludes(const std::string& c)
+        {
+            static const std::map<std::string, std::vector<std::string>> DTO_REPLACEMENTS =
+            {
+                {"armarx::arondto::Duration", {"<ArmarXCore/core/time/Duration.h>", "<RobotAPI/libraries/aron/common/aron_conversions/time.h>", "<RobotAPI/libraries/aron/common/aron/time.aron.generated.h>"}},
+                {"armarx::arondto::DateTime", {"<ArmarXCore/core/time/DateTime.h>", "<RobotAPI/libraries/aron/common/aron_conversions/time.h>", "<RobotAPI/libraries/aron/common/aron/time.aron.generated.h>"}}
+            };
+
+            if (DTO_REPLACEMENTS.count(c) > 0)
+            {
+                return DTO_REPLACEMENTS.at(c);
+            }
+
+            // dont change the input
+            return {};
+        }
+    }
+
+    // constructors
+    Object::Object(const type::Object& e) :
+        detail::ContainerGenerator<type::Object, Object>(
+            e.getObjectNameWithTemplateInstantiations(),
+            e.getObjectNameWithTemplates(),
+            simox::meta::get_type_name<data::dto::Dict>(),
+            simox::meta::get_type_name<type::dto::AronObject>(), e),
+        isDtoReplacedObject(checkForDtoTypeReplacements(e.getObjectNameWithTemplateInstantiations()).second)
+    {
+        if (isDtoReplacedObject && getClassCppTypename() != getInstantiatedCppTypename())
+        {
+            throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Templates in dto replaced objects are not supported yet!", getInstantiatedCppTypename(), type.getPath());
+        }
+    }
+
+
+    std::vector<std::string> Object::getRequiredIncludes() const
+    {
+        std::vector<std::string> ret;
+
+        // check for includes of members
+        for (const auto& [key, child] : type.getMemberTypes())
+        {
+            (void) key;
+            auto child_s = FromAronType(*child);
+            ret = simox::alg::appended(ret, child_s->getRequiredIncludes());
+        }
+
+        // also check for additional includes from dto replacements
+        ret = simox::alg::appended(ret, checkForAdditionalIncludes(type.getObjectNameWithTemplates()));
+
+        return ret;
+    }
+
+    std::vector<CppFieldPtr> Object::getPublicVariableDeclarations(const std::string& name) const
+    {
+        auto r = checkForDtoTypeReplacements(this->getFullInstantiatedCppTypename());
+        auto field = std::make_shared<CppField>(r.first, name);
+        return {field};
+    }
+
+    CppBlockPtr Object::getResetSoftBlock(const std::string& cppAccessor) const
+    {
+        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
+        if (isDtoReplacedObject)
+        {
+            block_if_data->addLine(cppAccessor + " = {};");
+        }
+        else
+        {
+            block_if_data->addLine(cppAccessor + nextEl() + "resetSoft();");
+        }
+        return this->resolveMaybeResetSoftBlock(block_if_data, cppAccessor);
+    }
+
+    CppBlockPtr Object::getResetHardBlock(const std::string& cppAccessor) const
+    {
+        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
+        auto r = checkForDtoTypeReplacements(this->getFullInstantiatedCppTypename());
+        block_if_data->addLine(cppAccessor + " = " + r.first + "();");
+        return this->resolveMaybeResetSoftBlock(block_if_data, cppAccessor);
+    }
+
+    CppBlockPtr Object::getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const
+    {
+        CppBlockPtr b = std::make_shared<CppBlock>();
+        std::string escaped_accessor = EscapeAccessor(cppAccessor);
+        variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
+
+        std::vector<std::string> templatesQuoted;
+        for (const auto& t : type.getTemplateInstantiations())
+        {
+            templatesQuoted.push_back("\"" + t + "\"");
+        }
+
+        b->addLine("auto " + variantAccessor + " = " + type.getObjectNameWithTemplateInstantiations() + "::writeType(" + ARON_WRITER_ACCESSOR + ", " +
+                   "{" + simox::alg::join(templatesQuoted, ", ") + "}, " +
+                   conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
+                   "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
+        return b;
+    }
+
+    CppBlockPtr Object::getWriteBlock(const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const
+    {
+        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
+        std::string escaped_accessor = EscapeAccessor(cppAccessor);
+        std::string resolved_accessor = resolveMaybeAccessor(cppAccessor);
+        variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
+
+        // if is dto replacement
+        if (isDtoReplacedObject)
+        {
+            auto variantAccessorTmp = variantAccessor + "_tmp";
+            block_if_data->addLine("auto " + variantAccessorTmp + " = " + getClassCppTypename() + "();");
+            block_if_data->addLine("armarx::toAron("+variantAccessorTmp+", "+resolved_accessor+");");
+            block_if_data->addLine(variantAccessor + " = " + variantAccessorTmp + ".write(" + ARON_WRITER_ACCESSOR + ", "+
+                                   "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
+        }
+        else
+        {
+            block_if_data->addLine(variantAccessor + " = " + cppAccessor + nextEl() + "write(" + ARON_WRITER_ACCESSOR + ", "+
+                                       "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
+        }
+
+        return resolveMaybeWriteBlock(block_if_data, cppAccessor);
+    }
+
+    CppBlockPtr Object::getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const
+    {
+        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
+        if (const auto reset = resolveMaybeGenerator(cppAccessor); !reset.empty())
+        {
+            block_if_data->addLine(reset);
+        }
+
+        if (isDtoReplacedObject)
+        {
+            std::string escaped_accessor = EscapeAccessor(cppAccessor);
+            std::string resolved_accessor = resolveMaybeAccessor(cppAccessor);
+            std::string variantAccessorTmp = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor + "_tmp";
+            block_if_data->addLine("auto " + variantAccessorTmp + " = " + getClassCppTypename() + "();");
+            block_if_data->addLine(variantAccessorTmp + ".read(" + ARON_READER_ACCESSOR + ", " + variantAccessor + ");");
+            block_if_data->addLine("armarx::fromAron(" + variantAccessorTmp + ", " + resolved_accessor + "); // of " + cppAccessor);
+        }
+        else
+        {
+            block_if_data->addLine(cppAccessor + nextEl() + "read(" + ARON_READER_ACCESSOR + ", " + variantAccessor + "); // of " + cppAccessor);
+        }
+
+        return resolveMaybeReadBlock(block_if_data, cppAccessor, variantAccessor);
+    }
+}
+
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.h
similarity index 73%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.h
index cbdd8910f..28b94bfe1 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Object.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/container/Object.h>
 
 
@@ -38,10 +38,15 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Object() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+        std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
+
+    private:
+        bool isDtoReplacedObject = false;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Pair.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Pair.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Pair.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Pair.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Pair.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Pair.h
similarity index 82%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Pair.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Pair.h
index 5d91ba10b..f37087d03 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Pair.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Pair.h
@@ -24,7 +24,7 @@
 #pragma once
 
 #include <RobotAPI/libraries/aron/core/type/variant/container/Pair.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
 
 
 namespace armarx::aron::codegenerator::cpp::generator
@@ -38,10 +38,10 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Pair() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Tuple.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Tuple.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Tuple.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Tuple.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Tuple.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Tuple.h
similarity index 82%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Tuple.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Tuple.h
index e7ddafebf..52e565e89 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Tuple.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/container/Tuple.h
@@ -24,7 +24,7 @@
 #pragma once
 
 #include <RobotAPI/libraries/aron/core/type/variant/container/Tuple.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h>
 
 
 namespace armarx::aron::codegenerator::cpp::generator
@@ -38,10 +38,10 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Tuple() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
similarity index 94%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
index 792c10ec7..5260c3407 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
@@ -31,11 +31,11 @@
 namespace armarx::aron::codegenerator::cpp::generator::detail
 {
     template<typename typeT, typename DerivedT>
-    class DtoGenerator :
+    class AnyGenerator :
         public SpecializedGeneratorBase<typeT, DerivedT>
     {
     public:
         using SpecializedGeneratorBase<typeT, DerivedT>::SpecializedGeneratorBase;
-        virtual ~DtoGenerator() = default;
+        virtual ~AnyGenerator() = default;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
similarity index 94%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
index 8df5c01fc..ba487310e 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.h>
 
 #include <memory>
 #include <string>
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/All.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/All.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
similarity index 98%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
index 3c9fa87f1..c818db64a 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
@@ -49,7 +49,7 @@ namespace armarx::aron::codegenerator::cpp::generator
     CppBlockPtr IntEnum::getResetHardBlock(const std::string& accessor) const
     {
         CppBlockPtr b = std::make_shared<CppBlock>();
-        if (type.getMaybe() != type::Maybe::eNone)
+        if (type.getMaybe() != type::Maybe::NONE)
         {
             b->addLine(accessor + " = {};");
         }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/IntEnum.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/IntEnum.h
similarity index 85%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/IntEnum.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/IntEnum.h
index f472129d9..cd5b36bce 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/enum/IntEnum.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/enum/IntEnum.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/enum/IntEnum.h>
 
 #include <map>
@@ -44,10 +44,10 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~IntEnum() = default;
 
         // virtual implementations
-        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/All.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/All.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
similarity index 91%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
index 3543f59e4..aae1c701a 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
@@ -29,10 +29,10 @@
 
 namespace armarx::aron::codegenerator::cpp::generator
 {
-    const std::map<type::image::PixelType, std::pair<std::string, int>> Image::PixelType2Cpp =
+    const std::map<type::image::PixelType, std::tuple<std::string, int, std::string>> PixelType2Cpp =
     {
-        { type::image::PixelType::rgb24,   {"CV_8UC3", 3}},
-        { type::image::PixelType::depth32, {"CV_32FC1", 4}},
+        { type::image::PixelType::RGB24,   {"CV_8UC3", 3, "::armarx::aron::type::image::PixelType::RGB24"}},
+        { type::image::PixelType::DEPTH32, {"CV_32FC1", 4, "::armarx::aron::type::image::PixelType::DEPTH32"}},
     };
 
 
@@ -55,7 +55,7 @@ namespace armarx::aron::codegenerator::cpp::generator
     CppBlockPtr Image::getResetHardBlock(const std::string& cppAccessor) const
     {
         CppBlockPtr block_if_data = detail::NDArrayGenerator<type::Image, Image>::getResetHardBlock(cppAccessor);
-        block_if_data->addLine(cppAccessor + ".create(0, 0, " + PixelType2Cpp.at(type.getPixelType()).first + ");");
+        block_if_data->addLine(cppAccessor + ".create(0, 0, " + std::get<0>(PixelType2Cpp.at(type.getPixelType())) + ");");
         return this->resolveMaybeResetSoftBlock(block_if_data, cppAccessor);
     }
 
@@ -63,7 +63,7 @@ namespace armarx::aron::codegenerator::cpp::generator
     CppBlockPtr Image::getResetSoftBlock(const std::string& cppAccessor) const
     {
         CppBlockPtr block_if_data = std::make_shared<CppBlock>();
-        block_if_data->addLine(cppAccessor + ".create(0, 0, " + PixelType2Cpp.at(type.getPixelType()).first + ");");
+        block_if_data->addLine(cppAccessor + ".create(0, 0, " + std::get<0>(PixelType2Cpp.at(type.getPixelType())) + ");");
         return this->resolveMaybeResetSoftBlock(block_if_data, cppAccessor);
     }
 
@@ -74,7 +74,7 @@ namespace armarx::aron::codegenerator::cpp::generator
         std::string escaped_accessor = EscapeAccessor(cppAccessor);
         variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
 
-        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeImage(" + conversion::PixelType2CppString.at(type.getPixelType()) + ", " +
+        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeImage(" + std::get<2>(PixelType2Cpp.at(type.getPixelType())) + ", " +
                    conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
                    "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
         return b;
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Image.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Image.h
similarity index 75%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Image.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Image.h
index 8cee1dc26..72f6947c9 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Image.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Image.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/ndarray/Image.h>
 
 #include <map>
@@ -42,17 +42,13 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Image() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
-        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const override;
-
-    public:
-        /// Maps ARON pixel types to OpenCV image type constants.
-        static const std::map<type::image::PixelType, std::pair<std::string, int>> PixelType2Cpp;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
+        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
 
     };
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
similarity index 79%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
index d32f00c4b..2fbfad0e8 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
@@ -29,21 +29,20 @@
 
 namespace armarx::aron::codegenerator::cpp::generator
 {
-
-    const std::map<type::matrix::ElementType, std::pair<std::string, int>> Matrix::ElementType2Cpp =
+    const std::map<type::matrix::ElementType, std::tuple<std::string, int, std::string>> ElementType2Cpp =
     {
-        {type::matrix::int16, {"short", 2}},
-        {type::matrix::int32, {"int", 4}},
-        {type::matrix::int64, {"long", 8}},
-        {type::matrix::float32, {"float", 4}},
-        {type::matrix::float64, {"double", 8}}
+        {type::matrix::INT16, {"short", 2, "::armarx::aron::type::matrix::INT16"}},
+        {type::matrix::INT32, {"int", 4, "::armarx::aron::type::matrix::INT32"}},
+        {type::matrix::INT64, {"long", 8, "::armarx::aron::type::matrix::INT64"}},
+        {type::matrix::FLOAT32, {"float", 4, "::armarx::aron::type::matrix::FLOAT32"}},
+        {type::matrix::FLOAT64, {"double", 8, "::armarx::aron::type::matrix::FLOAT64"}}
     };
 
     // constructors
     Matrix::Matrix(const type::Matrix& n) :
         detail::NDArrayGenerator<type::Matrix, Matrix>(
-            "Eigen::Matrix<" + ElementType2Cpp.at(n.getElementType()).first + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
-            "Eigen::Matrix<" + ElementType2Cpp.at(n.getElementType()).first + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
+            "Eigen::Matrix<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
+            "Eigen::Matrix<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ", " + (n.getRows() == -1 ? "Eigen::Dynamic" : std::to_string(n.getRows())) + ", " + (n.getCols() == -1 ? "Eigen::Dynamic" : std::to_string(n.getCols())) + ">",
             simox::meta::get_type_name<data::dto::NDArray>(),
             simox::meta::get_type_name<type::dto::Matrix>(), n)
     {
@@ -68,7 +67,7 @@ namespace armarx::aron::codegenerator::cpp::generator
         variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
         b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeMatrix((int) " + std::to_string(type.getRows()) + ", " +
                 "(int) " + std::to_string(type.getCols()) + ", " +
-                conversion::MatrixElementType2CppString.at(type.getElementType()) + ", " +
+                std::get<2>(ElementType2Cpp.at(type.getElementType())) + ", " +
                 conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
                 "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
 
@@ -83,8 +82,8 @@ namespace armarx::aron::codegenerator::cpp::generator
 
         block_if_data->addLine(variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeNDArray({(int) " + cppAccessor + nextEl() + "rows(), "+
                 "(int) " + cppAccessor + nextEl() + "cols(), " +
-                std::to_string(ElementType2Cpp.at(type.getElementType()).second) + "}, "+
-                "\"" + ElementType2Cpp.at(type.getElementType()).first + "\", "+
+                std::to_string(std::get<1>(ElementType2Cpp.at(type.getElementType()))) + "}, "+
+                "\"" + std::get<0>(ElementType2Cpp.at(type.getElementType())) + "\", "+
                 "reinterpret_cast<const unsigned char*>(" + cppAccessor + nextEl() + "data()), " +
                 "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {" + simox::alg::join(p.getPath(), ", ") + "})); // of " + cppAccessor);
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
similarity index 77%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
index 881010796..9f56f2b98 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/ndarray/Matrix.h>
 
 #include <map>
@@ -41,14 +41,11 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Matrix() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
-        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const override;
-
-    public:
-        static const std::map<type::matrix::ElementType, std::pair<std::string, int>> ElementType2Cpp;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
+        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
similarity index 85%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
index 428ca861d..3b1d3d2cc 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/ndarray/NDArray.h>
 
 #include <string>
@@ -41,9 +41,9 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~NDArray() = default;
 
         // virtual implementations
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
similarity index 77%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
index fa5cf35b9..78e42fe08 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
@@ -29,24 +29,23 @@
 
 namespace armarx::aron::codegenerator::cpp::generator
 {
-
-    const std::map<type::pointcloud::VoxelType, std::pair<std::string, int>> PointCloud::VoxelType2Cpp =
+    const std::map<type::pointcloud::VoxelType, std::tuple<std::string, int, std::string>> VoxelType2Cpp =
     {
         // see http://docs.ros.org/en/groovy/api/pcl/html/point__types_8hpp_source.html
-        {type::pointcloud::VoxelType::PointXYZ, {"pcl::PointXYZ", 16}},
-        {type::pointcloud::VoxelType::PointXYZI, {"pcl::PointXYZI", 32}},
-        {type::pointcloud::VoxelType::PointXYZL, {"pcl::PointXYZL", 32}},
-        {type::pointcloud::VoxelType::PointXYZRGB, {"pcl::PointXYZRGB", 32}},
-        {type::pointcloud::VoxelType::PointXYZRGBL, {"pcl::PointXYZRGBL", 32}},
-        {type::pointcloud::VoxelType::PointXYZRGBA, {"pcl::PointXYZRGBA", 32}},
-        {type::pointcloud::VoxelType::PointXYZHSV, {"pcl::PointXYZHSV", 32}}
+        {type::pointcloud::VoxelType::POINT_XYZ, {"pcl::PointXYZ", 16, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZ"}},
+        {type::pointcloud::VoxelType::POINT_XYZI, {"pcl::PointXYZI", 32, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZI"}},
+        {type::pointcloud::VoxelType::POINT_XYZL, {"pcl::PointXYZL", 32, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZL"}},
+        {type::pointcloud::VoxelType::POINT_XYZRGB, {"pcl::PointXYZRGB", 32, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZRGB"}},
+        {type::pointcloud::VoxelType::POINT_XYZRGBL, {"pcl::PointXYZRGBL", 32, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZRGBL"}},
+        {type::pointcloud::VoxelType::POINT_XYZRGBA, {"pcl::PointXYZRGBA", 32, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZRGBA"}},
+        {type::pointcloud::VoxelType::POINT_XYZHSV, {"pcl::PointXYZHSV", 32, "::armarx::aron::type::pointcloud::VoxelType::POINT_XYZHSV"}}
     };
 
     // constructors
     PointCloud::PointCloud(const type::PointCloud& n) :
         detail::NDArrayGenerator<type::PointCloud, PointCloud>(
-            "pcl::PointCloud<" + VoxelType2Cpp.at(n.getVoxelType()).first + ">",
-            "pcl::PointCloud<" + VoxelType2Cpp.at(n.getVoxelType()).first + ">",
+            "pcl::PointCloud<" + std::get<0>(VoxelType2Cpp.at(n.getVoxelType())) + ">",
+            "pcl::PointCloud<" + std::get<0>(VoxelType2Cpp.at(n.getVoxelType())) + ">",
             simox::meta::get_type_name<data::dto::NDArray>(),
             simox::meta::get_type_name<type::dto::PointCloud>(),
             n)
@@ -71,7 +70,7 @@ namespace armarx::aron::codegenerator::cpp::generator
         std::string escaped_accessor = EscapeAccessor(cppAccessor);
         variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
 
-        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writePointCloud(" + conversion::VoxelType2CppString.at(type.getVoxelType()) + ", " +
+        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writePointCloud(" + std::get<2>(VoxelType2Cpp.at(type.getVoxelType())) + ", " +
                    conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
                    "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
         return b;
@@ -83,8 +82,8 @@ namespace armarx::aron::codegenerator::cpp::generator
         std::string escaped_accessor = EscapeAccessor(cppAccessor);
         variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
 
-        block_if_data->addLine(variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeNDArray({" + cppAccessor + nextEl() + "width, " + cppAccessor + nextEl() + "height, " + std::to_string(VoxelType2Cpp.at(type.getVoxelType()).second) + "}, "+
-                               "\"" + VoxelType2Cpp.at(type.getVoxelType()).first + "\", "+
+        block_if_data->addLine(variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeNDArray({" + cppAccessor + nextEl() + "width, " + cppAccessor + nextEl() + "height, " + std::to_string(std::get<1>(VoxelType2Cpp.at(type.getVoxelType()))) + "}, "+
+                               "\"" + std::get<0>(VoxelType2Cpp.at(type.getVoxelType())) + "\", "+
                                "reinterpret_cast<const unsigned char*>(" + cppAccessor + nextEl() + "points.data()), "+
                                "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {" + simox::alg::join(p.getPath(), ", ") + "})); // of " + cppAccessor);
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
similarity index 77%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
index 34936fbd6..9edc5a318 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/ndarray/PointCloud.h>
 
 #include <map>
@@ -40,14 +40,11 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~PointCloud() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
-        CppBlockPtr getEqualsBlock(const std::string& cppAccessor, const std::string&) const override;
-
-    public:
-        static const std::map<type::pointcloud::VoxelType, std::pair<std::string, int>> VoxelType2Cpp;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
+        CppBlockPtr getEqualsBlock(const std::string& cppAccessor, const std::string&) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
similarity index 84%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
index 4a89ce3b5..32dae76ef 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
@@ -29,18 +29,17 @@
 
 namespace armarx::aron::codegenerator::cpp::generator
 {
-
-    const std::map<type::quaternion::ElementType, std::pair<std::string, int>> Quaternion::ElementType2Cpp =
+    const std::map<type::quaternion::ElementType, std::tuple<std::string, int, std::string>> ElementType2Cpp =
     {
-        {type::quaternion::ElementType::float32, {"float", 4}},
-        {type::quaternion::ElementType::float64, {"double", 8}}
+        {type::quaternion::ElementType::FLOAT32, {"float", 4, "::armarx::aron::type::quaternion::ElementType::FLOAT32"}},
+        {type::quaternion::ElementType::FLOAT64, {"double", 8, "::armarx::aron::type::quaternion::ElementType::FLOAT64"}}
     };
 
     // constructors
     Quaternion::Quaternion(const type::Quaternion& n) :
         detail::NDArrayGenerator<type::Quaternion, Quaternion>(
-            "Eigen::Quaternion<" + ElementType2Cpp.at(n.getElementType()).first + ">",
-            "Eigen::Quaternion<" + ElementType2Cpp.at(n.getElementType()).first + ">",
+            "Eigen::Quaternion<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ">",
+            "Eigen::Quaternion<" + std::get<0>(ElementType2Cpp.at(n.getElementType())) + ">",
             simox::meta::get_type_name<data::dto::NDArray>(),
             simox::meta::get_type_name<type::dto::Quaternion>(),
             n)
@@ -65,7 +64,7 @@ namespace armarx::aron::codegenerator::cpp::generator
         std::string escaped_accessor = EscapeAccessor(cppAccessor);
         variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
 
-        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeQuaternion(" + conversion::QuaternionElementType2Cpp.at(type.getElementType()) + ", " +
+        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeQuaternion(" + std::get<2>(ElementType2Cpp.at(type.getElementType())) + ", " +
                    conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
                    "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
         return b;
@@ -77,8 +76,8 @@ namespace armarx::aron::codegenerator::cpp::generator
         std::string escaped_accessor = EscapeAccessor(cppAccessor);
         variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
 
-        block_if_data->addLine(variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeNDArray({1, 4, " + std::to_string(ElementType2Cpp.at(type.getElementType()).second) + "}, "+
-                               "\"" + ElementType2Cpp.at(type.getElementType()).first + "\", "+
+        block_if_data->addLine(variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeNDArray({1, 4, " + std::to_string(std::get<1>(ElementType2Cpp.at(type.getElementType()))) + "}, "+
+                               "\"" + std::get<0>(ElementType2Cpp.at(type.getElementType())) + "\", "+
                                "reinterpret_cast<const unsigned char*>(" + cppAccessor + nextEl() + "coeffs().data()), "+
                                "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {" + simox::alg::join(p.getPath(), ", ") + "})); // of " + cppAccessor);
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
similarity index 77%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
index 063eb5308..f74468159 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
@@ -24,7 +24,7 @@
 #pragma once
 
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/ndarray/Quaternion.h>
 
 #include <map>
@@ -41,14 +41,11 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Quaternion() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
-        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const override;
-
-    public:
-        static const std::map<type::quaternion::ElementType, std::pair<std::string, int>> ElementType2Cpp;
+        std::vector<std::string> getRequiredIncludes() const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
+        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/All.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/All.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Bool.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Bool.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Bool.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Bool.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Bool.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Bool.h
similarity index 97%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Bool.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Bool.h
index 082859e00..85172f3de 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Bool.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Bool.h
@@ -39,6 +39,6 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Bool() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Double.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Double.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Double.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Double.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Double.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Double.h
similarity index 90%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Double.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Double.h
index dc65d42d9..e109cc626 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Double.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Double.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/primitive/Double.h>
 
 
@@ -38,6 +38,6 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Double() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Float.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Float.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Float.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Float.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Float.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Float.h
similarity index 90%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Float.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Float.h
index 3e4381262..a2f52f4fb 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Float.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Float.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/primitive/Float.h>
 
 
@@ -38,6 +38,6 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Float() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Int.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Int.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Int.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Int.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Int.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Int.h
similarity index 90%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Int.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Int.h
index a57193e00..eb18e4454 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Int.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Int.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/primitive/Int.h>
 
 
@@ -38,6 +38,6 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Int() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Long.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Long.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Long.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Long.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Long.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Long.h
similarity index 90%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Long.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Long.h
index c16b8c439..8e74bf85b 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/Long.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/Long.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/primitive/Long.h>
 
 
@@ -38,6 +38,6 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~Long() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/String.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/String.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/String.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/String.cpp
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/String.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/String.h
similarity index 90%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/String.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/String.h
index 254cd4e84..7db96c871 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/primitive/String.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/primitive/String.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/primitive/String.h>
 
 
@@ -38,6 +38,6 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~String() = default;
 
         /* virtual implementations */
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/All.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/All.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/All.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/All.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
similarity index 99%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
index 2b7b64550..768fa0dd6 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
@@ -38,7 +38,7 @@ namespace armarx::aron::codegenerator::cpp::generator
             simox::meta::get_type_name<type::dto::IntEnum>(),
             n)
     {
-        if (type.getMaybe() != type::Maybe::eNone)
+        if (type.getMaybe() != type::Maybe::NONE)
         {
             throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Somehow the maybe flag of a top level int enum declaration is set. This is not valid!", std::to_string((int) type.getMaybe()), type.getPath());
         }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
similarity index 88%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
index 1d105b79c..b03310d42 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/enum/IntEnum.h>
 
 #include <map>
@@ -41,13 +41,13 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~IntEnumClass() = default;
 
         // virtual implementations
-        std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const override;
-        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
-        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const override;
+        std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const final;
+        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const final;
+        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
 
         // TODO: Move some of those methods to upper class for enums (if we want to support multiple enums)
         CppCtorPtr toCopyCtor(const std::string&) const;
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
similarity index 98%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
index 4a6482d81..f8e044b8d 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
@@ -38,7 +38,7 @@ namespace armarx::aron::codegenerator::cpp::generator
             simox::meta::get_type_name<data::dto::Dict>(),
             simox::meta::get_type_name<type::dto::AronObject>(), e)
     {
-        if (type.getMaybe() != type::Maybe::eNone)
+        if (type.getMaybe() != type::Maybe::NONE)
         {
             throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Somehow the maybe flag of a top level object declaration is set. This is not valid!", std::to_string((int) type.getMaybe()) + " aka " + type::defaultconversion::string::Maybe2String.at(type.getMaybe()), type.getPath());
         }
@@ -119,7 +119,7 @@ namespace armarx::aron::codegenerator::cpp::generator
             b->addLine("auto " + OBJECT_EXTENDS_ACCESSOR + " = " + extends_s->getFullInstantiatedCppTypename() + "::writeType(" +
                        ARON_WRITER_ACCESSOR + ", " +
                        "{" + simox::alg::join(type.getExtends()->getTemplateInstantiations(), ", ") + "}, " +
-                       "::armarx::aron::type::Maybe::eNone);");
+                       "::armarx::aron::type::Maybe::NONE);");
         }
         else
         {
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
similarity index 82%
rename from source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
index 7046cddfa..dd8e7d3d9 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h>
 #include <RobotAPI/libraries/aron/core/type/variant/container/Object.h>
 
 
@@ -38,13 +38,13 @@ namespace armarx::aron::codegenerator::cpp::generator
         virtual ~ObjectClass() = default;
 
         // virtual implementations
-        std::vector<std::string> getRequiredIncludes() const override;
-        std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const override;
-        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string&) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string&) const override;
-        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const override;
+        std::vector<std::string> getRequiredIncludes() const final;
+        std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const final;
+        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
+        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const final;
+        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string&) const final;
+        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string&) const final;
+        CppBlockPtr getEqualsBlock(const std::string&, const std::string&) const final;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/helper/WriterInfo.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/codegenerator/helper/WriterInfo.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h
diff --git a/source/RobotAPI/libraries/aron/codegeneration/test/CMakeLists.txt b/source/RobotAPI/libraries/aron/codegeneration/test/CMakeLists.txt
new file mode 100644
index 000000000..e57da47b6
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/CMakeLists.txt
@@ -0,0 +1,147 @@
+find_package(Simox QUIET)
+armarx_build_if(Simox_FOUND "Simox not available")
+
+find_package(Eigen3 QUIET)
+armarx_build_if(Eigen3_FOUND "Eigen3 not available")
+
+find_package(IVT COMPONENTS ivt ivtopencv QUIET)
+armarx_build_if(IVT_FOUND "IVT not available")
+
+find_package(OpenCV QUIET)
+armarx_build_if(OpenCV_FOUND "OpenCV not available")
+
+find_package(PCL QUIET)
+armarx_build_if(PCL_FOUND "PCL not available")
+
+######################
+# ARON OPERATOR TEST #
+######################
+armarx_add_test(
+    TEST_NAME
+        aronOperatorTest
+    TEST_FILE
+        aronOperatorTest.cpp
+    LIBS
+        SimoxUtility  # Simox::SimoxUtility
+        ArmarXCore
+        aron
+        aroncommon
+    INCLUDE_DIRECTORIES
+        ${Simox_INCLUDE_DIR}
+)
+
+######################
+# ARON CODE GEN TEST #
+######################
+armarx_add_test(
+    TEST_NAME
+        aronCodeGenerationTest
+    TEST_FILE
+        aronCodeGenerationTest.cpp
+    LIBS
+        SimoxUtility  # Simox::SimoxUtility
+        ArmarXCore
+        RobotAPI::aron
+    ARON_FILES
+        aron/AnyTest.xml
+        aron/TemplateTest.xml
+        aron/DictTest.xml
+        aron/MatrixTest.xml
+        aron/QuaternionTest.xml
+        aron/EnumTest.xml
+        aron/HumanPoseTest.xml
+        aron/ImageTest.xml
+        aron/ListTest.xml
+        aron/NaturalIKTest.xml
+        aron/ObjectTest.xml
+        aron/OrientationTest.xml
+        aron/PointCloudTest.xml
+        aron/PoseTest.xml
+        aron/PositionTest.xml
+        aron/PrimitiveTest.xml
+        aron/OptionalTest.xml
+        aron/DtoTest.xml
+    INCLUDE_DIRECTORIES
+        ${Simox_INCLUDE_DIR}
+        ${Eigen3_INCLUDE_DIR}
+        ${IVT_INCLUDE_DIRS}
+        ${OpenCV_INCLUDE_DIRS}
+        ${PCL_INCLUDE_DIRS}
+)
+
+######################
+# ARON NAVIGATE TEST #
+######################
+armarx_add_test(
+    TEST_NAME
+        aronNavigateTest
+    TEST_FILE
+        aronNavigateTest.cpp
+    LIBS
+        SimoxUtility  # Simox::SimoxUtility
+        ArmarXCore
+        RobotAPI::aron
+    ARON_FILES
+        aron/NaturalIKTest.xml
+    INCLUDE_DIRECTORIES
+        ${Simox_INCLUDE_DIR}
+)
+
+######################
+# ARON EXTENDS TEST  #
+######################
+armarx_add_test(
+    TEST_NAME
+        aronExtendsTest
+    TEST_FILE
+        aronExtendsTest.cpp
+    LIBS
+        SimoxUtility  # Simox::SimoxUtility
+        ArmarXCore
+        RobotAPI::aron
+    ARON_FILES
+        aron/BaseClassTest.xml
+        aron/DerivedClassTest.xml
+    INCLUDE_DIRECTORIES
+        ${Simox_INCLUDE_DIR}
+)
+
+########################
+# ARON RANDOMIZED TEST #
+########################
+#armarx_add_test(
+#    TEST_NAME
+#        aronRandomizedTest
+#    TEST_FILE
+#        aronRandomizedTest.cpp
+#    LIBS
+#        SimoxUtility  # Simox::SimoxUtility
+#        ArmarXCore
+#        RobotAPI::aron
+#        ivt
+#        ivtopencv
+#        ${PCL_COMMON_LIBRARIES}
+#        aronjsonconverter
+#    ARON_FILES
+#        aron/DictTest.xml
+#        aron/MatrixTest.xml
+#        aron/QuaternionTest.xml
+#        aron/EnumTest.xml
+#        aron/HumanPoseTest.xml
+#        aron/ListTest.xml
+#        aron/NaturalIKTest.xml
+#        aron/ObjectTest.xml
+#        aron/OrientationTest.xml
+#        aron/PointCloudTest.xml
+#        aron/PoseTest.xml
+#        aron/PositionTest.xml
+#        aron/PrimitiveTest.xml
+#        aron/OptionalTest.xml
+#        aron/ImageTest.xml
+#    INCLUDE_DIRECTORIES
+#        ${Simox_INCLUDE_DIR}
+#        ${Eigen3_INCLUDE_DIR}
+#        ${IVT_INCLUDE_DIRS}
+#        ${OpenCV_INCLUDE_DIRS}
+#        ${PCL_INCLUDE_DIRS}
+#)
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/AnyTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/AnyTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/AnyTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/AnyTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/BaseClassTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/BaseClassTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/BaseClassTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/BaseClassTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/DerivedClassTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/DerivedClassTest.xml
similarity index 82%
rename from source/RobotAPI/libraries/aron/core/test/aron/DerivedClassTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/DerivedClassTest.xml
index fba1b8461..53e8107bc 100644
--- a/source/RobotAPI/libraries/aron/core/test/aron/DerivedClassTest.xml
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/aron/DerivedClassTest.xml
@@ -2,7 +2,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <AronTypeDefinition>
     <AronIncludes>
-        <Include include="<RobotAPI/libraries/aron/core/test/aron/BaseClassTest.xml>" autoinclude="true" />
+        <Include include="<RobotAPI/libraries/aron/codegeneration/test/aron/BaseClassTest.xml>" autoinclude="true" />
     </AronIncludes>
     <GenerateTypes>
         <Object name='armarx::DerivedClassTest' extends="armarx::BaseClassTest" doc-brief="This is a brief doc" doc-author="Itse me, Mario!">
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/DictTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/DictTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/DictTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/DictTest.xml
diff --git a/source/RobotAPI/libraries/aron/codegeneration/test/aron/DtoTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/DtoTest.xml
new file mode 100644
index 000000000..b08df68f4
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/aron/DtoTest.xml
@@ -0,0 +1,16 @@
+<!--Some fancy comment -->
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <GenerateTypes>
+        <Object name='armarx::DtoTest'>
+            <objectchild key='the_time'>
+                <datetime />
+            </ObjectChild>
+            <objectchild key='the_duration'>
+                <duration />
+            </ObjectChild>
+        </Object>
+    </GenerateTypes>
+</AronTypeDefinition>
+
+
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/EnumTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/EnumTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/EnumTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/EnumTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/HumanPoseTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/HumanPoseTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/HumanPoseTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/HumanPoseTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/IKResult.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/IKResult.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/IKResult.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/IKResult.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/ImageTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/ImageTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/ImageTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/ImageTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/ListTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/ListTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/ListTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/ListTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/MatrixTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/MatrixTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/MatrixTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/MatrixTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/NaturalIKTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/NaturalIKTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/NaturalIKTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/NaturalIKTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/ObjectTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/ObjectTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/ObjectTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/ObjectTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/OptionalTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/OptionalTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/OptionalTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/OrientationTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/OrientationTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/OrientationTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/OrientationTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/PointCloudTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/PointCloudTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/PointCloudTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/PointCloudTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/PoseTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/PoseTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/PoseTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/PoseTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/PositionTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/PositionTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/PositionTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/PositionTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/PrimitiveTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/PrimitiveTest.xml
similarity index 89%
rename from source/RobotAPI/libraries/aron/core/test/aron/PrimitiveTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/PrimitiveTest.xml
index ea38c815f..177030669 100644
--- a/source/RobotAPI/libraries/aron/core/test/aron/PrimitiveTest.xml
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/aron/PrimitiveTest.xml
@@ -21,9 +21,6 @@
             <objectchild key='the_bool'>
                 <bool />
             </ObjectChild>
-            <objectchild key='the_time'>
-                <time />
-            </ObjectChild>
         </Object>
     </GenerateTypes>
 </AronTypeDefinition>
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/QuaternionTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/QuaternionTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/QuaternionTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/QuaternionTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aron/TemplateTest.xml b/source/RobotAPI/libraries/aron/codegeneration/test/aron/TemplateTest.xml
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aron/TemplateTest.xml
rename to source/RobotAPI/libraries/aron/codegeneration/test/aron/TemplateTest.xml
diff --git a/source/RobotAPI/libraries/aron/core/test/aronCodeGenerationTest.cpp b/source/RobotAPI/libraries/aron/codegeneration/test/aronCodeGenerationTest.cpp
similarity index 88%
rename from source/RobotAPI/libraries/aron/core/test/aronCodeGenerationTest.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/test/aronCodeGenerationTest.cpp
index 392739b2d..e9c8ad44b 100644
--- a/source/RobotAPI/libraries/aron/core/test/aronCodeGenerationTest.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/aronCodeGenerationTest.cpp
@@ -38,25 +38,23 @@
 #include <ArmarXCore/libraries/cppgen/CppClass.h>
 #include <RobotAPI/libraries/aron/core/Exception.h>
 
-// Aron
-#include <RobotAPI/libraries/aron/core/test/Randomizer.h>
-
 // Generated File
-#include <RobotAPI/libraries/aron/core/test/aron/TemplateTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/AnyTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/ListTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/DictTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PrimitiveTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/ObjectTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/ImageTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/MatrixTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/QuaternionTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PointCloudTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PositionTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/OrientationTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/PoseTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/EnumTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/OptionalTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/TemplateTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/AnyTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/ListTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/DictTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/PrimitiveTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/ObjectTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/ImageTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/MatrixTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/QuaternionTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/PointCloudTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/PositionTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/OrientationTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/PoseTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/EnumTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/OptionalTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/DtoTest.aron.generated.h>
 
 using namespace armarx;
 using namespace aron;
@@ -266,7 +264,6 @@ BOOST_AUTO_TEST_CASE(AronCodeGenerationPrimitiveTest)
     BOOST_CHECK_EQUAL(p.the_int, 0);
     BOOST_CHECK_EQUAL(p.the_long, 0);
     BOOST_CHECK_EQUAL(p.the_string, "");
-    BOOST_CHECK(p.the_time == IceUtil::Time());
 }
 
 
@@ -288,7 +285,7 @@ BOOST_AUTO_TEST_CASE(AronCodeGenerationOptionalTest)
     BOOST_CHECK_EQUAL(typeid(p.some_string), typeid(std::optional<std::string>));
 
     auto aronType = p.ToAronType();
-    BOOST_CHECK_EQUAL(aronType->getMemberType("some_float")->getMaybe(), aron::type::Maybe::eOptional);
+    BOOST_CHECK_EQUAL(aronType->getMemberType("some_float")->getMaybe(), aron::type::Maybe::OPTIONAL);
 
     BOOST_CHECK(not p.some_float.has_value());
     auto aron = p.toAron();
diff --git a/source/RobotAPI/libraries/aron/core/test/aronExtendsTest.cpp b/source/RobotAPI/libraries/aron/codegeneration/test/aronExtendsTest.cpp
similarity index 93%
rename from source/RobotAPI/libraries/aron/core/test/aronExtendsTest.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/test/aronExtendsTest.cpp
index 81a11bda2..df6735345 100644
--- a/source/RobotAPI/libraries/aron/core/test/aronExtendsTest.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/aronExtendsTest.cpp
@@ -42,8 +42,8 @@
 #include <RobotAPI/libraries/aron/core/data/variant/All.h>
 
 // Generated File
-#include <RobotAPI/libraries/aron/core/test/aron/BaseClassTest.aron.generated.h>
-#include <RobotAPI/libraries/aron/core/test/aron/DerivedClassTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/BaseClassTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/DerivedClassTest.aron.generated.h>
 
 using namespace armarx;
 using namespace aron;
diff --git a/source/RobotAPI/libraries/aron/core/test/aronNavigateTest.cpp b/source/RobotAPI/libraries/aron/codegeneration/test/aronNavigateTest.cpp
similarity index 95%
rename from source/RobotAPI/libraries/aron/core/test/aronNavigateTest.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/test/aronNavigateTest.cpp
index e7d0393c6..a21694073 100644
--- a/source/RobotAPI/libraries/aron/core/test/aronNavigateTest.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/test/aronNavigateTest.cpp
@@ -38,11 +38,8 @@
 #include <ArmarXCore/libraries/cppgen/CppClass.h>
 #include <RobotAPI/libraries/aron/core/Exception.h>
 
-// Aron
-#include <RobotAPI/libraries/aron/core/test/Randomizer.h>
-
 // Generated File
-#include <RobotAPI/libraries/aron/core/test/aron/NaturalIKTest.aron.generated.h>
+#include <RobotAPI/libraries/aron/codegeneration/test/aron/NaturalIKTest.aron.generated.h>
 
 using namespace armarx;
 using namespace aron;
diff --git a/source/RobotAPI/libraries/aron/core/test/aronOperatorTest.cpp b/source/RobotAPI/libraries/aron/codegeneration/test/aronOperatorTest.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aronOperatorTest.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/test/aronOperatorTest.cpp
diff --git a/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp b/source/RobotAPI/libraries/aron/codegeneration/test/aronRandomizedTest.cpp
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/test/aronRandomizedTest.cpp
diff --git a/source/RobotAPI/libraries/aron/core/typereader/Reader.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/Reader.h
similarity index 89%
rename from source/RobotAPI/libraries/aron/core/typereader/Reader.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/Reader.h
index c5e7b7234..31ab1c618 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/Reader.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/Reader.h
@@ -29,10 +29,10 @@
 
 // ArmarX
 #include <RobotAPI/libraries/aron/core/type/variant/container/Object.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h>
-#include <RobotAPI/libraries/aron/core/codegenerator/helper/WriterInfo.h>
-#include <RobotAPI/libraries/aron/core/typereader/helper/GenerateTypeInfo.h>
-#include <RobotAPI/libraries/aron/core/typereader/helper/GenerateIntEnumInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateTypeInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateIntEnumInfo.h>
 
 namespace armarx::aron::typereader
 {
diff --git a/source/RobotAPI/libraries/aron/core/typereader/helper/GenerateInfo.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateInfo.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/typereader/helper/GenerateInfo.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateInfo.h
diff --git a/source/RobotAPI/libraries/aron/core/typereader/helper/GenerateIntEnumInfo.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateIntEnumInfo.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/typereader/helper/GenerateIntEnumInfo.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateIntEnumInfo.h
diff --git a/source/RobotAPI/libraries/aron/core/typereader/helper/GenerateTypeInfo.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateTypeInfo.h
similarity index 100%
rename from source/RobotAPI/libraries/aron/core/typereader/helper/GenerateTypeInfo.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateTypeInfo.h
diff --git a/source/RobotAPI/libraries/aron/core/typereader/xml/Data.cpp b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.cpp
similarity index 98%
rename from source/RobotAPI/libraries/aron/core/typereader/xml/Data.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.cpp
index 1c84a04f5..3a7ba2a06 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/xml/Data.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.cpp
@@ -61,7 +61,7 @@ namespace armarx::aron::typereader::xml
         return node.attribute_value(att.c_str());
     }
 
-    std::string util::GetAttributeWithDefault(const armarx::RapidXmlReaderNode& node, const std::string& att, const std::string def)
+    std::string util::GetAttributeWithDefault(const armarx::RapidXmlReaderNode& node, const std::string& att, const std::string& def)
     {
         if (!(HasAttribute(node, att)))
         {
diff --git a/source/RobotAPI/libraries/aron/core/typereader/xml/Data.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.h
similarity index 92%
rename from source/RobotAPI/libraries/aron/core/typereader/xml/Data.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.h
index 7675e7151..bc1a43705 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/xml/Data.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.h
@@ -99,22 +99,22 @@ namespace armarx::aron::typereader::xml
         const std::string DOUBLE_TAG = "double";
         const std::string STRING_TAG = "string";
         const std::string BOOL_TAG = "bool";
-        const std::string DATE_TIME_TAG = "datetime";
         const std::string ANY_OBJECT_TAG = "anyobject";
 
         // others
-        const std::string WHATEVER_VALUE = "x";
+        const std::vector<std::string> WHATEVER_VALUES = {"?"};
 
         // Replacements ({tagName, {replacementsTag, additionalAronDTOInclude}})
-        const std::map<std::string, std::pair<std::string, std::string>> REPLACEMENTS = {
+        const std::map<std::string, std::pair<std::string, std::string>> REPLACEMENTS =
+        {
             {"position", {"<matrix rows='3' cols='1' type='float32' />", ""}},
             {"pose", {"<matrix rows='4' cols='4' type='float32' />", ""}},
             {"orientation", {"<quaternion type='float32' />", ""}},
 
-            // Legacy
-            {"time", {"<DateTime />", ""}}
-
             // You can also add replacements for arondtos here!
+            {"datetime", {"<armarx::arondto::DateTime />", "<RobotAPI/libraries/aron/common/aron/time.xml>"}},
+            {"time", {"<armarx::arondto::DateTime />", "<RobotAPI/libraries/aron/common/aron/time.xml>"}},
+            {"duration", {"<armarx::arondto::Duration />", "<RobotAPI/libraries/aron/common/aron/time.xml>"}}
         };
     }
 
@@ -126,7 +126,7 @@ namespace armarx::aron::typereader::xml
         void EnforceAttribute(const RapidXmlReaderNode& node, const std::string& att);
         bool HasAttribute(const RapidXmlReaderNode& node, const std::string& att);
         std::string GetAttribute(const RapidXmlReaderNode& node, const std::string& att);
-        std::string GetAttributeWithDefault(const RapidXmlReaderNode& node, const std::string& att, const std::string def);
+        std::string GetAttributeWithDefault(const RapidXmlReaderNode& node, const std::string& att, const std::string& def);
         bool AttributeIsTrue(const RapidXmlReaderNode& node, const std::string& att);
 
         bool HasTagName(const RapidXmlReaderNode& node, const std::string& name);
diff --git a/source/RobotAPI/libraries/aron/core/typereader/xml/Factory.cpp b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.cpp
similarity index 76%
rename from source/RobotAPI/libraries/aron/core/typereader/xml/Factory.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.cpp
index 8c54cfff8..5eebd6d76 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/xml/Factory.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.cpp
@@ -42,25 +42,24 @@ namespace armarx::aron::typereader::xml
     {
         static const std::map<std::string, type::Descriptor> String2Descriptor =
         {
-            {constantes::LIST_TAG, type::Descriptor::eList},
-            {constantes::OBJECT_TAG, type::Descriptor::eObject},
-            {constantes::TUPLE_TAG, type::Descriptor::eTuple},
-            {constantes::PAIR_TAG, type::Descriptor::ePair},
-            {constantes::DICT_TAG, type::Descriptor::eDict},
-            {constantes::NDARRAY_TAG, type::Descriptor::eNDArray},
-            {constantes::MATRIX_TAG, type::Descriptor::eMatrix},
-            {constantes::QUATERNION_TAG, type::Descriptor::eQuaternion},
-            {constantes::POINT_CLOUD_TAG, type::Descriptor::ePointCloud},
-            {constantes::IMAGE_TAG, type::Descriptor::eImage},
-            {constantes::INT_ENUM_TAG, type::Descriptor::eIntEnum},
-            {constantes::INT_TAG, type::Descriptor::eInt},
-            {constantes::LONG_TAG, type::Descriptor::eLong},
-            {constantes::FLOAT_TAG, type::Descriptor::eFloat},
-            {constantes::DOUBLE_TAG, type::Descriptor::eDouble},
-            {constantes::STRING_TAG, type::Descriptor::eString},
-            {constantes::BOOL_TAG, type::Descriptor::eBool},
-            {constantes::DATE_TIME_TAG, type::Descriptor::eDateTime},
-            {constantes::ANY_OBJECT_TAG, type::Descriptor::eAnyObject}
+            {constantes::LIST_TAG, type::Descriptor::LIST},
+            {constantes::OBJECT_TAG, type::Descriptor::OBJECT},
+            {constantes::TUPLE_TAG, type::Descriptor::TUPLE},
+            {constantes::PAIR_TAG, type::Descriptor::PAIR},
+            {constantes::DICT_TAG, type::Descriptor::DICT},
+            {constantes::NDARRAY_TAG, type::Descriptor::NDARRAY},
+            {constantes::MATRIX_TAG, type::Descriptor::MATRIX},
+            {constantes::QUATERNION_TAG, type::Descriptor::QUATERNION},
+            {constantes::POINT_CLOUD_TAG, type::Descriptor::POINTCLOUD},
+            {constantes::IMAGE_TAG, type::Descriptor::IMAGE},
+            {constantes::INT_ENUM_TAG, type::Descriptor::INT_ENUM},
+            {constantes::INT_TAG, type::Descriptor::INT},
+            {constantes::LONG_TAG, type::Descriptor::LONG},
+            {constantes::FLOAT_TAG, type::Descriptor::FLOAT},
+            {constantes::DOUBLE_TAG, type::Descriptor::DOUBLE},
+            {constantes::STRING_TAG, type::Descriptor::STRING},
+            {constantes::BOOL_TAG, type::Descriptor::BOOL},
+            {constantes::ANY_OBJECT_TAG, type::Descriptor::ANY_OBJECT}
         };
 
         RapidXmlReaderNode nodeToUse = node;
@@ -77,29 +76,28 @@ namespace armarx::aron::typereader::xml
         std::string nodeNameToUse = nodeToUse.name();
 
         auto it = String2Descriptor.find(tagToUse);
-        auto descriptor = (it == String2Descriptor.end() ? type::Descriptor::eUnknown : it->second);
+        auto descriptor = (it == String2Descriptor.end() ? type::Descriptor::UNKNOWN : it->second);
 
         switch(descriptor)
         {
-            case type::Descriptor::eList: return createList(nodeToUse, path);
-            case type::Descriptor::eDict: return createDict(nodeToUse, path);
-            case type::Descriptor::eObject: return createObject(nodeToUse, path);
-            case type::Descriptor::eTuple: return createTuple(nodeToUse, path);
-            case type::Descriptor::ePair: return createPair(nodeToUse, path);
-            case type::Descriptor::eNDArray: return createNDArray(nodeToUse, path);
-            case type::Descriptor::eMatrix: return createMatrix(nodeToUse, path);
-            case type::Descriptor::eQuaternion: return createQuaternion(nodeToUse, path);
-            case type::Descriptor::eImage: return createImage(nodeToUse, path);
-            case type::Descriptor::ePointCloud: return createPointCloud(nodeToUse, path);
-            case type::Descriptor::eIntEnum: return createIntEnum(nodeToUse, path);
-            case type::Descriptor::eInt: return createInt(nodeToUse, path);
-            case type::Descriptor::eLong: return createLong(nodeToUse, path);
-            case type::Descriptor::eFloat: return createFloat(nodeToUse, path);
-            case type::Descriptor::eDouble: return createDouble(nodeToUse, path);
-            case type::Descriptor::eString: return createString(nodeToUse, path);
-            case type::Descriptor::eBool: return createBool(nodeToUse, path);
-            case type::Descriptor::eDateTime: return createTime(nodeToUse, path);
-            case type::Descriptor::eAnyObject: return createAnyObject(nodeToUse, path);
+            case type::Descriptor::LIST: return createList(nodeToUse, path);
+            case type::Descriptor::DICT: return createDict(nodeToUse, path);
+            case type::Descriptor::OBJECT: return createObject(nodeToUse, path);
+            case type::Descriptor::TUPLE: return createTuple(nodeToUse, path);
+            case type::Descriptor::PAIR: return createPair(nodeToUse, path);
+            case type::Descriptor::NDARRAY: return createNDArray(nodeToUse, path);
+            case type::Descriptor::MATRIX: return createMatrix(nodeToUse, path);
+            case type::Descriptor::QUATERNION: return createQuaternion(nodeToUse, path);
+            case type::Descriptor::IMAGE: return createImage(nodeToUse, path);
+            case type::Descriptor::POINTCLOUD: return createPointCloud(nodeToUse, path);
+            case type::Descriptor::INT_ENUM: return createIntEnum(nodeToUse, path);
+            case type::Descriptor::INT: return createInt(nodeToUse, path);
+            case type::Descriptor::LONG: return createLong(nodeToUse, path);
+            case type::Descriptor::FLOAT: return createFloat(nodeToUse, path);
+            case type::Descriptor::DOUBLE: return createDouble(nodeToUse, path);
+            case type::Descriptor::STRING: return createString(nodeToUse, path);
+            case type::Descriptor::BOOL: return createBool(nodeToUse, path);
+            case type::Descriptor::ANY_OBJECT: return createAnyObject(nodeToUse, path);
             default: return findExistingObject(nodeNameToUse);
         }
     }
@@ -122,20 +120,20 @@ namespace armarx::aron::typereader::xml
             return v;
         }
 
-        const auto public_unk_it = std::find(allPreviouslyKnownPublicTypes.begin(), allPreviouslyKnownPublicTypes.end(), name);
-        if(public_unk_it != allPreviouslyKnownPublicTypes.end())
+        const auto public_known_it = std::find(allPreviouslyKnownPublicTypes.begin(), allPreviouslyKnownPublicTypes.end(), name);
+        if(public_known_it != allPreviouslyKnownPublicTypes.end())
         {
             // create an empty navigator
-            auto v = std::make_shared<aron::type::Object>(*public_unk_it);
+            auto v = std::make_shared<aron::type::Object>(*public_known_it);
             return v;
         }
 
         // only works during generation process (not for top-level)
-        const auto public_priv_it = std::find(allPreviouslyKnownPrivateTypes.begin(), allPreviouslyKnownPrivateTypes.end(), name);
-        if(public_priv_it != allPreviouslyKnownPrivateTypes.end())
+        const auto private_known_it = std::find(allPreviouslyKnownPrivateTypes.begin(), allPreviouslyKnownPrivateTypes.end(), name);
+        if(private_known_it != allPreviouslyKnownPrivateTypes.end())
         {
             // create an empty navigator
-            auto v = std::make_shared<aron::type::Object>(*public_priv_it);
+            auto v = std::make_shared<aron::type::Object>(*private_known_it);
             return v;
         }
 
@@ -146,21 +144,21 @@ namespace armarx::aron::typereader::xml
     {
         if (util::AttributeIsTrue(n, constantes::OPTIONAL_NAME))
         {
-            return type::Maybe::eOptional;
+            return type::Maybe::OPTIONAL;
         }
         if (util::AttributeIsTrue(n, constantes::RAW_PTR_NAME))
         {
-            return type::Maybe::eRawPointer;
+            return type::Maybe::RAW_PTR;
         }
         if (util::AttributeIsTrue(n, constantes::SHARED_PTR_NAME))
         {
-            return type::Maybe::eSharedPointer;
+            return type::Maybe::SHARED_PTR;
         }
         if (util::AttributeIsTrue(n, constantes::UNIQUE_PTR_NAME))
         {
-            return type::Maybe::eUniquePointer;
+            return type::Maybe::UNIQUE_PTR;
         }
-        return type::Maybe::eNone;
+        return type::Maybe::NONE;
     }
 
     void ReaderFactory::checkObjectMemberName(const std::string& s) const
@@ -219,7 +217,7 @@ namespace armarx::aron::typereader::xml
             auto maybe = getMaybe(children[0]);
             type::VariantPtr childNavigator = create(children[0], path.withElement(key));
 
-            if (childNavigator->getDescriptor() == aron::type::Descriptor::eObject)
+            if (childNavigator->getDescriptor() == aron::type::Descriptor::OBJECT)
             {
                 // check if template args are present
                 std::vector<std::string> templates = simox::alg::split(util::GetAttributeWithDefault(children[0], constantes::TEMPLATE_ATTRIBUTE_NAME, ""), ",");
@@ -322,14 +320,14 @@ namespace armarx::aron::typereader::xml
     {
         static const std::map<std::string, type::ndarray::ElementType> String2NDArrayType =
         {
-            {"int8", type::ndarray::ElementType::int8},
-            {"int16", type::ndarray::ElementType::int16},
-            {"int32", type::ndarray::ElementType::int32},
-            {"uint8", type::ndarray::ElementType::uint8},
-            {"uint16", type::ndarray::ElementType::uint16},
-            {"uint32", type::ndarray::ElementType::uint32},
-            {"float32", type::ndarray::ElementType::float32},
-            {"float64", type::ndarray::ElementType::float64}
+            {"int8", type::ndarray::ElementType::INT8},
+            {"int16", type::ndarray::ElementType::INT16},
+            {"int32", type::ndarray::ElementType::INT32},
+            {"uint8", type::ndarray::ElementType::UINT8},
+            {"uint16", type::ndarray::ElementType::UINT16},
+            {"uint32", type::ndarray::ElementType::UINT32},
+            {"float32", type::ndarray::ElementType::FLOAT32},
+            {"float64", type::ndarray::ElementType::FLOAT64}
         };
 
         return nullptr;
@@ -339,11 +337,11 @@ namespace armarx::aron::typereader::xml
     {
         static const std::map<std::string, type::matrix::ElementType> String2MatrixType =
         {
-            {"int16", type::matrix::ElementType::int16},
-            {"int32", type::matrix::ElementType::int32},
-            {"int64", type::matrix::ElementType::int64},
-            {"float32", type::matrix::ElementType::float32},
-            {"float64", type::matrix::ElementType::float64}
+            {"int16", type::matrix::ElementType::INT16},
+            {"int32", type::matrix::ElementType::INT32},
+            {"int64", type::matrix::ElementType::INT64},
+            {"float32", type::matrix::ElementType::FLOAT32},
+            {"float64", type::matrix::ElementType::FLOAT64}
         };
 
         auto o = std::make_shared<type::Matrix>(path);
@@ -353,11 +351,11 @@ namespace armarx::aron::typereader::xml
         auto rows_str = util::GetAttributeWithDefault(node, constantes::ROWS_ATTRIBUTE_NAME, "4");
         auto cols_str = util::GetAttributeWithDefault(node, constantes::COLS_ATTRIBUTE_NAME, "4");
 
-        if (simox::alg::to_lower(rows_str) == constantes::WHATEVER_VALUE)
+        if (std::find(constantes::WHATEVER_VALUES.begin(), constantes::WHATEVER_VALUES.end(), simox::alg::to_lower(rows_str)) != constantes::WHATEVER_VALUES.end())
         {
             rows_str = "-1";
         }
-        if (simox::alg::to_lower(cols_str) == constantes::WHATEVER_VALUE)
+        if (std::find(constantes::WHATEVER_VALUES.begin(), constantes::WHATEVER_VALUES.end(), simox::alg::to_lower(cols_str)) != constantes::WHATEVER_VALUES.end())
         {
             cols_str = "-1";
         }
@@ -383,8 +381,8 @@ namespace armarx::aron::typereader::xml
     {
         static const std::map<std::string, type::quaternion::ElementType> String2QuaternionType =
         {
-            {"float32", type::quaternion::ElementType::float32},
-            {"float64", type::quaternion::ElementType::float64}
+            {"float32", type::quaternion::ElementType::FLOAT32},
+            {"float64", type::quaternion::ElementType::FLOAT64}
         };
 
         auto o = std::make_shared<type::Quaternion>(path);
@@ -409,8 +407,8 @@ namespace armarx::aron::typereader::xml
     {
         static const std::map<std::string, type::image::PixelType> String2PixelType =
         {
-            {"rgb24", type::image::PixelType::rgb24},
-            {"depth32", type::image::PixelType::depth32}
+            {"rgb24", type::image::PixelType::RGB24},
+            {"depth32", type::image::PixelType::DEPTH32}
         };
 
         auto o = std::make_shared<type::Image>(path);
@@ -434,13 +432,13 @@ namespace armarx::aron::typereader::xml
     {
         static const std::map<std::string, type::pointcloud::VoxelType> String2VoxelType =
         {
-            {"pointxyz", type::pointcloud::VoxelType::PointXYZ},
-            {"pointxyzi", type::pointcloud::VoxelType::PointXYZI},
-            {"pointxyzl", type::pointcloud::VoxelType::PointXYZL},
-            {"pointxyzrgb", type::pointcloud::VoxelType::PointXYZRGB},
-            {"pointxyzrgbl", type::pointcloud::VoxelType::PointXYZRGBL},
-            {"pointxyzrgba", type::pointcloud::VoxelType::PointXYZRGBA},
-            {"pointxyzhsv", type::pointcloud::VoxelType::PointXYZHSV}
+            {"pointxyz", type::pointcloud::VoxelType::POINT_XYZ},
+            {"pointxyzi", type::pointcloud::VoxelType::POINT_XYZI},
+            {"pointxyzl", type::pointcloud::VoxelType::POINT_XYZL},
+            {"pointxyzrgb", type::pointcloud::VoxelType::POINT_XYZRGB},
+            {"pointxyzrgbl", type::pointcloud::VoxelType::POINT_XYZRGBL},
+            {"pointxyzrgba", type::pointcloud::VoxelType::POINT_XYZRGBA},
+            {"pointxyzhsv", type::pointcloud::VoxelType::POINT_XYZHSV}
         };
 
         auto o = std::make_shared<type::PointCloud>(path);
@@ -530,11 +528,6 @@ namespace armarx::aron::typereader::xml
         return std::make_shared<type::Bool>(path);
     }
 
-    type::VariantPtr ReaderFactory::createTime(const RapidXmlReaderNode &node, const Path &path) const
-    {
-        return std::make_shared<type::DateTime>(path);
-    }
-
     type::VariantPtr ReaderFactory::createAnyObject(const RapidXmlReaderNode& node, const Path& path) const
     {
         return std::make_shared<type::AnyObject>(path);
diff --git a/source/RobotAPI/libraries/aron/core/typereader/xml/Factory.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.h
similarity index 94%
rename from source/RobotAPI/libraries/aron/core/typereader/xml/Factory.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.h
index a15c84116..814349d16 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/xml/Factory.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.h
@@ -31,8 +31,8 @@
 
 // ArmarX
 #include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h>
-#include <RobotAPI/libraries/aron/core/typereader/helper/GenerateTypeInfo.h>
-#include <RobotAPI/libraries/aron/core/typereader/helper/GenerateIntEnumInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateTypeInfo.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/helper/GenerateIntEnumInfo.h>
 #include <RobotAPI/libraries/aron/core/type/variant/Variant.h>
 
 
@@ -83,7 +83,6 @@ namespace armarx::aron::typereader::xml
         type::VariantPtr createDouble(const RapidXmlReaderNode& node, const Path& path) const;
         type::VariantPtr createString(const RapidXmlReaderNode& node, const Path& path) const;
         type::VariantPtr createBool(const RapidXmlReaderNode& node, const Path& path) const;
-        type::VariantPtr createTime(const RapidXmlReaderNode& node, const Path& path) const;
 
         type::VariantPtr createAnyObject(const RapidXmlReaderNode& node, const Path& path) const;
 
diff --git a/source/RobotAPI/libraries/aron/core/typereader/xml/Reader.cpp b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.cpp
similarity index 97%
rename from source/RobotAPI/libraries/aron/core/typereader/xml/Reader.cpp
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.cpp
index 92180e61e..3f7d947e0 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/xml/Reader.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.cpp
@@ -31,7 +31,7 @@
 #include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h>
 #include <ArmarXCore/core/system/cmake/CMakePackageFinder.h>
 
-#include <RobotAPI/libraries/aron/core/typereader/xml/Data.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/xml/Data.h>
 #include <RobotAPI/libraries/aron/core/type/variant/Factory.h>
 
 
@@ -217,6 +217,12 @@ namespace armarx::aron::typereader::xml
         }
         // else path is absolute
 
+        // check if referred file is same as current file. If so, abort.
+        if (resolved_absolute_path == filePath)
+        {
+            return "";
+        }
+
         // parse parent xml file and add objects to alreday known
         Reader anotherReader;
         anotherReader.parseFile(resolved_absolute_path);
diff --git a/source/RobotAPI/libraries/aron/core/typereader/xml/Reader.h b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.h
similarity index 94%
rename from source/RobotAPI/libraries/aron/core/typereader/xml/Reader.h
rename to source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.h
index da63cb5cd..e68615489 100644
--- a/source/RobotAPI/libraries/aron/core/typereader/xml/Reader.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/typereader/xml/Reader.h
@@ -30,14 +30,14 @@
 
 
 // Base Class
-#include <RobotAPI/libraries/aron/core/typereader/Reader.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/Reader.h>
 
 // ArmarX
 #include <SimoxUtility/xml.h>
 #include <ArmarXCore/core/rapidxml/wrapper/RapidXmlReader.h>
 
 #include <RobotAPI/libraries/aron/core/type/variant/container/Object.h>
-#include <RobotAPI/libraries/aron/core/typereader/xml/Factory.h>
+#include <RobotAPI/libraries/aron/codegeneration/typereader/xml/Factory.h>
 
 namespace armarx::aron::typereader::xml
 {
diff --git a/source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.cpp b/source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.cpp
deleted file mode 100644
index b1726ae05..000000000
--- a/source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-// STD/STL
-
-
-// Header
-#include "AronCodeGenerator.h"
-
-namespace armarx
-{
-    namespace aron
-    {
-        namespace codegenerator::cpp
-        {
-
-        }
-    }
-}
diff --git a/source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.h b/source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.h
deleted file mode 100644
index 8783ca562..000000000
--- a/source/RobotAPI/libraries/aron/codegenerationhelper/AronCodeGenerator.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* This file is part of ArmarX.
-*
-* ArmarX is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License version 2 as
-* published by the Free Software Foundation.
-*
-* ArmarX is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* @author     Fabian Peller (fabian dot peller at kit dot edu)
-* @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
-*             GNU General Public License
-*/
-
-#pragma once
-
-// STD/STL
-#include <memory>
-#include <string>
-
-// ArmarX
-#include <RobotAPI/interface/aron.h>
-
-
-namespace armarx
-{
-    namespace aron
-    {
-        namespace codegenerator::cpp
-        {
-            /* This is just a dummy class to create a target which depends on the aron code generator executable. */
-            class AronCodeGenerator;
-            typedef std::shared_ptr<AronCodeGenerator> AronCodeGeneratorPtr;
-
-            class AronCodeGenerator
-            {
-            public:
-                AronCodeGenerator() = default;
-
-            private:
-            };
-        }
-    }
-}
diff --git a/source/RobotAPI/libraries/aron/codegenerationhelper/CMakeLists.txt b/source/RobotAPI/libraries/aron/codegenerationhelper/CMakeLists.txt
deleted file mode 100644
index 588385597..000000000
--- a/source/RobotAPI/libraries/aron/codegenerationhelper/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-set(LIB_NAME aroncodegeneration)
-
-armarx_component_set_name("${LIB_NAME}")
-armarx_set_target("Library: ${LIB_NAME}")
-
-
-set(LIBS
-    aron
-)
-
-set(LIB_FILES
-    AronCodeGenerator.cpp
-)
-
-set(LIB_HEADERS
-    AronCodeGenerator.h
-)
-
-armarx_add_library("${LIB_NAME}" "${LIB_FILES}" "${LIB_HEADERS}" "${LIBS}")
-#add_dependencies("${LIB_NAME}" AronCodeGeneratorAppRun)
diff --git a/source/RobotAPI/libraries/aron/common/CMakeLists.txt b/source/RobotAPI/libraries/aron/common/CMakeLists.txt
index ab0f5bb86..14e5a0305 100644
--- a/source/RobotAPI/libraries/aron/common/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/common/CMakeLists.txt
@@ -17,12 +17,12 @@ armarx_add_library(
         json_conversions.h
 
         aron_conversions/core.h
+        aron_conversions/stl.h
         aron_conversions/packagepath.h
         aron_conversions/framed.h
         aron_conversions/time.h
         aron_conversions/armarx.h
         aron_conversions/simox.h
-        aron_conversions/stl.h
         aron_conversions/eigen.h
 
         json_conversions/armarx.h
@@ -32,12 +32,12 @@ armarx_add_library(
     SOURCES
 
         aron_conversions/core.cpp
+        aron_conversions/stl.cpp
         aron_conversions/packagepath.cpp
         aron_conversions/framed.cpp
         aron_conversions/time.cpp
         aron_conversions/armarx.cpp
         aron_conversions/simox.cpp
-        aron_conversions/stl.cpp
         aron_conversions/eigen.cpp
 
         json_conversions/armarx.cpp
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions.h b/source/RobotAPI/libraries/aron/common/aron_conversions.h
index b771ef362..84804124d 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions.h
@@ -1,8 +1,5 @@
 #pragma once
 
-#include "aron_conversions/core.h"
-
 #include "aron_conversions/armarx.h"
 #include "aron_conversions/simox.h"
-#include "aron_conversions/stl.h"
 #include "aron_conversions/eigen.h"
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/core.cpp b/source/RobotAPI/libraries/aron/common/aron_conversions/core.cpp
index 790714d9c..44426a551 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/core.cpp
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/core.cpp
@@ -1,2 +1 @@
 #include "core.h"
-
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/core.h b/source/RobotAPI/libraries/aron/common/aron_conversions/core.h
index bcc537a28..af62fb4fa 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/core.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/core.h
@@ -1,81 +1,12 @@
 #pragma once
 
+// This file is just a legacy include file.
+// We moved the stl and core conversions to the aron library.
 
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 
-namespace armarx::aron
+namespace armarx
 {
 
-    /**
-     * Framework for converting ARON DTOs (Data Transfer Objects) to C++ BOs
-     * (Business Objects) and back.
-     *
-     * To allow conversion between custom ARON and C++ types, declare two
-     * functions in the namespace of the BO:
-     *
-     * @code
-     * // aron_conversions.h
-     *
-     * namespace bo_namespace
-     * {
-     *     void toAron(arondto::MyObject& dto, const MyObject& bo);
-     *     void fromAron(const arondto::MyObject& dto, MyObject& bo);
-     * }
-     * @endcode
-     *
-     * Note that the DTO always comes first, and the target object is
-     * non-const.
-     *
-     * In the implementation,
-     *
-     *
-     * @code
-     * // aron_conversions.cpp
-     *
-     * #include "aron_conversions.h"
-     * #include <Path/to/MyValue/aron_conversions.h>
-     *
-     * void bo_namespace::toAron(arondto::MyObject& dto, const MyObject& bo)
-     * {
-     *     dto.name = bo.name;
-     *     toAron(dto.myValue, bo.myValue);
-     * }
-     *
-     * void bo_namespace::fromAron(const arondto::MyObject& dto, MyObject& bo)
-     * {
-     *     bo.name = dto.name;
-     *     fromAron(dto.myValue, bo.myValue);
-     * }
-     * @endcode
-     */
 
-    // Same type
-    template <class T>
-    void toAron(T& dto, const T& bo)
-    {
-        dto = bo;
-    }
-    template <class T>
-    void fromAron(const T& dto, T& bo)
-    {
-        bo = dto;
-    }
-
-
-    // Generic return version
-
-    template <class DtoT, class BoT>
-    DtoT toAron(const BoT& bo)
-    {
-        DtoT dto;
-        toAron(dto, bo);
-        return dto;
-    }
-    template <class BoT, class DtoT>
-    BoT fromAron(const DtoT& dto)
-    {
-        BoT bo;
-        fromAron(dto, bo);
-        return bo;
-    }
-
-}
+}  // namespace armarx
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/eigen.h b/source/RobotAPI/libraries/aron/common/aron_conversions/eigen.h
index 3ace8f400..e60f080c8 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/eigen.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/eigen.h
@@ -2,6 +2,8 @@
 
 #include <Eigen/Geometry>
 
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
+
 namespace armarx::aron
 {
     using AronPose = Eigen::Matrix<float, 4, 4>;
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/framed.h b/source/RobotAPI/libraries/aron/common/aron_conversions/framed.h
index f6ad31338..f7c53ac77 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/framed.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/framed.h
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
+
 #include <RobotAPI/libraries/aron/common/aron/framed.aron.generated.h>
 
 namespace armarx
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/packagepath.h b/source/RobotAPI/libraries/aron/common/aron_conversions/packagepath.h
index ed2e3f5ef..a5661de19 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/packagepath.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/packagepath.h
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
+
 #include <ArmarXCore/core/PackagePath.h>
 #include <RobotAPI/libraries/aron/common/aron/PackagePath.aron.generated.h>
 
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h b/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h
index 5440ac1c6..68a7fada4 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/simox.h
@@ -1,5 +1,7 @@
 #pragma once
 
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
+
 #include <SimoxUtility/color/Color.h>
 #include <SimoxUtility/shapes/AxisAlignedBoundingBox.h>
 #include <SimoxUtility/shapes/OrientedBox.h>
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/stl.cpp b/source/RobotAPI/libraries/aron/common/aron_conversions/stl.cpp
index 857d161ec..44426a551 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/stl.cpp
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/stl.cpp
@@ -1 +1 @@
-#include "stl.h"
+#include "core.h"
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/stl.h b/source/RobotAPI/libraries/aron/common/aron_conversions/stl.h
index 9a593f3c7..af62fb4fa 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/stl.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/stl.h
@@ -1,197 +1,12 @@
 #pragma once
 
-#include <map>
-#include <memory>
-#include <optional>
-#include <vector>
+// This file is just a legacy include file.
+// We moved the stl and core conversions to the aron library.
 
-#include "core.h"
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 
-
-namespace armarx::aron
+namespace armarx
 {
 
-    // std::unique_ptr
-
-    template <class DtoT, class BoT>
-    void toAron(DtoT& dto, const std::unique_ptr<BoT>& bo)
-    {
-        if (bo)
-        {
-            toAron(dto, *bo);
-        }
-    }
-    template <class DtoT, class BoT>
-    void fromAron(const DtoT& dto, std::unique_ptr<BoT>& bo)
-    {
-        bo = std::make_unique<BoT>();
-        fromAron(dto, *bo);
-    }
-
-
-    // std::optional
-
-    template <class DtoT, class BoT>
-    void toAron(std::optional<DtoT>& dto, const std::optional<BoT>& bo)
-    {
-        if (bo.has_value())
-        {
-            dto = DtoT{};
-            toAron(*dto, *bo);
-        }
-        else
-        {
-            dto = std::nullopt;
-        }
-    }
-    template <class DtoT, class BoT>
-    void fromAron(const std::optional<DtoT>& dto, std::optional<BoT>& bo)
-    {
-        if (dto.has_value())
-        {
-            bo = BoT{};
-            fromAron(*dto, *bo);
-        }
-        else
-        {
-            bo = std::nullopt;
-        }
-    }
-
-    // Flag-controlled optional
-    template <class DtoT, class BoT>
-    void toAron(DtoT& dto, bool& dtoValid, const BoT& bo, bool boValid)
-    {
-        dtoValid = boValid;
-        if (boValid)
-        {
-            toAron(dto, bo);
-        }
-        else
-        {
-            dto = {};
-        }
-    }
-    template <class DtoT, class BoT>
-    void fromAron(const DtoT& dto, bool dtoValid, BoT& bo, bool& boValid)
-    {
-        boValid = dtoValid;
-        if (dtoValid)
-        {
-            fromAron(dto, bo);
-        }
-        else
-        {
-            bo = {};
-        }
-    }
-
-    template <class DtoT, class BoT>
-    void toAron(DtoT& dto, bool& dtoValid, const std::optional<BoT>& bo)
-    {
-        dtoValid = bo.has_value();
-        if (dtoValid)
-        {
-            toAron(dto, *bo);
-        }
-        else
-        {
-            dto = {};
-        }
-    }
-    template <class DtoT, class BoT>
-    void fromAron(const DtoT& dto, bool dtoValid, std::optional<BoT>& bo)
-    {
-        if (dtoValid)
-        {
-            bo = BoT{};
-            fromAron(dto, *bo);
-        }
-        else
-        {
-            bo = std::nullopt;
-        }
-    }
-
-    // Helper concept to avoid ambiguities
-    template<typename DtoT, typename BoT>
-    concept DtoAndBoAreSame = std::is_same<DtoT, BoT>::value;
-
-
-    // std::vector
-
-    template <class DtoT, class BoT>
-    requires (!DtoAndBoAreSame<DtoT, BoT>)
-    void toAron(std::vector<DtoT>& dtos, const std::vector<BoT>& bos)
-    {
-        dtos.clear();
-        dtos.reserve(bos.size());
-        for (const auto& bo : bos)
-        {
-            toAron(dtos.emplace_back(), bo);
-        }
-    }
-    template <class DtoT, class BoT>
-    requires (!DtoAndBoAreSame<DtoT, BoT>)
-    void fromAron(const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
-    {
-        bos.clear();
-        bos.reserve(dtos.size());
-        for (const auto& dto : dtos)
-        {
-            fromAron(dto, bos.emplace_back());
-        }
-    }
-
-    template <class DtoT, class BoT>
-    requires (!DtoAndBoAreSame<DtoT, BoT>)
-    std::vector<DtoT> toAron(const std::vector<BoT>& bos)
-    {
-        std::vector<DtoT> dtos;
-        toAron(dtos, bos);
-        return dtos;
-    }
-
-
-    // std::map
-
-    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
-    requires (!(DtoAndBoAreSame<DtoKeyT, BoKeyT> and DtoAndBoAreSame<DtoValueT, BoValueT>))
-    void toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
-                const std::map<BoKeyT, BoValueT>& boMap)
-    {
-        dtoMap.clear();
-        for (const auto& [boKey, boValue] : boMap)
-        {
-            DtoKeyT dtoKey;
-            toAron(dtoKey, boKey);
-            auto [it, _] = dtoMap.emplace(std::move(dtoKey), DtoValueT{});
-            toAron(it->second, boValue);
-        }
-    }
-    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
-    requires (!(DtoAndBoAreSame<DtoKeyT, BoKeyT> and DtoAndBoAreSame<DtoValueT, BoValueT>))
-    void fromAron(const std::map<DtoKeyT, DtoValueT>& dtoMap,
-                  std::map<BoKeyT, BoValueT>& boMap)
-    {
-        boMap.clear();
-        for (const auto& [dtoKey, dtoValue] : dtoMap)
-        {
-            BoKeyT boKey;
-            fromAron(dtoKey, boKey);
-            auto [it, _] = boMap.emplace(boKey, BoValueT{});
-            fromAron(dtoValue, it->second);
-        }
-    }
-
-
-    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
-    requires (!(DtoAndBoAreSame<DtoKeyT, BoKeyT> and DtoAndBoAreSame<DtoValueT, BoValueT>))
-    std::map<DtoKeyT, DtoValueT> toAron(const std::map<BoKeyT, BoValueT>& boMap)
-    {
-        std::map<DtoKeyT, DtoValueT> dtoMap;
-        toAron(dtoMap, boMap);
-        return dtoMap;
-    }
 
-}
+}  // namespace armarx
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/time.cpp b/source/RobotAPI/libraries/aron/common/aron_conversions/time.cpp
index 97b674802..2ee681ca3 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/time.cpp
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/time.cpp
@@ -4,8 +4,7 @@
 
 #include <ArmarXCore/core/time/ice_conversions.h>
 
-#include <RobotAPI/libraries/aron/common/aron_conversions/core.h>
-#include <RobotAPI/libraries/aron/common/aron_conversions/stl.h>
+#include <RobotAPI/libraries/aron/common/aron/time.aron.generated.h>
 
 
 void IceUtil::fromAron(const long& dto, IceUtil::Time& bo)
@@ -79,32 +78,24 @@ void armarx::toAron(arondto::Duration& dto, const Duration& bo)
 
 void armarx::fromAron(const arondto::Frequency& dto, Frequency& bo)
 {
-    Duration cycleDuration;
-    fromAron(dto.cycleDuration, cycleDuration);
-    bo = Frequency(cycleDuration);
+    bo = Frequency(dto.cycleDuration);
 }
 
 void armarx::toAron(arondto::Frequency& dto, const Frequency& bo)
 {
-    arondto::Duration cycleDuration;
-    toAron(cycleDuration, bo.toCycleDuration());
-    dto.cycleDuration = cycleDuration;
+    dto.cycleDuration = bo.toCycleDuration();
 }
 
 void armarx::fromAron(const arondto::DateTime& dto, DateTime& bo)
 {
-    Duration timeSinceEpoch;
-    fromAron(dto.timeSinceEpoch, timeSinceEpoch);
     ClockType clockType;
     fromAron(dto.clockType, clockType);
-    bo = DateTime(timeSinceEpoch, clockType, dto.hostname);
+    bo = DateTime(dto.timeSinceEpoch, clockType, dto.hostname);
 }
 
 void armarx::toAron(arondto::DateTime& dto, const DateTime& bo)
 {
-    arondto::Duration timeSinceEpoch;
-    toAron(timeSinceEpoch, bo.toDurationSinceEpoch());
-    dto.timeSinceEpoch = timeSinceEpoch;
+    dto.timeSinceEpoch = bo.toDurationSinceEpoch();
     arondto::ClockType clockType;
     toAron(clockType, bo.clockType());
     dto.clockType = clockType;
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/time.h b/source/RobotAPI/libraries/aron/common/aron_conversions/time.h
index 80ab36d7c..0ea9cb87a 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/time.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/time.h
@@ -1,9 +1,8 @@
 #pragma once
 
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 #include <ArmarXCore/core/time_minimal.h>
 
-#include <RobotAPI/libraries/aron/common/aron/time.aron.generated.h>
-
 
 namespace IceUtil
 {
@@ -24,6 +23,14 @@ namespace IceUtil
 }
 namespace armarx
 {
+    namespace arondto
+    {
+        class ClockType;
+        class Duration;
+        class Frequency;
+        class DateTime;
+    }
+
     void fromAron(const arondto::ClockType& dto, ClockType& bo);
     void toAron(arondto::ClockType& dto, const ClockType& bo);
 
diff --git a/source/RobotAPI/libraries/aron/common/test/MyCustomType.cpp b/source/RobotAPI/libraries/aron/common/test/MyCustomType.cpp
index 6431732ee..3d4ba61b8 100644
--- a/source/RobotAPI/libraries/aron/common/test/MyCustomType.cpp
+++ b/source/RobotAPI/libraries/aron/common/test/MyCustomType.cpp
@@ -23,7 +23,7 @@
 
 #include <ostream>
 
-#include <RobotAPI/libraries/aron/common/aron_conversions/core.h>
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 
 
 template <class CustomTypeT>
diff --git a/source/RobotAPI/libraries/aron/common/test/aron_common_test.cpp b/source/RobotAPI/libraries/aron/common/test/aron_common_test.cpp
index 0503f0132..6c66ae28f 100644
--- a/source/RobotAPI/libraries/aron/common/test/aron_common_test.cpp
+++ b/source/RobotAPI/libraries/aron/common/test/aron_common_test.cpp
@@ -26,8 +26,7 @@
 
 #include <RobotAPI/Test.h>
 
-#include <RobotAPI/libraries/aron/common/aron_conversions/stl.h>
-#include <RobotAPI/libraries/aron/common/aron_conversions/core.h>
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 
 #include <iostream>
 
diff --git a/source/RobotAPI/libraries/aron/common/util/object_finders.h b/source/RobotAPI/libraries/aron/common/util/object_finders.h
index ff67043de..879b2231c 100644
--- a/source/RobotAPI/libraries/aron/common/util/object_finders.h
+++ b/source/RobotAPI/libraries/aron/common/util/object_finders.h
@@ -27,7 +27,7 @@
 
 #include <SimoxUtility/algorithm/string.h>
 
-#include <RobotAPI/libraries/aron/common/aron_conversions/core.h>
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
 #include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h>
 #include <RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h>
 
diff --git a/source/RobotAPI/libraries/aron/core/CMakeLists.txt b/source/RobotAPI/libraries/aron/core/CMakeLists.txt
index 54acbaea6..c26223773 100644
--- a/source/RobotAPI/libraries/aron/core/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/core/CMakeLists.txt
@@ -10,7 +10,6 @@ set(LIBS
     ArmarXCoreInterfaces
     ArmarXCore
     RobotAPIInterfaces
-    cppgen
     SimoxUtility
 )
 
@@ -19,6 +18,8 @@ set(LIB_FILES
     Exception.cpp
     Path.cpp
 
+    aron_conversions.cpp
+
     data/variant/Variant.cpp
     data/variant/detail/SpecializedVariant.cpp
     data/variant/detail/ContainerVariant.cpp
@@ -60,7 +61,6 @@ set(LIB_FILES
     type/variant/primitive/Double.cpp
     type/variant/primitive/String.cpp
     type/variant/primitive/Bool.cpp
-    type/variant/dto/DateTime.cpp
     type/variant/any/AnyObject.cpp
     type/variant/Factory.cpp
 
@@ -96,41 +96,6 @@ set(LIB_FILES
     type/converter/Converter.cpp
     type/converter/variant/VariantConverter.cpp
     type/converter/nlohmannJSON/NlohmannJSONConverter.cpp
-
-    typereader/xml/Data.cpp
-    typereader/xml/Factory.cpp
-    typereader/xml/Reader.cpp
-
-    codegenerator/codewriter/cpp/Writer.cpp
-    codegenerator/codewriter/cpp/generator/Generator.cpp
-    codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.cpp
-    codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.cpp
-    codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.cpp
-    codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.cpp
-    codegenerator/codewriter/cpp/generator/detail/AnyGenerator.cpp
-    codegenerator/codewriter/cpp/generator/detail/DtoGenerator.cpp
-    codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.cpp
-    codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.cpp
-    codegenerator/codewriter/cpp/generator/container/Dict.cpp
-    codegenerator/codewriter/cpp/generator/container/List.cpp
-    codegenerator/codewriter/cpp/generator/container/Object.cpp
-    codegenerator/codewriter/cpp/generator/container/Tuple.cpp
-    codegenerator/codewriter/cpp/generator/container/Pair.cpp
-    codegenerator/codewriter/cpp/generator/ndarray/NDArray.cpp
-    codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
-    codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
-    codegenerator/codewriter/cpp/generator/ndarray/Image.cpp
-    codegenerator/codewriter/cpp/generator/ndarray/PointCloud.cpp
-    codegenerator/codewriter/cpp/generator/enum/IntEnum.cpp
-    codegenerator/codewriter/cpp/generator/primitive/Int.cpp
-    codegenerator/codewriter/cpp/generator/primitive/Long.cpp
-    codegenerator/codewriter/cpp/generator/primitive/Float.cpp
-    codegenerator/codewriter/cpp/generator/primitive/Double.cpp
-    codegenerator/codewriter/cpp/generator/primitive/String.cpp
-    codegenerator/codewriter/cpp/generator/primitive/Bool.cpp
-    codegenerator/codewriter/cpp/generator/dto/DateTime.cpp
-    codegenerator/codewriter/cpp/generator/any/AnyObject.cpp
-    codegenerator/codewriter/cpp/generator/Factory.cpp
 )
 
 set(LIB_HEADERS
@@ -138,6 +103,8 @@ set(LIB_HEADERS
     Exception.h
     Path.h
 
+    aron_conversions.h
+
     data/variant/Variant.h
     data/variant/detail/SpecializedVariant.h
     data/variant/detail/ContainerVariant.h
@@ -189,8 +156,6 @@ set(LIB_HEADERS
     type/variant/primitive/String.h
     type/variant/primitive/Bool.h
     type/variant/primitive/All.h
-    type/variant/dto/DateTime.h
-    type/variant/dto/All.h
     type/variant/any/AnyObject.h
     type/variant/any/All.h
     type/variant/All.h
@@ -233,61 +198,6 @@ set(LIB_HEADERS
     type/converter/Converter.h
     type/converter/variant/VariantConverter.h
     type/converter/nlohmannJSON/NlohmannJSONConverter.h
-
-    typereader/helper/GenerateInfo.h
-    typereader/helper/GenerateTypeInfo.h
-    typereader/helper/GenerateIntEnumInfo.h
-
-    typereader/Reader.h
-    typereader/xml/Data.h
-    typereader/xml/Factory.h
-    typereader/xml/Reader.h
-
-    codegenerator/helper/WriterInfo.h
-    codegenerator/helper/ReaderInfo.h
-
-    codegenerator/codewriter/CodeWriter.h
-    codegenerator/codewriter/Factory.h
-
-    codegenerator/codewriter/cpp/AronGeneratedClass.h
-    codegenerator/codewriter/cpp/Writer.h
-    codegenerator/codewriter/cpp/generator/Generator.h
-    codegenerator/codewriter/cpp/generator/detail/SpecializedGenerator.h
-    codegenerator/codewriter/cpp/generator/detail/ContainerGenerator.h
-    codegenerator/codewriter/cpp/generator/detail/NDArrayGenerator.h
-    codegenerator/codewriter/cpp/generator/detail/PrimitiveGenerator.h
-    codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
-    codegenerator/codewriter/cpp/generator/detail/DtoGenerator.h
-    codegenerator/codewriter/cpp/generator/toplevel/ObjectClass.h
-    codegenerator/codewriter/cpp/generator/toplevel/IntEnumClass.h
-    codegenerator/codewriter/cpp/generator/toplevel/All.h
-    codegenerator/codewriter/cpp/generator/container/Dict.h
-    codegenerator/codewriter/cpp/generator/container/List.h
-    codegenerator/codewriter/cpp/generator/container/Object.h
-    codegenerator/codewriter/cpp/generator/container/Tuple.h
-    codegenerator/codewriter/cpp/generator/container/Pair.h
-    codegenerator/codewriter/cpp/generator/container/All.h
-    codegenerator/codewriter/cpp/generator/ndarray/NDArray.h
-    codegenerator/codewriter/cpp/generator/ndarray/Matrix.h
-    codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
-    codegenerator/codewriter/cpp/generator/ndarray/Image.h
-    codegenerator/codewriter/cpp/generator/ndarray/PointCloud.h
-    codegenerator/codewriter/cpp/generator/ndarray/All.h
-    codegenerator/codewriter/cpp/generator/enum/IntEnum.h
-    codegenerator/codewriter/cpp/generator/enum/All.h
-    codegenerator/codewriter/cpp/generator/primitive/Int.h
-    codegenerator/codewriter/cpp/generator/primitive/Long.h
-    codegenerator/codewriter/cpp/generator/primitive/Float.h
-    codegenerator/codewriter/cpp/generator/primitive/Double.h
-    codegenerator/codewriter/cpp/generator/primitive/String.h
-    codegenerator/codewriter/cpp/generator/primitive/Bool.h
-    codegenerator/codewriter/cpp/generator/primitive/All.h
-    codegenerator/codewriter/cpp/generator/dto/DateTime.h
-    codegenerator/codewriter/cpp/generator/dto/All.h
-    codegenerator/codewriter/cpp/generator/any/AnyObject.h
-    codegenerator/codewriter/cpp/generator/any/All.h
-    codegenerator/codewriter/cpp/generator/All.h
-    codegenerator/codewriter/cpp/generator/Factory.h
 )
 
 
diff --git a/source/RobotAPI/libraries/aron/core/Descriptor.h b/source/RobotAPI/libraries/aron/core/Descriptor.h
index f04379560..5b386f583 100644
--- a/source/RobotAPI/libraries/aron/core/Descriptor.h
+++ b/source/RobotAPI/libraries/aron/core/Descriptor.h
@@ -36,46 +36,6 @@
 // ArmarX
 #include <RobotAPI/interface/aron.h>
 
-
-/**
- * This file contains basic enums to distinguish aron::data and aron::types and utility functions to generate maps converting the neum to strings or vice versa.
- * Further, this file contains a conversion map from ice_ids to descriptors.
- *
- * Every data- or type-object has a descriptor, containing the correct enum for this object. All aron-variants must be either:
- * DATA:
- *  - Dict
- *  - List
- *  - NDArray
- *  - Int
- *  - Long
- *  - Float
- *  - Double
- *  - String
- *  - Bool
- *
- * TYPE:
- *  - Object
- *  - Dict
- *  - List
- *  - Pair
- *  - Tuple
- *  - NDArray
- *  - Matrix
- *  - Quaternion
- *  - Image
- *  - Pointcloud
- *  - Int Enum
- *  - Int
- *  - Long
- *  - Float
- *  - Double
- *  - String
- *  - Bool
- *  - DateTime
- *
- *  A variant should never have eUnknown as its internal type (The enums are const and only set on construction).
- *  If you want to execute a specific function for a specific variant, please refer to the visitor implementation.
- */
 namespace armarx::aron::conversion::util
 {
     template <class T1, class T2>
@@ -106,59 +66,57 @@ namespace armarx::aron::type
 {
     const std::vector<type::Maybe> AllMaybeTypes =
     {
-        type::Maybe::eNone,
-        type::Maybe::eOptional,
-        type::Maybe::eRawPointer,
-        type::Maybe::eSharedPointer,
-        type::Maybe::eUniquePointer
+        type::Maybe::NONE,
+        type::Maybe::OPTIONAL,
+        type::Maybe::RAW_PTR,
+        type::Maybe::SHARED_PTR,
+        type::Maybe::UNIQUE_PTR
     };
 
     enum class Descriptor
     {
-        eList,
-        eObject,
-        eTuple,
-        ePair,
-        eDict,
-        eNDArray,
-        eMatrix,
-        eQuaternion,
-        ePointCloud,
-        eImage,
-        eIntEnum,
-        eInt,
-        eLong,
-        eFloat,
-        eDouble,
-        eString,
-        eBool,
-        eDateTime,
-        eAnyObject,
-        eUnknown = -1
+        LIST,
+        OBJECT,
+        TUPLE,
+        PAIR,
+        DICT,
+        NDARRAY,
+        MATRIX,
+        QUATERNION,
+        POINTCLOUD,
+        IMAGE,
+        INT_ENUM,
+        INT,
+        LONG,
+        FLOAT,
+        DOUBLE,
+        BOOL,
+        STRING,
+        ANY_OBJECT,
+        UNKNOWN = -1
     };
 
     const std::vector<type::Descriptor> AllDescriptors =
     {
-        Descriptor::eList,
-        Descriptor::eObject,
-        Descriptor::eTuple,
-        Descriptor::ePair,
-        Descriptor::eDict,
-        Descriptor::eNDArray,
-        Descriptor::eMatrix,
-        Descriptor::eQuaternion,
-        Descriptor::ePointCloud,
-        Descriptor::eImage,
-        Descriptor::eIntEnum,
-        Descriptor::eInt,
-        Descriptor::eLong,
-        Descriptor::eFloat,
-        Descriptor::eDouble,
-        Descriptor::eString,
-        Descriptor::eBool,
-        Descriptor::eDateTime,
-        Descriptor::eAnyObject,
-        Descriptor::eUnknown
+        Descriptor::LIST,
+        Descriptor::OBJECT,
+        Descriptor::TUPLE,
+        Descriptor::PAIR,
+        Descriptor::DICT,
+        Descriptor::NDARRAY,
+        Descriptor::MATRIX,
+        Descriptor::QUATERNION,
+        Descriptor::POINTCLOUD,
+        Descriptor::IMAGE,
+        Descriptor::INT_ENUM,
+        Descriptor::INT,
+        Descriptor::LONG,
+        Descriptor::FLOAT,
+        Descriptor::DOUBLE,
+        Descriptor::BOOL,
+        Descriptor::STRING,
+        Descriptor::ANY_OBJECT,
+        Descriptor::UNKNOWN
     };
 
     namespace defaultconversion::string
@@ -166,37 +124,36 @@ namespace armarx::aron::type
         // Maybe
         const std::map<type::Maybe, std::string> Maybe2String =
         {
-            {Maybe::eNone, "armarx::aron::type::Maybe::eNone"},
-            {Maybe::eRawPointer, "armarx::aron::type::Maybe::eRawPointer"},
-            {Maybe::eSharedPointer, "armarx::aron::type::Maybe::eSharedPointer"},
-            {Maybe::eUniquePointer, "armarx::aron::type::Maybe::eUniquePointer"},
-            {Maybe::eOptional, "armarx::aron::type::Maybe::eOptional"}
+            {Maybe::NONE, "armarx::aron::type::Maybe::NONE"},
+            {Maybe::RAW_PTR, "armarx::aron::type::Maybe::RAW_PTR"},
+            {Maybe::SHARED_PTR, "armarx::aron::type::Maybe::SHARED_PTR"},
+            {Maybe::UNIQUE_PTR, "armarx::aron::type::Maybe::UNIQUE_PTR"},
+            {Maybe::OPTIONAL, "armarx::aron::type::Maybe::OPTIONAL"}
         };
 
         // Descriptor
         const std::map<type::Descriptor, std::string> Descriptor2String =
         {
-            {Descriptor::eList, "armarx::aron::type::Descriptor::eList"},
-            {Descriptor::eObject, "armarx::aron::type::Descriptor::eObject"},
-            {Descriptor::eDict, "armarx::aron::type::Descriptor::eDict"},
-            {Descriptor::ePair, "armarx::aron::type::Descriptor::ePair"},
-            {Descriptor::eTuple, "armarx::aron::type::Descriptor::eTuple"},
-            {Descriptor::eNDArray, "armarx::aron::type::Descriptor::eNDArray"},
-            {Descriptor::eMatrix, "armarx::aron::type::Descriptor::eMatrix"},
-            {Descriptor::eQuaternion, "armarx::aron::type::Descriptor::eQuaternion"},
-            {Descriptor::eImage, "armarx::aron::type::Descriptor::eImage"},
-            {Descriptor::ePointCloud, "armarx::aron::type::Descriptor::ePointCloud"},
-            {Descriptor::eNDArray, "armarx::aron::type::Descriptor::eNDArray"},
-            {Descriptor::eIntEnum, "armarx::aron::type::Descriptor::eIntEnum"},
-            {Descriptor::eInt, "armarx::aron::type::Descriptor::eInt"},
-            {Descriptor::eLong, "armarx::aron::type::Descriptor::eLong"},
-            {Descriptor::eFloat, "armarx::aron::type::Descriptor::eFloat"},
-            {Descriptor::eDouble, "armarx::aron::type::Descriptor::eDouble"},
-            {Descriptor::eString, "armarx::aron::type::Descriptor::eString"},
-            {Descriptor::eBool, "armarx::aron::type::Descriptor::eBool"},
-            {Descriptor::eDateTime, "armarx::aron::type::Descriptor::eDateTime"},
-            {Descriptor::eAnyObject, "armarx::aron::type::Descriptor::eAnyObject"},
-            {Descriptor::eUnknown, "armarx::aron::type::Descriptor::eUnknown"}
+            {Descriptor::LIST, "armarx::aron::type::Descriptor::LIST"},
+            {Descriptor::OBJECT, "armarx::aron::type::Descriptor::OBJECT"},
+            {Descriptor::DICT, "armarx::aron::type::Descriptor::DICT"},
+            {Descriptor::PAIR, "armarx::aron::type::Descriptor::PAIR"},
+            {Descriptor::TUPLE, "armarx::aron::type::Descriptor::TUPLE"},
+            {Descriptor::NDARRAY, "armarx::aron::type::Descriptor::NDARRAY"},
+            {Descriptor::MATRIX, "armarx::aron::type::Descriptor::MATRIX"},
+            {Descriptor::QUATERNION, "armarx::aron::type::Descriptor::QUATERNION"},
+            {Descriptor::IMAGE, "armarx::aron::type::Descriptor::IMAGE"},
+            {Descriptor::POINTCLOUD, "armarx::aron::type::Descriptor::POINTCLOUD"},
+            {Descriptor::NDARRAY, "armarx::aron::type::Descriptor::NDARRAY"},
+            {Descriptor::INT_ENUM, "armarx::aron::type::Descriptor::INT_ENUM"},
+            {Descriptor::INT, "armarx::aron::type::Descriptor::INT"},
+            {Descriptor::LONG, "armarx::aron::type::Descriptor::LONG"},
+            {Descriptor::FLOAT, "armarx::aron::type::Descriptor::FLOAT"},
+            {Descriptor::DOUBLE, "armarx::aron::type::Descriptor::DOUBLE"},
+            {Descriptor::BOOL, "armarx::aron::type::Descriptor::BOOL"},
+            {Descriptor::STRING, "armarx::aron::type::Descriptor::STRING"},
+            {Descriptor::ANY_OBJECT, "armarx::aron::type::Descriptor::ANY_OBJECT"},
+            {Descriptor::UNKNOWN, "armarx::aron::type::Descriptor::UNKNOWN"}
         };
     }
 
@@ -204,25 +161,24 @@ namespace armarx::aron::type
     {
         // hash type
         const std::map<size_t, Descriptor> TypeId2Descriptor = {
-            {typeid(aron::type::dto::List).hash_code(), Descriptor::eList},
-            {typeid(aron::type::dto::AronObject).hash_code(), Descriptor::eObject},
-            {typeid(aron::type::dto::Tuple).hash_code(), Descriptor::eTuple},
-            {typeid(aron::type::dto::Pair).hash_code(), Descriptor::ePair},
-            {typeid(aron::type::dto::Dict).hash_code(), Descriptor::eDict},
-            {typeid(aron::type::dto::NDArray).hash_code(), Descriptor::eNDArray},
-            {typeid(aron::type::dto::Matrix).hash_code(), Descriptor::eMatrix},
-            {typeid(aron::type::dto::Quaternion).hash_code(), Descriptor::eQuaternion},
-            {typeid(aron::type::dto::PointCloud).hash_code(), Descriptor::ePointCloud},
-            {typeid(aron::type::dto::Image).hash_code(), Descriptor::eImage},
-            {typeid(aron::type::dto::IntEnum).hash_code(), Descriptor::eIntEnum},
-            {typeid(aron::type::dto::AronInt).hash_code(), Descriptor::eInt},
-            {typeid(aron::type::dto::AronFloat).hash_code(), Descriptor::eFloat},
-            {typeid(aron::type::dto::AronLong).hash_code(), Descriptor::eLong},
-            {typeid(aron::type::dto::AronDouble).hash_code(), Descriptor::eDouble},
-            {typeid(aron::type::dto::AronString).hash_code(), Descriptor::eString},
-            {typeid(aron::type::dto::AronBool).hash_code(), Descriptor::eBool},
-            {typeid(aron::type::dto::AronDateTime).hash_code(), Descriptor::eDateTime},
-            {typeid(aron::type::dto::AnyObject).hash_code(), Descriptor::eAnyObject}
+            {typeid(aron::type::dto::List).hash_code(), Descriptor::LIST},
+            {typeid(aron::type::dto::AronObject).hash_code(), Descriptor::OBJECT},
+            {typeid(aron::type::dto::Tuple).hash_code(), Descriptor::TUPLE},
+            {typeid(aron::type::dto::Pair).hash_code(), Descriptor::PAIR},
+            {typeid(aron::type::dto::Dict).hash_code(), Descriptor::DICT},
+            {typeid(aron::type::dto::NDArray).hash_code(), Descriptor::NDARRAY},
+            {typeid(aron::type::dto::Matrix).hash_code(), Descriptor::MATRIX},
+            {typeid(aron::type::dto::Quaternion).hash_code(), Descriptor::QUATERNION},
+            {typeid(aron::type::dto::PointCloud).hash_code(), Descriptor::POINTCLOUD},
+            {typeid(aron::type::dto::Image).hash_code(), Descriptor::IMAGE},
+            {typeid(aron::type::dto::IntEnum).hash_code(), Descriptor::INT_ENUM},
+            {typeid(aron::type::dto::AronInt).hash_code(), Descriptor::INT},
+            {typeid(aron::type::dto::AronLong).hash_code(), Descriptor::LONG},
+            {typeid(aron::type::dto::AronFloat).hash_code(), Descriptor::FLOAT},
+            {typeid(aron::type::dto::AronDouble).hash_code(), Descriptor::DOUBLE},
+            {typeid(aron::type::dto::AronString).hash_code(), Descriptor::STRING},
+            {typeid(aron::type::dto::AronBool).hash_code(), Descriptor::BOOL},
+            {typeid(aron::type::dto::AnyObject).hash_code(), Descriptor::ANY_OBJECT}
         };
     }
 
@@ -236,30 +192,30 @@ namespace armarx::aron::data
 {
     enum class Descriptor
     {
-        eList,
-        eDict,
-        eNDArray,
-        eInt,
-        eLong,
-        eFloat,
-        eDouble,
-        eString,
-        eBool,
-        eUnknown = -1
+        LIST,
+        DICT,
+        NDARRAY,
+        INT,
+        LONG,
+        FLOAT,
+        DOUBLE,
+        STRING,
+        BOOL,
+        UNKNOWN = -1
     };
 
     const std::vector<data::Descriptor> AllDescriptors =
     {
-        Descriptor::eList,
-        Descriptor::eDict,
-        Descriptor::eNDArray,
-        Descriptor::eInt,
-        Descriptor::eLong,
-        Descriptor::eFloat,
-        Descriptor::eDouble,
-        Descriptor::eString,
-        Descriptor::eBool,
-        Descriptor::eUnknown
+        Descriptor::LIST,
+        Descriptor::DICT,
+        Descriptor::NDARRAY,
+        Descriptor::INT,
+        Descriptor::LONG,
+        Descriptor::FLOAT,
+        Descriptor::DOUBLE,
+        Descriptor::STRING,
+        Descriptor::BOOL,
+        Descriptor::UNKNOWN
     };
 
     namespace defaultconversion::string
@@ -267,16 +223,16 @@ namespace armarx::aron::data
         // Descriptor
         const std::map<data::Descriptor, std::string> Descriptor2String =
         {
-            {Descriptor::eList, "armarx::aron::data::Descriptor::eList"},
-            {Descriptor::eDict, "armarx::aron::data::Descriptor::eDict"},
-            {Descriptor::eNDArray, "armarx::aron::data::Descriptor::eNDArray"},
-            {Descriptor::eInt, "armarx::aron::data::Descriptor::eInt"},
-            {Descriptor::eLong, "armarx::aron::data::Descriptor::eLong"},
-            {Descriptor::eFloat, "armarx::aron::data::Descriptor::eFloat"},
-            {Descriptor::eDouble, "armarx::aron::data::Descriptor::eDouble"},
-            {Descriptor::eString, "armarx::aron::data::Descriptor::eString"},
-            {Descriptor::eBool, "armarx::aron::data::Descriptor::eBool"},
-            {Descriptor::eUnknown, "armarx::aron::data::Descriptor::eUnknown"}
+            {Descriptor::LIST, "armarx::aron::data::Descriptor::LIST"},
+            {Descriptor::DICT, "armarx::aron::data::Descriptor::DICT"},
+            {Descriptor::NDARRAY, "armarx::aron::data::Descriptor::NDARRAY"},
+            {Descriptor::INT, "armarx::aron::data::Descriptor::INT"},
+            {Descriptor::LONG, "armarx::aron::data::Descriptor::LONG"},
+            {Descriptor::FLOAT, "armarx::aron::data::Descriptor::FLOAT"},
+            {Descriptor::DOUBLE, "armarx::aron::data::Descriptor::DOUBLE"},
+            {Descriptor::STRING, "armarx::aron::data::Descriptor::STRING"},
+            {Descriptor::BOOL, "armarx::aron::data::Descriptor::BOOL"},
+            {Descriptor::UNKNOWN, "armarx::aron::data::Descriptor::UNKNOWN"}
         };
     }
 
@@ -284,15 +240,15 @@ namespace armarx::aron::data
     {
         // TypeID
         const std::map<size_t, Descriptor> TypeId2Descriptor = {
-            {typeid(aron::data::dto::List).hash_code(), Descriptor::eList},
-            {typeid(aron::data::dto::Dict).hash_code(), Descriptor::eDict},
-            {typeid(aron::data::dto::NDArray).hash_code(), Descriptor::eNDArray},
-            {typeid(aron::data::dto::AronInt).hash_code(), Descriptor::eInt},
-            {typeid(aron::data::dto::AronFloat).hash_code(), Descriptor::eFloat},
-            {typeid(aron::data::dto::AronLong).hash_code(), Descriptor::eLong},
-            {typeid(aron::data::dto::AronDouble).hash_code(), Descriptor::eDouble},
-            {typeid(aron::data::dto::AronString).hash_code(), Descriptor::eString},
-            {typeid(aron::data::dto::AronBool).hash_code(), Descriptor::eBool},
+            {typeid(aron::data::dto::List).hash_code(), Descriptor::LIST},
+            {typeid(aron::data::dto::Dict).hash_code(), Descriptor::DICT},
+            {typeid(aron::data::dto::NDArray).hash_code(), Descriptor::NDARRAY},
+            {typeid(aron::data::dto::AronInt).hash_code(), Descriptor::INT},
+            {typeid(aron::data::dto::AronFloat).hash_code(), Descriptor::FLOAT},
+            {typeid(aron::data::dto::AronLong).hash_code(), Descriptor::LONG},
+            {typeid(aron::data::dto::AronDouble).hash_code(), Descriptor::DOUBLE},
+            {typeid(aron::data::dto::AronString).hash_code(), Descriptor::STRING},
+            {typeid(aron::data::dto::AronBool).hash_code(), Descriptor::BOOL},
         };
     }
 
@@ -303,48 +259,46 @@ namespace armarx::aron::data
 
     namespace defaultconversion
     {
+        // Useful if data is present but no type information. Try to infer type from data.
         const std::map<Descriptor, aron::type::Descriptor> Data2TypeDescriptor = {
-            {Descriptor::eList, aron::type::Descriptor::eList},
-            {Descriptor::eDict, aron::type::Descriptor::eDict},
-            {Descriptor::eNDArray, aron::type::Descriptor::eNDArray},
-            {Descriptor::eInt, aron::type::Descriptor::eInt},
-            {Descriptor::eFloat, aron::type::Descriptor::eFloat},
-            {Descriptor::eLong, aron::type::Descriptor::eLong},
-            {Descriptor::eDouble, aron::type::Descriptor::eDouble},
-            {Descriptor::eString, aron::type::Descriptor::eString},
-            {Descriptor::eBool, aron::type::Descriptor::eBool},
-            {Descriptor::eUnknown, aron::type::Descriptor::eUnknown}
+            {Descriptor::LIST, aron::type::Descriptor::LIST},
+            {Descriptor::DICT, aron::type::Descriptor::DICT},
+            {Descriptor::NDARRAY, aron::type::Descriptor::NDARRAY},
+            {Descriptor::INT, aron::type::Descriptor::INT},
+            {Descriptor::FLOAT, aron::type::Descriptor::FLOAT},
+            {Descriptor::LONG, aron::type::Descriptor::LONG},
+            {Descriptor::DOUBLE, aron::type::Descriptor::DOUBLE},
+            {Descriptor::STRING, aron::type::Descriptor::STRING},
+            {Descriptor::BOOL, aron::type::Descriptor::BOOL},
+            {Descriptor::UNKNOWN, aron::type::Descriptor::UNKNOWN}
         };
 
         const std::map<aron::type::Descriptor, Descriptor> Type2DataDescriptor = {
             // containers
-            {aron::type::Descriptor::eList, Descriptor::eList},
-            {aron::type::Descriptor::eObject, Descriptor::eDict},
-            {aron::type::Descriptor::eTuple, Descriptor::eList},
-            {aron::type::Descriptor::ePair, Descriptor::eList},
-            {aron::type::Descriptor::eDict, Descriptor::eDict},
-
-            // everything which gets an object
-            {aron::type::Descriptor::eDateTime, Descriptor::eDict},
+            {aron::type::Descriptor::LIST, Descriptor::LIST},
+            {aron::type::Descriptor::OBJECT, Descriptor::DICT},
+            {aron::type::Descriptor::TUPLE, Descriptor::LIST},
+            {aron::type::Descriptor::PAIR, Descriptor::LIST},
+            {aron::type::Descriptor::DICT, Descriptor::DICT},
 
             // everything which gets an ndarray
-            {aron::type::Descriptor::eNDArray, Descriptor::eNDArray},
-            {aron::type::Descriptor::eMatrix, Descriptor::eNDArray},
-            {aron::type::Descriptor::eQuaternion, Descriptor::eNDArray},
-            {aron::type::Descriptor::ePointCloud, Descriptor::eNDArray},
-            {aron::type::Descriptor::eImage, Descriptor::eNDArray},
+            {aron::type::Descriptor::NDARRAY, Descriptor::NDARRAY},
+            {aron::type::Descriptor::MATRIX, Descriptor::NDARRAY},
+            {aron::type::Descriptor::QUATERNION, Descriptor::NDARRAY},
+            {aron::type::Descriptor::POINTCLOUD, Descriptor::NDARRAY},
+            {aron::type::Descriptor::IMAGE, Descriptor::NDARRAY},
 
             // enums
-            {aron::type::Descriptor::eIntEnum, Descriptor::eInt},
+            {aron::type::Descriptor::INT_ENUM, Descriptor::INT},
 
             // primitives
-            {aron::type::Descriptor::eInt, Descriptor::eInt},
-            {aron::type::Descriptor::eLong, Descriptor::eLong},
-            {aron::type::Descriptor::eFloat, Descriptor::eFloat},
-            {aron::type::Descriptor::eDouble, Descriptor::eDouble},
-            {aron::type::Descriptor::eString, Descriptor::eString},
-            {aron::type::Descriptor::eBool, Descriptor::eBool},
-            {aron::type::Descriptor::eUnknown,  Descriptor::eUnknown},
+            {aron::type::Descriptor::INT, Descriptor::INT},
+            {aron::type::Descriptor::LONG, Descriptor::LONG},
+            {aron::type::Descriptor::FLOAT, Descriptor::FLOAT},
+            {aron::type::Descriptor::DOUBLE, Descriptor::DOUBLE},
+            {aron::type::Descriptor::STRING, Descriptor::STRING},
+            {aron::type::Descriptor::BOOL, Descriptor::BOOL},
+            {aron::type::Descriptor::UNKNOWN,  Descriptor::UNKNOWN},
         };
     }
 }
diff --git a/source/RobotAPI/libraries/aron/core/Path.cpp b/source/RobotAPI/libraries/aron/core/Path.cpp
index bcc51b5d3..8218b431b 100644
--- a/source/RobotAPI/libraries/aron/core/Path.cpp
+++ b/source/RobotAPI/libraries/aron/core/Path.cpp
@@ -33,7 +33,6 @@ namespace armarx::aron
         rootIdentifier("_ARON"),
         delimeter("->")
     {
-
     }
 
     Path::Path(const std::vector<std::string>& p) :
diff --git a/source/RobotAPI/libraries/aron/core/aron_conversions.cpp b/source/RobotAPI/libraries/aron/core/aron_conversions.cpp
new file mode 100644
index 000000000..add7a1803
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/core/aron_conversions.cpp
@@ -0,0 +1,6 @@
+#include "aron_conversions.h"
+
+namespace armarx::aron
+{
+
+}
diff --git a/source/RobotAPI/libraries/aron/core/aron_conversions.h b/source/RobotAPI/libraries/aron/core/aron_conversions.h
new file mode 100644
index 000000000..3e454465e
--- /dev/null
+++ b/source/RobotAPI/libraries/aron/core/aron_conversions.h
@@ -0,0 +1,391 @@
+#pragma once
+
+#include <map>
+#include <memory>
+#include <optional>
+#include <vector>
+
+namespace armarx::aron
+{
+
+    /**
+     * Framework for converting ARON DTOs (Data Transfer Objects) to C++ BOs
+     * (Business Objects) and back.
+     *
+     * To allow conversion between custom ARON and C++ types, declare two
+     * functions in the namespace of the BO:
+     *
+     * @code
+     * // aron_conversions.h
+     *
+     * namespace bo_namespace
+     * {
+     *     void toAron(arondto::MyObject& dto, const MyObject& bo);
+     *     void fromAron(const arondto::MyObject& dto, MyObject& bo);
+     * }
+     * @endcode
+     *
+     * Note that the DTO always comes first, and the target object is
+     * non-const.
+     *
+     * In the implementation,
+     *
+     *
+     * @code
+     * // aron_conversions.cpp
+     *
+     * #include "aron_conversions.h"
+     * #include <Path/to/MyValue/aron_conversions.h>
+     *
+     * void bo_namespace::toAron(arondto::MyObject& dto, const MyObject& bo)
+     * {
+     *     dto.name = bo.name;
+     *     toAron(dto.myValue, bo.myValue);
+     * }
+     *
+     * void bo_namespace::fromAron(const arondto::MyObject& dto, MyObject& bo)
+     * {
+     *     bo.name = dto.name;
+     *     fromAron(dto.myValue, bo.myValue);
+     * }
+     * @endcode
+     */
+
+    // Same type
+    template <class T>
+    void toAron(T& dto, const T& bo)
+    {
+        dto = bo;
+    }
+    template <class T>
+    void fromAron(const T& dto, T& bo)
+    {
+        bo = dto;
+    }
+
+
+    // Generic return version
+
+    template <class DtoT, class BoT>
+    DtoT toAron(const BoT& bo)
+    {
+        DtoT dto;
+        toAron(dto, bo);
+        return dto;
+    }
+    template <class BoT, class DtoT>
+    BoT fromAron(const DtoT& dto)
+    {
+        BoT bo;
+        fromAron(dto, bo);
+        return bo;
+    }
+
+
+
+
+
+
+
+    // std::unique_ptr
+
+    template <class DtoT, class BoT>
+    void toAron(DtoT& dto, const std::unique_ptr<BoT>& bo)
+    {
+        if (bo)
+        {
+            toAron(dto, *bo);
+        }
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const DtoT& dto, std::unique_ptr<BoT>& bo)
+    {
+        bo = std::make_unique<BoT>();
+        fromAron(dto, *bo);
+    }
+
+
+    // std::optional
+
+    template <class DtoT, class BoT>
+    void toAron(std::optional<DtoT>& dto, const std::optional<BoT>& bo)
+    {
+        if (bo.has_value())
+        {
+            dto = DtoT{};
+            toAron(*dto, *bo);
+        }
+        else
+        {
+            dto = std::nullopt;
+        }
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const std::optional<DtoT>& dto, std::optional<BoT>& bo)
+    {
+        if (dto.has_value())
+        {
+            bo = BoT{};
+            fromAron(*dto, *bo);
+        }
+        else
+        {
+            bo = std::nullopt;
+        }
+    }
+
+    // Flag-controlled optional
+    template <class DtoT, class BoT>
+    void toAron(DtoT& dto, bool& dtoValid, const BoT& bo, bool boValid)
+    {
+        dtoValid = boValid;
+        if (boValid)
+        {
+            toAron(dto, bo);
+        }
+        else
+        {
+            dto = {};
+        }
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const DtoT& dto, bool dtoValid, BoT& bo, bool& boValid)
+    {
+        boValid = dtoValid;
+        if (dtoValid)
+        {
+            fromAron(dto, bo);
+        }
+        else
+        {
+            bo = {};
+        }
+    }
+
+    template <class DtoT, class BoT>
+    void toAron(DtoT& dto, bool& dtoValid, const std::optional<BoT>& bo)
+    {
+        dtoValid = bo.has_value();
+        if (dtoValid)
+        {
+            toAron(dto, *bo);
+        }
+        else
+        {
+            dto = {};
+        }
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const DtoT& dto, bool dtoValid, std::optional<BoT>& bo)
+    {
+        if (dtoValid)
+        {
+            bo = BoT{};
+            fromAron(dto, *bo);
+        }
+        else
+        {
+            bo = std::nullopt;
+        }
+    }
+
+    // Helper concept to avoid ambiguities
+    template<typename DtoT, typename BoT>
+    concept DtoAndBoAreSame = std::is_same<DtoT, BoT>::value;
+
+
+    // std::vector
+
+    template <class DtoT, class BoT>
+    requires (!DtoAndBoAreSame<DtoT, BoT>)
+    void toAron(std::vector<DtoT>& dtos, const std::vector<BoT>& bos)
+    {
+        dtos.clear();
+        dtos.reserve(bos.size());
+        for (const auto& bo : bos)
+        {
+            toAron(dtos.emplace_back(), bo);
+        }
+    }
+    template <class DtoT, class BoT>
+    requires (!DtoAndBoAreSame<DtoT, BoT>)
+    void fromAron(const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
+    {
+        bos.clear();
+        bos.reserve(dtos.size());
+        for (const auto& dto : dtos)
+        {
+            fromAron(dto, bos.emplace_back());
+        }
+    }
+
+    template <class DtoT, class BoT>
+    requires (!DtoAndBoAreSame<DtoT, BoT>)
+    std::vector<DtoT> toAron(const std::vector<BoT>& bos)
+    {
+        std::vector<DtoT> dtos;
+        toAron(dtos, bos);
+        return dtos;
+    }
+
+
+    // std::map
+
+    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
+    requires (!(DtoAndBoAreSame<DtoKeyT, BoKeyT> and DtoAndBoAreSame<DtoValueT, BoValueT>))
+    void toAron(std::map<DtoKeyT, DtoValueT>& dtoMap,
+                const std::map<BoKeyT, BoValueT>& boMap)
+    {
+        dtoMap.clear();
+        for (const auto& [boKey, boValue] : boMap)
+        {
+            DtoKeyT dtoKey;
+            toAron(dtoKey, boKey);
+            auto [it, _] = dtoMap.emplace(std::move(dtoKey), DtoValueT{});
+            toAron(it->second, boValue);
+        }
+    }
+    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
+    requires (!(DtoAndBoAreSame<DtoKeyT, BoKeyT> and DtoAndBoAreSame<DtoValueT, BoValueT>))
+    void fromAron(const std::map<DtoKeyT, DtoValueT>& dtoMap,
+                  std::map<BoKeyT, BoValueT>& boMap)
+    {
+        boMap.clear();
+        for (const auto& [dtoKey, dtoValue] : dtoMap)
+        {
+            BoKeyT boKey;
+            fromAron(dtoKey, boKey);
+            auto [it, _] = boMap.emplace(boKey, BoValueT{});
+            fromAron(dtoValue, it->second);
+        }
+    }
+
+
+    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
+    requires (!(DtoAndBoAreSame<DtoKeyT, BoKeyT> and DtoAndBoAreSame<DtoValueT, BoValueT>))
+    std::map<DtoKeyT, DtoValueT> toAron(const std::map<BoKeyT, BoValueT>& boMap)
+    {
+        std::map<DtoKeyT, DtoValueT> dtoMap;
+        toAron(dtoMap, boMap);
+        return dtoMap;
+    }
+}
+
+namespace armarx
+{
+    // Same type
+    template <class T>
+    void toAron(T& dto, const T& bo)
+    {
+        armarx::aron::toAron(dto, bo);
+    }
+    template <class T>
+    void fromAron(const T& dto, T& bo)
+    {
+        armarx::aron::fromAron(dto, bo);
+    }
+
+
+    // Generic return version
+    template <class DtoT, class BoT>
+    DtoT toAron(const BoT& bo)
+    {
+        return armarx::aron::toAron<DtoT, BoT>(bo);
+    }
+    template <class BoT, class DtoT>
+    BoT fromAron(const DtoT& dto)
+    {
+        return armarx::aron::fromAron<BoT, DtoT>(dto);
+    }
+
+    // std::unique_ptr
+    template <class DtoT, class BoT>
+    void toAron(DtoT& dto, const std::unique_ptr<BoT>& bo)
+    {
+        armarx::aron::toAron(dto, bo);
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const DtoT& dto, std::unique_ptr<BoT>& bo)
+    {
+        armarx::aron::fromAron(dto, bo);
+    }
+
+    // std::optional
+    template <class DtoT, class BoT>
+    void toAron(std::optional<DtoT>& dto, const std::optional<BoT>& bo)
+    {
+        armarx::aron::toAron(dto, bo);
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const std::optional<DtoT>& dto, std::optional<BoT>& bo)
+    {
+        armarx::aron::fromAron(dto, bo);
+    }
+
+    // Flag-controlled optional
+    template <class DtoT, class BoT>
+    void toAron(DtoT& dto, bool& dtoValid, const BoT& bo, bool boValid)
+    {
+        armarx::aron::toAron(dto, dtoValid, bo, boValid);
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const DtoT& dto, bool dtoValid, BoT& bo, bool& boValid)
+    {
+        armarx::aron::fromAron(dto, dtoValid, bo, boValid);
+    }
+
+    template <class DtoT, class BoT>
+    void toAron(DtoT& dto, bool& dtoValid, const std::optional<BoT>& bo)
+    {
+        armarx::aron::toAron(dto, dtoValid, bo);
+    }
+    template <class DtoT, class BoT>
+    void fromAron(const DtoT& dto, bool dtoValid, std::optional<BoT>& bo)
+    {
+        armarx::aron::fromAron(dto, dtoValid, bo);
+    }
+
+    // std::vector
+    template <class DtoT, class BoT>
+    requires (!aron::DtoAndBoAreSame<DtoT, BoT>)
+    void toAron(std::vector<DtoT>& dtos, const std::vector<BoT>& bos)
+    {
+        armarx::aron::toAron(dtos, bos);
+    }
+    template <class DtoT, class BoT>
+    requires (!aron::DtoAndBoAreSame<DtoT, BoT>)
+    void fromAron(const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
+    {
+        armarx::aron::fromAron(dtos, bos);
+    }
+
+    template <class DtoT, class BoT>
+    requires (!aron::DtoAndBoAreSame<DtoT, BoT>)
+    std::vector<DtoT> toAron(const std::vector<BoT>& bos)
+    {
+        return armarx::aron::toAron<DtoT, BoT>(bos);
+    }
+
+
+    // std::map
+    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
+    requires (!(aron::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::DtoAndBoAreSame<DtoValueT, BoValueT>))
+    void toAron(std::map<DtoKeyT, DtoValueT>& dtoMap, const std::map<BoKeyT, BoValueT>& boMap)
+    {
+        armarx::aron::toAron(dtoMap, boMap);
+    }
+    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
+    requires (!(aron::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::DtoAndBoAreSame<DtoValueT, BoValueT>))
+    void fromAron(const std::map<DtoKeyT, DtoValueT>& dtoMap, std::map<BoKeyT, BoValueT>& boMap)
+    {
+        armarx::aron::fromAron(dtoMap, boMap);
+    }
+
+
+    template <class DtoKeyT, class DtoValueT, class BoKeyT, class BoValueT>
+    requires (!(aron::DtoAndBoAreSame<DtoKeyT, BoKeyT> and aron::DtoAndBoAreSame<DtoValueT, BoValueT>))
+    std::map<DtoKeyT, DtoValueT> toAron(const std::map<BoKeyT, BoValueT>& boMap)
+    {
+        armarx::aron::toAron<DtoKeyT, DtoValueT, BoKeyT, BoValueT>(boMap);
+    }
+}
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.cpp
deleted file mode 100644
index 65a7eb0aa..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Factory.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-// STD/STL
-
-// Header
-#include "Factory.h"
-
-// ArmarX
-#include "All.h"
-#include "enum/All.h"
-
-namespace armarx::aron::codegenerator::cpp
-{
-    // Access method
-    std::unique_ptr<Generator> GeneratorFactory::create(const type::Variant& n, const Path& path) const
-    {
-        auto desc = n.getDescriptor();
-        switch(desc)
-        {
-            case type::Descriptor::eList: return std::make_unique<generator::List>(dynamic_cast<const type::List&>(n));
-            case type::Descriptor::eDict: return std::make_unique<generator::Dict>(dynamic_cast<const type::Dict&>(n));
-            case type::Descriptor::eObject: return std::make_unique<generator::Object>(dynamic_cast<const type::Object&>(n));
-            case type::Descriptor::eTuple: return std::make_unique<generator::Tuple>(dynamic_cast<const type::Tuple&>(n));
-            case type::Descriptor::ePair: return std::make_unique<generator::Pair>(dynamic_cast<const type::Pair&>(n));
-            case type::Descriptor::eNDArray: return std::make_unique<generator::NDArray>(dynamic_cast<const type::NDArray&>(n));
-            case type::Descriptor::eMatrix: return std::make_unique<generator::Matrix>(dynamic_cast<const type::Matrix&>(n));
-            case type::Descriptor::eQuaternion: return std::make_unique<generator::Quaternion>(dynamic_cast<const type::Quaternion&>(n));
-            case type::Descriptor::eImage: return std::make_unique<generator::Image>(dynamic_cast<const type::Image&>(n));
-            case type::Descriptor::ePointCloud: return std::make_unique<generator::PointCloud>(dynamic_cast<const type::PointCloud&>(n));
-            case type::Descriptor::eIntEnum: return std::make_unique<generator::IntEnum>(dynamic_cast<const type::IntEnum&>(n));
-            case type::Descriptor::eInt: return std::make_unique<generator::Int>(dynamic_cast<const type::Int&>(n));
-            case type::Descriptor::eLong: return std::make_unique<generator::Long>(dynamic_cast<const type::Long&>(n));
-            case type::Descriptor::eFloat: return std::make_unique<generator::Float>(dynamic_cast<const type::Float&>(n));
-            case type::Descriptor::eDouble: return std::make_unique<generator::Double>(dynamic_cast<const type::Double&>(n));
-            case type::Descriptor::eString: return std::make_unique<generator::String>(dynamic_cast<const type::String&>(n));
-            case type::Descriptor::eBool: return std::make_unique<generator::Bool>(dynamic_cast<const type::Bool&>(n));
-            case type::Descriptor::eDateTime: return std::make_unique<generator::DateTime>(dynamic_cast<const type::DateTime&>(n));
-            case type::Descriptor::eAnyObject: return std::make_unique<generator::AnyObject>(dynamic_cast<const type::AnyObject&>(n));
-            case type::Descriptor::eUnknown: break;
-        }
-        throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Cannot create a generator", std::to_string((int) desc), path);
-    }
-
-}
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.cpp
deleted file mode 100644
index e4cb33a24..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/container/Object.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-// Header
-#include "Object.h"
-
-#include <SimoxUtility/meta/type_name.h>
-#include <SimoxUtility/algorithm/vector.hpp>
-
-
-namespace armarx::aron::codegenerator::cpp::generator
-{
-    // constructors
-    Object::Object(const type::Object& e) :
-        detail::ContainerGenerator<type::Object, Object>(
-            e.getObjectNameWithTemplateInstantiations(),
-            e.getObjectNameWithTemplates(),
-            simox::meta::get_type_name<data::dto::Dict>(),
-            simox::meta::get_type_name<type::dto::AronObject>(), e)
-    {
-    }
-
-
-    std::vector<std::string> Object::getRequiredIncludes() const
-    {
-        std::vector<std::string> ret;
-        for (const auto& [key, child] : type.getMemberTypes())
-        {
-            (void) key;
-            auto child_s = FromAronType(*child);
-            ret = simox::alg::appended(ret, child_s->getRequiredIncludes());
-        }
-        return ret;
-    }
-
-    CppBlockPtr Object::getResetSoftBlock(const std::string& cppAccessor) const
-    {
-        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
-        block_if_data->addLine(cppAccessor + nextEl() + "resetSoft();");
-        return this->resolveMaybeResetSoftBlock(block_if_data, cppAccessor);
-    }
-
-    CppBlockPtr Object::getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const
-    {
-        CppBlockPtr b = std::make_shared<CppBlock>();
-        std::string escaped_accessor = EscapeAccessor(cppAccessor);
-        variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
-
-        std::vector<std::string> templatesQuoted;
-        for (const auto& t : type.getTemplateInstantiations())
-        {
-            templatesQuoted.push_back("\"" + t + "\"");
-        }
-
-        b->addLine("auto " + variantAccessor + " = " + getInstantiatedCppTypename() + "::writeType(" + ARON_WRITER_ACCESSOR + ", " +
-                   "{" + simox::alg::join(templatesQuoted, ", ") + "}, " +
-                   conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
-                   "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
-        return b;
-    }
-
-    CppBlockPtr Object::getWriteBlock(const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const
-    {
-        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
-        std::string escaped_accessor = EscapeAccessor(cppAccessor);
-        variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
-
-        block_if_data->addLine(variantAccessor + " = " + cppAccessor + nextEl() + "write(" + ARON_WRITER_ACCESSOR + ", "+
-                               "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
-        return resolveMaybeWriteBlock(block_if_data, cppAccessor);
-    }
-
-    CppBlockPtr Object::getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const
-    {
-        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
-        if (const auto reset = resolveMaybeGenerator(cppAccessor); !reset.empty())
-        {
-            block_if_data->addLine(reset);
-        }
-        block_if_data->addLine(cppAccessor + nextEl() + "read(" + ARON_READER_ACCESSOR + ", " + variantAccessor + "); // of " + cppAccessor);
-        return resolveMaybeReadBlock(block_if_data, cppAccessor, variantAccessor);
-    }
-}
-
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
deleted file mode 100644
index 04e3b2b79..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/AnyGenerator.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#pragma once
-
-#include "SpecializedGenerator.h"
-
-#include <string>
-
-
-namespace armarx::aron::codegenerator::cpp::generator::detail
-{
-    template<typename typeT, typename DerivedT>
-    class AnyGenerator :
-        public SpecializedGeneratorBase<typeT, DerivedT>
-    {
-    public:
-        using SpecializedGeneratorBase<typeT, DerivedT>::SpecializedGeneratorBase;
-        virtual ~AnyGenerator() = default;
-
-
-        std::vector<std::string> getRequiredIncludes() const override
-        {
-            return {"<RobotAPI/libraries/aron/core/data/converter/variant/VariantConverter.h>"};
-        }
-
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const override
-        {
-            auto block_if_data = std::make_shared<CppBlock>();
-            std::string escaped_accessor = this->EscapeAccessor(cppAccessor);
-            variantAccessor = Generator::ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
-
-            block_if_data->addLine(variantAccessor + " = armarx::aron::data::readAndWrite<armarx::aron::data::FromVariantConverter<WriterT>>(" + cppAccessor + "); // of " + cppAccessor);
-            return block_if_data;
-        }
-
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override
-        {
-            auto block_if_data = std::make_shared<CppBlock>();
-            std::string escaped_accessor = this->EscapeAccessor(cppAccessor);
-
-            block_if_data->addLine(cppAccessor + " = armarx::aron::data::Dict::DynamicCastAndCheck(armarx::aron::data::readAndWrite<aron::data::ToVariantConverter<ReaderT>>(" + variantAccessor + ")); // of " + cppAccessor);
-            return block_if_data;
-        }
-    };
-}
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.cpp
deleted file mode 100644
index 5c1cbccd1..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-// Header
-#include "DtoGenerator.h"
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/All.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/All.h
deleted file mode 100644
index 2641bc405..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/All.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-#include "DateTime.h"
-
-namespace  {
-
-}
-
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.cpp
deleted file mode 100644
index 58586efe4..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#include "DateTime.h"
-
-#include <SimoxUtility/meta/type_name.h>
-
-
-namespace armarx::aron::codegenerator::cpp::generator
-{
-    /* constructors */
-    DateTime::DateTime(const type::DateTime& e) :
-        detail::DtoGenerator<type::DateTime, DateTime>(
-            "armarx::core::time::DateTime",
-            "armarx::core::time::DateTime",
-            simox::meta::get_type_name<data::dto::Dict>(),
-            simox::meta::get_type_name<type::dto::AronDateTime>(),
-            e)
-    {
-    }
-
-    /* virtual implementations */
-    std::vector<std::string> DateTime::getRequiredIncludes() const
-    {
-        return {"<RobotAPI/libraries/aron/common/aron_conversions/time.h>", "<ArmarXCore/core/time.h>", "<ArmarXCore/interface/core/time.h>"};
-    }
-
-    CppBlockPtr DateTime::getWriteTypeBlock(const std::string& typeAccessor, const std::string& accessor, const Path& p, std::string& variantAccessor) const
-    {
-        CppBlockPtr b = std::make_shared<CppBlock>();
-        std::string escaped_accessor = EscapeAccessor(accessor);
-        variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
-
-        b->addLine("auto " + variantAccessor + " = " + ARON_WRITER_ACCESSOR + ".writeDateTime(" + conversion::Maybe2CppString.at(type.getMaybe()) + ", " +
-                   "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + typeAccessor);
-        return b;
-    }
-
-    CppBlockPtr DateTime::getWriteBlock(const std::string& cppAccessor, const Path& p, std::string& variantAccessor) const
-    {
-        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
-        std::string resolved_accessor = resolveMaybeAccessor(cppAccessor);
-        std::string escaped_accessor = EscapeAccessor(cppAccessor);
-        std::string tmp = ARON_VARIABLE_PREFIX + "_" + escaped_accessor + "_timeTmp";
-        variantAccessor = ARON_VARIANT_RETURN_ACCESSOR + "_" + escaped_accessor;
-
-        block_if_data->addLine("auto " + tmp + " = armarx::arondto::DateTime();");
-        block_if_data->addLine("armarx::toAron(" + tmp + ", " + resolved_accessor + ");");
-        block_if_data->addLine(variantAccessor + " = " + tmp + ".write(" + ARON_WRITER_ACCESSOR + ", "+
-                "armarx::aron::Path("+ARON_PATH_ACCESSOR+", {"+simox::alg::join(p.getPath(), ", ")+"})); // of " + cppAccessor);
-
-        return resolveMaybeWriteBlock(block_if_data, cppAccessor);
-    }
-
-    CppBlockPtr DateTime::getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const
-    {
-        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
-        std::string escaped_accessor = EscapeAccessor(cppAccessor);
-        std::string resolved_accessor = resolveMaybeAccessor(cppAccessor);
-        std::string tmp = ARON_VARIABLE_PREFIX + "_" + escaped_accessor + "_timeTmp";
-
-        block_if_data->addLine("auto " + tmp + " = armarx::arondto::DateTime();");
-        block_if_data->addLine(tmp + ".read(" + ARON_READER_ACCESSOR + ", " + variantAccessor + "); // of " + cppAccessor);
-        block_if_data->addLine("armarx::fromAron(" + tmp + ", " + resolved_accessor + ");");
-        return resolveMaybeReadBlock(block_if_data, cppAccessor, cppAccessor);
-    }
-
-}
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.h
deleted file mode 100644
index d81031480..000000000
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/dto/DateTime.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#pragma once
-
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/detail/DtoGenerator.h>
-#include <RobotAPI/libraries/aron/core/type/variant/dto/DateTime.h>
-
-
-namespace armarx::aron::codegenerator::cpp::generator
-{
-    class DateTime :
-        public detail::DtoGenerator<type::DateTime, DateTime>
-    {
-    public:
-        /* constructors */
-        DateTime(const type::DateTime& e);
-        virtual ~DateTime() = default;
-
-        /* virtual implementations */
-        std::vector<std::string> getRequiredIncludes() const override;
-        CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor, const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getWriteBlock(const std::string& cppAccessor, const Path&, std::string& variantAccessor) const override;
-        CppBlockPtr getReadBlock(const std::string& cppAccessor, const std::string& variantAccessor) const override;
-    };
-}
diff --git a/source/RobotAPI/libraries/aron/core/data/rw/json/Data.h b/source/RobotAPI/libraries/aron/core/data/rw/json/Data.h
index 0506a1326..c9348cf61 100644
--- a/source/RobotAPI/libraries/aron/core/data/rw/json/Data.h
+++ b/source/RobotAPI/libraries/aron/core/data/rw/json/Data.h
@@ -60,74 +60,74 @@ namespace armarx::aron::data::rw::json
     namespace conversion
     {
         const std::map<data::Descriptor, std::string> Descriptor2String = {
-            {data::Descriptor::eDict, rw::json::constantes::DICT_TYPENAME_SLUG},
-            {data::Descriptor::eList, rw::json::constantes::LIST_TYPENAME_SLUG},
-            {data::Descriptor::eNDArray, rw::json::constantes::NDARRAY_TYPENAME_SLUG},
-            {data::Descriptor::eInt, rw::json::constantes::INT_TYPENAME_SLUG},
-            {data::Descriptor::eLong, rw::json::constantes::LONG_TYPENAME_SLUG},
-            {data::Descriptor::eFloat, rw::json::constantes::FLOAT_TYPENAME_SLUG},
-            {data::Descriptor::eDouble, rw::json::constantes::DOUBLE_TYPENAME_SLUG},
-            {data::Descriptor::eBool, rw::json::constantes::BOOL_TYPENAME_SLUG},
-            {data::Descriptor::eString, rw::json::constantes::STRING_TYPENAME_SLUG}
+            {data::Descriptor::DICT, rw::json::constantes::DICT_TYPENAME_SLUG},
+            {data::Descriptor::LIST, rw::json::constantes::LIST_TYPENAME_SLUG},
+            {data::Descriptor::NDARRAY, rw::json::constantes::NDARRAY_TYPENAME_SLUG},
+            {data::Descriptor::INT, rw::json::constantes::INT_TYPENAME_SLUG},
+            {data::Descriptor::LONG, rw::json::constantes::LONG_TYPENAME_SLUG},
+            {data::Descriptor::FLOAT, rw::json::constantes::FLOAT_TYPENAME_SLUG},
+            {data::Descriptor::DOUBLE, rw::json::constantes::DOUBLE_TYPENAME_SLUG},
+            {data::Descriptor::BOOL, rw::json::constantes::BOOL_TYPENAME_SLUG},
+            {data::Descriptor::STRING, rw::json::constantes::STRING_TYPENAME_SLUG}
         };
         const auto String2Descriptor = aron::conversion::util::InvertMap(Descriptor2String);
 
         const std::map<type::Maybe, std::string> Maybe2String =
         {
-            {type::Maybe::eNone, "type::maybe::none"},
-            {type::Maybe::eOptional, "type::maybe::optional"},
-            {type::Maybe::eRawPointer, "type::maybe::raw_ptr"},
-            {type::Maybe::eSharedPointer, "type::maybe::shared_ptr"},
-            {type::Maybe::eUniquePointer, "type::maybe::unique_ptr"}
+            {type::Maybe::NONE, "type::maybe::NONE"},
+            {type::Maybe::OPTIONAL, "type::maybe::OPTIONAL"},
+            {type::Maybe::RAW_PTR, "type::maybe::RAW_PTR"},
+            {type::Maybe::SHARED_PTR, "type::maybe::SHARED_PTR"},
+            {type::Maybe::UNIQUE_PTR, "type::maybe::UNIQUE_PTR"}
         };
         const auto String2Maybe = aron::conversion::util::InvertMap(Maybe2String);
 
         const std::map<type::ndarray::ElementType, std::string> NDArrayType2String =
         {
-            {type::ndarray::ElementType::int8, "type::ndarray::int8"},
-            {type::ndarray::ElementType::int16, "type::ndarray::int16"},
-            {type::ndarray::ElementType::int32, "type::ndarray::int32"},
-            {type::ndarray::ElementType::uint8, "type::ndarray::uint8"},
-            {type::ndarray::ElementType::uint16, "type::ndarray::uint16"},
-            {type::ndarray::ElementType::uint32, "type::ndarray::uint32"},
-            {type::ndarray::ElementType::float32, "type::ndarray::float32"},
-            {type::ndarray::ElementType::float64, "type::ndarray::float64"}
+            {type::ndarray::ElementType::INT8, "type::ndarray::INT8"},
+            {type::ndarray::ElementType::INT16, "type::ndarray::INT16"},
+            {type::ndarray::ElementType::INT32, "type::ndarray::INT32"},
+            {type::ndarray::ElementType::UINT8, "type::ndarray::UINT8"},
+            {type::ndarray::ElementType::UINT16, "type::ndarray::UINT16"},
+            {type::ndarray::ElementType::UINT32, "type::ndarray::UINT32"},
+            {type::ndarray::ElementType::FLOAT32, "type::ndarray::FLOAT32"},
+            {type::ndarray::ElementType::FLOAT64, "type::ndarray::FLOAT64"}
         };
         const auto String2NDArrayType = aron::conversion::util::InvertMap(NDArrayType2String);
 
         const std::map<type::matrix::ElementType, std::string> MatrixType2String =
         {
-            {type::matrix::ElementType::int16, "type::matrix::int16"},
-            {type::matrix::ElementType::int32, "type::matrix::int32"},
-            {type::matrix::ElementType::int64, "type::matrix::int64"},
-            {type::matrix::ElementType::float32, "type::matrix::float32"},
-            {type::matrix::ElementType::float64, "type::matrix::float64"}
+            {type::matrix::ElementType::INT16, "type::matrix::INT16"},
+            {type::matrix::ElementType::INT32, "type::matrix::INT32"},
+            {type::matrix::ElementType::INT64, "type::matrix::INT64"},
+            {type::matrix::ElementType::FLOAT32, "type::matrix::FLOAT32"},
+            {type::matrix::ElementType::FLOAT64, "type::matrix::FLOAT64"}
         };
         const auto String2MatrixType = aron::conversion::util::InvertMap(MatrixType2String);
 
         const std::map<type::quaternion::ElementType, std::string> QuaternionType2String =
         {
-            {type::quaternion::ElementType::float32, "type::quaternion::float32"},
-            {type::quaternion::ElementType::float64, "type::quaternion::float64"}
+            {type::quaternion::ElementType::FLOAT32, "type::quaternion::FLOAT32"},
+            {type::quaternion::ElementType::FLOAT64, "type::quaternion::FLOAT64"}
         };
         const auto String2QuaternionType = aron::conversion::util::InvertMap(QuaternionType2String);
 
         const std::map<type::image::PixelType, std::string> PixelType2String =
         {
-            {type::image::PixelType::rgb24, "type::image::rgb24"},
-            {type::image::PixelType::depth32, "type::image::depth32"}
+            {type::image::PixelType::RGB24, "type::image::RGB24"},
+            {type::image::PixelType::DEPTH32, "type::image::DEPTH32"}
         };
         const auto String2PixelType = aron::conversion::util::InvertMap(PixelType2String);
 
         const std::map<type::pointcloud::VoxelType, std::string> VoxelType2String =
         {
-            {type::pointcloud::VoxelType::PointXYZ, "type::pointcloud::pointxyz"},
-            {type::pointcloud::VoxelType::PointXYZI, "type::pointcloud::pointxyzi"},
-            {type::pointcloud::VoxelType::PointXYZL, "type::pointcloud::pointxyzl"},
-            {type::pointcloud::VoxelType::PointXYZRGB, "type::pointcloud::pointxyzrgb"},
-            {type::pointcloud::VoxelType::PointXYZRGBA, "type::pointcloud::pointxyzrgba"},
-            {type::pointcloud::VoxelType::PointXYZRGBL, "type::pointcloud::pointxyzrgbl"},
-            {type::pointcloud::VoxelType::PointXYZHSV, "type::pointcloud::pointxyzhsv"}
+            {type::pointcloud::VoxelType::POINT_XYZ, "type::pointcloud::POINT_XYZ"},
+            {type::pointcloud::VoxelType::POINT_XYZI, "type::pointcloud::POINT_XYZI"},
+            {type::pointcloud::VoxelType::POINT_XYZL, "type::pointcloud::POINT_XYZL"},
+            {type::pointcloud::VoxelType::POINT_XYZRGB, "type::pointcloud::POINT_XYZRGB"},
+            {type::pointcloud::VoxelType::POINT_XYZRGBA, "type::pointcloud::POINT_XYZRGBA"},
+            {type::pointcloud::VoxelType::POINT_XYZRGBL, "type::pointcloud::POINT_XYZRGBL"},
+            {type::pointcloud::VoxelType::POINT_XYZHSV, "type::pointcloud::POINT_XYZHSV"}
         };
         const auto String2VoxelType = aron::conversion::util::InvertMap(VoxelType2String);
     }
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/Factory.cpp b/source/RobotAPI/libraries/aron/core/data/variant/Factory.cpp
index c228a449d..f458e3d99 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/Factory.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/Factory.cpp
@@ -44,16 +44,16 @@ namespace armarx::aron::data
         auto descriptor = data::Aron2Descriptor(*aron);
         switch(descriptor)
         {
-            case data::Descriptor::eList: return std::make_unique<data::List>(data::dto::ListPtr::dynamicCast(aron), path);
-            case data::Descriptor::eDict: return std::make_unique<data::Dict>(data::dto::DictPtr::dynamicCast(aron), path);
-            case data::Descriptor::eNDArray: return std::make_unique<data::NDArray>(data::dto::NDArrayPtr::dynamicCast(aron), path);
-            case data::Descriptor::eInt: return std::make_unique<data::Int>(data::dto::AronIntPtr::dynamicCast(aron), path);
-            case data::Descriptor::eLong: return std::make_unique<data::Long>(data::dto::AronLongPtr::dynamicCast(aron), path);
-            case data::Descriptor::eFloat: return std::make_unique<data::Float>(data::dto::AronFloatPtr::dynamicCast(aron), path);
-            case data::Descriptor::eDouble: return std::make_unique<data::Double>(data::dto::AronDoublePtr::dynamicCast(aron), path);
-            case data::Descriptor::eString: return std::make_unique<data::String>(data::dto::AronStringPtr::dynamicCast(aron), path);
-            case data::Descriptor::eBool: return std::make_unique<data::Bool>(data::dto::AronBoolPtr::dynamicCast(aron), path);
-            case data::Descriptor::eUnknown: break;
+            case data::Descriptor::LIST: return std::make_unique<data::List>(data::dto::ListPtr::dynamicCast(aron), path);
+            case data::Descriptor::DICT: return std::make_unique<data::Dict>(data::dto::DictPtr::dynamicCast(aron), path);
+            case data::Descriptor::NDARRAY: return std::make_unique<data::NDArray>(data::dto::NDArrayPtr::dynamicCast(aron), path);
+            case data::Descriptor::INT: return std::make_unique<data::Int>(data::dto::AronIntPtr::dynamicCast(aron), path);
+            case data::Descriptor::LONG: return std::make_unique<data::Long>(data::dto::AronLongPtr::dynamicCast(aron), path);
+            case data::Descriptor::FLOAT: return std::make_unique<data::Float>(data::dto::AronFloatPtr::dynamicCast(aron), path);
+            case data::Descriptor::DOUBLE: return std::make_unique<data::Double>(data::dto::AronDoublePtr::dynamicCast(aron), path);
+            case data::Descriptor::STRING: return std::make_unique<data::String>(data::dto::AronStringPtr::dynamicCast(aron), path);
+            case data::Descriptor::BOOL: return std::make_unique<data::Bool>(data::dto::AronBoolPtr::dynamicCast(aron), path);
+            case data::Descriptor::UNKNOWN: break;
         }
         throw error::ValueNotValidException(__PRETTY_FUNCTION__, "", std::to_string((int) descriptor), path);
     }
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/complex/NDArray.cpp b/source/RobotAPI/libraries/aron/core/data/variant/complex/NDArray.cpp
index 2132a2e4a..111068b39 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/complex/NDArray.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/complex/NDArray.cpp
@@ -35,13 +35,13 @@ namespace armarx::aron::data
 {
     // constructors
     NDArray::NDArray(const Path& path) :
-        detail::ComplexVariant<data::dto::NDArray, NDArray>::ComplexVariant(data::Descriptor::eNDArray, path)
+        detail::ComplexVariant<data::dto::NDArray, NDArray>::ComplexVariant(data::Descriptor::NDARRAY, path)
     {
 
     }
 
     NDArray::NDArray(const data::dto::NDArrayPtr& o, const Path& path) :
-        detail::ComplexVariant<data::dto::NDArray, NDArray>::ComplexVariant(o, data::Descriptor::eNDArray, path)
+        detail::ComplexVariant<data::dto::NDArray, NDArray>::ComplexVariant(o, data::Descriptor::NDARRAY, path)
     {
     }
 
@@ -176,27 +176,27 @@ namespace armarx::aron::data
         type::Descriptor typeDesc = type->getDescriptor();
         switch (typeDesc)
         {
-        case type::Descriptor::eMatrix:
+        case type::Descriptor::MATRIX:
         {
             auto casted = type::Matrix::DynamicCastAndCheck(type);
             return (aron->shape.size() == 3 &&  aron->shape[0] == casted->getRows() && aron->shape[1] == casted->getCols());
         }
-        case type::Descriptor::eQuaternion:
+        case type::Descriptor::QUATERNION:
         {
             auto casted = type::Quaternion::DynamicCastAndCheck(type);
             return (aron->shape.size() == 3 && aron->shape[0] == 1 && aron->shape[1] == 4);
         }
-        case type::Descriptor::ePointCloud:
+        case type::Descriptor::POINTCLOUD:
         {
             auto casted = type::PointCloud::DynamicCastAndCheck(type);
             return (aron->shape.size() == 3);
         }
-        case type::Descriptor::eImage:
+        case type::Descriptor::IMAGE:
         {
             auto casted = type::Image::DynamicCastAndCheck(type);
             return (aron->shape.size() == 3);
         }
-        case type::Descriptor::eNDArray:
+        case type::Descriptor::NDARRAY:
         {
             auto casted = type::NDArray::DynamicCastAndCheck(type);
             return (aron->shape.size() == (unsigned int) casted->getNumberDimensions());
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.cpp b/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.cpp
index 12b402fd0..478c6a2c8 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.cpp
@@ -34,12 +34,12 @@ namespace armarx::aron::data
 
     // constructors
     Dict::Dict(const Path& path) :
-        detail::ContainerVariant<data::dto::Dict, Dict>::ContainerVariant(data::Descriptor::eDict, path)
+        detail::ContainerVariant<data::dto::Dict, Dict>::ContainerVariant(data::Descriptor::DICT, path)
     {
     }
 
     Dict::Dict(const data::dto::DictPtr& o, const Path& path) :
-        detail::ContainerVariant<data::dto::Dict, Dict>::ContainerVariant(o, data::Descriptor::eDict, path)
+        detail::ContainerVariant<data::dto::Dict, Dict>::ContainerVariant(o, data::Descriptor::DICT, path)
     {
         for (const auto& [key, dataPtr] : this->aron->elements)
         {
@@ -214,7 +214,7 @@ namespace armarx::aron::data
 
         switch (typeDesc)
         {
-            case type::Descriptor::eObject:
+            case type::Descriptor::OBJECT:
             {
                 auto objectTypeNav = type::Object::DynamicCastAndCheck(type);
                 for (const auto& [key, nav] : childrenNavigators)
@@ -234,7 +234,7 @@ namespace armarx::aron::data
                 }
                 return true;
             }
-            case type::Descriptor::eDict:
+            case type::Descriptor::DICT:
             {
                 auto dictTypeNav = type::Dict::DynamicCastAndCheck(type);
                 for (const auto& [key, nav] : childrenNavigators)
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.h b/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.h
index 5317f7f05..498e59ee2 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.h
+++ b/source/RobotAPI/libraries/aron/core/data/variant/container/Dict.h
@@ -34,7 +34,7 @@
 // ArmarX
 #include "../../../type/variant/container/Dict.h"
 #include "../../../type/variant/container/Object.h"
-#include "../../../type/variant/dto/All.h"
+#include "../../../type/variant/any/AnyObject.h"
 
 namespace armarx::aron::data
 {
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/container/List.cpp b/source/RobotAPI/libraries/aron/core/data/variant/container/List.cpp
index 74eb78a75..84bf1a200 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/container/List.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/container/List.cpp
@@ -35,12 +35,12 @@ namespace armarx::aron::data
 {
     // constructors
     List::List(const Path& path) :
-        detail::ContainerVariant<data::dto::List, List>::ContainerVariant(data::Descriptor::eList, path)
+        detail::ContainerVariant<data::dto::List, List>::ContainerVariant(data::Descriptor::LIST, path)
     {
     }
 
     List::List(const data::dto::ListPtr& l, const Path& path) :
-        detail::ContainerVariant<data::dto::List, List>::ContainerVariant(l, data::Descriptor::eList, path)
+        detail::ContainerVariant<data::dto::List, List>::ContainerVariant(l, data::Descriptor::LIST, path)
     {
         unsigned int i = 0;
         for (const auto& dataPtr : l->elements)
@@ -216,7 +216,7 @@ namespace armarx::aron::data
         type::Descriptor typeDesc = type->getDescriptor();
         switch (typeDesc)
         {
-            case type::Descriptor::eList:
+            case type::Descriptor::LIST:
             {
                 auto listTypeNav = type::List::DynamicCastAndCheck(type);
                 for (const auto& nav : childrenNavigators)
@@ -232,7 +232,7 @@ namespace armarx::aron::data
                 }
                 return true;
             }
-            case type::Descriptor::eTuple:
+            case type::Descriptor::TUPLE:
             {
                 auto tupleTypeNav = type::Tuple::DynamicCastAndCheck(type);
                 unsigned int i = 0;
@@ -249,7 +249,7 @@ namespace armarx::aron::data
                 }
                 return true;
             }
-            case type::Descriptor::ePair:
+            case type::Descriptor::PAIR:
             {
                 auto pairTypeNav = type::Pair::DynamicCastAndCheck(type);
                 if (childrenSize() != 2)
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/detail/SpecializedVariant.h b/source/RobotAPI/libraries/aron/core/data/variant/detail/SpecializedVariant.h
index 8d83766b8..e8a00e47c 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/detail/SpecializedVariant.h
+++ b/source/RobotAPI/libraries/aron/core/data/variant/detail/SpecializedVariant.h
@@ -114,7 +114,9 @@ namespace armarx::aron::data::detail
             }
 
             auto casted = DerivedT::DynamicCast(n);
-            ARMARX_CHECK_NOT_NULL(casted);
+            ARMARX_CHECK_NOT_NULL(casted) << "The path was: " << n->getPath().toString() << ".\n"
+                                          << "It has the descriptor: '" << data::defaultconversion::string::Descriptor2String.at(n->getDescriptor()) << "'.\n"
+                                          << "And the typeid: " << typeid(n).name() << ". Tried to cast to " << typeid(PointerType).name();
             return casted;
         }
 
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Bool.cpp b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Bool.cpp
index 5b5cb2b0e..0e68bbc6d 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Bool.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Bool.cpp
@@ -27,17 +27,17 @@ namespace armarx::aron::data
 {
     /* constructors */
     Bool::Bool(const data::dto::AronBoolPtr& o, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronBool, bool, Bool>::PrimitiveVariant(o, data::Descriptor::eBool, path)
+        detail::PrimitiveVariant<data::dto::AronBool, bool, Bool>::PrimitiveVariant(o, data::Descriptor::BOOL, path)
     {
     }
 
     Bool::Bool(const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronBool, bool, Bool>::PrimitiveVariant(data::Descriptor::eBool, path)
+        detail::PrimitiveVariant<data::dto::AronBool, bool, Bool>::PrimitiveVariant(data::Descriptor::BOOL, path)
     {
     }
 
     Bool::Bool(const bool d, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronBool, bool, Bool>::PrimitiveVariant(d, data::Descriptor::eBool, path)
+        detail::PrimitiveVariant<data::dto::AronBool, bool, Bool>::PrimitiveVariant(d, data::Descriptor::BOOL, path)
     {
     }
 
@@ -111,7 +111,7 @@ namespace armarx::aron::data
     bool Bool::fullfillsType(const type::VariantPtr& type) const
     {
         if (!type) return true;
-        return type->getDescriptor() == type::Descriptor::eBool;
+        return type->getDescriptor() == type::Descriptor::BOOL;
     }
 
     type::VariantPtr Bool::recalculateType() const
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Double.cpp b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Double.cpp
index 906afeeea..87ea9eeac 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Double.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Double.cpp
@@ -31,17 +31,17 @@ namespace armarx::aron::data
 {
     /* constructors */
     Double::Double(const data::dto::AronDoublePtr& o, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronDouble, double, Double>::PrimitiveVariant(o, data::Descriptor::eDouble, path)
+        detail::PrimitiveVariant<data::dto::AronDouble, double, Double>::PrimitiveVariant(o, data::Descriptor::DOUBLE, path)
     {
     }
 
     Double::Double(const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronDouble, double, Double>::PrimitiveVariant(data::Descriptor::eDouble, path)
+        detail::PrimitiveVariant<data::dto::AronDouble, double, Double>::PrimitiveVariant(data::Descriptor::DOUBLE, path)
     {
     }
 
     Double::Double(const double d, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronDouble, double, Double>::PrimitiveVariant(d, data::Descriptor::eDouble, path)
+        detail::PrimitiveVariant<data::dto::AronDouble, double, Double>::PrimitiveVariant(d, data::Descriptor::DOUBLE, path)
     {
     }
 
@@ -104,7 +104,7 @@ namespace armarx::aron::data
     bool Double::fullfillsType(const type::VariantPtr& type) const
     {
         if (!type) return true;
-        return type->getDescriptor() == type::Descriptor::eDouble;
+        return type->getDescriptor() == type::Descriptor::DOUBLE;
     }
 
     type::VariantPtr Double::recalculateType() const
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Float.cpp b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Float.cpp
index 154591f68..8dd7721c4 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Float.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Float.cpp
@@ -27,17 +27,17 @@ namespace armarx::aron::data
 {
     /* constructors */
     Float::Float(const data::dto::AronFloatPtr& o, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronFloat, float, Float>::PrimitiveVariant(o, data::Descriptor::eFloat, path)
+        detail::PrimitiveVariant<data::dto::AronFloat, float, Float>::PrimitiveVariant(o, data::Descriptor::FLOAT, path)
     {
     }
 
     Float::Float(const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronFloat, float, Float>::PrimitiveVariant(data::Descriptor::eFloat, path)
+        detail::PrimitiveVariant<data::dto::AronFloat, float, Float>::PrimitiveVariant(data::Descriptor::FLOAT, path)
     {
     }
 
     Float::Float(const float d, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronFloat, float, Float>::PrimitiveVariant(d, data::Descriptor::eFloat, path)
+        detail::PrimitiveVariant<data::dto::AronFloat, float, Float>::PrimitiveVariant(d, data::Descriptor::FLOAT, path)
     {
     }
 
@@ -101,7 +101,7 @@ namespace armarx::aron::data
     bool Float::fullfillsType(const type::VariantPtr& type) const
     {
         if (!type) return true;
-        return type->getDescriptor() == type::Descriptor::eFloat;
+        return type->getDescriptor() == type::Descriptor::FLOAT;
     }
 
     type::VariantPtr Float::recalculateType() const
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Int.cpp b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Int.cpp
index 14299d05a..cc4d9dc2e 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Int.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Int.cpp
@@ -30,17 +30,17 @@ namespace armarx::aron::data
 {
     /* constructors */
     Int::Int(const data::dto::AronIntPtr& o, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronInt, int, Int>::PrimitiveVariant(o, data::Descriptor::eInt, path)
+        detail::PrimitiveVariant<data::dto::AronInt, int, Int>::PrimitiveVariant(o, data::Descriptor::INT, path)
     {
     }
 
     Int::Int(const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronInt, int, Int>::PrimitiveVariant(data::Descriptor::eInt, path)
+        detail::PrimitiveVariant<data::dto::AronInt, int, Int>::PrimitiveVariant(data::Descriptor::INT, path)
     {
     }
 
     Int::Int(const int d, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronInt, int, Int>::PrimitiveVariant(d, data::Descriptor::eInt, path)
+        detail::PrimitiveVariant<data::dto::AronInt, int, Int>::PrimitiveVariant(d, data::Descriptor::INT, path)
     {
     }
 
@@ -104,7 +104,7 @@ namespace armarx::aron::data
     bool Int::fullfillsType(const type::VariantPtr& type) const
     {
         if (!type) return true;
-        return type->getDescriptor() == type::Descriptor::eInt || type->getDescriptor() == type::Descriptor::eIntEnum;
+        return type->getDescriptor() == type::Descriptor::INT || type->getDescriptor() == type::Descriptor::INT_ENUM;
     }
 
     type::VariantPtr Int::recalculateType() const
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Long.cpp b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Long.cpp
index 989caa469..6a271cdc8 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/primitive/Long.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/primitive/Long.cpp
@@ -31,17 +31,17 @@ namespace armarx::aron::data
 {
     /* constructors */
     Long::Long(const data::dto::AronLongPtr& o, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronLong, long, Long>::PrimitiveVariant(o, data::Descriptor::eLong, path)
+        detail::PrimitiveVariant<data::dto::AronLong, long, Long>::PrimitiveVariant(o, data::Descriptor::LONG, path)
     {
     }
 
     Long::Long(const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronLong, long, Long>::PrimitiveVariant(data::Descriptor::eLong, path)
+        detail::PrimitiveVariant<data::dto::AronLong, long, Long>::PrimitiveVariant(data::Descriptor::LONG, path)
     {
     }
 
     Long::Long(const long d, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronLong, long, Long>::PrimitiveVariant(d, data::Descriptor::eLong, path)
+        detail::PrimitiveVariant<data::dto::AronLong, long, Long>::PrimitiveVariant(d, data::Descriptor::LONG, path)
     {
     }
 
@@ -105,7 +105,7 @@ namespace armarx::aron::data
     bool Long::fullfillsType(const type::VariantPtr& type) const
     {
         if (!type) return true;
-        return type->getDescriptor() == type::Descriptor::eLong;
+        return type->getDescriptor() == type::Descriptor::LONG;
     }
 
     type::VariantPtr Long::recalculateType() const
diff --git a/source/RobotAPI/libraries/aron/core/data/variant/primitive/String.cpp b/source/RobotAPI/libraries/aron/core/data/variant/primitive/String.cpp
index 0c4ec5bd3..6415245f3 100644
--- a/source/RobotAPI/libraries/aron/core/data/variant/primitive/String.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/variant/primitive/String.cpp
@@ -27,17 +27,17 @@ namespace armarx::aron::data
 {
     /* constructors */
     String::String(const data::dto::AronStringPtr& o, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronString, std::string, String>::PrimitiveVariant(o, data::Descriptor::eString, path)
+        detail::PrimitiveVariant<data::dto::AronString, std::string, String>::PrimitiveVariant(o, data::Descriptor::STRING, path)
     {
     }
 
     String::String(const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronString, std::string, String>::PrimitiveVariant(data::Descriptor::eString, path)
+        detail::PrimitiveVariant<data::dto::AronString, std::string, String>::PrimitiveVariant(data::Descriptor::STRING, path)
     {
     }
 
     String::String(const std::string& d, const Path& path) :
-        detail::PrimitiveVariant<data::dto::AronString, std::string, String>::PrimitiveVariant(d, data::Descriptor::eString, path)
+        detail::PrimitiveVariant<data::dto::AronString, std::string, String>::PrimitiveVariant(d, data::Descriptor::STRING, path)
     {
     }
 
@@ -101,7 +101,7 @@ namespace armarx::aron::data
     bool String::fullfillsType(const type::VariantPtr& type) const
     {
         if (!type) return true;
-        return type->getDescriptor() == type::Descriptor::eString;
+        return type->getDescriptor() == type::Descriptor::STRING;
     }
 
     type::VariantPtr String::recalculateType() const
diff --git a/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h b/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h
index d691676b2..60cb4be0f 100644
--- a/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h
+++ b/source/RobotAPI/libraries/aron/core/data/visitor/RecursiveVisitor.h
@@ -107,7 +107,6 @@ namespace armarx::aron::data
         virtual void visitDouble(DataInput& elementData, TypeInput& elementType) {};
         virtual void visitBool(DataInput& elementData, TypeInput& elementType) {};
         virtual void visitString(DataInput& elementData, TypeInput& elementType) {};
-        virtual void visitDateTime(DataInput& elementData, TypeInput& elementType) {};
         virtual void visitAnyObject(DataInput& elementData, TypeInput& elementType) {};
         virtual void visitUnknown(DataInput& elementData, TypeInput& elementType) {
             throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor.");
@@ -131,7 +130,7 @@ namespace armarx::aron::data
         data::Descriptor descriptor = v.getDescriptor(o);
         switch (descriptor)
         {
-            case data::Descriptor::eList:
+            case data::Descriptor::LIST:
             {
                 v.visitListOnEnter(o);
                 unsigned int i = 0;
@@ -143,7 +142,7 @@ namespace armarx::aron::data
                 v.visitListOnExit(o);
                 return;
             }
-            case data::Descriptor::eDict:
+            case data::Descriptor::DICT:
             {
                 v.visitDictOnEnter(o);
                 for (auto& [key, value] : v.getDictElements(o))
@@ -153,21 +152,21 @@ namespace armarx::aron::data
                 v.visitDictOnExit(o);
                 return;
             }
-            case data::Descriptor::eNDArray:
+            case data::Descriptor::NDARRAY:
                 return v.visitNDArray(o);
-            case data::Descriptor::eInt:
+            case data::Descriptor::INT:
                 return v.visitInt(o);
-            case data::Descriptor::eLong:
+            case data::Descriptor::LONG:
                 return v.visitLong(o);
-            case data::Descriptor::eFloat:
+            case data::Descriptor::FLOAT:
                 return v.visitFloat(o);
-            case data::Descriptor::eDouble:
+            case data::Descriptor::DOUBLE:
                 return v.visitDouble(o);
-            case data::Descriptor::eString:
+            case data::Descriptor::STRING:
                 return v.visitString(o);
-            case data::Descriptor::eBool:
+            case data::Descriptor::BOOL:
                 return v.visitBool(o);
-            case data::Descriptor::eUnknown:
+            case data::Descriptor::UNKNOWN:
                 return v.visitUnknown(o);
         }
     }
@@ -183,7 +182,7 @@ namespace armarx::aron::data
         type::Descriptor descriptor = v.getDescriptor(o, t);
         switch (descriptor)
         {
-            case type::Descriptor::eList:
+            case type::Descriptor::LIST:
             {
                 v.visitListOnEnter(o, t);
                 unsigned int i = 0;
@@ -195,7 +194,7 @@ namespace armarx::aron::data
                 v.visitListOnExit(o, t);
                 return;
             }
-            case type::Descriptor::ePair:
+            case type::Descriptor::PAIR:
             {
                 v.visitPairOnEnter(o, t);
                 auto pair = v.getPairElements(o, t);
@@ -206,7 +205,7 @@ namespace armarx::aron::data
                 v.visitPairOnExit(o, t);
                 return;
             }
-            case type::Descriptor::eTuple:
+            case type::Descriptor::TUPLE:
             {
                 v.visitTupleOnEnter(o, t);
                 unsigned int i = 0;
@@ -218,7 +217,7 @@ namespace armarx::aron::data
                 v.visitTupleOnExit(o, t);
                 return;
             }
-            case type::Descriptor::eDict:
+            case type::Descriptor::DICT:
             {
                     v.visitDictOnEnter(o, t);
                     for (auto& [key, pair] : v.getDictElements(o, t))
@@ -228,7 +227,7 @@ namespace armarx::aron::data
                     v.visitDictOnExit(o, t);
                     return;
             }
-            case type::Descriptor::eObject:
+            case type::Descriptor::OBJECT:
             {
                 v.visitObjectOnEnter(o, t);
                 for (auto& [key, pair] : v.getObjectElements(o, t))
@@ -238,35 +237,33 @@ namespace armarx::aron::data
                 v.visitObjectOnExit(o, t);
                 return;
             }
-            case type::Descriptor::eNDArray:
+            case type::Descriptor::NDARRAY:
                 return v.visitNDArray(o, t);
-            case type::Descriptor::eMatrix:
+            case type::Descriptor::MATRIX:
                 return v.visitMatrix(o, t);
-            case type::Descriptor::eImage:
+            case type::Descriptor::IMAGE:
                 return v.visitImage(o, t);
-            case type::Descriptor::ePointCloud:
+            case type::Descriptor::POINTCLOUD:
                 return v.visitPointCloud(o, t);
-            case type::Descriptor::eQuaternion:
+            case type::Descriptor::QUATERNION:
                 return v.visitQuaternion(o, t);
-            case type::Descriptor::eInt:
+            case type::Descriptor::INT:
                 return v.visitInt(o, t);
-            case type::Descriptor::eLong:
+            case type::Descriptor::LONG:
                 return v.visitLong(o, t);
-            case type::Descriptor::eFloat:
+            case type::Descriptor::FLOAT:
                 return v.visitFloat(o, t);
-            case type::Descriptor::eDouble:
+            case type::Descriptor::DOUBLE:
                 return v.visitDouble(o, t);
-            case type::Descriptor::eString:
+            case type::Descriptor::STRING:
                 return v.visitString(o, t);
-            case type::Descriptor::eBool:
+            case type::Descriptor::BOOL:
                 return v.visitBool(o, t);
-            case type::Descriptor::eDateTime:
-                return v.visitDateTime(o, t);
-            case type::Descriptor::eAnyObject:
+            case type::Descriptor::ANY_OBJECT:
                 return v.visitAnyObject(o, t);
-            case type::Descriptor::eIntEnum:
+            case type::Descriptor::INT_ENUM:
                 return v.visitIntEnum(o, t);
-            case type::Descriptor::eUnknown:
+            case type::Descriptor::UNKNOWN:
                 return v.visitUnknown(o, t);
         }
     }
diff --git a/source/RobotAPI/libraries/aron/core/data/visitor/Visitor.h b/source/RobotAPI/libraries/aron/core/data/visitor/Visitor.h
index 0a6f01aa5..d7c62f104 100644
--- a/source/RobotAPI/libraries/aron/core/data/visitor/Visitor.h
+++ b/source/RobotAPI/libraries/aron/core/data/visitor/Visitor.h
@@ -104,7 +104,6 @@ namespace armarx::aron::data
         virtual void visitDouble(DataInput&, TypeInput&) {};
         virtual void visitBool(DataInput&, TypeInput&) {};
         virtual void visitString(DataInput&, TypeInput&) {};
-        virtual void visitDateTime(DataInput&, TypeInput&) {};
         virtual void visitAnyObject(DataInput&, TypeInput&) {};
         virtual void visitUnknown(DataInput&, TypeInput&) { throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor."); }
         virtual ~TypedVisitor() = default;
@@ -127,25 +126,25 @@ namespace armarx::aron::data
         auto descriptor = v.getDescriptor(o);
         switch (descriptor)
         {
-            case data::Descriptor::eList:
+            case data::Descriptor::LIST:
                 return v.visitList(o);
-            case data::Descriptor::eDict:
+            case data::Descriptor::DICT:
                 return v.visitDict(o);
-            case data::Descriptor::eNDArray:
+            case data::Descriptor::NDARRAY:
                 return v.visitNDArray(o);
-            case data::Descriptor::eInt:
+            case data::Descriptor::INT:
                 return v.visitInt(o);
-            case data::Descriptor::eLong:
+            case data::Descriptor::LONG:
                 return v.visitLong(o);
-            case data::Descriptor::eFloat:
+            case data::Descriptor::FLOAT:
                 return v.visitFloat(o);
-            case data::Descriptor::eDouble:
+            case data::Descriptor::DOUBLE:
                 return v.visitDouble(o);
-            case data::Descriptor::eString:
+            case data::Descriptor::STRING:
                 return v.visitString(o);
-            case data::Descriptor::eBool:
+            case data::Descriptor::BOOL:
                 return v.visitBool(o);
-            case data::Descriptor::eUnknown:
+            case data::Descriptor::UNKNOWN:
                 return v.visitUnknown(o);
         }
     }
@@ -162,45 +161,43 @@ namespace armarx::aron::data
         auto descriptor = v.getDescriptor(o, t);
         switch (descriptor)
         {
-        case type::Descriptor::eObject:
+        case type::Descriptor::OBJECT:
             return v.visitObject(o, t);
-        case type::Descriptor::eList:
+        case type::Descriptor::LIST:
             return v.visitList(o, t);
-        case type::Descriptor::eDict:
+        case type::Descriptor::DICT:
             return v.visitDict(o, t);
-        case type::Descriptor::ePair:
+        case type::Descriptor::PAIR:
             return v.visitPair(o, t);
-        case type::Descriptor::eTuple:
+        case type::Descriptor::TUPLE:
             return v.visitTuple(o, t);
-        case type::Descriptor::eNDArray:
+        case type::Descriptor::NDARRAY:
             return v.visitNDArray(o, t);
-        case type::Descriptor::eMatrix:
+        case type::Descriptor::MATRIX:
             return v.visitMatrix(o, t);
-        case type::Descriptor::eImage:
+        case type::Descriptor::IMAGE:
             return v.visitImage(o, t);
-        case type::Descriptor::ePointCloud:
+        case type::Descriptor::POINTCLOUD:
             return v.visitPointCloud(o, t);
-        case type::Descriptor::eQuaternion:
+        case type::Descriptor::QUATERNION:
             return v.visitQuaternion(o, t);
-        case type::Descriptor::eInt:
+        case type::Descriptor::INT:
             return v.visitInt(o, t);
-        case type::Descriptor::eLong:
+        case type::Descriptor::LONG:
             return v.visitLong(o, t);
-        case type::Descriptor::eFloat:
+        case type::Descriptor::FLOAT:
             return v.visitFloat(o, t);
-        case type::Descriptor::eDouble:
+        case type::Descriptor::DOUBLE:
             return v.visitDouble(o, t);
-        case type::Descriptor::eString:
+        case type::Descriptor::STRING:
             return v.visitString(o, t);
-        case type::Descriptor::eBool:
+        case type::Descriptor::BOOL:
             return v.visitBool(o, t);
-        case type::Descriptor::eDateTime:
-            return v.visitDateTime(o, t);
-        case type::Descriptor::eAnyObject:
+        case type::Descriptor::ANY_OBJECT:
             return v.visitAnyObject(o, t);
-        case type::Descriptor::eIntEnum:
+        case type::Descriptor::INT_ENUM:
             return v.visitIntEnum(o, t);
-        case type::Descriptor::eUnknown:
+        case type::Descriptor::UNKNOWN:
             return v.visitUnknown(o, t);
         }
     }
diff --git a/source/RobotAPI/libraries/aron/core/data/visitor/nlohmannJSON/NlohmannJSONVisitor.cpp b/source/RobotAPI/libraries/aron/core/data/visitor/nlohmannJSON/NlohmannJSONVisitor.cpp
index 623356c73..84adf5c1e 100644
--- a/source/RobotAPI/libraries/aron/core/data/visitor/nlohmannJSON/NlohmannJSONVisitor.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/visitor/nlohmannJSON/NlohmannJSONVisitor.cpp
@@ -30,7 +30,7 @@ namespace armarx::aron::data
     {
         if (n == nlohmann::json())
         {
-            return data::Descriptor::eUnknown;
+            return data::Descriptor::UNKNOWN;
         }
         std::string t = n[armarx::aron::data::rw::json::constantes::TYPE_SLUG];
         return armarx::aron::data::rw::json::conversion::String2Descriptor.at(t);
diff --git a/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.cpp b/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.cpp
index b408468fd..b0799cdbd 100644
--- a/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.cpp
+++ b/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.cpp
@@ -36,7 +36,7 @@ namespace armarx::aron::data
     {
         if (!n)
         {
-            return data::Descriptor::eUnknown;
+            return data::Descriptor::UNKNOWN;
         }
         return n->getDescriptor();
     }
@@ -117,7 +117,7 @@ namespace armarx::aron::data
     type::Descriptor ConstTypedVariantVisitor::GetDescriptor(DataInput& i, TypeInput& j)
     {
         auto t_desc = type::ConstVariantVisitor::GetDescriptor(j);
-        if (t_desc == type::Descriptor::eUnknown)
+        if (t_desc == type::Descriptor::UNKNOWN)
         {
             auto d_desc = ConstVariantVisitor::GetDescriptor(i);
             t_desc = aron::data::defaultconversion::Data2TypeDescriptor.at(d_desc);
@@ -249,13 +249,6 @@ namespace armarx::aron::data
         visitAronVariant(d, t);
     }
 
-    void ConstTypedVariantVisitor::visitDateTime(DataInput& i, TypeInput& j)
-    {
-        auto d = data::Dict::DynamicCastAndCheck(i);
-        auto t = type::DateTime::DynamicCastAndCheck(j);
-        visitAronVariant(d, t);
-    }
-
     void ConstTypedVariantVisitor::visitAronVariant(const data::DictPtr&, const type::ObjectPtr&) {}
     void ConstTypedVariantVisitor::visitAronVariant(const data::DictPtr&, const type::DictPtr&) {}
     void ConstTypedVariantVisitor::visitAronVariant(const data::ListPtr&, const type::ListPtr&) {}
@@ -273,7 +266,6 @@ namespace armarx::aron::data
     void ConstTypedVariantVisitor::visitAronVariant(const data::DoublePtr&, const type::DoublePtr&) {}
     void ConstTypedVariantVisitor::visitAronVariant(const data::BoolPtr&, const type::BoolPtr&) {}
     void ConstTypedVariantVisitor::visitAronVariant(const data::StringPtr&, const type::StringPtr&) {}
-    void ConstTypedVariantVisitor::visitAronVariant(const data::DictPtr&, const type::DateTimePtr&) {}
 
 
 
@@ -799,13 +791,6 @@ namespace armarx::aron::data
         visitAronVariant(d, t);
     }
 
-    void RecursiveConstTypedVariantVisitor::visitDateTime(DataInput& i, TypeInput& j)
-    {
-        auto d = data::Dict::DynamicCastAndCheck(i);
-        auto t = type::DateTime::DynamicCastAndCheck(j);
-        visitAronVariant(d, t);
-    }
-
 
     // see above
     void RecursiveConstTypedVariantVisitor::visitAronVariantOnEnter(const data::DictPtr&, const type::ObjectPtr&) {}
@@ -826,7 +811,6 @@ namespace armarx::aron::data
     void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::IntPtr&, const type::IntEnumPtr&) {}
     void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::IntPtr&, const type::IntPtr&) {}
     void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::LongPtr&, const type::LongPtr&) {}
-    void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::DictPtr&, const type::DateTimePtr&) {}
     void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::FloatPtr&, const type::FloatPtr&) {}
     void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::DoublePtr&, const type::DoublePtr&) {}
     void RecursiveConstTypedVariantVisitor::visitAronVariant(const data::BoolPtr&, const type::BoolPtr&) {}
diff --git a/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h b/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h
index f1ce3e33d..726adfd34 100644
--- a/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h
+++ b/source/RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h
@@ -93,7 +93,6 @@ namespace armarx::aron::data
         void visitDouble(DataInput&, TypeInput&) override;
         void visitBool(DataInput&, TypeInput&) override;
         void visitString(DataInput&, TypeInput&) override;
-        void visitDateTime(DataInput&, TypeInput&) override;
 
         // see above
         virtual void visitAronVariant(const data::DictPtr&, const type::ObjectPtr&);
@@ -113,7 +112,6 @@ namespace armarx::aron::data
         virtual void visitAronVariant(const data::DoublePtr&, const type::DoublePtr&);
         virtual void visitAronVariant(const data::BoolPtr&, const type::BoolPtr&);
         virtual void visitAronVariant(const data::StringPtr&, const type::StringPtr&);
-        virtual void visitAronVariant(const data::DictPtr&, const type::DateTimePtr&);
     };
 
     /**
@@ -236,7 +234,6 @@ namespace armarx::aron::data
         void visitDouble(DataInput&, TypeInput&) override;
         void visitBool(DataInput&, TypeInput&) override;
         void visitString(DataInput&, TypeInput&) override;
-        void visitDateTime(DataInput&, TypeInput&) override;
 
         // see above
         virtual void visitAronVariantOnEnter(const data::DictPtr&, const type::ObjectPtr&);
@@ -261,6 +258,5 @@ namespace armarx::aron::data
         virtual void visitAronVariant(const data::DoublePtr&, const type::DoublePtr&);
         virtual void visitAronVariant(const data::BoolPtr&, const type::BoolPtr&);
         virtual void visitAronVariant(const data::StringPtr&, const type::StringPtr&);
-        virtual void visitAronVariant(const data::DictPtr&, const type::DateTimePtr&);
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/legacy/DataVisitor.cpp b/source/RobotAPI/libraries/aron/core/legacy/DataVisitor.cpp
deleted file mode 100644
index f86ae598e..000000000
--- a/source/RobotAPI/libraries/aron/core/legacy/DataVisitor.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-#include "DataVisitor.h"
-
-#include <SimoxUtility/meta/type_name.h>
-
-#include <ArmarXCore/core/exceptions/local/ExpressionException.h>
-
-
-namespace armarx::aron::visitor
-{
-
-
-    DataVisitor::DataVisitor()
-    {
-    }
-
-    DataVisitor::~DataVisitor()
-    {
-    }
-
-
-    bool DataVisitor::applyTo(data::dto::GenericDataPtr& data)
-    {
-        ARMARX_CHECK_NOT_NULL(data);
-        return applyTo(*DataNavigator::FromAronDTO(data));
-    }
-
-    bool DataVisitor::applyTo(DataVisitor::DataNavigator& navigator)
-    {
-        return this->applyTo("", navigator);
-    }
-
-    bool DataVisitor::applyTo(const std::string& key, DataNavigator& navigator)
-    {
-        auto handleCollection = [this, key](auto & n)
-        {
-            if (!visitEnter(key, n))
-            {
-                return false;
-            }
-            if (!applyToChildren(n))
-            {
-                return false;
-            }
-            if (!visitExit(key, n))
-            {
-                return false;
-            }
-            return true;
-        };
-
-        if (auto n = dynamic_cast<DictDataNavigator*>(&navigator))
-        {
-            return handleCollection(*n);
-        }
-        else if (auto n = dynamic_cast<ListDataNavigator*>(&navigator))
-        {
-            return handleCollection(*n);
-        }
-
-        ARMARX_CHECK_EQUAL(navigator.childrenSize(), 0)
-                << simox::meta::get_type_name(navigator);
-
-        if (auto n = dynamic_cast<BoolDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        else if (auto n = dynamic_cast<DoubleDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        else if (auto n = dynamic_cast<FloatDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        else if (auto n = dynamic_cast<IntDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        else if (auto n = dynamic_cast<LongDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        else if (auto n = dynamic_cast<NDArrayDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        else if (auto n = dynamic_cast<StringDataNavigator*>(&navigator))
-        {
-            return visit(key, *n);
-        }
-        ARMARX_CHECK(false) << "Unhandled AronDataNavigatorType '" << simox::meta::get_type_name(navigator) << "'.";
-    }
-
-    bool DataVisitor::applyToChildren(DictDataNavigator& navigator)
-    {
-        for (const std::string& key : navigator.getAllKeys())
-        {
-            auto child = navigator.getElement(key);
-            if (child)
-            {
-                if (!applyTo(key, *child))
-                {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    bool DataVisitor::applyToChildren(ListDataNavigator& navigator)
-    {
-        size_t i = 0;
-        for (auto& child : navigator.getChildren())
-        {
-            if (child)
-            {
-                if (!applyTo(std::to_string(i), *child))
-                {
-                    return false;
-                }
-            }
-            ++i;
-        }
-        return true;
-    }
-
-}
diff --git a/source/RobotAPI/libraries/aron/core/legacy/DataVisitor.h b/source/RobotAPI/libraries/aron/core/legacy/DataVisitor.h
deleted file mode 100644
index a5b3eb18c..000000000
--- a/source/RobotAPI/libraries/aron/core/legacy/DataVisitor.h
+++ /dev/null
@@ -1,265 +0,0 @@
-#pragma once
-
-#include <string>
-
-#include <RobotAPI/libraries/aron/core/data/variant/All.h>
-
-
-namespace armarx::aron::visitor
-{
-
-    /**
-     * @brief A visitor traversing an `aron::data::dto::GenericDataPtr` using
-     * `aron::datanavigator::Navigator`s, taking care of type checking,
-     * casting and hierarchical traversal.
-     *
-     * To use it, create a class deriving from `AronDataVisitor` and
-     * override the overloads of `visitEnter()`, `visitExit()` and `visit()`
-     * for the types you would like to handle (see blow for a copy-and-paste
-     * example).
-     * Then, instantiate your derived visitor and call `applyTo()`, passing
-     * the `AronDataPtr` or the root `Navigator`.
-     *
-     * For dicts and lists, you will get a `visitEnter()`/`visitExit()` pair.
-     * For types without children (e.g. primitive types), you get a single
-     * `visit()` call.
-     *
-     * Each visit function should return true to continue traversal or
-     * false to stop it. All default implementations return true.
-     *
-     * To the the location of the passed navigator in the original `AronData`,
-     * use `navigator.getPath()`.
-     *
-     * @see  `aron::data::dto::GenericDataPtr`
-     * @see  `aron::datanavigator::Navigator`
-     * @see `std::stack` To manage data with stack semantics.
-     */
-    class DataVisitor
-    {
-    public:
-
-        // Define types to ease writing code in this and derived classes.
-
-        using DataNavigator = data::Variant;
-
-        using DictDataNavigator = data::Dict;
-        using ListDataNavigator = data::List;
-
-        using BoolDataNavigator = data::Bool;
-        using DoubleDataNavigator = data::Double;
-        using FloatDataNavigator = data::Float;
-        using IntDataNavigator = data::Int;
-        using LongDataNavigator = data::Long;
-        using NDArrayDataNavigator = data::NDArray;
-        using StringDataNavigator = data::String;
-
-
-    public:
-
-        DataVisitor();
-        virtual ~DataVisitor();
-
-
-        bool applyTo(data::dto::GenericDataPtr& aronData);
-        bool applyTo(DataNavigator& navigator);
-        bool applyTo(const std::string& key, DataNavigator& navigator);
-
-
-
-        virtual bool visitEnter(DictDataNavigator& dict)
-        {
-            (void) dict;
-            return true;
-        }
-        virtual bool visitExit(DictDataNavigator& dict)
-        {
-            (void) dict;
-            return true;
-        }
-        virtual bool visitEnter(ListDataNavigator& list)
-        {
-            (void) list;
-            return true;
-        }
-        virtual bool visitExit(ListDataNavigator& list)
-        {
-            (void) list;
-            return true;
-        }
-
-        virtual bool visit(BoolDataNavigator& b)
-        {
-            (void) b;
-            return true;
-        }
-        virtual bool visit(DoubleDataNavigator& d)
-        {
-            (void) d;
-            return true;
-        }
-        virtual bool visit(FloatDataNavigator& f)
-        {
-            (void) f;
-            return true;
-        }
-        virtual bool visit(IntDataNavigator& i)
-        {
-            (void) i;
-            return true;
-        }
-        virtual bool visit(LongDataNavigator& l)
-        {
-            (void) l;
-            return true;
-        }
-        virtual bool visit(NDArrayDataNavigator& array)
-        {
-            (void) array;
-            return true;
-        }
-        virtual bool visit(StringDataNavigator& string)
-        {
-            (void) string;
-            return true;
-        }
-
-
-        virtual bool visitEnter(const std::string& key, DictDataNavigator& dict)
-        {
-            (void) key;
-            return visitEnter(dict);
-        }
-        virtual bool visitExit(const std::string& key, DictDataNavigator& dict)
-        {
-            (void) key;
-            return visitExit(dict);
-        }
-        virtual bool visitEnter(const std::string& key, ListDataNavigator& list)
-        {
-            (void) key;
-            return visitEnter(list);
-        }
-        virtual bool visitExit(const std::string& key, ListDataNavigator& list)
-        {
-            (void) key;
-            return visitExit(list);
-        }
-
-        virtual bool visit(const std::string& key, BoolDataNavigator& b)
-        {
-            (void) key;
-            return visit(b);
-        }
-        virtual bool visit(const std::string& key, DoubleDataNavigator& d)
-        {
-            (void) key;
-            return visit(d);
-        }
-        virtual bool visit(const std::string& key, FloatDataNavigator& f)
-        {
-            (void) key;
-            return visit(f);
-        }
-        virtual bool visit(const std::string& key, IntDataNavigator& i)
-        {
-            (void) key;
-            return visit(i);
-        }
-        virtual bool visit(const std::string& key, LongDataNavigator& l)
-        {
-            (void) key;
-            return visit(l);
-        }
-        virtual bool visit(const std::string& key, NDArrayDataNavigator& array)
-        {
-            (void) key;
-            return visit(array);
-        }
-        virtual bool visit(const std::string& key, StringDataNavigator& string)
-        {
-            (void) key;
-            return visit(string);
-        }
-
-
-    private:
-
-        bool applyToChildren(DictDataNavigator& navigator);
-        bool applyToChildren(ListDataNavigator& navigator);
-
-    };
-
-}
-
-
-/* Copy-and-paste example below.
- * Remove functions you don't need.
- * Add `const std::string& key, ` to parameter list if you need an items's key
- * in the parent container.
- */
-
-#if 0
-
-struct MyDerivedAronDataVisitor : public armarx::aron::visitor::AronDataVisitor
-{
-
-    bool visitEnter(DictDataNavigator& dict) override
-    {
-        (void) dict;
-        return true;
-    }
-    bool visitExit(DictDataNavigator& dict) override
-    {
-        (void) dict;
-        return true;
-    }
-    bool visitEnter(ListDataNavigator& list) override
-    {
-        (void) list;
-        return true;
-    }
-    bool visitExit(ListDataNavigator& list) override
-    {
-        (void) list;
-        return true;
-    }
-
-    bool visit(BoolDataNavigator& b) override
-    {
-        (void) b;
-        return true;
-    }
-    bool visit(DoubleDataNavigator& d) override
-    {
-        (void) d;
-        return true;
-    }
-    bool visit(FloatDataNavigator& f) override
-    {
-        (void) f;
-        return true;
-    }
-    bool visit(IntDataNavigator& i) override
-    {
-        (void) i;
-        return true;
-    }
-    bool visit(LongDataNavigator& l) override
-    {
-        (void) l;
-        return true;
-    }
-    bool visit(NDArrayDataNavigator& array) override
-    {
-        (void) array;
-        return true;
-    }
-    bool visit(StringDataNavigator& string) override
-    {
-        (void) string;
-        return true;
-    }
-
-};
-
-#endif
diff --git a/source/RobotAPI/libraries/aron/core/legacy/Randomizer.h b/source/RobotAPI/libraries/aron/core/legacy/Randomizer.h
deleted file mode 100644
index 3659dee40..000000000
--- a/source/RobotAPI/libraries/aron/core/legacy/Randomizer.h
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#pragma once
-
-// STD/STL
-#include <map>
-#include <memory>
-#include <numeric>
-#include <set>
-
-// ArmarX
-#include <RobotAPI/libraries/aron/core/Exception.h>
-#include <RobotAPI/libraries/aron/core/data/variant/All.h>
-#include <RobotAPI/libraries/aron/core/type/variant/All.h>
-
-#include <RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.h>
-#include <RobotAPI/libraries/aron/core/data/visitor/variant/VariantVisitor.h>
-
-#include <RobotAPI/libraries/aron/converter/json/NLohmannJSONConverter.h>
-
-namespace armarx::aron
-{
-    namespace type::matrix
-    {
-        const std::vector<type::matrix::ElementType> AllTypes = {
-            type::matrix::ElementType::int16,
-            type::matrix::ElementType::int32,
-            type::matrix::ElementType::int64,
-            type::matrix::ElementType::float32,
-            type::matrix::ElementType::float64
-        };
-    }
-
-    namespace type::quaternion
-    {
-        const std::vector<type::quaternion::ElementType> AllTypes = {
-            type::quaternion::float32,
-            type::quaternion::float64
-        };
-    }
-
-    namespace type::image
-    {
-        const std::vector<type::image::PixelType> AllTypes = {
-            type::image::PixelType::rgb24,
-            type::image::PixelType::depth32
-        };
-    }
-
-    namespace type::pointcloud
-    {
-        const std::vector<type::pointcloud::VoxelType> AllTypes = {
-            type::pointcloud::VoxelType::PointXYZ,
-            type::pointcloud::VoxelType::PointXYZHSV,
-            type::pointcloud::VoxelType::PointXYZI,
-            type::pointcloud::VoxelType::PointXYZL,
-            type::pointcloud::VoxelType::PointXYZRGB,
-            type::pointcloud::VoxelType::PointXYZRGBA,
-            type::pointcloud::VoxelType::PointXYZRGBL
-        };
-    }
-
-    namespace util
-    {
-        // generate i in [min, max)
-        int generateRandom(int max, int min)
-        {
-            if (max < min)
-            {
-                throw error::AronException(__PRETTY_FUNCTION__, "The max value "+std::to_string(max)+" is lower than the min value "+std::to_string(min));
-            }
-            int random = (std::rand() % (max - min)) + min;
-            return random;
-        }
-
-        template <class T>
-        T getRandomElement(const std::vector<T>& vec)
-        {
-            int i = generateRandom(vec.size(), 0);
-            return vec.at(i);
-        }
-
-        template <class ValueT>
-        std::string getRandomKey(const std::map<std::string, ValueT>& m)
-        {
-            std::vector<std::string> keys;
-            for (const auto [k, _] : m)
-            {
-                keys.push_back(k);
-            }
-            return getRandomElement(keys);
-        }
-
-        std::string getRandomKey(const std::set<std::string>& set)
-        {
-            std::vector<std::string> keys;
-            for (const auto& k : set)
-            {
-                keys.push_back(k);
-            }
-            return getRandomElement(keys);
-        }
-
-        bool fiftyPercentChance()
-        {
-            return generateRandom(2, 0);
-        }
-
-        std::string generateRandomWord(const std::set<std::string>& usedKeys = {})
-        {
-            // https://randomwordgenerator.com/
-            // script to convert random words into string:
-            // jQuery("#result li i").remove(); var str = ""; jQuery("#result li").each(function() {str += jQuery(this).html() + ", " }); console.log(str);
-            const std::vector<std::string> words =
-            {
-                "jaw", "river", "bow", "profession", "heat", "interference", "slave", "population", "deport", "redeem", "digress", "penny", "cousin", "beef", "Bible", "fuss",
-                "urgency", "tasty", "innovation", "upset", "gold", "day", "remunerate", "strain", "district", "panel", "choke", "rack", "parameter", "despair", "extort", "country",
-                "hesitate", "record", "brand", "confusion", "discreet", "accept", "lifestyle", "option", "corn", "charity", "miss", "viable", "glance", "norm", "meet", "bird",
-                "ribbon", "guideline"
-            };
-
-            int i = generateRandom(words.size(), 0);
-            std::string key = words.at(i);
-
-            while (usedKeys.count(key) > 0)
-            {
-                key = generateRandomWord(usedKeys);
-            }
-
-            return key;
-        }
-
-        std::vector<unsigned char> generateRandomBlob(unsigned int size)
-        {
-            std::vector<unsigned char> new_blob(size, 0);
-            for (unsigned int i = 0; i < size; ++i)
-            {
-                new_blob[i] = (generateRandom(128, 0));
-            }
-            return new_blob;
-        }
-
-        struct RandomTypeGenerator : public type::Visitor<const type::Descriptor>
-        {
-            type::VariantPtr type;
-
-            static type::VariantPtr GenerateRandomType(bool can_be_maybe = true, bool must_be_object = false)
-            {
-                RandomTypeGenerator nt;
-                if (must_be_object)
-                {
-                    type::visit(nt, type::Descriptor::eObject);
-                }
-                else
-                {
-                    type::visit(nt, util::getRandomElement(type::AllDescriptors));
-                }
-
-                if (can_be_maybe)
-                {
-                    type::Maybe nextMaybeType = util::getRandomElement(type::AllMaybeTypes);
-                    nt.type->setMaybe(nextMaybeType);
-                }
-                return nt.type;
-            }
-
-            virtual type::Descriptor getDescriptor(Input& t) override { return t; }
-            virtual void visitObject(Input&) override
-            {
-                std::string objectName = util::generateRandomWord();
-
-                int members = util::generateRandom(4, 2);
-                std::set<std::string> usedKeys = {objectName};
-                std::map<std::string, type::VariantPtr> elements;
-                for (int i = 0; i < members; ++i)
-                {
-                    std::string key = util::generateRandomWord(usedKeys);
-                    usedKeys.insert(key);
-                    elements.insert({key, GenerateRandomType()});
-                }
-                type = std::make_shared<type::Object>(objectName, elements);
-            }
-            virtual void visitDict(Input&) override { type = std::make_shared<type::Dict>(GenerateRandomType()); }
-            virtual void visitPair(Input&) override { type = std::make_shared<type::Pair>(GenerateRandomType(), GenerateRandomType()); }
-            virtual void visitTuple(Input&) override
-            {
-                int members = util::generateRandom(4, 2);
-                std::vector<type::VariantPtr> acceptedTypes;
-                for (int i = 0; i < members; ++i)
-                {
-                    acceptedTypes.push_back(GenerateRandomType());
-                }
-
-                type = std::make_shared<type::Tuple>(acceptedTypes);
-            }
-            virtual void visitList(Input&) override { type = std::make_shared<type::List>(GenerateRandomType()); }
-            virtual void visitMatrix(Input&) override
-            {
-                auto x = std::make_shared<type::Matrix>();
-                auto t = util::getRandomElement(type::matrix::AllTypes);
-                x->setElementType(t);
-                x->setRows(util::generateRandom(10, 1));
-                x->setRows(util::generateRandom(10, 1));
-                type = x;
-            }
-            virtual void visitNDArray(Input& t) override { visitMatrix(t); }
-            virtual void visitQuaternion(Input&) override
-            {
-                auto x = std::make_shared<type::Quaternion>();
-                auto t = util::getRandomElement(type::quaternion::AllTypes);
-                x->setElementType(t);
-                type = x;
-            }
-            virtual void visitOrientation(Input&) override { type = std::make_shared<type::Orientation>(); }
-            virtual void visitPosition(Input&) override { type = std::make_shared<type::Position>(); }
-            virtual void visitPose(Input&) override { type = std::make_shared<type::Pose>(); }
-            virtual void visitImage(Input&) override
-            {
-                auto t = std::make_shared<type::Image>();
-                auto x = util::getRandomElement(type::image::AllTypes);
-                t->setPixelType(x);
-                type = t;
-            }
-            virtual void visitPointCloud(Input&) override
-            {
-                auto t = std::make_shared<type::PointCloud>();
-                auto x = util::getRandomElement(type::pointcloud::AllTypes);
-                t->setVoxelType(x);
-                type = t;
-            }
-            virtual void visitIntEnum(Input&) override
-            {
-                std::string intEnumName = util::generateRandomWord();
-
-                std::set<std::string> usedKeys = {intEnumName};
-                std::map<std::string, int> acceptedValues;
-                for (int i = 0; i < util::generateRandom(5, 2); ++i)
-                {
-                    std::string key = util::generateRandomWord(usedKeys);
-                    usedKeys.insert(key);
-
-                    acceptedValues.insert({key, i});
-                }
-                type = std::make_shared<type::IntEnum>(intEnumName, acceptedValues);
-            }
-            virtual void visitInt(Input&) override { type = std::make_shared<type::Int>(); }
-            virtual void visitLong(Input&) override { type = std::make_shared<type::Long>(); }
-            virtual void visitFloat(Input&) override { type = std::make_shared<type::Float>(); }
-            virtual void visitDouble(Input&) override { type = std::make_shared<type::Double>(); }
-            virtual void visitBool(Input&) override { type = std::make_shared<type::Bool>(); }
-            virtual void visitString(Input&) override { type = std::make_shared<type::String>(); }
-            virtual void visitDateTime(Input&) override { type = std::make_shared<type::DateTime>(); }
-            virtual void visitUnknown(Input&) override { type = GenerateRandomType(); }
-        };
-
-        struct EmptyDataFromTypeGenerator : public type::Visitor<const type::Descriptor>
-        {
-            type::VariantPtr type;
-            data::VariantPtr data;
-
-            static data::VariantPtr GenerateRandomFromType(const type::VariantPtr& t)
-            {
-                EmptyDataFromTypeGenerator nt;
-                nt.type = t;
-                type::visit(nt, util::getRandomElement(type::AllDescriptors));
-                return nt.data;
-            }
-
-            virtual type::Descriptor getDescriptor(Input& t) override { return t; }
-            virtual void visitObject(Input&) override
-            {
-                auto da = std::make_shared<data::Dict>();
-
-                type::ObjectPtr t = type::Object::DynamicCastAndCheck(type);
-                auto d = std::make_shared<data::Dict>();
-                for (const auto& [k, tt] : t->getMemberTypes())
-                {
-                    d->addElement(k, GenerateRandomFromType(tt));
-                }
-                data = da;
-            }
-            virtual void visitDict(Input&) override { data = std::make_shared<data::Dict>(); }
-            virtual void visitPair(Input&) override { data = std::make_shared<data::List>(); }
-            virtual void visitTuple(Input&) override { data = std::make_shared<data::List>(); }
-            virtual void visitList(Input&) override { data = std::make_shared<data::List>(); }
-            virtual void visitMatrix(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitNDArray(Input& t) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitQuaternion(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitOrientation(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitPosition(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitPose(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitImage(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitPointCloud(Input&) override { data = std::make_shared<data::NDArray>(); }
-            virtual void visitIntEnum(Input&) override { data = std::make_shared<data::Int>(); }
-            virtual void visitInt(Input&) override { data = std::make_shared<data::Int>(); }
-            virtual void visitLong(Input&) override { data = std::make_shared<data::Long>(); }
-            virtual void visitFloat(Input&) override { data = std::make_shared<data::Float>(); }
-            virtual void visitDouble(Input&) override { data = std::make_shared<data::Double>(); }
-            virtual void visitBool(Input&) override { data = std::make_shared<data::Bool>(); }
-            virtual void visitString(Input&) override { data = std::make_shared<data::String>(); }
-            virtual void visitDateTime(Input&) override { data = std::make_shared<data::Long>(); }
-            virtual void visitUnknown(Input&) override { data = GenerateRandomFromType(type); }
-        };
-    }
-
-    class Randomizer
-    {
-    public:
-        Randomizer()
-        {
-            std::srand(std::time(nullptr));
-        };
-
-        type::VariantPtr generateRandomObjectType() const
-        {
-            return util::RandomTypeGenerator::GenerateRandomType(false, true);
-        }
-
-        data::VariantPtr generateEmptyAronDataFromType(const type::VariantPtr& type, bool ignore_maybe = false) const
-        {
-            if (type->getMaybe() != type::Maybe::eNone && !ignore_maybe)
-            {
-                if (util::fiftyPercentChance())
-                {
-                    return nullptr;
-                }
-            }
-
-            auto data = util::EmptyDataFromTypeGenerator::GenerateRandomFromType(type);
-            return data;
-        }
-
-        void initializeRandomly(data::VariantPtr& data, const type::VariantPtr& type) const
-        {
-            data = generateEmptyAronDataFromType(type);
-            if (!data)
-            {
-                if (type->getMaybe() == type::Maybe::eNone)
-                {
-                    throw error::AronException(__PRETTY_FUNCTION__, "The data is null but the type is not a maybe type. This is not valid.");
-                }
-                return;
-            }
-
-            // Containers
-            type::Descriptor desc = type->getDescriptor();
-            switch (desc)
-            {
-                case type::Descriptor::eObject:
-                {
-                    auto t = type::Object::DynamicCastAndCheck(type);
-                    auto d = data::Dict::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eList:
-                {
-                    auto t = type::List::DynamicCastAndCheck(type);
-                    auto d = data::List::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eDict:
-                {
-                    auto t = type::Dict::DynamicCastAndCheck(type);
-                    auto d = data::Dict::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eTuple:
-                {
-                    auto t = type::Tuple::DynamicCastAndCheck(type);
-                    auto d = data::List::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::ePair:
-                {
-                    auto t = type::Pair::DynamicCastAndCheck(type);
-                    auto d = data::List::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eIntEnum:
-                {
-                    auto t = type::IntEnum::DynamicCastAndCheck(type);
-                    auto d = data::Int::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eMatrix:
-                {
-                    auto t = type::Matrix::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eNDArray:
-                {
-                    auto t = type::NDArray::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eOrientation:
-                {
-                    auto t = type::Orientation::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eQuaternion:
-                {
-                    auto t = type::Quaternion::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eImage:
-                {
-                    auto t = type::Image::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::ePointCloud:
-                {
-                    auto t = type::PointCloud::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::ePosition:
-                {
-                    auto t = type::Position::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::ePose:
-                {
-                    auto t = type::Pose::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eInt:
-                {
-                    auto t = type::Int::DynamicCastAndCheck(type);
-                    auto d = data::Int::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eLong:
-                {
-                    auto t = type::Long::DynamicCastAndCheck(type);
-                    auto d = data::Long::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eFloat:
-                {
-                    auto t = type::Float::DynamicCastAndCheck(type);
-                    auto d = data::Float::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eDouble:
-                {
-                    auto t = type::Double::DynamicCastAndCheck(type);
-                    auto d = data::Double::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eString:
-                {
-                    auto t = type::String::DynamicCastAndCheck(type);
-                    auto d = data::String::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eBool:
-                {
-                    auto t = type::Bool::DynamicCastAndCheck(type);
-                    auto d = data::Bool::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eTime:
-                {
-                    auto t = type::DateTime::DynamicCastAndCheck(type);
-                    auto d = data::Long::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eUnknown:
-                {
-                    throw error::AronException(__PRETTY_FUNCTION__, "No valid type found!");
-                }
-            }
-
-        }
-
-        void initializeRandomly(data::DictPtr& data, const type::Object& type) const
-        {
-            for (auto& [key, nextData] : data->getElements())
-            {
-                initializeRandomly(nextData, type.getMemberTypes()[key]);
-                data->removeElement(key);
-                data->addElement(key, nextData);
-            }
-        }
-
-        void initializeRandomly(data::DictPtr& data, const type::Dict& type) const
-        {
-            data->clear();
-            int numElements = util::generateRandom(5, 1);
-            std::set<std::string> usedKeys;
-            for (int i = 0; i < numElements; ++i)
-            {
-                std::string key = util::generateRandomWord(usedKeys);
-                usedKeys.insert(key);
-                data::VariantPtr newData = generateEmptyAronDataFromType(type.getAcceptedType());
-                initializeRandomly(newData, type.getAcceptedType());
-                data->addElement(key, newData);
-            }
-        }
-
-        void initializeRandomly(data::ListPtr& data, const type::Tuple& type) const
-        {
-            std::vector<data::VariantPtr> newElements;
-
-            unsigned int i = 0;
-            for (auto& nextData : data->getElements())
-            {
-                initializeRandomly(nextData, type.getAcceptedType(i++));
-                newElements.push_back(nextData);
-            }
-
-            data->clear();
-            for (const auto& el : newElements)
-            {
-                data->addElement(el);
-            }
-        }
-
-        void initializeRandomly(data::ListPtr& data, const type::Pair& type) const
-        {
-            data::VariantPtr first = data->getElement(0);
-            data::VariantPtr second = data->getElement(1);
-            initializeRandomly(first, type.getFirstAcceptedType());
-            initializeRandomly(second, type.getSecondAcceptedType());
-
-            data->clear();
-            data->addElement(first);
-            data->addElement(second);
-        }
-
-        void initializeRandomly(data::ListPtr& data, const type::List& type) const
-        {
-            data->clear();
-            int numElements = util::generateRandom(5, 1);
-            for (int i = 0; i < numElements; ++i)
-            {
-                data::VariantPtr newData = generateEmptyAronDataFromType(type.getAcceptedType());
-                initializeRandomly(newData, type.getAcceptedType());
-                data->addElement(newData);
-            }
-        }
-
-        void initializeRandomly(data::NDArrayPtr& data, const type::Variant& type) const
-        {
-            std::vector<int> dims = data->getShape();
-            int bytes = std::accumulate(std::begin(dims), std::end(dims), 1, std::multiplies<int>());
-            std::vector<unsigned char> blob = util::generateRandomBlob(bytes);
-            data->setData(bytes, blob.data());
-        }
-
-        void initializeRandomly(data::IntPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::LongPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::FloatPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::DoublePtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::BoolPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::fiftyPercentChance());
-        }
-
-        void initializeRandomly(data::StringPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandomWord());
-        }
-    };
-}
-
diff --git a/source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.cpp b/source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.cpp
deleted file mode 100644
index cb129561e..000000000
--- a/source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-#include "TypedDataVisitor.h"
-
-#include <SimoxUtility/meta/type_name.h>
-
-#include <ArmarXCore/core/exceptions/local/ExpressionException.h>
-
-
-namespace armarx::aron::visitor
-{
-
-
-    TypedDataVisitor::TypedDataVisitor()
-    {
-    }
-
-    TypedDataVisitor::~TypedDataVisitor()
-    {
-    }
-
-    bool TypedDataVisitor::applyTo(TypeNavigator& type, DataNavigator& data)
-    {
-        return this->applyTo("", type, data);
-    }
-
-    template <class DataT, class TypeT>
-    bool TypedDataVisitor::applyToCollection(TypeT& type, const std::string& key, DataNavigator& data)
-    {
-        DataT& dataCast = dynamic_cast<DataT&>(data);
-        if (!visitEnter(type, key, dataCast))
-        {
-            return false;
-        }
-        if (!applyToChildren(type, dataCast))
-        {
-            return false;
-        }
-        if (!visitExit(type, key, dataCast))
-        {
-            return false;
-        }
-        return true;
-    }
-
-    template <class ToT, class FromT>
-    ToT cast(const FromT& from)
-    {
-        ToT to;
-        to.setValue(from.getValue());
-        return to;
-    }
-    template <class FromDataT>
-    std::optional<data::Long> castToLong(const FromDataT& data)
-    {
-        if (auto d = dynamic_cast<const data::Int*>(&data))
-        {
-            return cast<data::Long>(*d);
-        }
-        return std::nullopt;
-    }
-    template <class FromDataT>
-    std::optional<data::Int> castToInt(const FromDataT& data)
-    {
-        if (auto d = dynamic_cast<const data::Long*>(&data))
-        {
-            return cast<data::Int>(*d);
-        }
-        return std::nullopt;
-    }
-
-
-    bool TypedDataVisitor::applyTo(const std::string& key, TypeNavigator& type, DataNavigator& data)
-    {
-        if (auto t = dynamic_cast<ObjectTypeNavigator*>(&type))
-        {
-            return applyToCollection<DictDataNavigator>(*t, key, data);
-        }
-        else if (auto t = dynamic_cast<DictTypeNavigator*>(&type))
-        {
-            return applyToCollection<DictDataNavigator>(*t, key, data);
-        }
-        else if (auto t = dynamic_cast<ListTypeNavigator*>(&type))
-        {
-            return applyToCollection<ListDataNavigator>(*t, key, data);
-        }
-        else if (auto t = dynamic_cast<TupleTypeNavigator*>(&type))
-        {
-            return applyToCollection<ListDataNavigator>(*t, key, data);
-        }
-
-        ARMARX_CHECK_EQUAL(type.childrenSize(), 0) << simox::meta::get_type_name(type);
-        ARMARX_CHECK_EQUAL(data.childrenSize(), 0) << simox::meta::get_type_name(data);
-
-        try
-        {
-
-            if (auto t = dynamic_cast<BoolTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<BoolDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<DoubleTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<DoubleDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<FloatTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<FloatDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<IntTypeNavigator*>(&type))
-            {
-                if (auto cast = castToInt(data))
-                {
-                    return visit(*t, key, cast.value());
-                }
-                else
-                {
-                    return visit(*t, key, dynamic_cast<IntDataNavigator&>(data));
-                }
-            }
-            else if (auto t = dynamic_cast<LongTypeNavigator*>(&type))
-            {
-                if (auto cast = castToLong(data))
-                {
-                    return visit(*t, key, cast.value());
-                }
-                else
-                {
-                    return visit(*t, key, dynamic_cast<LongDataNavigator&>(data));
-                }
-            }
-            else if (auto t = dynamic_cast<StringTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<StringDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<TimeTypeNavigator*>(&type))
-            {
-                if (auto cast = castToLong(data))
-                {
-                    return visit(*t, key, cast.value());
-                }
-                else
-                {
-                    return visit(*t, key, dynamic_cast<LongDataNavigator&>(data));
-                }
-            }
-
-            if (auto t = dynamic_cast<PCLPointCloudTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<EigenMatrixTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<EigenQuaternionTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<ImageNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<PoseTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<PositionTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-            else if (auto t = dynamic_cast<OrientationTypeNavigator*>(&type))
-            {
-                return visit(*t, key, dynamic_cast<NDArrayDataNavigator&>(data));
-            }
-
-            ARMARX_CHECK(false) << "Unhandled AronTypeNavigatorType '" << simox::meta::get_type_name(type) << "'."
-                                << "\n(Data: '" << simox::meta::get_type_name(data) << "')";
-        }
-        catch (const std::bad_cast& e)
-        {
-            std::stringstream msg;
-            msg << "Got ARON data '" << simox::meta::get_type_name(data) << "'"
-                << " incompatible to ARON type '" << simox::meta::get_type_name(type) << "'"
-                << " (got std::bad_cast: '" << e.what() << "').";
-            throw error::AronException(__PRETTY_FUNCTION__, msg.str());
-        }
-    }
-
-    bool TypedDataVisitor::applyToChildren(ObjectTypeNavigator& type, DictDataNavigator& data)
-    {
-        for (const std::string& key : type.getAllKeys())
-        {
-            TypeNavigator::PointerType childType = type.getMemberType(key);
-            DataNavigator::PointerType childData = data.getElement(key);
-            if (childType && childData)
-            {
-                if (!applyTo(key, *childType, *childData))
-                {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    bool TypedDataVisitor::applyToChildren(DictTypeNavigator& type, DictDataNavigator& data)
-    {
-        TypeNavigator::PointerType childType = type.getAcceptedType();
-        for (const std::string& key : data.getAllKeys())
-        {
-            DataNavigator::PointerType childData = data.getElement(key);
-            if (childType && childData)
-            {
-                if (!applyTo(key, *childType, *childData))
-                {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    bool TypedDataVisitor::applyToChildren(ListTypeNavigator& type, ListDataNavigator& data)
-    {
-        TypeNavigator::PointerType childType = type.getAcceptedType();
-        size_t i = 0;
-        for (const DataNavigator::PointerType& childData : data.getElements())
-        {
-            if (childType && childData)
-            {
-                if (!applyTo(std::to_string(i), *childType, *childData))
-                {
-                    return false;
-                }
-            }
-            ++i;
-        }
-        return true;
-    }
-
-    bool TypedDataVisitor::applyToChildren(TupleTypeNavigator& type, ListDataNavigator& data)
-    {
-        unsigned int i = 0;
-        for (const TypeNavigator::PointerType& childType : type.getAcceptedTypes())
-        {
-            DataNavigator::PointerType childData = data.getElement(i);
-            if (childType && childData)
-            {
-                if (!applyTo(std::to_string(i), *childType, *childData))
-                {
-                    return false;
-                }
-            }
-            ++i;
-        }
-        return true;
-    }
-
-}
diff --git a/source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.h b/source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.h
deleted file mode 100644
index 5a41647d3..000000000
--- a/source/RobotAPI/libraries/aron/core/legacy/TypedDataVisitor.h
+++ /dev/null
@@ -1,379 +0,0 @@
-#pragma once
-
-#include <RobotAPI/libraries/aron/core/data/variant/All.h>
-#include <RobotAPI/libraries/aron/core/type/variant/All.h>
-
-
-namespace armarx::aron::visitor
-{
-
-    /**
-     * @brief A visitor traversing an `aron::type::dto::GenericTypePtr` using
-     * `aron::Typenavigator::Navigator`s, taking care of type checking,
-     * casting and hierarchical traversal.
-     *
-     * To use it, create a class deriving from `AronTypeVisitor` and
-     * override the overloads of `visitEnter()`, `visitExit()` and `visit()`
-     * for the types you would like to handle (see blow for a copy-and-paste
-     * example).
-     * Then, instantiate your derived visitor and call `applyTo()`, passing
-     * the `AronTypePtr` or the root `Navigator`.
-     *
-     * For dicts and lists, you will get a `visitEnter()`/`visitExit()` pair.
-     * For types without children (e.g. primitive types), you get a single
-     * `visit()` call.
-     *
-     * Each visit function should return true to continue traversal or
-     * false to stop it. All default implementations return true.
-     *
-     * To the the location of the passed navigator in the original `AronType`,
-     * use `navigator.getPath()`.
-     *
-     * @see `aron::type::dto::GenericTypePtr`
-     * @see `aron::Typenavigator::Navigator`
-     * @see `std::stack` To manage Type with stack semantics.
-     */
-    class TypedDataVisitor
-    {
-    public:
-
-        // Define types to ease writing code in this and derived classes.
-
-        // Data - possible data representations
-        using DataNavigator = data::Variant;
-
-        using DictDataNavigator = data::Dict;
-        using ListDataNavigator = data::List;
-
-        using BoolDataNavigator = data::Bool;
-        using DoubleDataNavigator = data::Double;
-        using FloatDataNavigator = data::Float;
-        using IntDataNavigator = data::Int;
-        using LongDataNavigator = data::Long;
-        using StringDataNavigator = data::String;
-
-        using NDArrayDataNavigator = data::NDArray;
-
-
-        // Type
-        using TypeNavigator = type::Variant;
-
-        // Dict-valued
-        using DictTypeNavigator = type::Dict;
-        using ObjectTypeNavigator = type::Object;
-
-        // List-valued
-        using ListTypeNavigator = type::List;
-        using TupleTypeNavigator = type::Tuple;
-
-        // Primitive-valued
-        using BoolTypeNavigator = type::Bool;
-        using DoubleTypeNavigator = type::Double;
-        using FloatTypeNavigator = type::Float;
-        using IntTypeNavigator = type::Int;
-        using LongTypeNavigator = type::Long;
-        using StringTypeNavigator = type::String;
-        using TimeTypeNavigator = type::DateTime;
-
-
-        // Array-valued
-        using EigenMatrixTypeNavigator = type::Matrix;
-        using EigenQuaternionTypeNavigator = type::Quaternion;
-        using ImageNavigator = type::Image;
-        using PCLPointCloudTypeNavigator = type::PointCloud;
-        using PoseTypeNavigator = type::Pose;
-        using PositionTypeNavigator = type::Position;
-        using OrientationTypeNavigator = type::Orientation;
-
-
-    public:
-
-        TypedDataVisitor();
-        virtual ~TypedDataVisitor();
-
-
-        bool applyTo(TypeNavigator& type, DataNavigator& data);
-        bool applyTo(const std::string& key, TypeNavigator& type, DataNavigator& data);
-
-
-        virtual bool visitEnter(DictTypeNavigator& type, DictDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visitExit(DictTypeNavigator& type, DictDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-
-        virtual bool visitEnter(ObjectTypeNavigator& type, DictDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visitExit(ObjectTypeNavigator& type, DictDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-
-        virtual bool visitEnter(ListTypeNavigator& type, ListDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visitExit(ListTypeNavigator& type, ListDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-
-        virtual bool visitEnter(TupleTypeNavigator& type, ListDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visitExit(TupleTypeNavigator& type, ListDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-
-
-        virtual bool visit(BoolTypeNavigator& type, BoolDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(DoubleTypeNavigator& type, DoubleDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(FloatTypeNavigator& type, FloatDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(IntTypeNavigator& type, IntDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(LongTypeNavigator& type, LongDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(StringTypeNavigator& type, StringDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(TimeTypeNavigator& type, LongDataNavigator& data)
-        {
-            return visit(type, IceUtil::Time::microSeconds(data.getValue()));
-        }
-        virtual bool visit(TimeTypeNavigator& type, const IceUtil::Time& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-
-
-        virtual bool visit(EigenMatrixTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(EigenQuaternionTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(ImageNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        /*virtual bool visit(IVTCByteImageTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(OpenCVMatTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }*/
-        virtual bool visit(PCLPointCloudTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(PoseTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(PositionTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-        virtual bool visit(OrientationTypeNavigator& type, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) data;
-            return true;
-        }
-
-
-
-        virtual bool visitEnter(DictTypeNavigator& type, const std::string& key, DictDataNavigator& data)
-        {
-            (void) key;
-            return visitEnter(type, data);
-        }
-        virtual bool visitExit(DictTypeNavigator& type, const std::string& key, DictDataNavigator& data)
-        {
-            (void) key;
-            return visitExit(type, data);
-        }
-
-        virtual bool visitEnter(ObjectTypeNavigator& type, const std::string& key, DictDataNavigator& data)
-        {
-            (void) key;
-            return visitEnter(type, data);
-        }
-        virtual bool visitExit(ObjectTypeNavigator& type, const std::string& key, DictDataNavigator& data)
-        {
-            (void) key;
-            return visitExit(type, data);
-        }
-
-        virtual bool visitEnter(ListTypeNavigator& type, const std::string& key, ListDataNavigator& data)
-        {
-            (void) key;
-            return visitEnter(type, data);
-        }
-        virtual bool visitExit(ListTypeNavigator& type, const std::string& key, ListDataNavigator& data)
-        {
-            (void) key;
-            return visitExit(type, data);
-        }
-
-        virtual bool visitEnter(TupleTypeNavigator& type, const std::string& key, ListDataNavigator& data)
-        {
-            (void) key;
-            return visitEnter(type, data);
-        }
-        virtual bool visitExit(TupleTypeNavigator& type, const std::string& key, ListDataNavigator& data)
-        {
-            (void) key;
-            return visitExit(type, data);
-        }
-
-
-        virtual bool visit(BoolTypeNavigator& type, const std::string& key, BoolDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(DoubleTypeNavigator& type, const std::string& key, DoubleDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(FloatTypeNavigator& type, const std::string& key, FloatDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(IntTypeNavigator& type, const std::string& key, IntDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(LongTypeNavigator& type, const std::string& key, LongDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(StringTypeNavigator& type, const std::string& key, StringDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(TimeTypeNavigator& type, const std::string& key, LongDataNavigator& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(TimeTypeNavigator& type, const std::string& key, const IceUtil::Time& data)
-        {
-            (void) key;
-            return visit(type, data);
-        }
-
-
-        virtual bool visit(EigenMatrixTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(EigenQuaternionTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(ImageNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        /*virtual bool visit(IVTCByteImageTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(OpenCVMatTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }*/
-        virtual bool visit(PCLPointCloudTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(PoseTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(PositionTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-        virtual bool visit(OrientationTypeNavigator& type, const std::string& key, NDArrayDataNavigator& data)
-        {
-            (void) type, (void) key;
-            return visit(type, data);
-        }
-
-
-    private:
-
-        template <class DataT, class TypeT>
-        bool applyToCollection(TypeT& type, const std::string& key, DataNavigator& data);
-
-        bool applyToChildren(ObjectTypeNavigator& type, DictDataNavigator& data);
-        bool applyToChildren(DictTypeNavigator& type, DictDataNavigator& data);
-        bool applyToChildren(ListTypeNavigator& type, ListDataNavigator& data);
-        bool applyToChildren(TupleTypeNavigator& type, ListDataNavigator& data);
-
-    };
-
-}
diff --git a/source/RobotAPI/libraries/aron/core/test/CMakeLists.txt b/source/RobotAPI/libraries/aron/core/test/CMakeLists.txt
index 0250dd36e..e69de29bb 100644
--- a/source/RobotAPI/libraries/aron/core/test/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/core/test/CMakeLists.txt
@@ -1,146 +0,0 @@
-find_package(Simox QUIET)
-armarx_build_if(Simox_FOUND "Simox not available")
-
-find_package(Eigen3 QUIET)
-armarx_build_if(Eigen3_FOUND "Eigen3 not available")
-
-find_package(IVT COMPONENTS ivt ivtopencv QUIET)
-armarx_build_if(IVT_FOUND "IVT not available")
-
-find_package(OpenCV QUIET)
-armarx_build_if(OpenCV_FOUND "OpenCV not available")
-
-find_package(PCL QUIET)
-armarx_build_if(PCL_FOUND "PCL not available")
-
-######################
-# ARON OPERATOR TEST #
-######################
-armarx_add_test(
-    TEST_NAME
-        aronOperatorTest
-    TEST_FILE
-        aronOperatorTest.cpp
-    LIBS
-        SimoxUtility  # Simox::SimoxUtility
-        ArmarXCore
-        aron
-        aroncommon
-    INCLUDE_DIRECTORIES
-        ${Simox_INCLUDE_DIR}
-)
-
-######################
-# ARON CODE GEN TEST #
-######################
-armarx_add_test(
-    TEST_NAME
-        aronCodeGenerationTest
-    TEST_FILE
-        aronCodeGenerationTest.cpp
-    LIBS
-        SimoxUtility  # Simox::SimoxUtility
-        ArmarXCore
-        RobotAPI::aron
-    ARON_FILES
-        aron/AnyTest.xml
-        aron/TemplateTest.xml
-        aron/DictTest.xml
-        aron/MatrixTest.xml
-        aron/QuaternionTest.xml
-        aron/EnumTest.xml
-        aron/HumanPoseTest.xml
-        aron/ImageTest.xml
-        aron/ListTest.xml
-        aron/NaturalIKTest.xml
-        aron/ObjectTest.xml
-        aron/OrientationTest.xml
-        aron/PointCloudTest.xml
-        aron/PoseTest.xml
-        aron/PositionTest.xml
-        aron/PrimitiveTest.xml
-        aron/OptionalTest.xml
-    INCLUDE_DIRECTORIES
-        ${Simox_INCLUDE_DIR}
-        ${Eigen3_INCLUDE_DIR}
-        ${IVT_INCLUDE_DIRS}
-        ${OpenCV_INCLUDE_DIRS}
-        ${PCL_INCLUDE_DIRS}
-)
-
-######################
-# ARON NAVIGATE TEST #
-######################
-armarx_add_test(
-    TEST_NAME
-        aronNavigateTest
-    TEST_FILE
-        aronNavigateTest.cpp
-    LIBS
-        SimoxUtility  # Simox::SimoxUtility
-        ArmarXCore
-        RobotAPI::aron
-    ARON_FILES
-        aron/NaturalIKTest.xml
-    INCLUDE_DIRECTORIES
-        ${Simox_INCLUDE_DIR}
-)
-
-######################
-# ARON EXTENDS TEST  #
-######################
-armarx_add_test(
-    TEST_NAME
-        aronExtendsTest
-    TEST_FILE
-        aronExtendsTest.cpp
-    LIBS
-        SimoxUtility  # Simox::SimoxUtility
-        ArmarXCore
-        RobotAPI::aron
-    ARON_FILES
-        aron/BaseClassTest.xml
-        aron/DerivedClassTest.xml
-    INCLUDE_DIRECTORIES
-        ${Simox_INCLUDE_DIR}
-)
-
-########################
-# ARON RANDOMIZED TEST #
-########################
-armarx_add_test(
-    TEST_NAME
-        aronRandomizedTest
-    TEST_FILE
-        aronRandomizedTest.cpp
-    LIBS
-        SimoxUtility  # Simox::SimoxUtility
-        ArmarXCore
-        RobotAPI::aron
-        ivt
-        ivtopencv
-        ${PCL_COMMON_LIBRARIES}
-        aronjsonconverter
-    ARON_FILES
-        aron/DictTest.xml
-        aron/MatrixTest.xml
-        aron/QuaternionTest.xml
-        aron/EnumTest.xml
-        aron/HumanPoseTest.xml
-        aron/ListTest.xml
-        aron/NaturalIKTest.xml
-        aron/ObjectTest.xml
-        aron/OrientationTest.xml
-        aron/PointCloudTest.xml
-        aron/PoseTest.xml
-        aron/PositionTest.xml
-        aron/PrimitiveTest.xml
-        aron/OptionalTest.xml
-        aron/ImageTest.xml
-    INCLUDE_DIRECTORIES
-        ${Simox_INCLUDE_DIR}
-        ${Eigen3_INCLUDE_DIR}
-        ${IVT_INCLUDE_DIRS}
-        ${OpenCV_INCLUDE_DIRS}
-        ${PCL_INCLUDE_DIRS}
-)
diff --git a/source/RobotAPI/libraries/aron/core/test/Randomizer.cpp b/source/RobotAPI/libraries/aron/core/test/Randomizer.cpp
deleted file mode 100644
index e81ab45e0..000000000
--- a/source/RobotAPI/libraries/aron/core/test/Randomizer.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#include "Randomizer.h"
diff --git a/source/RobotAPI/libraries/aron/core/test/Randomizer.h b/source/RobotAPI/libraries/aron/core/test/Randomizer.h
deleted file mode 100644
index 24e441822..000000000
--- a/source/RobotAPI/libraries/aron/core/test/Randomizer.h
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#pragma once
-
-// STD/STL
-#include <map>
-#include <memory>
-#include <numeric>
-#include <set>
-
-// ArmarX
-#include <RobotAPI/libraries/aron/core/Exception.h>
-#include <RobotAPI/libraries/aron/core/data/variant/All.h>
-#include <RobotAPI/libraries/aron/core/type/variant/All.h>
-
-#include <RobotAPI/libraries/aron/core/type/visitor/Visitor.h>
-#include <RobotAPI/libraries/aron/core/data/visitor/Visitor.h>
-
-#include <RobotAPI/libraries/aron/converter/json/NLohmannJSONConverter.h>
-
-#include <RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/All.h>
-
-namespace armarx::aron
-{
-    namespace type::matrix
-    {
-        std::vector<type::matrix::ElementType> getAllTypes()
-        {
-            std::vector<type::matrix::ElementType> ret;
-            for(const auto& el : aron::codegenerator::cpp::generator::Matrix::ElementType2Cpp)
-            {
-                ret.push_back(el.first);
-            }
-            return ret;
-        }
-        const std::vector<type::matrix::ElementType> AllTypes = getAllTypes();
-    }
-
-    namespace type::quaternion
-    {
-        std::vector<type::quaternion::ElementType> getAllTypes()
-        {
-            std::vector<type::quaternion::ElementType> ret;
-            for(const auto& el : aron::codegenerator::cpp::generator::Quaternion::ElementType2Cpp)
-            {
-                ret.push_back(el.first);
-            }
-            return ret;
-        }
-        const std::vector<type::quaternion::ElementType> AllTypes = getAllTypes();
-    }
-
-    namespace type::image
-    {
-        std::vector<type::image::PixelType> getAllTypes()
-        {
-            std::vector<type::image::PixelType> ret;
-            for(const auto& el : aron::codegenerator::cpp::generator::Image::PixelType2Cpp)
-            {
-                ret.push_back(el.first);
-            }
-            return ret;
-        }
-        const std::vector<type::image::PixelType> AllTypes = getAllTypes();
-    }
-
-    namespace type::pointcloud
-    {
-        std::vector<type::pointcloud::VoxelType> getAllTypes()
-        {
-            std::vector<type::pointcloud::VoxelType> ret;
-            for(const auto& el : aron::codegenerator::cpp::generator::PointCloud::VoxelType2Cpp)
-            {
-                ret.push_back(el.first);
-            }
-            return ret;
-        }
-        const std::vector<type::pointcloud::VoxelType> AllTypes = getAllTypes();
-    }
-
-    namespace util
-    {
-        // generate i in [min, max)
-        int generateRandom(int max, int min)
-        {
-            if (max < min)
-            {
-                throw error::AronException(__PRETTY_FUNCTION__, "The max value "+std::to_string(max)+" is lower than the min value "+std::to_string(min));
-            }
-            int random = (std::rand() % (max - min)) + min;
-            return random;
-        }
-
-        template <class T>
-        T getRandomElement(const std::vector<T>& vec)
-        {
-            int i = generateRandom(vec.size(), 0);
-            return vec.at(i);
-        }
-
-        template <class ValueT>
-        std::string getRandomKey(const std::map<std::string, ValueT>& m)
-        {
-            std::vector<std::string> keys;
-            for (const auto [k, _] : m)
-            {
-                keys.push_back(k);
-            }
-            return getRandomElement(keys);
-        }
-
-        std::string getRandomKey(const std::set<std::string>& set)
-        {
-            std::vector<std::string> keys;
-            for (const auto& k : set)
-            {
-                keys.push_back(k);
-            }
-            return getRandomElement(keys);
-        }
-
-        bool fiftyPercentChance()
-        {
-            return generateRandom(2, 0);
-        }
-
-        std::string generateRandomWord(const std::set<std::string>& usedKeys = {})
-        {
-            // https://randomwordgenerator.com/
-            // script to convert random words into string:
-            // jQuery("#result li i").remove(); var str = ""; jQuery("#result li").each(function() {str += jQuery(this).html() + ", " }); console.log(str);
-            const std::vector<std::string> words =
-            {
-                "jaw", "river", "bow", "profession", "heat", "interference", "slave", "population", "deport", "redeem", "digress", "penny", "cousin", "beef", "Bible", "fuss",
-                "urgency", "tasty", "innovation", "upset", "gold", "day", "remunerate", "strain", "district", "panel", "choke", "rack", "parameter", "despair", "extort", "country",
-                "hesitate", "record", "brand", "confusion", "discreet", "accept", "lifestyle", "option", "corn", "charity", "miss", "viable", "glance", "norm", "meet", "bird",
-                "ribbon", "guideline"
-            };
-
-            int i = generateRandom(words.size(), 0);
-            std::string key = words.at(i);
-
-            while (usedKeys.count(key) > 0)
-            {
-                key = generateRandomWord(usedKeys);
-            }
-
-            return key;
-        }
-
-        std::vector<unsigned char> generateRandomBlob(unsigned int size)
-        {
-            std::vector<unsigned char> new_blob(size, 0);
-            for (unsigned int i = 0; i < size; ++i)
-            {
-                new_blob[i] = (generateRandom(128, 0));
-            }
-            return new_blob;
-        }
-    }
-
-    class Randomizer
-    {
-    public:
-        Randomizer()
-        {
-            std::srand(std::time(nullptr));
-        };
-
-        type::VariantPtr generateRandomType(bool allowMaybeType = false, bool firstObject = false) const
-        {
-            type::Descriptor nextType = type::Descriptor::eObject;
-            if (!firstObject)
-            {
-                nextType = util::getRandomElement(type::AllDescriptors);
-            }
-
-            type::Maybe nextMaybeType = type::Maybe::eNone;
-            if (allowMaybeType && !firstObject)
-            {
-                nextMaybeType = util::getRandomElement(type::AllMaybeTypes);
-            }
-            (void) nextMaybeType; //unused
-
-            switch (nextType)
-            {
-                case type::Descriptor::eAnyObject: [[fallthrough]];
-                case type::Descriptor::eObject:
-                {
-                    std::string objectName = util::generateRandomWord();
-
-                    int members = util::generateRandom(4, 2);
-                    std::set<std::string> usedKeys = {objectName};
-                    std::map<std::string, type::VariantPtr> elements;
-                    for (int i = 0; i < members; ++i)
-                    {
-                        std::string key = util::generateRandomWord(usedKeys);
-                        usedKeys.insert(key);
-
-                        type::VariantPtr m = generateRandomType(false);
-                        elements.insert({key, m});
-                    }
-
-                    auto t = std::make_shared<type::Object>(objectName, std::vector<std::string>(), std::vector<std::string>(), elements);
-                    return t;
-                }
-                case type::Descriptor::eIntEnum:
-                {
-                    std::string intEnumName = util::generateRandomWord();
-
-                    std::set<std::string> usedKeys = {intEnumName};
-                    std::map<std::string, int> acceptedValues;
-                    for (int i = 0; i < util::generateRandom(5, 2); ++i)
-                    {
-                        std::string key = util::generateRandomWord(usedKeys);
-                        usedKeys.insert(key);
-
-                        acceptedValues.insert({key, i});
-                    }
-                    auto t = std::make_shared<type::IntEnum>(intEnumName, acceptedValues);
-                    return t;
-                }
-                case type::Descriptor::eDict:
-                {
-                    type::VariantPtr a = generateRandomType(false);
-                    auto t = std::make_shared<type::Dict>(a);
-                    return t;
-                }
-                case type::Descriptor::eTuple:
-                {
-                    int members = util::generateRandom(4, 2);
-                    std::vector<type::VariantPtr> acceptedTypes;
-                    for (int i = 0; i < members; ++i)
-                    {
-                        type::VariantPtr m = generateRandomType(false);
-                        acceptedTypes.push_back(m);
-                    }
-
-                    auto t = std::make_shared<type::Tuple>(acceptedTypes);
-                    return t;
-                }
-                case type::Descriptor::eList:
-                {
-                    type::VariantPtr a = generateRandomType(false);
-
-                    auto t = std::make_shared<type::List>(a);
-                    return t;
-                }
-                case type::Descriptor::ePair:
-                {
-                    type::VariantPtr a = generateRandomType(false);
-                    type::VariantPtr b = generateRandomType(false);
-
-                    auto t = std::make_shared<type::Pair>(a,b);
-                    return t;
-                }
-                case type::Descriptor::eNDArray:
-                {
-                    // TODO (fabian.peller)
-                    // fall through EigenMatrix
-                }
-                case type::Descriptor::eMatrix:
-                {
-                    auto t = std::make_shared<type::Matrix>();
-                    auto type = util::getRandomElement(type::matrix::AllTypes);
-                    t->setElementType(type);
-                    t->setRows(util::generateRandom(10, 1));
-                    t->setRows(util::generateRandom(10, 1));
-                    return t;
-                }
-                case type::Descriptor::eQuaternion:
-                {
-                    auto t = std::make_shared<type::Quaternion>();
-                    auto type = util::getRandomElement(type::quaternion::AllTypes);
-                    t->setElementType(type);
-                    return t;
-                }
-                case type::Descriptor::eImage:
-                {
-                    auto t = std::make_shared<type::Image>();
-                    auto type = util::getRandomElement(type::image::AllTypes);
-                    t->setPixelType(type);
-                    return t;
-                }
-                case type::Descriptor::ePointCloud:
-                {
-                    auto t = std::make_shared<type::PointCloud>();
-                    auto type = util::getRandomElement(type::pointcloud::AllTypes);
-                    t->setVoxelType(type);
-                    return t;
-                }
-                case type::Descriptor::eInt:
-                {
-                    auto t = std::make_shared<type::Int>();
-                    return t;
-                }
-                case type::Descriptor::eLong:
-                {
-                    auto t = std::make_shared<type::Long>();
-                    return t;
-                }
-                case type::Descriptor::eFloat:
-                {
-                    auto t = std::make_shared<type::Float>();
-                    return t;
-                }
-                case type::Descriptor::eDouble:
-                {
-                    auto t = std::make_shared<type::Double>();
-                    return t;
-                }
-                case type::Descriptor::eString:
-                {
-                    auto t = std::make_shared<type::String>();
-                    return t;
-                }
-                case type::Descriptor::eBool:
-                {
-                    auto t = std::make_shared<type::Bool>();
-                    return t;
-                }
-                case type::Descriptor::eDateTime:
-                {
-                    auto t = std::make_shared<type::DateTime>();
-                    return t;
-                }
-                case type::Descriptor::eUnknown:
-                {
-                    throw error::AronException(__PRETTY_FUNCTION__, "No valid type found!");
-                }
-            }
-        }
-
-        data::VariantPtr generateEmptyAronDataFromType(const type::VariantPtr& type, bool ignore_maybe = false) const
-        {
-            if (type->getMaybe() != type::Maybe::eNone && !ignore_maybe)
-            {
-                if (util::fiftyPercentChance())
-                {
-                    return nullptr;
-                }
-            }
-
-            const type::Descriptor desc = type->getDescriptor();
-            switch (desc)
-            {
-                // In an object, we do not want to edit the keys.
-                case type::Descriptor::eObject:
-                {
-                    type::ObjectPtr t = type::Object::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::Dict>();
-                    for (const auto& [k, tt] : t->getMemberTypes())
-                    {
-                        d->addElement(k, generateEmptyAronDataFromType(tt));
-                    }
-                    return d;
-                }
-
-                case type::Descriptor::eIntEnum:
-                {
-                    auto t = type::IntEnum::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::Int>();
-                    return d;
-                }
-
-                // here all totally random
-                case type::Descriptor::eDict:
-                {
-                    auto t = type::Dict::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Dict());
-                }
-
-                case type::Descriptor::eList:
-                {
-                    auto t = type::List::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::List());
-                }
-
-                case type::Descriptor::ePair:
-                {
-                    auto t = type::Pair::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::List());
-                }
-
-                case type::Descriptor::eTuple:
-                {
-                    auto t = type::Tuple::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::List());
-                }
-
-                case type::Descriptor::eMatrix:
-                {
-                    auto t = type::Matrix::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::NDArray>();
-                    d->setShape({(int) t->getRows(), (int) t->getCols(), aron::codegenerator::cpp::generator::Matrix::ElementType2Cpp.at(t->getElementType()).second});
-                    d->setType(aron::codegenerator::cpp::generator::Matrix::ElementType2Cpp.at(t->getElementType()).first);
-                    return d;
-                }
-
-                case type::Descriptor::eQuaternion:
-                {
-                    auto t = type::Quaternion::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::NDArray>();
-                    d->setShape({1, 4, aron::codegenerator::cpp::generator::Quaternion::ElementType2Cpp.at(t->getElementType()).second});
-                    d->setType(aron::codegenerator::cpp::generator::Quaternion::ElementType2Cpp.at(t->getElementType()).first);
-                    return d;
-                }
-
-                case type::Descriptor::eImage:
-                {
-                    auto t = type::Image::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::NDArray>();
-                    d->setShape({util::generateRandom(10, 1), util::generateRandom(10, 1), aron::codegenerator::cpp::generator::Image::PixelType2Cpp.at(t->getPixelType()).second});
-                    d->setType("5");
-                    return d;
-                }
-
-                case type::Descriptor::ePointCloud:
-                {
-                    auto t = type::PointCloud::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::NDArray>();
-                    d->setShape({util::generateRandom(10, 1), util::generateRandom(10, 1), aron::codegenerator::cpp::generator::PointCloud::VoxelType2Cpp.at(t->getVoxelType()).second});
-                    d->setType(aron::codegenerator::cpp::generator::PointCloud::VoxelType2Cpp.at(t->getVoxelType()).first);
-                    return d;
-                }
-
-                case type::Descriptor::eNDArray:
-                {
-                    auto t = type::NDArray::DynamicCastAndCheck(type);
-                    auto d = std::make_shared<data::NDArray>();
-                    return d;
-                }
-
-                case type::Descriptor::eInt:
-                {
-                    auto t = type::Int::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Int());
-                }
-
-                case type::Descriptor::eLong:
-                {
-                    auto t = type::Long::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Long());
-                }
-
-                case type::Descriptor::eFloat:
-                {
-                    auto t = type::Float::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Float());
-                }
-
-                case type::Descriptor::eDouble:
-                {
-                    auto t = type::Double::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Double());
-                }
-
-                case type::Descriptor::eString:
-                {
-                    auto t = type::String::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::String());
-                }
-
-                case type::Descriptor::eBool:
-                {
-                    auto t = type::Bool::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Bool());
-                }
-
-                case type::Descriptor::eDateTime:
-                {
-                    auto t = type::DateTime::DynamicCastAndCheck(type);
-                    return data::VariantPtr(new data::Dict());
-                }
-
-                default:
-                {
-                    throw error::AronException(__PRETTY_FUNCTION__, "No valid type found!");
-                }
-            }
-        }
-
-        void initializeRandomly(data::VariantPtr& data, const type::VariantPtr& type, bool use_existing_data = true) const
-        {
-            if (!use_existing_data)
-            {
-                data = generateEmptyAronDataFromType(type);
-            }
-            if (!data)
-            {
-                if (type->getMaybe() == type::Maybe::eNone)
-                {
-                    throw error::AronException(__PRETTY_FUNCTION__, "The data is null but the type is not a maybe type. This is not valid.");
-                }
-                return;
-            }
-
-            // Containers
-            type::Descriptor desc = type->getDescriptor();
-            switch (desc)
-            {
-                case type::Descriptor::eAnyObject: [[fallthrough]];
-                case type::Descriptor::eObject:
-                {
-                    auto t = type::Object::DynamicCastAndCheck(type);
-                    auto d = data::Dict::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eList:
-                {
-                    auto t = type::List::DynamicCastAndCheck(type);
-                    auto d = data::List::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eDict:
-                {
-                    auto t = type::Dict::DynamicCastAndCheck(type);
-                    auto d = data::Dict::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eTuple:
-                {
-                    auto t = type::Tuple::DynamicCastAndCheck(type);
-                    auto d = data::List::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::ePair:
-                {
-                    auto t = type::Pair::DynamicCastAndCheck(type);
-                    auto d = data::List::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eIntEnum:
-                {
-                    auto t = type::IntEnum::DynamicCastAndCheck(type);
-                    auto d = data::Int::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eMatrix:
-                {
-                    auto t = type::Matrix::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eNDArray:
-                {
-                    auto t = type::NDArray::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eQuaternion:
-                {
-                    auto t = type::Quaternion::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eImage:
-                {
-                    auto t = type::Image::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::ePointCloud:
-                {
-                    auto t = type::PointCloud::DynamicCastAndCheck(type);
-                    auto d = data::NDArray::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eInt:
-                {
-                    auto t = type::Int::DynamicCastAndCheck(type);
-                    auto d = data::Int::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eLong:
-                {
-                    auto t = type::Long::DynamicCastAndCheck(type);
-                    auto d = data::Long::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eFloat:
-                {
-                    auto t = type::Float::DynamicCastAndCheck(type);
-                    auto d = data::Float::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eDouble:
-                {
-                    auto t = type::Double::DynamicCastAndCheck(type);
-                    auto d = data::Double::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eString:
-                {
-                    auto t = type::String::DynamicCastAndCheck(type);
-                    auto d = data::String::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eBool:
-                {
-                    auto t = type::Bool::DynamicCastAndCheck(type);
-                    auto d = data::Bool::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eDateTime:
-                {
-                    auto t = type::DateTime::DynamicCastAndCheck(type);
-                    auto d = data::Dict::DynamicCastAndCheck(data);
-                    initializeRandomly(d, *t);
-                    break;
-                }
-                case type::Descriptor::eUnknown:
-                {
-                    throw error::AronException(__PRETTY_FUNCTION__, "No valid type found!");
-                }
-            }
-
-        }
-
-        void initializeRandomly(data::DictPtr& data, const type::Object& type, bool use_existing_data = true) const
-        {
-            for (auto& [key, nextData] : data->getElements())
-            {
-                initializeRandomly(nextData, type.getMemberTypes()[key], use_existing_data);
-                data->removeElement(key);
-                data->addElement(key, nextData);
-            }
-        }
-
-        void initializeRandomly(data::DictPtr& data, const type::Dict& type, bool use_existing_data = true) const
-        {
-            data->clear();
-            int numElements = util::generateRandom(5, 1);
-            std::set<std::string> usedKeys;
-            for (int i = 0; i < numElements; ++i)
-            {
-                std::string key = util::generateRandomWord(usedKeys);
-                usedKeys.insert(key);
-                data::VariantPtr newData = generateEmptyAronDataFromType(type.getAcceptedType());
-                initializeRandomly(newData, type.getAcceptedType(), use_existing_data);
-                data->addElement(key, newData);
-            }
-        }
-
-        void initializeRandomly(data::ListPtr& data, const type::Tuple& type, bool use_existing_data = true) const
-        {
-            std::vector<data::VariantPtr> newElements;
-
-            unsigned int i = 0;
-            for (auto& nextData : data->getElements())
-            {
-                initializeRandomly(nextData, type.getAcceptedType(i++), use_existing_data);
-                newElements.push_back(nextData);
-            }
-
-            data->clear();
-            for (const auto& el : newElements)
-            {
-                data->addElement(el);
-            }
-        }
-
-        void initializeRandomly(data::ListPtr& data, const type::Pair& type, bool use_existing_data = true) const
-        {
-            data::VariantPtr first = data->getElement(0);
-            data::VariantPtr second = data->getElement(1);
-            initializeRandomly(first, type.getFirstAcceptedType(), use_existing_data);
-            initializeRandomly(second, type.getSecondAcceptedType(), use_existing_data);
-
-            data->clear();
-            data->addElement(first);
-            data->addElement(second);
-        }
-
-        void initializeRandomly(data::ListPtr& data, const type::List& type, bool use_existing_data = true) const
-        {
-            data->clear();
-            int numElements = util::generateRandom(5, 1);
-            for (int i = 0; i < numElements; ++i)
-            {
-                data::VariantPtr newData = generateEmptyAronDataFromType(type.getAcceptedType());
-                initializeRandomly(newData, type.getAcceptedType(), use_existing_data);
-                data->addElement(newData);
-            }
-        }
-
-        void initializeRandomly(data::NDArrayPtr& data, const type::Variant& type) const
-        {
-            std::vector<int> dims = data->getShape();
-            if (!dims.empty())
-            {
-                int bytes = std::accumulate(std::begin(dims), std::end(dims), 1, std::multiplies<int>());
-                std::vector<unsigned char> blob = util::generateRandomBlob(bytes);
-                data->setData(bytes, blob.data());
-            }
-        }
-
-        void initializeRandomly(data::IntPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::LongPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::FloatPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::DoublePtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandom(1000, -1000));
-        }
-
-        void initializeRandomly(data::BoolPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::fiftyPercentChance());
-        }
-
-        void initializeRandomly(data::StringPtr& data, const type::Variant& type) const
-        {
-            data->setValue(util::generateRandomWord());
-        }
-
-        void initializeRandomly(data::DictPtr& data, const type::DateTime& type) const
-        {
-            //data->setValue(util::generateRandomWord());
-        }
-    };
-}
diff --git a/source/RobotAPI/libraries/aron/core/type/converter/Converter.h b/source/RobotAPI/libraries/aron/core/type/converter/Converter.h
index 48c91d42f..e166ab432 100644
--- a/source/RobotAPI/libraries/aron/core/type/converter/Converter.h
+++ b/source/RobotAPI/libraries/aron/core/type/converter/Converter.h
@@ -245,14 +245,6 @@ namespace armarx::aron::type
             last_returned = w.writeString(maybe, p);
         };
 
-        void visitDateTime(ReaderInputType& o) final
-        {
-            type::Maybe maybe;
-            Path p;
-            r.readDateTime(o, maybe, p);
-            last_returned = w.writeDateTime(maybe, p);
-        };
-
         void visitUnknown(ReaderInputType& o) final
         {
             if (!r.readNull(o))
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/Reader.h b/source/RobotAPI/libraries/aron/core/type/rw/Reader.h
index ebe518169..790a0d9fb 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/Reader.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/Reader.h
@@ -96,9 +96,6 @@ namespace armarx::aron::type
         /// Extract information from an bool type
         virtual void readBool(const InputType& input, type::Maybe& maybe, Path& p) = 0;
 
-        /// Extract information from an time type
-        virtual void readDateTime(const InputType& input, type::Maybe& maybe, Path& p) = 0;
-
         /// Extract information from an time type
         virtual void readAnyObject(const InputType& input, type::Maybe& maybe, Path& p) = 0;
 
@@ -110,7 +107,7 @@ namespace armarx::aron::type
         }
 
         // Convenience methods without path
-        void readObject(const InputType& input, std::string& name, std::map<std::string, InputTypeNonConst>& memberTypes, type::Maybe& maybe)
+        /*void readObject(const InputType& input, std::string& name, std::map<std::string, InputTypeNonConst>& memberTypes, type::Maybe& maybe)
         {
             Path p;
             return readObject(input, name, memberTypes, maybe, p);
@@ -212,11 +209,11 @@ namespace armarx::aron::type
             return readBool(input, maybe, p);
         }
 
-        void readDateTime(const InputType& input, type::Maybe& maybe)
+        void readAnyObject(const InputType& input, type::any::AnyObjectType& t, type::Maybe& maybe)
         {
             Path p;
-            return readDateTime(input, maybe, p);
-        }
+            return readBool(input, t, maybe, p);
+        }*/
     };
 
     template <class T>
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/Writer.h b/source/RobotAPI/libraries/aron/core/type/rw/Writer.h
index b95d17a48..5cba5dd67 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/Writer.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/Writer.h
@@ -97,9 +97,6 @@ namespace armarx::aron::type
         /// Construct a bool from the params
         virtual ReturnType writeBool(const type::Maybe maybe, const Path& p) = 0;
 
-        /// Construct a time from the params
-        virtual ReturnType writeDateTime(const type::Maybe maybe, const Path& p) = 0;
-
         /// Construct a time from the params
         virtual ReturnType writeAnyObject(const type::Maybe maybe, const Path& p) = 0;
 
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/json/Data.h b/source/RobotAPI/libraries/aron/core/type/rw/json/Data.h
index 59484fd35..a3dbadf76 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/json/Data.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/json/Data.h
@@ -77,84 +77,83 @@ namespace armarx::aron::type::rw::json
     namespace conversion
     {
         const std::map<type::Descriptor, std::string> Descriptor2String = {
-            {type::Descriptor::eDict, rw::json::constantes::DICT_TYPENAME_SLUG},
-            {type::Descriptor::eList, rw::json::constantes::LIST_TYPENAME_SLUG},
-            {type::Descriptor::ePair, rw::json::constantes::PAIR_TYPENAME_SLUG},
-            {type::Descriptor::eTuple, rw::json::constantes::TUPLE_TYPENAME_SLUG},
-            {type::Descriptor::eObject, rw::json::constantes::OBJECT_TYPENAME_SLUG},
-            {type::Descriptor::eNDArray, rw::json::constantes::NDARRAY_TYPENAME_SLUG},
-            {type::Descriptor::eMatrix, rw::json::constantes::MATRIX_TYPENAME_SLUG},
-            {type::Descriptor::eImage, rw::json::constantes::IMAGE_TYPENAME_SLUG},
-            {type::Descriptor::ePointCloud, rw::json::constantes::POINT_CLOUD_TYPENAME_SLUG},
-            {type::Descriptor::eQuaternion, rw::json::constantes::QUATERNION_TYPENAME_SLUG},
-            {type::Descriptor::eIntEnum, rw::json::constantes::INT_ENUM_TYPENAME_SLUG},
-            {type::Descriptor::eInt, rw::json::constantes::INT_TYPENAME_SLUG},
-            {type::Descriptor::eLong, rw::json::constantes::LONG_TYPENAME_SLUG},
-            {type::Descriptor::eFloat, rw::json::constantes::FLOAT_TYPENAME_SLUG},
-            {type::Descriptor::eDouble, rw::json::constantes::DOUBLE_TYPENAME_SLUG},
-            {type::Descriptor::eBool, rw::json::constantes::BOOL_TYPENAME_SLUG},
-            {type::Descriptor::eString, rw::json::constantes::STRING_TYPENAME_SLUG},
-            {type::Descriptor::eDateTime, rw::json::constantes::TIME_TYPENAME_SLUG},
-            {type::Descriptor::eAnyObject, rw::json::constantes::ANY_OBJECT_TYPENAME_SLUG}
+            {type::Descriptor::DICT, rw::json::constantes::DICT_TYPENAME_SLUG},
+            {type::Descriptor::LIST, rw::json::constantes::LIST_TYPENAME_SLUG},
+            {type::Descriptor::PAIR, rw::json::constantes::PAIR_TYPENAME_SLUG},
+            {type::Descriptor::TUPLE, rw::json::constantes::TUPLE_TYPENAME_SLUG},
+            {type::Descriptor::OBJECT, rw::json::constantes::OBJECT_TYPENAME_SLUG},
+            {type::Descriptor::NDARRAY, rw::json::constantes::NDARRAY_TYPENAME_SLUG},
+            {type::Descriptor::MATRIX, rw::json::constantes::MATRIX_TYPENAME_SLUG},
+            {type::Descriptor::IMAGE, rw::json::constantes::IMAGE_TYPENAME_SLUG},
+            {type::Descriptor::POINTCLOUD, rw::json::constantes::POINT_CLOUD_TYPENAME_SLUG},
+            {type::Descriptor::QUATERNION, rw::json::constantes::QUATERNION_TYPENAME_SLUG},
+            {type::Descriptor::INT_ENUM, rw::json::constantes::INT_ENUM_TYPENAME_SLUG},
+            {type::Descriptor::INT, rw::json::constantes::INT_TYPENAME_SLUG},
+            {type::Descriptor::LONG, rw::json::constantes::LONG_TYPENAME_SLUG},
+            {type::Descriptor::FLOAT, rw::json::constantes::FLOAT_TYPENAME_SLUG},
+            {type::Descriptor::DOUBLE, rw::json::constantes::DOUBLE_TYPENAME_SLUG},
+            {type::Descriptor::BOOL, rw::json::constantes::BOOL_TYPENAME_SLUG},
+            {type::Descriptor::STRING, rw::json::constantes::STRING_TYPENAME_SLUG},
+            {type::Descriptor::ANY_OBJECT, rw::json::constantes::ANY_OBJECT_TYPENAME_SLUG}
         };
         const auto String2Descriptor = aron::conversion::util::InvertMap(Descriptor2String);
 
         const std::map<type::Maybe, std::string> Maybe2String =
         {
-            {type::Maybe::eNone, "type::maybe::none"},
-            {type::Maybe::eOptional, "type::maybe::optional"},
-            {type::Maybe::eRawPointer, "type::maybe::raw_ptr"},
-            {type::Maybe::eSharedPointer, "type::maybe::shared_ptr"},
-            {type::Maybe::eUniquePointer, "type::maybe::unique_ptr"}
+            {type::Maybe::NONE, "type::maybe::NONE"},
+            {type::Maybe::OPTIONAL, "type::maybe::OPTIONAL"},
+            {type::Maybe::RAW_PTR, "type::maybe::RAW_PTR"},
+            {type::Maybe::SHARED_PTR, "type::maybe::SHARED_PTR"},
+            {type::Maybe::UNIQUE_PTR, "type::maybe::UNIQUE_PTR"}
         };
         const auto String2Maybe = aron::conversion::util::InvertMap(Maybe2String);
 
         const std::map<type::ndarray::ElementType, std::string> NDArrayType2String =
         {
-            {type::ndarray::ElementType::int8, "type::ndarray::int8"},
-            {type::ndarray::ElementType::int16, "type::ndarray::int16"},
-            {type::ndarray::ElementType::int32, "type::ndarray::int32"},
-            {type::ndarray::ElementType::uint8, "type::ndarray::uint8"},
-            {type::ndarray::ElementType::uint16, "type::ndarray::uint16"},
-            {type::ndarray::ElementType::uint32, "type::ndarray::uint32"},
-            {type::ndarray::ElementType::float32, "type::ndarray::float32"},
-            {type::ndarray::ElementType::float64, "type::ndarray::float64"}
+            {type::ndarray::ElementType::INT8, "type::ndarray::INT8"},
+            {type::ndarray::ElementType::INT16, "type::ndarray::INT16"},
+            {type::ndarray::ElementType::INT32, "type::ndarray::INT32"},
+            {type::ndarray::ElementType::UINT8, "type::ndarray::UINT8"},
+            {type::ndarray::ElementType::UINT16, "type::ndarray::UINT16"},
+            {type::ndarray::ElementType::UINT32, "type::ndarray::UINT32"},
+            {type::ndarray::ElementType::FLOAT32, "type::ndarray::FLOAT32"},
+            {type::ndarray::ElementType::FLOAT64, "type::ndarray::FLOAT64"}
         };
         const auto String2NDArrayType = aron::conversion::util::InvertMap(NDArrayType2String);
 
         const std::map<type::matrix::ElementType, std::string> MatrixType2String =
         {
-            {type::matrix::ElementType::int16, "type::matrix::int16"},
-            {type::matrix::ElementType::int32, "type::matrix::int32"},
-            {type::matrix::ElementType::int64, "type::matrix::int64"},
-            {type::matrix::ElementType::float32, "type::matrix::float32"},
-            {type::matrix::ElementType::float64, "type::matrix::float64"}
+            {type::matrix::ElementType::INT16, "type::matrix::INT16"},
+            {type::matrix::ElementType::INT32, "type::matrix::INT32"},
+            {type::matrix::ElementType::INT64, "type::matrix::INT64"},
+            {type::matrix::ElementType::FLOAT32, "type::matrix::FLOAT32"},
+            {type::matrix::ElementType::FLOAT64, "type::matrix::FLOAT64"}
         };
         const auto String2MatrixType = aron::conversion::util::InvertMap(MatrixType2String);
 
         const std::map<type::quaternion::ElementType, std::string> QuaternionType2String =
         {
-            {type::quaternion::ElementType::float32, "type::quaternion::float32"},
-            {type::quaternion::ElementType::float64, "type::quaternion::float64"}
+            {type::quaternion::ElementType::FLOAT32, "type::quaternion::FLOAT32"},
+            {type::quaternion::ElementType::FLOAT64, "type::quaternion::FLOAT64"}
         };
         const auto String2QuaternionType = aron::conversion::util::InvertMap(QuaternionType2String);
 
         const std::map<type::image::PixelType, std::string> PixelType2String =
         {
-            {type::image::PixelType::rgb24, "type::image::rgb24"},
-            {type::image::PixelType::depth32, "type::image::depth32"}
+            {type::image::PixelType::RGB24, "type::image::RGB24"},
+            {type::image::PixelType::DEPTH32, "type::image::DEPTH32"}
         };
         const auto String2PixelType = aron::conversion::util::InvertMap(PixelType2String);
 
         const std::map<type::pointcloud::VoxelType, std::string> VoxelType2String =
         {
-            {type::pointcloud::VoxelType::PointXYZ, "type::pointcloud::pointxyz"},
-            {type::pointcloud::VoxelType::PointXYZI, "type::pointcloud::pointxyzi"},
-            {type::pointcloud::VoxelType::PointXYZL, "type::pointcloud::pointxyzl"},
-            {type::pointcloud::VoxelType::PointXYZRGB, "type::pointcloud::pointxyzrgb"},
-            {type::pointcloud::VoxelType::PointXYZRGBA, "type::pointcloud::pointxyzrgba"},
-            {type::pointcloud::VoxelType::PointXYZRGBL, "type::pointcloud::pointxyzrgbl"},
-            {type::pointcloud::VoxelType::PointXYZHSV, "type::pointcloud::pointxyzhsv"}
+            {type::pointcloud::VoxelType::POINT_XYZ, "type::pointcloud::POINT_XYZ"},
+            {type::pointcloud::VoxelType::POINT_XYZI, "type::pointcloud::POINT_XYZI"},
+            {type::pointcloud::VoxelType::POINT_XYZL, "type::pointcloud::POINT_XYZL"},
+            {type::pointcloud::VoxelType::POINT_XYZRGB, "type::pointcloud::POINT_XYZRGB"},
+            {type::pointcloud::VoxelType::POINT_XYZRGBA, "type::pointcloud::POINT_XYZRGBA"},
+            {type::pointcloud::VoxelType::POINT_XYZRGBL, "type::pointcloud::POINT_XYZRGBL"},
+            {type::pointcloud::VoxelType::POINT_XYZHSV, "type::pointcloud::POINT_XYZHSV"}
         };
         const auto String2VoxelType = aron::conversion::util::InvertMap(VoxelType2String);
     }
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.cpp b/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.cpp
index f48d2cd43..028b6681c 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.cpp
@@ -211,13 +211,6 @@ namespace armarx::aron::type::reader
         maybe = rw::json::conversion::String2Maybe.at(input[rw::json::constantes::MAYBE_SLUG]);
     }
 
-    void NlohmannJSONReader::readDateTime(const nlohmann::json& input, type::Maybe& maybe, Path& p)
-    {
-        getAronMetaInformationForType(input, rw::json::constantes::TIME_TYPENAME_SLUG, p);
-
-        maybe = rw::json::conversion::String2Maybe.at(input[rw::json::constantes::MAYBE_SLUG]);
-    }
-
     void NlohmannJSONReader::readAnyObject(const nlohmann::json& input, type::Maybe& maybe, Path& p)
     {
         getAronMetaInformationForType(input, rw::json::constantes::ANY_OBJECT_TYPENAME_SLUG, p);
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.h b/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.h
index 252c8ce4a..3775977b4 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/reader/nlohmannJSON/NlohmannJSONReader.h
@@ -41,27 +41,26 @@ namespace armarx::aron::type::reader
 
         type::Descriptor getDescriptor(InputType& input) final;
 
-        void readObject(InputType& input, std::string& name, std::vector<std::string>& templates, std::vector<std::string>& templateInstantiations, std::map<std::string, InputTypeNonConst>& memberTypes, type::Maybe& maybe, Path& p) override;
-        void readList(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p) override;
-        void readDict(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p) override;
-        void readTuple(InputType& input, std::vector<InputTypeNonConst>& acceptedTypes, type::Maybe& maybe, Path& p) override;
-        void readPair(InputType& input, InputTypeNonConst& acceptedType1, InputTypeNonConst& acceptedType2, type::Maybe& maybe, Path& p) override;
+        void readObject(InputType& input, std::string& name, std::vector<std::string>& templates, std::vector<std::string>& templateInstantiations, std::map<std::string, InputTypeNonConst>& memberTypes, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readList(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readDict(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readTuple(InputType& input, std::vector<InputTypeNonConst>& acceptedTypes, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readPair(InputType& input, InputTypeNonConst& acceptedType1, InputTypeNonConst& acceptedType2, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readNDArray(InputType& input, int& ndim, type::ndarray::ElementType& type, type::Maybe& maybe, Path& p) override;
-        void readMatrix(InputType& input, int& rows, int& cols, type::matrix::ElementType& type, type::Maybe& maybe, Path& p) override;
-        void readQuaternion(InputType& input, type::quaternion::ElementType& type, type::Maybe& maybe, Path& p) override;
-        void readPointCloud(InputType& input, type::pointcloud::VoxelType& type, type::Maybe& maybe, Path& p) override;
-        void readImage(InputType& input, type::image::PixelType& type, type::Maybe& maybe, Path& p) override;
+        void readNDArray(InputType& input, int& ndim, type::ndarray::ElementType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readMatrix(InputType& input, int& rows, int& cols, type::matrix::ElementType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readQuaternion(InputType& input, type::quaternion::ElementType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readPointCloud(InputType& input, type::pointcloud::VoxelType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readImage(InputType& input, type::image::PixelType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readIntEnum(InputType& input, std::string& name, std::map<std::string, int>& acceptedValues, type::Maybe& maybe, Path& p) override;
+        void readIntEnum(InputType& input, std::string& name, std::map<std::string, int>& acceptedValues, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readInt(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readLong(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readFloat(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readDouble(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readString(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readBool(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readDateTime(InputType& input, type::Maybe& maybe, Path& p) override;
+        void readInt(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readLong(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readFloat(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readDouble(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readString(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readBool(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
         void readAnyObject(InputType& input, type::Maybe& maybe, Path& p) override;
     };
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.cpp b/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.cpp
index 44ed7f19d..452f240a5 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.cpp
@@ -209,15 +209,6 @@ namespace armarx::aron::type::reader
         p = o->getPath();
     }
 
-    void VariantReader::readDateTime(const aron::type::VariantPtr& input, type::Maybe& maybe, Path& p)
-    {
-        ARMARX_CHECK_NOT_NULL(input);
-        auto o = type::DateTime::DynamicCastAndCheck(input);
-
-        maybe = o->getMaybe();
-        p = o->getPath();
-    }
-
     void VariantReader::readAnyObject(const aron::type::VariantPtr& input, type::Maybe& maybe, Path& p)
     {
         ARMARX_CHECK_NOT_NULL(input);
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.h b/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.h
index 4edd6b41b..5b9d592c0 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/reader/variant/VariantReader.h
@@ -42,28 +42,27 @@ namespace armarx::aron::type::reader
 
         type::Descriptor getDescriptor(InputType& input) final;
 
-        void readObject(InputType& input, std::string& name, std::vector<std::string>& templates, std::vector<std::string>& templateInstantiations, std::map<std::string, InputTypeNonConst>& memberTypes, type::Maybe& maybe, Path& p) override;
-        void readList(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p) override;
-        void readDict(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p) override;
-        void readTuple(InputType& input, std::vector<InputTypeNonConst>& acceptedTypes, type::Maybe& maybe, Path& p) override;
-        void readPair(InputType& input, InputTypeNonConst& acceptedType1, InputTypeNonConst& acceptedType2, type::Maybe& maybe, Path& p) override;
+        void readObject(InputType& input, std::string& name, std::vector<std::string>& templates, std::vector<std::string>& templateInstantiations, std::map<std::string, InputTypeNonConst>& memberTypes, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readList(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readDict(InputType& input, InputTypeNonConst& acceptedType, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readTuple(InputType& input, std::vector<InputTypeNonConst>& acceptedTypes, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readPair(InputType& input, InputTypeNonConst& acceptedType1, InputTypeNonConst& acceptedType2, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readNDArray(InputType& input, int& ndim, type::ndarray::ElementType& type, type::Maybe& maybe, Path& p) override;
-        void readMatrix(InputType& input, int& rows, int& cols, type::matrix::ElementType& type, type::Maybe& maybe, Path& p) override;
-        void readQuaternion(InputType& input, type::quaternion::ElementType& type, type::Maybe& maybe, Path& p) override;
-        void readPointCloud(InputType& input, type::pointcloud::VoxelType& type, type::Maybe& maybe, Path& p) override;
-        void readImage(InputType& input, type::image::PixelType& type, type::Maybe& maybe, Path& p) override;
+        void readNDArray(InputType& input, int& ndim, type::ndarray::ElementType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readMatrix(InputType& input, int& rows, int& cols, type::matrix::ElementType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readQuaternion(InputType& input, type::quaternion::ElementType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readPointCloud(InputType& input, type::pointcloud::VoxelType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readImage(InputType& input, type::image::PixelType& type, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readIntEnum(InputType& input, std::string& name, std::map<std::string, int>& acceptedValues, type::Maybe& maybe, Path& p) override;
+        void readIntEnum(InputType& input, std::string& name, std::map<std::string, int>& acceptedValues, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readInt(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readLong(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readFloat(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readDouble(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readString(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readBool(InputType& input, type::Maybe& maybe, Path& p) override;
-        void readDateTime(InputType& input, type::Maybe& maybe, Path& p) override;
+        void readInt(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readLong(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readFloat(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readDouble(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readString(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
+        void readBool(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
 
-        void readAnyObject(InputType& input, type::Maybe& maybe, Path& p) override;
+        void readAnyObject(InputType& input, type::Maybe& maybe, Path& p = *std::unique_ptr<Path>(new Path())) override;
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.cpp b/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.cpp
index e44122f0f..159c604b1 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.cpp
@@ -203,13 +203,6 @@ namespace armarx::aron::type::writer
         return o;
     }
 
-    nlohmann::json NlohmannJSONWriter::writeDateTime(const type::Maybe maybe, const Path& p)
-    {
-        nlohmann::json o;
-        setupAronMetaInformationForType(o, rw::json::constantes::TIME_TYPENAME_SLUG, maybe, p);
-        return o;
-    }
-
     nlohmann::json NlohmannJSONWriter::writeAnyObject(const type::Maybe maybe, const Path& p)
     {
         nlohmann::json o;
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.h b/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.h
index 4b2f0a2bb..25e89bdf0 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/writer/nlohmannJSON/NlohmannJSONWriter.h
@@ -61,7 +61,6 @@ namespace armarx::aron::type::writer
         ReturnType writeDouble(const type::Maybe maybe, const Path& p = Path()) override;
         ReturnType writeString(const type::Maybe maybe, const Path& p = Path()) override;
         ReturnType writeBool(const type::Maybe maybe, const Path& p = Path()) override;
-        ReturnType writeDateTime(const type::Maybe maybe, const Path& p = Path()) override;
 
         ReturnType writeAnyObject(const type::Maybe maybe, const Path& p = Path()) override;
     };
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.cpp b/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.cpp
index 7b25cecc3..87af08395 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.cpp
@@ -163,13 +163,6 @@ namespace armarx::aron::type::writer
         return o;
     }
 
-    aron::type::VariantPtr VariantWriter::writeDateTime(const type::Maybe maybe, const Path& p)
-    {
-        auto o = std::make_shared<type::DateTime>(p);
-        o->setMaybe(maybe);
-        return o;
-    }
-
     aron::type::VariantPtr VariantWriter::writeAnyObject(const type::Maybe maybe, const Path& p)
     {
         auto o = std::make_shared<type::AnyObject>(p);
diff --git a/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.h b/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.h
index cfb81f32d..92fea0d71 100644
--- a/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.h
+++ b/source/RobotAPI/libraries/aron/core/type/rw/writer/variant/VariantWriter.h
@@ -57,7 +57,6 @@ namespace armarx::aron::type::writer
         ReturnType writeDouble(const type::Maybe maybe, const Path& p = Path()) override;
         ReturnType writeString(const type::Maybe maybe, const Path& p = Path()) override;
         ReturnType writeBool(const type::Maybe maybe, const Path& p = Path()) override;
-        ReturnType writeDateTime(const type::Maybe maybe, const Path& p = Path()) override;
 
         ReturnType writeAnyObject(const type::Maybe maybe, const Path& p = Path()) override;
     };
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/All.h b/source/RobotAPI/libraries/aron/core/type/variant/All.h
index 9ea6d08e1..46934fb07 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/All.h
+++ b/source/RobotAPI/libraries/aron/core/type/variant/All.h
@@ -5,7 +5,6 @@
 #include "enum/All.h"
 #include "primitive/All.h"
 #include "any/All.h"
-#include "dto/All.h"
 
 /**
  * A convenience header to include all aron files (full include, not forward declared)
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/Factory.cpp b/source/RobotAPI/libraries/aron/core/type/variant/Factory.cpp
index 0baad531e..405a5e748 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/Factory.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/Factory.cpp
@@ -37,26 +37,25 @@ namespace armarx::aron::type
         auto descriptor = type::Aron2Descriptor(aron);
         switch(descriptor)
         {
-            case type::Descriptor::eList: return std::make_unique<type::List>(dynamic_cast<const type::dto::List&>(aron), path);
-            case type::Descriptor::eDict: return std::make_unique<type::Dict>(dynamic_cast<const type::dto::Dict&>(aron), path);
-            case type::Descriptor::ePair: return std::make_unique<type::Pair>(dynamic_cast<const type::dto::Pair&>(aron), path);
-            case type::Descriptor::eTuple: return std::make_unique<type::Tuple>(dynamic_cast<const type::dto::Tuple&>(aron), path);
-            case type::Descriptor::eObject: return std::make_unique<type::Object>(dynamic_cast<const type::dto::AronObject&>(aron), path);
-            case type::Descriptor::eNDArray: return std::make_unique<type::NDArray>(dynamic_cast<const type::dto::NDArray&>(aron), path);
-            case type::Descriptor::eMatrix: return std::make_unique<type::Matrix>(dynamic_cast<const type::dto::Matrix&>(aron), path);
-            case type::Descriptor::eImage: return std::make_unique<type::Image>(dynamic_cast<const type::dto::Image&>(aron), path);
-            case type::Descriptor::ePointCloud: return std::make_unique<type::PointCloud>(dynamic_cast<const type::dto::PointCloud&>(aron), path);
-            case type::Descriptor::eQuaternion: return std::make_unique<type::Quaternion>(dynamic_cast<const type::dto::Quaternion&>(aron), path);
-            case type::Descriptor::eIntEnum: return std::make_unique<type::IntEnum>(dynamic_cast<const type::dto::IntEnum&>(aron), path);
-            case type::Descriptor::eInt: return std::make_unique<type::Int>(dynamic_cast<const type::dto::AronInt&>(aron), path);
-            case type::Descriptor::eLong: return std::make_unique<type::Long>(dynamic_cast<const type::dto::AronLong&>(aron), path);
-            case type::Descriptor::eFloat: return std::make_unique<type::Float>(dynamic_cast<const type::dto::AronFloat&>(aron), path);
-            case type::Descriptor::eDouble: return std::make_unique<type::Double>(dynamic_cast<const type::dto::AronDouble&>(aron), path);
-            case type::Descriptor::eString: return std::make_unique<type::String>(dynamic_cast<const type::dto::AronString&>(aron), path);
-            case type::Descriptor::eBool: return std::make_unique<type::Bool>(dynamic_cast<const type::dto::AronBool&>(aron), path);
-            case type::Descriptor::eDateTime: return std::make_unique<type::DateTime>(dynamic_cast<const type::dto::AronDateTime&>(aron), path);
-            case type::Descriptor::eAnyObject: return std::make_unique<type::AnyObject>(dynamic_cast<const type::dto::AnyObject&>(aron), path);
-            case type::Descriptor::eUnknown: break;
+            case type::Descriptor::LIST: return std::make_unique<type::List>(dynamic_cast<const type::dto::List&>(aron), path);
+            case type::Descriptor::DICT: return std::make_unique<type::Dict>(dynamic_cast<const type::dto::Dict&>(aron), path);
+            case type::Descriptor::PAIR: return std::make_unique<type::Pair>(dynamic_cast<const type::dto::Pair&>(aron), path);
+            case type::Descriptor::TUPLE: return std::make_unique<type::Tuple>(dynamic_cast<const type::dto::Tuple&>(aron), path);
+            case type::Descriptor::OBJECT: return std::make_unique<type::Object>(dynamic_cast<const type::dto::AronObject&>(aron), path);
+            case type::Descriptor::NDARRAY: return std::make_unique<type::NDArray>(dynamic_cast<const type::dto::NDArray&>(aron), path);
+            case type::Descriptor::MATRIX: return std::make_unique<type::Matrix>(dynamic_cast<const type::dto::Matrix&>(aron), path);
+            case type::Descriptor::IMAGE: return std::make_unique<type::Image>(dynamic_cast<const type::dto::Image&>(aron), path);
+            case type::Descriptor::POINTCLOUD: return std::make_unique<type::PointCloud>(dynamic_cast<const type::dto::PointCloud&>(aron), path);
+            case type::Descriptor::QUATERNION: return std::make_unique<type::Quaternion>(dynamic_cast<const type::dto::Quaternion&>(aron), path);
+            case type::Descriptor::INT_ENUM: return std::make_unique<type::IntEnum>(dynamic_cast<const type::dto::IntEnum&>(aron), path);
+            case type::Descriptor::INT: return std::make_unique<type::Int>(dynamic_cast<const type::dto::AronInt&>(aron), path);
+            case type::Descriptor::LONG: return std::make_unique<type::Long>(dynamic_cast<const type::dto::AronLong&>(aron), path);
+            case type::Descriptor::FLOAT: return std::make_unique<type::Float>(dynamic_cast<const type::dto::AronFloat&>(aron), path);
+            case type::Descriptor::DOUBLE: return std::make_unique<type::Double>(dynamic_cast<const type::dto::AronDouble&>(aron), path);
+            case type::Descriptor::STRING: return std::make_unique<type::String>(dynamic_cast<const type::dto::AronString&>(aron), path);
+            case type::Descriptor::BOOL: return std::make_unique<type::Bool>(dynamic_cast<const type::dto::AronBool&>(aron), path);
+            case type::Descriptor::ANY_OBJECT: return std::make_unique<type::AnyObject>(dynamic_cast<const type::dto::AnyObject&>(aron), path);
+            case type::Descriptor::UNKNOWN: break;
         }
         throw error::ValueNotValidException(__PRETTY_FUNCTION__, "Got an unknown descriptor", std::to_string((int) descriptor) + " aka " + defaultconversion::string::Descriptor2String.at(descriptor), path);
     }
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/any/AnyObject.cpp b/source/RobotAPI/libraries/aron/core/type/variant/any/AnyObject.cpp
index bd53947d9..78a17d080 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/any/AnyObject.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/any/AnyObject.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     AnyObject::AnyObject(const Path& path) :
-        detail::AnyVariant<type::dto::AnyObject, AnyObject>(type::Descriptor::eAnyObject, path)
+        detail::AnyVariant<type::dto::AnyObject, AnyObject>(type::Descriptor::ANY_OBJECT, path)
     {
     }
 
     AnyObject::AnyObject(const type::dto::AnyObject&o, const Path& path) :
-        detail::AnyVariant<type::dto::AnyObject, AnyObject>(o, type::Descriptor::eAnyObject, path)
+        detail::AnyVariant<type::dto::AnyObject, AnyObject>(o, type::Descriptor::ANY_OBJECT, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/container/Dict.cpp b/source/RobotAPI/libraries/aron/core/type/variant/container/Dict.cpp
index 3919bf844..482c762d1 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/container/Dict.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/container/Dict.cpp
@@ -29,14 +29,14 @@ namespace armarx::aron::type
 {
     // constructors
     Dict::Dict(const VariantPtr& acceptedType, const Path& path) :
-        detail::ContainerVariant<type::dto::Dict, Dict>(type::Descriptor::eDict, path),
+        detail::ContainerVariant<type::dto::Dict, Dict>(type::Descriptor::DICT, path),
         acceptedType(acceptedType)
     {
         aron->acceptedType = acceptedType->toAronDTO();
     }
 
     Dict::Dict(const type::dto::Dict& o, const Path& path) :
-        detail::ContainerVariant<type::dto::Dict, Dict>(o, type::Descriptor::eDict, path),
+        detail::ContainerVariant<type::dto::Dict, Dict>(o, type::Descriptor::DICT, path),
         acceptedType(FromAronDTO(*o.acceptedType, path.withAcceptedType()))
     {
     }
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/container/List.cpp b/source/RobotAPI/libraries/aron/core/type/variant/container/List.cpp
index 807d64fed..7ee464bc1 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/container/List.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/container/List.cpp
@@ -28,14 +28,14 @@ namespace armarx::aron::type
 {
     // constructors
     List::List(const VariantPtr& acceptedType, const Path& path) :
-        detail::ContainerVariant<type::dto::List, List>(type::Descriptor::eList, path),
+        detail::ContainerVariant<type::dto::List, List>(type::Descriptor::LIST, path),
         acceptedType(acceptedType)
     {
         aron->acceptedType = acceptedType->toAronDTO();
     }
 
     List::List(const type::dto::List& o, const Path& path) :
-        detail::ContainerVariant<type::dto::List, List>(o, type::Descriptor::eList, path),
+        detail::ContainerVariant<type::dto::List, List>(o, type::Descriptor::LIST, path),
         acceptedType(FromAronDTO(*o.acceptedType, path.withAcceptedType()))
     {
     }
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/container/Object.cpp b/source/RobotAPI/libraries/aron/core/type/variant/container/Object.cpp
index eb27eedcd..526cc9f05 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/container/Object.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/container/Object.cpp
@@ -34,7 +34,7 @@ namespace armarx::aron::type
 
     // constructors
     Object::Object(const std::string& name, const std::vector<std::string>& templates, const std::vector<std::string>& templateInstantiations, const std::map<std::string, VariantPtr>& m, const Path& path) :
-        detail::ContainerVariant<type::dto::AronObject, Object>(type::Descriptor::eObject, path),
+        detail::ContainerVariant<type::dto::AronObject, Object>(type::Descriptor::OBJECT, path),
         memberTypes(m)
     {
         aron->templates = templates;
@@ -47,7 +47,7 @@ namespace armarx::aron::type
     }
 
     Object::Object(const type::dto::AronObject& o, const Path& path) :
-        detail::ContainerVariant<type::dto::AronObject, Object>(o, type::Descriptor::eObject, path)
+        detail::ContainerVariant<type::dto::AronObject, Object>(o, type::Descriptor::OBJECT, path)
     {
         setObjectName(o.objectName);
         for (const auto& [key, t] : o.elementTypes)
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/container/Pair.cpp b/source/RobotAPI/libraries/aron/core/type/variant/container/Pair.cpp
index 48e0c6f4d..40b3cac3b 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/container/Pair.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/container/Pair.cpp
@@ -29,7 +29,7 @@ namespace armarx::aron::type
 {
     // constructors
     Pair::Pair(const VariantPtr& acceptedType1, const VariantPtr& acceptedType2, const Path& path) :
-        detail::ContainerVariant<type::dto::Pair, Pair>(type::Descriptor::ePair, path),
+        detail::ContainerVariant<type::dto::Pair, Pair>(type::Descriptor::PAIR, path),
         acceptedType1(acceptedType1),
         acceptedType2(acceptedType2)
     {
@@ -38,7 +38,7 @@ namespace armarx::aron::type
     }
 
     Pair::Pair(const type::dto::Pair& o, const Path& path) :
-        detail::ContainerVariant<type::dto::Pair, Pair>(o, type::Descriptor::ePair, path),
+        detail::ContainerVariant<type::dto::Pair, Pair>(o, type::Descriptor::PAIR, path),
         acceptedType1(FromAronDTO(*o.acceptedType1, path.withAcceptedTypeIndex(0))),
         acceptedType2(FromAronDTO(*o.acceptedType2, path.withAcceptedTypeIndex(1)))
     {
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/container/Tuple.cpp b/source/RobotAPI/libraries/aron/core/type/variant/container/Tuple.cpp
index 9fdca45e7..0879de17b 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/container/Tuple.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/container/Tuple.cpp
@@ -30,7 +30,7 @@ namespace armarx::aron::type
 {
     // constructors
     Tuple::Tuple(const std::vector<VariantPtr>& acceptedTypes, const Path& path) :
-        detail::ContainerVariant<type::dto::Tuple, Tuple>(type::Descriptor::eTuple, path),
+        detail::ContainerVariant<type::dto::Tuple, Tuple>(type::Descriptor::TUPLE, path),
         acceptedTypes(acceptedTypes)
     {
         for (const auto& acceptedType : acceptedTypes)
@@ -40,7 +40,7 @@ namespace armarx::aron::type
     }
 
     Tuple::Tuple(const type::dto::Tuple& o, const Path& path) :
-        detail::ContainerVariant<type::dto::Tuple, Tuple>(o, type::Descriptor::eTuple, path)
+        detail::ContainerVariant<type::dto::Tuple, Tuple>(o, type::Descriptor::TUPLE, path)
     {
         unsigned int i = 0;
         for (const auto& t : o.elementTypes)
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/dto/All.h b/source/RobotAPI/libraries/aron/core/type/variant/dto/All.h
deleted file mode 100644
index 930e1a3cd..000000000
--- a/source/RobotAPI/libraries/aron/core/type/variant/dto/All.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "DateTime.h"
-
-/**
- * A convenience header to include all dto aron files (full include, not forward declared)
- */
-namespace armarx::aron::type
-{
-
-}
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.cpp b/source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.cpp
deleted file mode 100644
index 655137a7c..000000000
--- a/source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-
-// STD/STL
-#include <string>
-#include <map>
-
-// Header
-#include "DateTime.h"
-
-namespace armarx::aron::type
-{
-    /* constructors */
-    DateTime::DateTime(const Path& path) :
-        detail::DtoVariant<type::dto::AronDateTime, DateTime>(type::Descriptor::eDateTime, path)
-    {
-    }
-
-    DateTime::DateTime(const type::dto::AronDateTime&o, const Path& path) :
-        detail::DtoVariant<type::dto::AronDateTime, DateTime>(o, type::Descriptor::eDateTime, path)
-    {
-    }
-
-    /* public member functions */
-    type::dto::AronDateTimePtr DateTime::toDateTimeDTO() const
-    {
-        return this->aron;
-    }
-
-    /* virtual implementations */
-    std::string DateTime::getShortName() const
-    {
-        return "DateTime";
-    }
-
-    std::string DateTime::getFullName() const
-    {
-        return "armarx::aron::type::DateTime";
-    }
-}
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.h b/source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.h
deleted file mode 100644
index 1c851e54c..000000000
--- a/source/RobotAPI/libraries/aron/core/type/variant/dto/DateTime.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * This file is part of ArmarX.
- *
- * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
- * Karlsruhe Institute of Technology (KIT), all rights reserved.
- *
- * ArmarX is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ArmarX is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @author     Fabian Peller-Konrad (fabian dot peller-konrad at kit dot edu)
- * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
- *             GNU General Public License
- */
-
-#pragma once
-
-// STD/STL
-#include <string>
-
-// Base class
-#include "../detail/DtoVariant.h"
-
-namespace armarx::aron::type
-{
-    /**
-     * @brief The Time class. It represents the time type
-     */
-    class DateTime :
-        public detail::DtoVariant<type::dto::AronDateTime, DateTime>
-    {
-    public:
-        /* constructors */
-        DateTime(const Path& = Path());
-        DateTime(const type::dto::AronDateTime&, const Path& = Path());
-
-        type::dto::AronDateTimePtr toDateTimeDTO() const;
-
-        /* virtual implementations */
-        virtual std::string getShortName() const override;
-        virtual std::string getFullName() const override;
-    };
-}
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/enum/IntEnum.cpp b/source/RobotAPI/libraries/aron/core/type/variant/enum/IntEnum.cpp
index 734509d9e..5ccace227 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/enum/IntEnum.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/enum/IntEnum.cpp
@@ -28,14 +28,14 @@ namespace armarx::aron::type
 {
     // constructors
     IntEnum::IntEnum(const std::string& name, const std::map<std::string, int>& valueMap, const Path& path) :
-        detail::EnumVariant<type::dto::IntEnum, IntEnum>(type::Descriptor::eIntEnum, path)
+        detail::EnumVariant<type::dto::IntEnum, IntEnum>(type::Descriptor::INT_ENUM, path)
     {
         aron->enumName = name;
         aron->acceptedValues = valueMap;
     }
 
     IntEnum::IntEnum(const type::dto::IntEnum& o, const Path& path) :
-        detail::EnumVariant<type::dto::IntEnum, IntEnum>(o, type::Descriptor::eIntEnum, path)
+        detail::EnumVariant<type::dto::IntEnum, IntEnum>(o, type::Descriptor::INT_ENUM, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/forward_declarations.h b/source/RobotAPI/libraries/aron/core/type/variant/forward_declarations.h
index 0bf79c5b4..ce0d34761 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/forward_declarations.h
+++ b/source/RobotAPI/libraries/aron/core/type/variant/forward_declarations.h
@@ -30,7 +30,6 @@ namespace armarx::aron::type
     using DoublePtr = std::shared_ptr<class Double>;
     using StringPtr = std::shared_ptr<class String>;
     using BoolPtr = std::shared_ptr<class Bool>;
-    using DateTimePtr = std::shared_ptr<class DateTime>;
 
 }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Image.cpp b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Image.cpp
index 987a85ce2..f5eed5e4e 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Image.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Image.cpp
@@ -33,21 +33,21 @@ namespace armarx::aron::type
 {
     const std::map<image::PixelType, std::string> Image::Pixeltype2String
     {
-        {image::PixelType::rgb24, "rgb24"},
-        {image::PixelType::depth32, "depth32"}
+        {image::PixelType::RGB24, "RGB24"},
+        {image::PixelType::DEPTH32, "DEPTH32"}
     };
     const std::map<std::string, image::PixelType> Image::String2Pixeltype = conversion::util::InvertMap(Pixeltype2String);
 
 
     // constructors
     Image::Image(const Path& path) :
-        detail::NDArrayVariant<type::dto::Image, Image>(type::Descriptor::eImage, path)
+        detail::NDArrayVariant<type::dto::Image, Image>(type::Descriptor::IMAGE, path)
     {
     }
 
 
     Image::Image(const type::dto::Image& o, const Path& path) :
-        detail::NDArrayVariant<type::dto::Image, Image>(o, type::Descriptor::eImage, path)
+        detail::NDArrayVariant<type::dto::Image, Image>(o, type::Descriptor::IMAGE, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Matrix.cpp b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Matrix.cpp
index 18d57ce03..b7657a871 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Matrix.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Matrix.cpp
@@ -31,23 +31,23 @@ namespace armarx::aron::type
 {
     const std::map<matrix::ElementType, std::string> Matrix::Elementtype2String
     {
-        {matrix::ElementType::int16, "int16"},
-        {matrix::ElementType::int32, "int32"},
-        {matrix::ElementType::int64, "int64"},
-        {matrix::ElementType::float32, "float32"},
-        {matrix::ElementType::float64, "float64"}
+        {matrix::ElementType::INT16, "INT16"},
+        {matrix::ElementType::INT32, "INT32"},
+        {matrix::ElementType::INT64, "INT64"},
+        {matrix::ElementType::FLOAT32, "FLOAT32"},
+        {matrix::ElementType::FLOAT64, "FLOAT64"}
     };
 
     const std::map<std::string, matrix::ElementType> Matrix::String2Elementtype = conversion::util::InvertMap(Elementtype2String);
 
     // constructors
     Matrix::Matrix(const Path& path) :
-        detail::NDArrayVariant<type::dto::Matrix, Matrix>(type::Descriptor::eMatrix, path)
+        detail::NDArrayVariant<type::dto::Matrix, Matrix>(type::Descriptor::MATRIX, path)
     {
     }
 
     Matrix::Matrix(const type::dto::Matrix& o, const Path& path) :
-        detail::NDArrayVariant<type::dto::Matrix, Matrix>(o, type::Descriptor::eMatrix, path)
+        detail::NDArrayVariant<type::dto::Matrix, Matrix>(o, type::Descriptor::MATRIX, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/NDArray.cpp b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/NDArray.cpp
index cbbf517ba..bddbcf91c 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/NDArray.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/NDArray.cpp
@@ -28,12 +28,12 @@ namespace armarx::aron::type
 {
     // constructors
     NDArray::NDArray(const Path& path) :
-        detail::NDArrayVariant<type::dto::NDArray, NDArray>(type::Descriptor::eNDArray, path)
+        detail::NDArrayVariant<type::dto::NDArray, NDArray>(type::Descriptor::NDARRAY, path)
     {
     }
 
     NDArray::NDArray(const type::dto::NDArray& o, const Path& path) :
-        detail::NDArrayVariant<type::dto::NDArray, NDArray>(o, type::Descriptor::eNDArray, path)
+        detail::NDArrayVariant<type::dto::NDArray, NDArray>(o, type::Descriptor::NDARRAY, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/PointCloud.cpp b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/PointCloud.cpp
index 10a347302..c28a750e2 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/PointCloud.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/PointCloud.cpp
@@ -28,25 +28,25 @@ namespace armarx::aron::type
 {
     const std::map<pointcloud::VoxelType, std::string> PointCloud::Voxeltype2String
     {
-        {pointcloud::VoxelType::PointXYZ, "PointXYZ"},
-        {pointcloud::VoxelType::PointXYZI, "PointXYZI"},
-        {pointcloud::VoxelType::PointXYZL, "PointXYZL"},
-        {pointcloud::VoxelType::PointXYZRGB, "PointXYZRGB"},
-        {pointcloud::VoxelType::PointXYZRGBL, "PointXYZRGBL"},
-        {pointcloud::VoxelType::PointXYZRGBA, "PointXYZRGBA"},
-        {pointcloud::VoxelType::PointXYZHSV, "PointXYZHSV"}
+        {pointcloud::VoxelType::POINT_XYZ, "POINT_XYZ"},
+        {pointcloud::VoxelType::POINT_XYZI, "POINT_XYZI"},
+        {pointcloud::VoxelType::POINT_XYZL, "POINT_XYZL"},
+        {pointcloud::VoxelType::POINT_XYZRGB, "POINT_XYZRGB"},
+        {pointcloud::VoxelType::POINT_XYZRGBL, "POINT_XYZRGBL"},
+        {pointcloud::VoxelType::POINT_XYZRGBA, "POINT_XYZRGBA"},
+        {pointcloud::VoxelType::POINT_XYZHSV, "POINT_XYZHSV"}
     };
 
     const std::map<std::string, pointcloud::VoxelType> PointCloud::String2Voxeltype = conversion::util::InvertMap(Voxeltype2String);
 
     // constructors
     PointCloud::PointCloud(const Path& path) :
-        detail::NDArrayVariant<type::dto::PointCloud, PointCloud>(type::Descriptor::ePointCloud, path)
+        detail::NDArrayVariant<type::dto::PointCloud, PointCloud>(type::Descriptor::POINTCLOUD, path)
     {
     }
 
     PointCloud::PointCloud(const type::dto::PointCloud& o, const Path& path) :
-        detail::NDArrayVariant<type::dto::PointCloud, PointCloud>(o, type::Descriptor::ePointCloud, path)
+        detail::NDArrayVariant<type::dto::PointCloud, PointCloud>(o, type::Descriptor::POINTCLOUD, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Quaternion.cpp b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Quaternion.cpp
index 5457ee844..0e1ff22fc 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Quaternion.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/ndarray/Quaternion.cpp
@@ -30,19 +30,19 @@ namespace armarx::aron::type
 {
     const std::map<quaternion::ElementType, std::string> Quaternion::Elementtype2String =
     {
-        {quaternion::ElementType::float32, "float32"},
-        {quaternion::ElementType::float64, "float64"}
+        {quaternion::ElementType::FLOAT32, "FLOAT32"},
+        {quaternion::ElementType::FLOAT64, "FLOAT64"}
     };
     const std::map<std::string, quaternion::ElementType> Quaternion::String2Elementtype = conversion::util::InvertMap(Elementtype2String);
 
     // constructors
     Quaternion::Quaternion(const Path& path) :
-        detail::NDArrayVariant<type::dto::Quaternion, Quaternion>(type::Descriptor::eQuaternion, path)
+        detail::NDArrayVariant<type::dto::Quaternion, Quaternion>(type::Descriptor::QUATERNION, path)
     {
     }
 
     Quaternion::Quaternion(const type::dto::Quaternion& o, const Path& path) :
-        detail::NDArrayVariant<type::dto::Quaternion, Quaternion>(o, type::Descriptor::eQuaternion, path)
+        detail::NDArrayVariant<type::dto::Quaternion, Quaternion>(o, type::Descriptor::QUATERNION, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Bool.cpp b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Bool.cpp
index 9eca55904..fc5cdb5cb 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Bool.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Bool.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     Bool::Bool(const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronBool, Bool>(type::Descriptor::eBool, path)
+        detail::PrimitiveVariant<type::dto::AronBool, Bool>(type::Descriptor::BOOL, path)
     {
     }
 
     Bool::Bool(const type::dto::AronBool&o, const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronBool, Bool>(o, type::Descriptor::eBool, path)
+        detail::PrimitiveVariant<type::dto::AronBool, Bool>(o, type::Descriptor::BOOL, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Double.cpp b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Double.cpp
index 256e0a61f..e4fd415fe 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Double.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Double.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     Double::Double(const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronDouble, Double>(type::Descriptor::eDouble, path)
+        detail::PrimitiveVariant<type::dto::AronDouble, Double>(type::Descriptor::DOUBLE, path)
     {
     }
 
     Double::Double(const type::dto::AronDouble&o, const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronDouble, Double>(o, type::Descriptor::eDouble, path)
+        detail::PrimitiveVariant<type::dto::AronDouble, Double>(o, type::Descriptor::DOUBLE, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Float.cpp b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Float.cpp
index 3d08b5bda..45bbad7de 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Float.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Float.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     Float::Float(const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronFloat, Float>(type::Descriptor::eFloat, path)
+        detail::PrimitiveVariant<type::dto::AronFloat, Float>(type::Descriptor::FLOAT, path)
     {
     }
 
     Float::Float(const type::dto::AronFloat&o, const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronFloat, Float>(o, type::Descriptor::eFloat, path)
+        detail::PrimitiveVariant<type::dto::AronFloat, Float>(o, type::Descriptor::FLOAT, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Int.cpp b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Int.cpp
index b371f53dd..6abe9850c 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Int.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Int.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     Int::Int(const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronInt, Int>(type::Descriptor::eInt, path)
+        detail::PrimitiveVariant<type::dto::AronInt, Int>(type::Descriptor::INT, path)
     {
     }
 
     Int::Int(const type::dto::AronInt&o, const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronInt, Int>(o, type::Descriptor::eInt, path)
+        detail::PrimitiveVariant<type::dto::AronInt, Int>(o, type::Descriptor::INT, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Long.cpp b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Long.cpp
index 2654a773d..f7898bcf2 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/primitive/Long.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/primitive/Long.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     Long::Long(const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronLong, Long>(type::Descriptor::eLong, path)
+        detail::PrimitiveVariant<type::dto::AronLong, Long>(type::Descriptor::LONG, path)
     {
     }
 
     Long::Long(const type::dto::AronLong&o, const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronLong, Long>(o, type::Descriptor::eLong, path)
+        detail::PrimitiveVariant<type::dto::AronLong, Long>(o, type::Descriptor::LONG, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/variant/primitive/String.cpp b/source/RobotAPI/libraries/aron/core/type/variant/primitive/String.cpp
index 1cced6991..0ede75062 100644
--- a/source/RobotAPI/libraries/aron/core/type/variant/primitive/String.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/variant/primitive/String.cpp
@@ -33,12 +33,12 @@ namespace armarx::aron::type
 {
     /* constructors */
     String::String(const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronString, String>(type::Descriptor::eString, path)
+        detail::PrimitiveVariant<type::dto::AronString, String>(type::Descriptor::STRING, path)
     {
     }
 
     String::String(const type::dto::AronString&o, const Path& path) :
-        detail::PrimitiveVariant<type::dto::AronString, String>(o, type::Descriptor::eString, path)
+        detail::PrimitiveVariant<type::dto::AronString, String>(o, type::Descriptor::STRING, path)
     {
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/type/visitor/RecursiveVisitor.h b/source/RobotAPI/libraries/aron/core/type/visitor/RecursiveVisitor.h
index b8f73bff0..a2f46088a 100644
--- a/source/RobotAPI/libraries/aron/core/type/visitor/RecursiveVisitor.h
+++ b/source/RobotAPI/libraries/aron/core/type/visitor/RecursiveVisitor.h
@@ -39,7 +39,7 @@ namespace armarx::aron::type
         auto descriptor = v.getDescriptor(t);
         switch (descriptor)
         {
-            case type::Descriptor::eList:
+            case type::Descriptor::LIST:
             {
                 v.visitListOnEnter(t);
                 auto acceptedType = v.getListAcceptedType(t);
@@ -47,7 +47,7 @@ namespace armarx::aron::type
                 v.visitListOnExit(t);
                 return;
             }
-            case type::Descriptor::ePair:
+            case type::Descriptor::PAIR:
             {
                 v.visitPairOnEnter(t);
                 auto acceptedTypes = v.getPairAcceptedTypes(t);
@@ -56,7 +56,7 @@ namespace armarx::aron::type
                 v.visitPairOnExit(t);
                 return;
             }
-            case type::Descriptor::eTuple:
+            case type::Descriptor::TUPLE:
             {
                 v.visitTupleOnEnter(t);
                 unsigned int i = 0;
@@ -68,7 +68,7 @@ namespace armarx::aron::type
                 v.visitTupleOnExit(t);
                 return;
             }
-            case type::Descriptor::eDict:
+            case type::Descriptor::DICT:
             {
                 v.visitDictOnEnter(t);
                 auto acceptedType = v.getDictAcceptedType(t);
@@ -76,7 +76,7 @@ namespace armarx::aron::type
                 v.visitDictOnExit(t);
                 return;
             }
-            case type::Descriptor::eObject:
+            case type::Descriptor::OBJECT:
             {
                 v.visitObjectOnEnter(t);
                 for (const auto& [key, acceptedType] : v.getObjectElements(t))
@@ -86,35 +86,33 @@ namespace armarx::aron::type
                 v.visitObjectOnExit(t);
                 return;
             }
-            case type::Descriptor::eNDArray:
+            case type::Descriptor::NDARRAY:
                 return v.visitNDArray(t);
-            case type::Descriptor::eMatrix:
+            case type::Descriptor::MATRIX:
                 return v.visitMatrix(t);
-            case type::Descriptor::eImage:
+            case type::Descriptor::IMAGE:
                 return v.visitImage(t);
-            case type::Descriptor::ePointCloud:
+            case type::Descriptor::POINTCLOUD:
                 return v.visitPointCloud(t);
-            case type::Descriptor::eQuaternion:
+            case type::Descriptor::QUATERNION:
                 return v.visitQuaternion(t);
-            case type::Descriptor::eInt:
+            case type::Descriptor::INT:
                 return v.visitInt(t);
-            case type::Descriptor::eLong:
+            case type::Descriptor::LONG:
                 return v.visitLong(t);
-            case type::Descriptor::eFloat:
+            case type::Descriptor::FLOAT:
                 return v.visitFloat(t);
-            case type::Descriptor::eDouble:
+            case type::Descriptor::DOUBLE:
                 return v.visitDouble(t);
-            case type::Descriptor::eString:
+            case type::Descriptor::STRING:
                 return v.visitString(t);
-            case type::Descriptor::eBool:
+            case type::Descriptor::BOOL:
                 return v.visitBool(t);
-            case type::Descriptor::eDateTime:
-                return v.visitDateTime(t);
-            case type::Descriptor::eAnyObject:
+            case type::Descriptor::ANY_OBJECT:
                 return v.visitAnyObject(t);
-            case type::Descriptor::eIntEnum:
+            case type::Descriptor::INT_ENUM:
                 return v.visitIntEnum(t);
-            case type::Descriptor::eUnknown:
+            case type::Descriptor::UNKNOWN:
                 return v.visitUnknown(t);
         }
     }
@@ -165,7 +163,6 @@ namespace armarx::aron::type
         virtual void visitDouble(Input&) {};
         virtual void visitBool(Input&) {};
         virtual void visitString(Input&) {};
-        virtual void visitDateTime(Input&) {};
         virtual void visitAnyObject(Input&) {};
         virtual void visitUnknown(Input&) {
             throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor.");
diff --git a/source/RobotAPI/libraries/aron/core/type/visitor/Visitor.h b/source/RobotAPI/libraries/aron/core/type/visitor/Visitor.h
index 34cfbf7e4..9dfe2057d 100644
--- a/source/RobotAPI/libraries/aron/core/type/visitor/Visitor.h
+++ b/source/RobotAPI/libraries/aron/core/type/visitor/Visitor.h
@@ -44,45 +44,43 @@ namespace armarx::aron::type
         auto descriptor = v.getDescriptor(t);
         switch (descriptor)
         {
-        case type::Descriptor::eObject:
+        case type::Descriptor::OBJECT:
             return v.visitObject(t);
-        case type::Descriptor::eList:
+        case type::Descriptor::LIST:
             return v.visitList(t);
-        case type::Descriptor::eDict:
+        case type::Descriptor::DICT:
             return v.visitDict(t);
-        case type::Descriptor::ePair:
+        case type::Descriptor::PAIR:
             return v.visitPair(t);
-        case type::Descriptor::eTuple:
+        case type::Descriptor::TUPLE:
             return v.visitTuple(t);
-        case type::Descriptor::eNDArray:
+        case type::Descriptor::NDARRAY:
             return v.visitNDArray(t);
-        case type::Descriptor::eMatrix:
+        case type::Descriptor::MATRIX:
             return v.visitMatrix(t);
-        case type::Descriptor::eImage:
+        case type::Descriptor::IMAGE:
             return v.visitImage(t);
-        case type::Descriptor::ePointCloud:
+        case type::Descriptor::POINTCLOUD:
             return v.visitPointCloud(t);
-        case type::Descriptor::eQuaternion:
+        case type::Descriptor::QUATERNION:
             return v.visitQuaternion(t);
-        case type::Descriptor::eInt:
+        case type::Descriptor::INT:
             return v.visitInt(t);
-        case type::Descriptor::eLong:
+        case type::Descriptor::LONG:
             return v.visitLong(t);
-        case type::Descriptor::eFloat:
+        case type::Descriptor::FLOAT:
             return v.visitFloat(t);
-        case type::Descriptor::eDouble:
+        case type::Descriptor::DOUBLE:
             return v.visitDouble(t);
-        case type::Descriptor::eString:
+        case type::Descriptor::STRING:
             return v.visitString(t);
-        case type::Descriptor::eBool:
+        case type::Descriptor::BOOL:
             return v.visitBool(t);
-        case type::Descriptor::eDateTime:
-            return v.visitDateTime(t);
-        case type::Descriptor::eAnyObject:
+        case type::Descriptor::ANY_OBJECT:
             return v.visitAnyObject(t);
-        case type::Descriptor::eIntEnum:
+        case type::Descriptor::INT_ENUM:
             return v.visitIntEnum(t);
-        case type::Descriptor::eUnknown:
+        case type::Descriptor::UNKNOWN:
             return v.visitUnknown(t);
         }
     }
@@ -126,7 +124,6 @@ namespace armarx::aron::type
         virtual void visitDouble(Input&) {};
         virtual void visitBool(Input&) {};
         virtual void visitString(Input&) {};
-        virtual void visitDateTime(Input&) {};
         virtual void visitAnyObject(Input&) {};
         virtual void visitUnknown(Input&) { throw error::AronException(__PRETTY_FUNCTION__, "Unknown type in visitor."); }
         virtual ~Visitor() = default;
diff --git a/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.cpp b/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.cpp
index b26929640..d2b1c19a0 100644
--- a/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.cpp
+++ b/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.cpp
@@ -35,7 +35,7 @@ namespace armarx::aron::type
     {
         if (!n)
         {
-            return type::Descriptor::eUnknown;
+            return type::Descriptor::UNKNOWN;
         }
         return n->getDescriptor();
     }
@@ -147,12 +147,6 @@ namespace armarx::aron::type
         visitAronVariant(aron);
     }
 
-    void ConstVariantVisitor::visitDateTime(Input& i)
-    {
-        auto aron = type::DateTime::DynamicCastAndCheck(i);
-        visitAronVariant(aron);
-    }
-
     void ConstVariantVisitor::visitAronVariant(const type::ObjectPtr&) {}
     void ConstVariantVisitor::visitAronVariant(const type::DictPtr&) {}
     void ConstVariantVisitor::visitAronVariant(const type::PairPtr&) {}
@@ -170,7 +164,6 @@ namespace armarx::aron::type
     void ConstVariantVisitor::visitAronVariant(const type::DoublePtr&) {}
     void ConstVariantVisitor::visitAronVariant(const type::BoolPtr&) {}
     void ConstVariantVisitor::visitAronVariant(const type::StringPtr&) {}
-    void ConstVariantVisitor::visitAronVariant(const type::DateTimePtr&) {}
 
     /****************************************************************************
      * RecursiveVariantVisitor
diff --git a/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.h b/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.h
index fa03254f8..e7e87fa45 100644
--- a/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.h
+++ b/source/RobotAPI/libraries/aron/core/type/visitor/variant/VariantVisitor.h
@@ -60,7 +60,6 @@ namespace armarx::aron::type
         void visitDouble(Input&) override;
         void visitBool(Input&) override;
         void visitString(Input&) override;
-        void visitDateTime(Input&) override;
 
         // Use these if you do not want to cast manually
         virtual void visitAronVariant(const type::ObjectPtr&);
@@ -76,7 +75,6 @@ namespace armarx::aron::type
         virtual void visitAronVariant(const type::IntEnumPtr&);
         virtual void visitAronVariant(const type::IntPtr&);
         virtual void visitAronVariant(const type::LongPtr&);
-        virtual void visitAronVariant(const type::DateTimePtr&);
         virtual void visitAronVariant(const type::FloatPtr&);
         virtual void visitAronVariant(const type::DoublePtr&);
         virtual void visitAronVariant(const type::BoolPtr&);
diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
index 76347bf5a..b83ad843b 100644
--- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
@@ -83,4 +83,26 @@ namespace armarx
         (void) statusUpdate;
         // If you want to use the status, implement this method!
     }
+
+    skills::manager::dto::SkillDescriptionMapMap SkillManagerComponentPluginUser::getSkillDescriptions(const Ice::Current &current)
+    {
+        skills::manager::dto::SkillDescriptionMapMap ret;
+        for (const auto& [n, s] : skillProviderMap)
+        {
+            skills::provider::dto::SkillDescriptionMap m = s->getSkillDescriptions();
+            ret.insert({n, m});
+        }
+        return ret;
+    }
+
+    skills::manager::dto::SkillStatusUpdateMapMap SkillManagerComponentPluginUser::getSkillExecutionStatuses(const Ice::Current &current)
+    {
+        skills::manager::dto::SkillStatusUpdateMapMap ret;
+        for (const auto& [n, s] : skillProviderMap)
+        {
+            skills::provider::dto::SkillStatusUpdateMap m = s->getSkillExecutionStatuses();
+            ret.insert({n, m});
+        }
+        return ret;
+    }
 }
diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.h b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.h
index ba27d2bc1..e9c950c74 100644
--- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.h
+++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.h
@@ -38,6 +38,9 @@ namespace armarx
         void updateStatusForSkill(const skills::provider::dto::SkillStatusUpdate& update, const Ice::Current &current) override;
         void abortSkill(const std::string& providerName, const std::string& skillName, const Ice::Current &current) override;
 
+        skills::manager::dto::SkillDescriptionMapMap getSkillDescriptions(const Ice::Current &current) override;
+        skills::manager::dto::SkillStatusUpdateMapMap getSkillExecutionStatuses(const Ice::Current &current) override;
+
     private:
         armarx::plugins::SkillManagerComponentPlugin* plugin = nullptr;
 
diff --git a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp
index 617501515..d459b9af7 100644
--- a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp
+++ b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.cpp
@@ -37,7 +37,7 @@ namespace armarx::skills
     }
 
     Skill::Status
-    PeriodicSkill::execute(const aron::data::DictPtr& params, const CallbackT& callback)
+    PeriodicSkill::main(const aron::data::DictPtr& params, const CallbackT& callback)
     {
         if(not initialize(params))
         {
diff --git a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h
index 8c8f6c81c..6fb259f60 100644
--- a/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h
+++ b/source/RobotAPI/libraries/skills/provider/PeriodicSkill.h
@@ -35,7 +35,7 @@ namespace armarx::skills
         PeriodicSkill(const SkillDescription& skillDescription, const armarx::Frequency& frequency);
 
     protected:
-        typename Skill::Status execute(const aron::data::DictPtr& params,
+        typename Skill::Status main(const aron::data::DictPtr& params,
                                         const Skill::CallbackT& callback) final;
 
         enum class Status
diff --git a/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h b/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h
index 018095661..2b6fd6f6d 100644
--- a/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h
+++ b/source/RobotAPI/libraries/skills/provider/PeriodicSpecializedSkill.h
@@ -45,7 +45,7 @@ namespace armarx::skills
 
     protected:
         typename Skill::Status
-        execute(const AronT& params, const Skill::CallbackT& callback) final
+        main(const AronT& params, const Skill::CallbackT& callback) final
         {
             if (not initialize(params))
             {
diff --git a/source/RobotAPI/libraries/skills/provider/Skill.cpp b/source/RobotAPI/libraries/skills/provider/Skill.cpp
index c74910e43..c3265710f 100644
--- a/source/RobotAPI/libraries/skills/provider/Skill.cpp
+++ b/source/RobotAPI/libraries/skills/provider/Skill.cpp
@@ -11,20 +11,10 @@ namespace armarx
             Logging::setTag("armarx::skills::" + description.skillName);
         }
 
-        std::thread Skill::installTimeoutCondition()
+        void Skill::installCondition(std::function<bool()>&& f, std::function<void()>&& cb)
         {
-            // start timeout check
-            return std::thread{ [&](){
-                    if (description.timeoutMs <= 0) return;
-                    long skillStartedAt = IceUtil::Time::now().toMilliSeconds();
-                    while(running and !stopRequested())
-                    {
-                        auto now = IceUtil::Time::now().toMilliSeconds();
-                        if ((now - skillStartedAt) >= description.timeoutMs) notifyTimeoutReached();
-                        std::this_thread::sleep_for(std::chrono::milliseconds(100));
-                    }
-                }
-            };
+            std::lock_guard l(callbacksMutex);
+            callbacks.push_back({f, cb});
         }
 
         void Skill::notifyTimeoutReached()
@@ -54,9 +44,30 @@ namespace armarx
             ARMARX_IMPORTANT << "Initializing Skill '" << description.skillName << "'";
 
             // always called before execute (should not take longer than 100ms)
+            callbacks.clear();
             running = true;
             started = IceUtil::Time::now();
-            timeoutCheck = installTimeoutCondition();
+
+            // install timeout condition
+            installCondition(
+                        [&](){ return (IceUtil::Time::now().toMilliSeconds() - started.toMilliSeconds()) >= description.timeoutMs; },
+                        [&](){ notifyTimeoutReached(); }
+            );
+
+            callbackThread = std::thread([&]()
+            {
+                while (running)
+                {
+                    std::lock_guard l(callbacksMutex);
+                    for (auto& p : callbacks)
+                    {
+                        auto& f = p.first;
+                        auto& cb = p.second;
+                        if (f()) cb();
+                    }
+                    std::this_thread::sleep_for(std::chrono::milliseconds(50)); // check frequency
+                }
+            });
         }
 
         void Skill::exit(const aron::data::DictPtr& params)
@@ -67,14 +78,14 @@ namespace armarx
 
             // always called after execute (should not take longer than 100ms)
             running = false;
-            if (timeoutCheck.joinable())
+            if (callbackThread.joinable())
             {
-                timeoutCheck.join();
+                callbackThread.join();
             }
             exited = IceUtil::Time::now();
         }
 
-        Skill::Status Skill::execute(const aron::data::DictPtr& params, const CallbackT& callback)
+        Skill::Status Skill::main(const aron::data::DictPtr& params, const CallbackT& callback)
         {
             (void) params;
 
@@ -82,11 +93,11 @@ namespace armarx
             return Status::Succeeded;
         }
 
-        Skill::Status Skill::initExecuteExit(const aron::data::DictPtr& params, const CallbackT& callback)
+        Skill::Status Skill::execute(const aron::data::DictPtr& params, const CallbackT& callback)
         {
             this->reset();
             this->init(params);
-            auto ret = this->execute(params);
+            auto ret = this->main(params);
             this->exit(params);
             return ret;
         }
diff --git a/source/RobotAPI/libraries/skills/provider/Skill.h b/source/RobotAPI/libraries/skills/provider/Skill.h
index 90a923ce3..0ecb43166 100644
--- a/source/RobotAPI/libraries/skills/provider/Skill.h
+++ b/source/RobotAPI/libraries/skills/provider/Skill.h
@@ -43,10 +43,10 @@ namespace armarx
             virtual void exit(const aron::data::DictPtr& params);
 
             /// Override this method with the actual implementation. The callback is for status updates to the calling instance
-            virtual Status execute(const aron::data::DictPtr& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; });
+            virtual Status main(const aron::data::DictPtr& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; });
 
             /// Do all methods at once.
-            Status initExecuteExit(const aron::data::DictPtr& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; });
+            Status execute(const aron::data::DictPtr& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; });
 
             /// Override if you have special members that needs to be resetted. It is called before the skill ititializes
             virtual void reset();
@@ -58,12 +58,16 @@ namespace armarx
             virtual bool stopRequested() const;
 
         private:
-            /// install a condition as a seperate thread
-            std::thread installTimeoutCondition();
+            /// install a condition is easy
+            void installCondition(std::function<bool()>&& f, std::function<void()>&& cb);
 
         public:
             const SkillDescription description;
 
+            /// active conditions
+            std::vector<std::pair<std::function<bool()>, std::function<void()>>> callbacks;
+            mutable std::mutex callbacksMutex;
+
             /// running params
             IceUtil::Time started = IceUtil::Time::milliSeconds(-1);
             IceUtil::Time exited = IceUtil::Time::milliSeconds(-1);
@@ -78,7 +82,7 @@ namespace armarx
             std::atomic_bool timeoutReached = false;
 
         private:
-            std::thread timeoutCheck;
+            std::thread callbackThread;
         };
     }
 }
diff --git a/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h b/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h
index 68711db01..b922bc341 100644
--- a/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h
+++ b/source/RobotAPI/libraries/skills/provider/SpecializedSkill.h
@@ -27,7 +27,7 @@ namespace armarx
             }
 
             /// Override this method with the actual implementation. The callback is for status updates to the calling instance
-            virtual Status execute(const AronT& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; })
+            virtual Status main(const AronT& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; })
             {
                 (void) params;
                 return Status::Succeeded;
@@ -43,19 +43,19 @@ namespace armarx
                 (void) params;
             }
 
-            Status initExecuteExit(const AronT& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; })
+            Status execute(const AronT& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; })
             {
-                return Skill::initExecuteExit(params.toAron(), callback);
+                return Skill::execute(params.toAron(), callback);
             }
 
             /// Do not use anymore
-            Status execute(const aron::data::DictPtr& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; }) final
+            Status main(const aron::data::DictPtr& params, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; }) final
             {
-                Skill::execute(params, callback);
+                Skill::main(params, callback);
                 AronT p;
                 p.fromAron(params);
 
-                return execute(p, callback);
+                return main(p, callback);
             }
 
             /// Do not use anymore
diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
index c6add6570..15cc6af55 100644
--- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
+++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
@@ -54,7 +54,7 @@ namespace armarx
                 updateStatus(skills::provider::dto::Execution::Status::Running);
 
                 skill->init(aron_params);
-                auto ret = skill->execute(aron_params, [&](const aron::data::DictPtr& update) { updateStatus(statusUpdate.status, update); });
+                auto ret = skill->main(aron_params, [&](const aron::data::DictPtr& update) { updateStatus(statusUpdate.status, update); });
                 skill->exit(aron_params);
 
                 switch (ret)
diff --git a/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.cpp b/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.cpp
index 9b761b403..25f589aab 100644
--- a/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.cpp
+++ b/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.cpp
@@ -5,7 +5,7 @@ namespace armarx
     namespace skills::helper
     {
 
-        Skill::Status LambdaSkill::execute(const aron::data::DictPtr& data, const CallbackT& callback)
+        Skill::Status LambdaSkill::main(const aron::data::DictPtr& data, const CallbackT& callback)
         {
             (void) callback;
             bool res = fun(data);
diff --git a/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.h b/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.h
index 63f537d4c..0f65572ac 100644
--- a/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.h
+++ b/source/RobotAPI/libraries/skills/provider/helper/LambdaSkillImplementation.h
@@ -18,7 +18,7 @@ namespace armarx
             {};
 
         protected:
-            Skill::Status execute(const aron::data::DictPtr& data, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; }) override;
+            Skill::Status main(const aron::data::DictPtr& data, const CallbackT& callback = [](const aron::data::DictPtr& returnValue) { (void) returnValue; }) override;
 
         private:
             FunT fun;
-- 
GitLab