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 25d16c3b6df8055b42624b84a7e5c8d09bfe14f2..751ee665e51c4351f3e406074c7c3ec9d2f4252d 100644
--- a/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
+++ b/source/RobotAPI/libraries/aron/core/codegenerator/codewriter/cpp/Writer.cpp
@@ -147,7 +147,7 @@ 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);
             }
 
@@ -158,7 +158,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);
             }
 
@@ -169,7 +169,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);
             }
 
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..89801e0fce3f78832d54c2a81588c26de24e91d2 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,39 @@ 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
     {
         std::stringstream doc;
-        doc << "@brief specializedTypeWrite() - This method returns a new type from the member data types using a writer implementation. \n";
+    CppMethodPtr Generator::toSpecializedTypeWriterMethod(const WriterInfo& info) const
+        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..dddc73d51d4f7416245d15dc9a44a5b404738c84 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,9 @@ 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 toSpecializedTypeWriterMethod(const WriterInfo& info) const;
 
         // virtual override definitions
         virtual std::vector<CppFieldPtr> getPublicVariableDeclarations(const std::string&) const;