diff --git a/source/RobotAPI/libraries/armem/util/util.h b/source/RobotAPI/libraries/armem/util/util.h
index 2f45b843a0419a639e000cc2594b59783df06267..2f4941e926c9c354ee7c172b3a0e208fd96b9ebb 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/codegeneration/cpp/AronGeneratedClass.h>
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp b/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp
index 195cc6ebcecdc851b3c259d02172cfd43d6f7d7c..8e9621c5a711816c2e84762d9a9d59f10f333f03 100644
--- a/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp
+++ b/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp
@@ -73,10 +73,10 @@ namespace armarx::armem::server::motions::mdb::segment
                     }
                     ARMARX_INFO << ss.str();  // ToDo @Fabian PK: Remove
                     auto& entity = this->segmentPtr->addEntity(std::to_string(op->id));
-                    auto& snapshot = entity.addSnapshot(aron::fromAron<armem::Time>(op->createdDate));
+                    auto& snapshot = entity.addSnapshot(op->createdDate);
 
                     armem::wm::EntityInstance& instance = snapshot.addInstance();
-                    instance.metadata().timeCreated = aron::fromAron<armem::Time>(op->createdDate);
+                    instance.metadata().timeCreated = op->createdDate;
                     instance.metadata().timeSent = Time::Now();
                     instance.metadata().timeArrived = Time::Now();
                     instance.metadata().confidence = 1.0;
diff --git a/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt b/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt
index c3a800811daceb9e10dbad233aec1b071e72d83b..208f3660bf0b501c55237fc3af51e18e76f7b8e2 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/codegeneration/CMakeLists.txt
@@ -66,6 +66,8 @@ set(LIB_HEADERS
     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
diff --git a/source/RobotAPI/libraries/aron/core/codegeneration/cpp/AronGeneratedClass.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h
similarity index 92%
rename from source/RobotAPI/libraries/aron/core/codegeneration/cpp/AronGeneratedClass.h
rename to source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h
index c97c0acbbd9d47c2388d0ec01bff90d9a997034e..552c653a9bb983f1066a7ef87737fa69377c8a8a 100644
--- a/source/RobotAPI/libraries/aron/core/codegeneration/cpp/AronGeneratedClass.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h
@@ -39,6 +39,8 @@
 
 // ARON
 #include <RobotAPI/interface/aron.h>
+#include <RobotAPI/libraries/aron/core/aron_conversions.h>
+#include <RobotAPI/libraries/aron/core/rw.h>
 
 
 namespace armarx::aron::cpp
@@ -50,10 +52,10 @@ namespace armarx::aron::cpp
         virtual ~AronGeneratedClass() = default;
 
         /// Reset all member values of this class to default (as stated in the XML). This may mean that maybe types are null or false and images may be created as headers_only
-        virtual void resetHard() = 0;
+        virtual void resetHard() {};
 
         /// Reset all member values of this class softly, meaning if a maybe type has a value, we reset only the value (not the full maybe type) and if an image has data (width, height) we keep the data and width and height and only reset teh pixel values
-        virtual void resetSoft() = 0;
+        virtual void resetSoft() {};
     };
 
     template <class T>
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
index e53f578f0b1773f821f653af66d2972674d470f8..1a38b4d5a6e39a86860e66b65f62a9ba093320bc 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
@@ -311,8 +311,8 @@ namespace armarx::aron::codegenerator::cpp
         c->addClassDoc(classDoc);
         c->setPragmaOnceIncludeGuard(true);
 
-        // add predefined includes from generator app (e.g. coming from reader)
-        for (const std::string& s : additionalIncludes)
+        // add generator includes (e.g. coming from dto types)
+        for (const auto& s : gen.getRequiredIncludes())
         {
             if (!s.empty())
             {
@@ -320,8 +320,8 @@ namespace armarx::aron::codegenerator::cpp
             }
         }
 
-        // add generator includes (e.g. coming from dto types)
-        for (const auto& s : gen.getRequiredIncludes())
+        // add predefined includes from generator app (e.g. coming from aron includes)
+        for (const std::string& s : additionalIncludes)
         {
             if (!s.empty())
             {
@@ -332,7 +332,7 @@ namespace armarx::aron::codegenerator::cpp
         // add aron includes
         c->addInclude("<RobotAPI/libraries/aron/core/aron_conversions.h>");
         c->addInclude("<RobotAPI/libraries/aron/core/rw.h>");
-        c->addInclude("<RobotAPI/libraries/aron/core/codegeneration/cpp/AronGeneratedClass.h>");
+        c->addInclude("<RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h>");
 
         // ctor
         c->addCtor(gen.toCtor(c->getName()));
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
index 826626601f4a2dcfd1871e333996f1eccb1e0017..5b734427b84bbd9fa139f6518110b55b7daf48ae 100644
--- 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
@@ -32,19 +32,19 @@ namespace armarx::aron::codegenerator::cpp::generator
     const std::map<std::string, DTOObjectReplacement> DTO_REPLACEMENTS =
     {
         { "armarx::arondto::DateTime", {"armarx::arondto::DateTime", "armarx::arondto::DateTime", "armarx::core::time::DateTime", "armarx::core::time::DateTime",
-            {"<ArmarXCore/core/time/DateTime.h>", "<RobotAPI/libraries/aron/common/rw/time.h>", "<RobotAPI/libraries/aron/common/aron/time.aron.generated.h>"},
+            {"<RobotAPI/libraries/aron/common/rw/time.h>"},
             {}}},
         { "armarx::arondto::Duration", {"armarx::arondto::Duration", "armarx::arondto::Duration", "armarx::core::time::Duration", "armarx::core::time::Duration",
-            {"<ArmarXCore/core/time/Duration.h>", "<RobotAPI/libraries/aron/common/rw/time.h>", "<RobotAPI/libraries/aron/common/aron/time.aron.generated.h>"},
+            {"<RobotAPI/libraries/aron/common/rw/time.h>"},
             {"armarx::arondto::Frequency", "armarx::arondto::DateTime"}}},
         { "armarx::arondto::FramedPosition", {"armarx::arondto::FramedPosition", "armarx::arondto::FramedPosition", "armarx::FramedPosition", "armarx::FramedPosition",
-            {"<RobotAPI/libraries/core/FramedPose.h>", "<RobotAPI/libraries/aron/common/rw/framed.h>", "<RobotAPI/libraries/aron/common/aron/framed.aron.generated.h>"},
+            {"<RobotAPI/libraries/aron/common/rw/framed.h>"},
             {}}},
         { "armarx::arondto::FramedOrientation", {"armarx::arondto::FramedOrientation", "armarx::arondto::FramedOrientation", "armarx::FramedOrientation", "armarx::FramedOrientation",
-            {"<RobotAPI/libraries/core/FramedPose.h>", "<RobotAPI/libraries/aron/common/rw/framed.h>", "<RobotAPI/libraries/aron/common/aron/framed.aron.generated.h>"},
+            {"<RobotAPI/libraries/aron/common/rw/framed.h>"},
             {}}},
         { "armarx::arondto::FramedPose", {"armarx::arondto::FramedPose", "armarx::arondto::FramedPose", "armarx::FramedPose", "armarx::FramedPose",
-            {"<RobotAPI/libraries/core/FramedPose.h>", "<RobotAPI/libraries/aron/common/rw/framed.h>", "<RobotAPI/libraries/aron/common/aron/framed.aron.generated.h>"},
+            {"<RobotAPI/libraries/aron/common/rw/framed.h>"},
             {}}}
     };
 
diff --git a/source/RobotAPI/libraries/aron/common/aron_conversions/time.h b/source/RobotAPI/libraries/aron/common/aron_conversions/time.h
index 2dc940f196215903f090c57a398f74e7fc90a25d..271508d8dd58f9e0f78f220cf2206ad9c24dd331 100644
--- a/source/RobotAPI/libraries/aron/common/aron_conversions/time.h
+++ b/source/RobotAPI/libraries/aron/common/aron_conversions/time.h
@@ -1,7 +1,9 @@
 #pragma once
 
 #include <RobotAPI/libraries/aron/core/aron_conversions.h>
-#include <ArmarXCore/core/time_minimal.h>
+#include <ArmarXCore/core/time/DateTime.h>
+#include <ArmarXCore/core/time/Duration.h>
+#include <ArmarXCore/core/time/Frequency.h>
 
 // arondto forward declarations
 namespace armarx::arondto
diff --git a/source/RobotAPI/libraries/aron/common/test/MyCustomType.h b/source/RobotAPI/libraries/aron/common/test/MyCustomType.h
index 31a4507dbfc02a4100bae5426b4c2b2a9d87c447..291534971d1b90675ccd400c7cd6fdc03d61fd5d 100644
--- a/source/RobotAPI/libraries/aron/common/test/MyCustomType.h
+++ b/source/RobotAPI/libraries/aron/common/test/MyCustomType.h
@@ -24,6 +24,7 @@
 #include <string>
 #include <vector>
 
+#include <RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/AronGeneratedClass.h>
 
 namespace my
 {
@@ -39,11 +40,15 @@ namespace my
 
     namespace arondto
     {
-        struct CustomType
+        class CustomType : public armarx::aron::cpp::AronGeneratedClass
         {
+        public:
             std::string name;
             int index;
             float value;
+
+            CustomType() = default;
+            CustomType(const std::string& n, int i, float f) : name(n), index(i), value(f) {}
         };
 
         std::ostream& operator<<(std::ostream& os, const arondto::CustomType& rhs);
diff --git a/source/RobotAPI/libraries/aron/core/CMakeLists.txt b/source/RobotAPI/libraries/aron/core/CMakeLists.txt
index 654c0b851d07d8a61218cd993c5f66f4e91ad797..8701ee053dd3e6fba36c9db49367a17d67550089 100644
--- a/source/RobotAPI/libraries/aron/core/CMakeLists.txt
+++ b/source/RobotAPI/libraries/aron/core/CMakeLists.txt
@@ -109,8 +109,6 @@ set(LIB_HEADERS
     aron_conversions.h
     rw.h
 
-    codegeneration/cpp/AronGeneratedClass.h
-
     data/variant/Variant.h
     data/variant/detail/SpecializedVariant.h
     data/variant/detail/ContainerVariant.h
diff --git a/source/RobotAPI/libraries/aron/core/aron_conversions.h b/source/RobotAPI/libraries/aron/core/aron_conversions.h
index f2e0d4447c20ba910aca92f40bca87fb73dbef7c..d0f88cab840be59b86bbeb22d7229afb9f9f0b48 100644
--- a/source/RobotAPI/libraries/aron/core/aron_conversions.h
+++ b/source/RobotAPI/libraries/aron/core/aron_conversions.h
@@ -6,7 +6,6 @@
 #include <vector>
 
 #include "Path.h"
-#include "codegeneration/cpp/AronGeneratedClass.h"
 
 namespace armarx::aron
 {
@@ -200,7 +199,6 @@ namespace armarx::aron
 
     // std::vector
     template <class DtoT, class BoT>
-    requires (!DtoAndBoAreSame<DtoT, BoT>)
     void toAron(std::vector<DtoT>& dtos, const std::vector<BoT>& bos)
     {
         dtos.clear();
@@ -211,7 +209,6 @@ namespace armarx::aron
         }
     }
     template <class DtoT, class BoT>
-    requires (!DtoAndBoAreSame<DtoT, BoT>)
     void fromAron(const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
     {
         bos.clear();
@@ -222,18 +219,8 @@ namespace armarx::aron
         }
     }
 
-    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,
diff --git a/source/RobotAPI/libraries/aron/core/rw.h b/source/RobotAPI/libraries/aron/core/rw.h
index a03fa189265a4dc22c4b2851ed7a2f2ef7b13597..6257f2422687591b0991afed8a0577ee127207ef 100644
--- a/source/RobotAPI/libraries/aron/core/rw.h
+++ b/source/RobotAPI/libraries/aron/core/rw.h
@@ -9,40 +9,38 @@
 #include "data/rw/Reader.h"
 #include "data/rw/Writer.h"
 
-#include "codegeneration/cpp/AronGeneratedClass.h"
-
 namespace armarx::aron
 {
     template<class ReaderT, class T>
-    requires (data::isReader<ReaderT> && cpp::isAronGeneratedClass<T>)
-    void read(ReaderT& aron_r, typename ReaderT::InputType& input, T& ret)
+    requires (data::isReader<ReaderT>)
+    inline void read(ReaderT& aron_r, typename ReaderT::InputType& input, T& ret)
     {
         ret.read(aron_r, input);
     }
 
     template<class WriterT, class T>
-    requires (data::isWriter<WriterT> && cpp::isAronGeneratedClass<T>)
-    void write(WriterT& aron_w, const T& input, typename WriterT::ReturnType& ret, const armarx::aron::Path& aron_p = armarx::aron::Path())
+    requires (data::isWriter<WriterT>)
+    inline void write(WriterT& aron_w, const T& input, typename WriterT::ReturnType& ret, const armarx::aron::Path& aron_p = armarx::aron::Path())
     {
         ret = input.write(aron_w, aron_p);
     }
 
     template<class ReaderT, class DtoT, class BoT>
-    requires (data::isReader<ReaderT> && cpp::isAronGeneratedClass<DtoT> && !DtoAndBoAreSame<DtoT, BoT>)
-    void read(ReaderT& aron_r, typename ReaderT::InputType& input, BoT& ret)
+    requires (data::isReader<ReaderT> && !DtoAndBoAreSame<DtoT, BoT>)
+    inline void read(ReaderT& aron_r, typename ReaderT::InputType& input, BoT& ret)
     {
         DtoT aron;
         aron.read(aron_r, input);
 
-        fromAron(aron, ret);
+        armarx::fromAron(aron, ret);
     }
 
     template<class WriterT, class DtoT, class BoT>
-    requires (data::isWriter<WriterT> && cpp::isAronGeneratedClass<DtoT> && !DtoAndBoAreSame<DtoT, BoT>)
-    void write(WriterT& aron_w, const BoT& input, typename WriterT::ReturnType& ret, const armarx::aron::Path& aron_p = armarx::aron::Path())
+    requires (data::isWriter<WriterT> && !DtoAndBoAreSame<DtoT, BoT>)
+    inline void write(WriterT& aron_w, const BoT& input, typename WriterT::ReturnType& ret, const armarx::aron::Path& aron_p = armarx::aron::Path())
     {
         DtoT aron;
-        toAron(aron, input);
+        armarx::toAron(aron, input);
         ret = aron.write(aron_w, aron_p);
     }
 }