diff --git a/source/RobotAPI/libraries/armem/util/util.h b/source/RobotAPI/libraries/armem/util/util.h
index bb7685cc16e1ea988dd9ea3eedc4602371655fa5..a517767921e51a0545e809fe74cc2230be478d26 100644
--- a/source/RobotAPI/libraries/armem/util/util.h
+++ b/source/RobotAPI/libraries/armem/util/util.h
@@ -62,9 +62,7 @@ namespace armarx::armem
 
         try
         {
-            AronClass t;
-            t.fromAron(item.data());
-            return t;
+            return AronClass::FromAron(item.data());
         }
         catch (const armarx::aron::error::AronException&)
         {
diff --git a/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/MotionConverter.cpp b/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/MotionConverter.cpp
index 31f28ea09b62d687fbcb3871941bc3ab9bd329a1..f8019e8a8daf4421b48b81498bcc7cedce0cb8f4 100644
--- a/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/MotionConverter.cpp
+++ b/source/RobotAPI/libraries/armem_motions/server/MotionDatabase/MDBMotions/MotionConverter.cpp
@@ -1,6 +1,9 @@
 // Header
 #include "MotionConverter.h"
 
+#include <SimoxUtility/json/json.hpp>
+
+
 namespace armarx::armem::server::motions::mdb::conversion
 {
     std::optional<armem::mdb::MDBReference> createFromFile(const std::filesystem::path& pathToInfoJson)
diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
index c96bf231f6d73b2e41d9836ed4a68c75d3dc57ea..06d12d621a41c3f925549e1105da5953366f60f7 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
@@ -289,9 +289,7 @@ namespace armarx::armem::robot_state
 
         try
         {
-            AronClass t;
-            t.fromAron(item.data());
-            return t;
+            return AronClass::FromAron(item.data());
         }
         catch (const armarx::aron::error::AronException&)
         {
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h
index 006713e3d4105154086a47ece6dacb0ac4ac1b83..0bbf6ca52012f1183d157d92b090a3fbd7b9a38e 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/CodeWriter.h
@@ -71,6 +71,7 @@ namespace armarx::aron::codegenerator
         std::string producerName;
         std::vector<codegenerator::WriterInfo> dataWriters;
         std::vector<codegenerator::ReaderInfo> dataReaders;
+        std::vector<codegenerator::StaticReaderInfo> staticDataReaders;
         std::vector<codegenerator::WriterInfo> initialTypeWriters;
         std::vector<std::string> additionalIncludes;
     };
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
index c426d2921e1860ac1b236c4cbc0497b2d1188921..4524241501e40896ee26150bde92ae85713fadb7 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
@@ -64,6 +64,7 @@ namespace armarx::aron::codegenerator::cpp
         }
 
         // toJSON Method
+        /*
         {
             codegenerator::WriterInfo toJSON;
             toJSON.methodName = "toJSON";
@@ -72,11 +73,21 @@ namespace armarx::aron::codegenerator::cpp
             toJSON.include = "<RobotAPI/libraries/aron/core/data/rw/writer/nlohmannJSON/NlohmannJSONWriter.h>";
             dataWriters.push_back(toJSON);
         }
+        */
     }
 
     void Writer::addSpecificReaderMethods()
     {
-        // The toAron Serializer is visible by default
+        // The static FromAron Deserializer
+        {
+            codegenerator::StaticReaderInfo fromAron;
+            fromAron.methodName = "FromAron";
+            fromAron.argumentType = "armarx::aron::data::DictPtr";
+            fromAron.returnType = OWN_TYPE_NAME;
+            staticDataReaders.push_back(fromAron);
+        }
+
+        // The fromAron Deserializer is visible by default
         {
             codegenerator::ReaderInfo fromAron;
             fromAron.methodName = "fromAron";
@@ -87,6 +98,7 @@ namespace armarx::aron::codegenerator::cpp
         }
 
         // fromJSON Method
+        /*
         {
             codegenerator::ReaderInfo fromJSON;
             fromJSON.methodName = "fromJSON";
@@ -95,6 +107,7 @@ namespace armarx::aron::codegenerator::cpp
             fromJSON.include = "<RobotAPI/libraries/aron/core/data/rw/reader/nlohmannJSON/NlohmannJSONReader.h>";
             dataReaders.push_back(fromJSON);
         }
+        */
     }
 
 
@@ -143,7 +156,14 @@ namespace armarx::aron::codegenerator::cpp
                 {
                     c->addInclude(info.include);
                 }
-                CppMethodPtr convert = generator.toSpecializedDataWriterMethod(info.returnType, info.methodName, info.writerClassType, info.enforceConversion);
+                CppMethodPtr convert = generator.toSpecializedDataWriterMethod(info);
+                c->addMethod(convert);
+            }
+
+            // Add methods to set the member variables
+            for (const codegenerator::StaticReaderInfo& info : staticDataReaders)
+            {
+                CppMethodPtr convert = generator.toSpecializedStaticDataReaderMethod(info);
                 c->addMethod(convert);
             }
 
@@ -154,7 +174,7 @@ namespace armarx::aron::codegenerator::cpp
                 {
                     c->addInclude(info.include);
                 }
-                CppMethodPtr convert = generator.toSpecializedDataReaderMethod(info.argumentType, info.methodName, info.readerClassType, info.enforceConversion);
+                CppMethodPtr convert = generator.toSpecializedDataReaderMethod(info);
                 c->addMethod(convert);
             }
 
@@ -165,7 +185,7 @@ namespace armarx::aron::codegenerator::cpp
                 {
                     c->addInclude(info.include);
                 }
-                CppMethodPtr convert = generator.toSpecializedTypeWriterMethod(info.returnType, info.methodName, info.writerClassType, info.enforceConversion);
+                CppMethodPtr convert = generator.toSpecializedTypeWriterMethod(info);
                 c->addMethod(convert);
             }
 
@@ -253,6 +273,8 @@ namespace armarx::aron::codegenerator::cpp
         c->addInclude("<map>");
         c->addInclude("<RobotAPI/interface/aron.h>");
 
+        c->addPublicField(std::string("using ") + OWN_TYPE_NAME + " = " + cppTypename + ";");
+
         // ctor
         c->addCtor(gen.toCtor(c->getName()));
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h
index 7c4d3eb5df28116fb4e439ad6d63a0768cfe17cc..2e6cc994cb6e70042918567f40a38d5293bf94e6 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.h
@@ -63,5 +63,7 @@ namespace armarx::aron::codegenerator::cpp
         void setupMemberFields(CppClassPtr&, const std::map<std::string, std::string>& doc_members, const generator::IntEnumClass&) const;
 
     private:
+        static const constexpr char* OWN_TYPE_NAME = "This";
+
     };
 }
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp
index f858cb12dc16131064a591b8bef15bc9f41d09cb..911555fea595a1c426b9e4c90c0c0c0c3b772e5e 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.cpp
@@ -203,39 +203,52 @@ namespace armarx::aron::codegenerator::cpp
         return m;
     }
 
-    CppMethodPtr Generator::toSpecializedDataWriterMethod(const std::string& returnname, const std::string& methodname, const std::string& writerName, const std::string& enforceConversion) const
+    CppMethodPtr Generator::toSpecializedDataWriterMethod(const WriterInfo& info) const
     {
         std::stringstream doc;
-        doc << "@brief specializedDataWrite() - This method returns a new data from the member data types using a writer implementation. \n";
+        doc << "@brief " << info.methodName << "() - This method returns a new data from the member data types using a writer implementation. \n";
         doc << "@return - the result of the writer implementation";
 
-        CppMethodPtr m = CppMethodPtr(new CppMethod(returnname + " " + methodname + "() const", doc.str()));
-        m->addLine(writerName + " writer;");
-        m->addLine("return " + enforceConversion + "(this->write(writer));");
+        CppMethodPtr m = CppMethodPtr(new CppMethod(info.returnType + " " + info.methodName + "() const", doc.str()));
+        m->addLine(info.writerClassType + " writer;");
+        m->addLine("return " + info.enforceConversion + "(this->write(writer));");
         return m;
     }
 
-    CppMethodPtr Generator::toSpecializedDataReaderMethod(const std::string& argumentname, const std::string& methodname, const std::string& readerName, const std::string& enforceConversion) const
+    CppMethodPtr Generator::toSpecializedDataReaderMethod(const ReaderInfo& info) const
     {
         std::stringstream doc;
-        doc << "@brief specializedDataRead() - This method sets the struct members to new values given in a reader implementation. \n";
+        doc << "@brief " << info.methodName << " - This method sets the struct members to new values given in a reader implementation. \n";
         doc << "@return - nothing";
 
-        CppMethodPtr m = CppMethodPtr(new CppMethod("void " + methodname + "(const " + argumentname + "& input)", doc.str()));
-        m->addLine(readerName + " reader;");
-        m->addLine("this->read<"+readerName+"::InputType>(reader, "+enforceConversion+"(input));");
+        CppMethodPtr m = CppMethodPtr(new CppMethod("void " + info.methodName + "(const " + info.argumentType + "& input)", doc.str()));
+        m->addLine(info.readerClassType + " reader;");
+        m->addLine("this->read<" + info.readerClassType + "::InputType>(reader, " + info.enforceConversion + "(input));");
         return m;
     }
 
-    CppMethodPtr Generator::toSpecializedTypeWriterMethod(const std::string& returnname, const std::string& methodname, const std::string& writerName, const std::string& enforceConversion) const
+    CppMethodPtr Generator::toSpecializedStaticDataReaderMethod(const StaticReaderInfo& info) const
     {
         std::stringstream doc;
-        doc << "@brief specializedTypeWrite() - This method returns a new type from the member data types using a writer implementation. \n";
+        doc << "@brief " << info.methodName << "() - This method sets the struct members to new values given in a reader implementation. \n";
+        doc << "@return - nothing";
+
+        CppMethodPtr m = CppMethodPtr(new CppMethod("static " + info.returnType + " " + info.methodName + "(const " + info.argumentType + "& input)", doc.str()));
+        m->addLine("This t;");
+        m->addLine("t.fromAron(input);");
+        m->addLine("return t;");
+        return m;
+    }
+
+    CppMethodPtr Generator::toSpecializedTypeWriterMethod(const WriterInfo& info) const
+    {
+        std::stringstream doc;
+        doc << "@brief " << info.methodName << "() - This method returns a new type from the member data types using a writer implementation. \n";
         doc << "@return - the result of the writer implementation";
 
-        CppMethodPtr m = CppMethodPtr(new CppMethod("static " + returnname + " " + methodname + "()", doc.str()));
-        m->addLine(writerName + " writer;");
-        m->addLine("return " + enforceConversion + "(writeType(writer));");
+        CppMethodPtr m = CppMethodPtr(new CppMethod("static " + info.returnType + " " + info.methodName + "()", doc.str()));
+        m->addLine(info.writerClassType + " writer;");
+        m->addLine("return " + info.enforceConversion + "(writeType(writer));");
         return m;
     }
 
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h
index 906df641bdda1f456d46979b0f6a3f60c9952521..3978677fdc29f54fc1041d97b970780ecc37894a 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/generator/Generator.h
@@ -26,6 +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 <ArmarXCore/libraries/cppgen/CppBlock.h>
 #include <ArmarXCore/libraries/cppgen/CppField.h>
@@ -107,9 +109,10 @@ namespace armarx::aron::codegenerator::cpp
         std::string getCoreCppTypename() const;
         std::string getFullCppTypename() const;
 
-        CppMethodPtr toSpecializedDataWriterMethod(const std::string&, const std::string&, const std::string&, const std::string& enforceType = "") const;
-        CppMethodPtr toSpecializedDataReaderMethod(const std::string&, const std::string&, const std::string&, const std::string& enforceType = "") const;
-        CppMethodPtr toSpecializedTypeWriterMethod(const std::string&, const std::string&, const std::string&, const std::string& enforceType = "") const;
+        CppMethodPtr toSpecializedDataWriterMethod(const WriterInfo& info) const;
+        CppMethodPtr toSpecializedDataReaderMethod(const ReaderInfo& info) const;
+        CppMethodPtr toSpecializedStaticDataReaderMethod(const StaticReaderInfo& info) const;
+        CppMethodPtr toSpecializedTypeWriterMethod(const WriterInfo& info) const;
 
         // virtual override definitions
         virtual std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const;
diff --git a/source/RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h b/source/RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h
index 71cbc0ff05715e785c82e63b436d76013de77c8b..a025da99a26a9538f53306ce9ba96d1fb8396ad5 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/helper/ReaderInfo.h
@@ -37,4 +37,12 @@ namespace armarx::aron::codegenerator
         std::string include;
         std::string enforceConversion = "";
     };
+
+
+    struct StaticReaderInfo
+    {
+        std::string methodName;
+        std::string argumentType;
+        std::string returnType;
+    };
 }
diff --git a/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp b/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
index c5b3218f8382af5d172ed3c94f754260b699a3c7..77a9ad525476d265e7919cf112abf761552670dd 100644
--- a/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
+++ b/source/RobotAPI/libraries/aron/core/test/aronRandomizedTest.cpp
@@ -179,7 +179,7 @@ void test_toAron(T& in, T& out)
     }
 }
 
-
+#if 0
 template <typename T>
 void test_toJson(T& in, T& out)
 {
@@ -233,6 +233,7 @@ void test_toJson(T& in, T& out)
         BOOST_CHECK(in_aron_json_str == out_aron_json_str);
     }
 }
+#endif
 
 
 template <typename T>
@@ -241,7 +242,9 @@ void runTestWithInstances(T& in, T& out)
     // assumes not nullptrs as in and out. If you have a maybe type then make sure that it is set properly
     test_toAronType(in, out);
     test_toAron(in, out);
+#if 0
     test_toJson(in, out);
+#endif
 }