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 e6e6c075acaeade78eef6df5c6642894675b0e8e..a597e8ecc65735354fc7bd9837d13dceca2f18ee 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/Writer.cpp
@@ -305,6 +305,11 @@ namespace armarx::aron::codegenerator::cpp
                 {
                     c->addInclude(info.include);
                 }
+
+                if (type->getExtends() != nullptr)
+                {
+                    info.extends = true;
+                }
                 CppMethodPtr convert = generator.toSpecializedDataWriterMethod(info);
                 c->addPublicMethod(convert);
             }
@@ -338,6 +343,11 @@ namespace armarx::aron::codegenerator::cpp
                 {
                     c->addInclude(info.include);
                 }
+
+                if (type->getExtends() != nullptr)
+                {
+                    info.extends = true;
+                }
                 CppMethodPtr convert = generator.toSpecializedDataReaderMethod(info);
                 c->addPublicMethod(convert);
             }
@@ -416,6 +426,7 @@ namespace armarx::aron::codegenerator::cpp
                 {
                     c->addInclude(info.include);
                 }
+
                 CppMethodPtr convert = generator.toSpecializedDataWriterMethod(info);
                 c->addPublicMethod(convert);
             }
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp
index 18dd38f6e03bae69bc465d45468044b4db82f91f..a0715b220c8e5d96f431802b6da8db78857194cc 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/Generator.cpp
@@ -317,7 +317,10 @@ namespace armarx::aron::codegenerator::cpp
         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(info.returnType + " " + info.methodName + "() const", doc.str()));
+        const std::string fin = info.extends ? " final" : "";
+        const std::string virt = info.extends ? "" : "virtual ";
+
+        CppMethodPtr m = CppMethodPtr(new CppMethod(virt + info.returnType + " " + info.methodName + "() const" + fin, doc.str()));
         m->addLine(info.writerClassType + " writer;");
         m->addLine("return " + info.enforceConversion + "(this->write(writer))" + info.enforceMemberAccess + ";");
 
@@ -331,7 +334,10 @@ namespace armarx::aron::codegenerator::cpp
         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 " + info.methodName + "(const " + info.argumentType + "& input)", doc.str()));
+        const std::string fin = info.extends ? " final" : "";
+        const std::string virt = info.extends ? "" : "virtual ";
+
+        CppMethodPtr m = CppMethodPtr(new CppMethod(virt + "void " + info.methodName + "(const " + info.argumentType + "& input)" + fin, doc.str()));
         m->addLine(info.readerClassType + " reader;");
         m->addLine("this->read(reader, " + info.enforceConversion + "(input)" + info.enforceMemberAccess + ");");
 
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h
index 3bda10de7b14849fe6e18da11f7201704c2f3670..58dda63811ac9282d571c6db89620f6400e6fa10 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/ReaderInfo.h
@@ -37,6 +37,7 @@ namespace armarx::aron::codegenerator
         std::string include;
         std::string enforceConversion = "";
         std::string enforceMemberAccess = "";
+        bool extends = false;
     };
 
 
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h
index 1989ac5de9e93ee5ddda8ac66cfa1e65edeab98b..d3cff5ef8c6dd719199469ccb4da3a252c8bd3c8 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/helper/WriterInfo.h
@@ -37,5 +37,6 @@ namespace armarx::aron::codegenerator
         std::string include;
         std::string enforceConversion = "";
         std::string enforceMemberAccess = "";
+        bool extends = false;
     };
 }