You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/06/08 11:53:04 UTC

[plc4x] branch feature/c-code-generation-tagged-unions created (now c4ce567)

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a change to branch feature/c-code-generation-tagged-unions
in repository https://gitbox.apache.org/repos/asf/plc4x.git.


      at c4ce567  - Switched to union structs for discriminated types

This branch includes the following new commits:

     new c4ce567  - Switched to union structs for discriminated types

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[plc4x] 01/01: - Switched to union structs for discriminated types

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/c-code-generation-tagged-unions
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit c4ce567872d8bb94e7178dd20566a5cad7069f49
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Jun 8 13:52:52 2020 +0200

    - Switched to union structs for discriminated types
---
 .../freemarker/FreemarkerLanguageOutput.java       |   4 +
 .../plc4x/language/c/CLanguageTemplateHelper.java  |  68 +++--
 .../resources/templates/c/pojo-template-c.ftlh     |  24 +-
 .../resources/templates/c/pojo-template-h.ftlh     |  34 +--
 .../resources/templates/java/pojo-template.ftlh    |   2 -
 .../modbus/includes/modbus_constants.h             |   3 +
 .../generated-sources/modbus/includes/modbus_pdu.h | 137 ++++++++++
 .../includes/modbus_pdu_diagnostic_request.h       |  44 ----
 .../modbus/includes/modbus_pdu_error.h             |  43 ---
 .../modbus_pdu_get_com_event_log_request.h         |  42 ---
 .../modbus_pdu_get_com_event_log_response.h        |  46 ----
 ...odbus_pdu_mask_write_holding_register_request.h |  45 ----
 ...dbus_pdu_mask_write_holding_register_response.h |  45 ----
 .../includes/modbus_pdu_read_coils_request.h       |  44 ----
 .../includes/modbus_pdu_read_coils_response.h      |  43 ---
 ...modbus_pdu_read_device_identification_request.h |  42 ---
 ...odbus_pdu_read_device_identification_response.h |  42 ---
 .../modbus_pdu_read_discrete_inputs_request.h      |  44 ----
 .../modbus_pdu_read_discrete_inputs_response.h     |  43 ---
 .../modbus_pdu_read_exception_status_request.h     |  42 ---
 .../modbus_pdu_read_exception_status_response.h    |  43 ---
 .../includes/modbus_pdu_read_fifo_queue_request.h  |  43 ---
 .../includes/modbus_pdu_read_fifo_queue_response.h |  43 ---
 .../includes/modbus_pdu_read_file_record_request.h |  44 ----
 .../modbus_pdu_read_file_record_request_item.h     |   2 +
 .../modbus_pdu_read_file_record_response.h         |  44 ----
 .../modbus_pdu_read_file_record_response_item.h    |   2 +
 .../modbus_pdu_read_holding_registers_request.h    |  44 ----
 .../modbus_pdu_read_holding_registers_response.h   |  43 ---
 .../modbus_pdu_read_input_registers_request.h      |  44 ----
 .../modbus_pdu_read_input_registers_response.h     |  43 ---
 ...read_write_multiple_holding_registers_request.h |  47 ----
 ...ead_write_multiple_holding_registers_response.h |  43 ---
 .../includes/modbus_pdu_report_server_id_request.h |  42 ---
 .../modbus_pdu_report_server_id_response.h         |  43 ---
 .../modbus_pdu_write_file_record_request.h         |  44 ----
 .../modbus_pdu_write_file_record_request_item.h    |   2 +
 .../modbus_pdu_write_file_record_response.h        |  44 ----
 .../modbus_pdu_write_file_record_response_item.h   |   2 +
 .../modbus_pdu_write_multiple_coils_request.h      |  45 ----
 .../modbus_pdu_write_multiple_coils_response.h     |  44 ----
 ..._pdu_write_multiple_holding_registers_request.h |  45 ----
 ...pdu_write_multiple_holding_registers_response.h |  44 ----
 .../modbus_pdu_write_single_coil_request.h         |  44 ----
 .../modbus_pdu_write_single_coil_response.h        |  44 ----
 .../modbus_pdu_write_single_register_request.h     |  44 ----
 .../modbus_pdu_write_single_register_response.h    |  44 ----
 .../modbus/includes/modbus_serial_adu.h            |   2 +
 .../modbus/includes/modbus_tcp_adu.h               |   3 +
 .../modbus/src/modbus_constants.c                  |   4 +-
 .../generated-sources/modbus/src/modbus_pdu.c      | 288 +++++++++++++--------
 .../modbus/src/modbus_pdu_diagnostic_request.c     |  47 ----
 .../modbus/src/modbus_pdu_error.c                  |  44 ----
 .../src/modbus_pdu_get_com_event_log_request.c     |  41 ---
 .../src/modbus_pdu_get_com_event_log_response.c    |  53 ----
 ...odbus_pdu_mask_write_holding_register_request.c |  50 ----
 ...dbus_pdu_mask_write_holding_register_response.c |  50 ----
 .../modbus/src/modbus_pdu_read_coils_request.c     |  47 ----
 .../modbus/src/modbus_pdu_read_coils_response.c    |  44 ----
 ...modbus_pdu_read_device_identification_request.c |  41 ---
 ...odbus_pdu_read_device_identification_response.c |  41 ---
 .../src/modbus_pdu_read_discrete_inputs_request.c  |  47 ----
 .../src/modbus_pdu_read_discrete_inputs_response.c |  44 ----
 .../src/modbus_pdu_read_exception_status_request.c |  41 ---
 .../modbus_pdu_read_exception_status_response.c    |  44 ----
 .../src/modbus_pdu_read_fifo_queue_request.c       |  44 ----
 .../src/modbus_pdu_read_fifo_queue_response.c      |  47 ----
 .../src/modbus_pdu_read_file_record_request.c      |  44 ----
 .../src/modbus_pdu_read_file_record_request_item.c |   9 +-
 .../src/modbus_pdu_read_file_record_response.c     |  44 ----
 .../modbus_pdu_read_file_record_response_item.c    |   6 +-
 .../modbus_pdu_read_holding_registers_request.c    |  47 ----
 .../modbus_pdu_read_holding_registers_response.c   |  44 ----
 .../src/modbus_pdu_read_input_registers_request.c  |  47 ----
 .../src/modbus_pdu_read_input_registers_response.c |  44 ----
 ...read_write_multiple_holding_registers_request.c |  56 ----
 ...ead_write_multiple_holding_registers_response.c |  44 ----
 .../src/modbus_pdu_report_server_id_request.c      |  41 ---
 .../src/modbus_pdu_report_server_id_response.c     |  44 ----
 .../src/modbus_pdu_write_file_record_request.c     |  44 ----
 .../modbus_pdu_write_file_record_request_item.c    |   8 +-
 .../src/modbus_pdu_write_file_record_response.c    |  44 ----
 .../modbus_pdu_write_file_record_response_item.c   |   8 +-
 .../src/modbus_pdu_write_multiple_coils_request.c  |  50 ----
 .../src/modbus_pdu_write_multiple_coils_response.c |  47 ----
 ..._pdu_write_multiple_holding_registers_request.c |  50 ----
 ...pdu_write_multiple_holding_registers_response.c |  47 ----
 .../src/modbus_pdu_write_single_coil_request.c     |  47 ----
 .../src/modbus_pdu_write_single_coil_response.c    |  47 ----
 .../src/modbus_pdu_write_single_register_request.c |  47 ----
 .../modbus_pdu_write_single_register_response.c    |  47 ----
 .../modbus/src/modbus_serial_adu.c                 |  11 +-
 .../generated-sources/modbus/src/modbus_tcp_adu.c  |  10 +-
 .../generated-sources/s7/includes/cotp_packet.h    |  32 +++
 .../s7/includes/cotp_packet_connection_request.h   |  50 ----
 .../s7/includes/cotp_packet_connection_response.h  |  50 ----
 .../s7/includes/cotp_packet_data.h                 |  48 ----
 .../s7/includes/cotp_packet_disconnect_request.h   |  50 ----
 .../s7/includes/cotp_packet_disconnect_response.h  |  48 ----
 .../s7/includes/cotp_packet_tpdu_error.h           |  48 ----
 .../generated-sources/s7/includes/cotp_parameter.h |  20 ++
 .../s7/includes/cotp_parameter_called_tsap.h       |  43 ---
 .../s7/includes/cotp_parameter_calling_tsap.h      |  43 ---
 .../s7/includes/cotp_parameter_checksum.h          |  43 ---
 ...p_parameter_disconnect_additional_information.h |  43 ---
 .../s7/includes/cotp_parameter_tpdu_size.h         |  44 ----
 .../generated-sources/s7/includes/s7_address.h     |  14 +
 .../generated-sources/s7/includes/s7_address_any.h |  50 ----
 .../generated-sources/s7/includes/s7_message.h     |  17 ++
 .../s7/includes/s7_message_request.h               |  47 ----
 .../s7/includes/s7_message_response.h              |  49 ----
 .../s7/includes/s7_message_response_data.h         |  49 ----
 .../s7/includes/s7_message_user_data.h             |  47 ----
 .../generated-sources/s7/includes/s7_parameter.h   |  26 ++
 .../s7/includes/s7_parameter_read_var_request.h    |  44 ----
 .../s7/includes/s7_parameter_read_var_response.h   |  43 ---
 .../s7/includes/s7_parameter_setup_communication.h |  45 ----
 .../s7/includes/s7_parameter_user_data.h           |  44 ----
 .../s7/includes/s7_parameter_user_data_item.h      |  14 +
 .../s7_parameter_user_data_item_cpu_functions.h    |  50 ----
 .../s7/includes/s7_parameter_write_var_request.h   |  44 ----
 .../s7/includes/s7_parameter_write_var_response.h  |  43 ---
 .../generated-sources/s7/includes/s7_payload.h     |  19 ++
 .../s7/includes/s7_payload_read_var_response.h     |  45 ----
 .../s7/includes/s7_payload_user_data.h             |  45 ----
 .../s7/includes/s7_payload_user_data_item.h        |  14 +-
 ..._user_data_item_cpu_function_read_szl_request.h |  49 ----
 ...user_data_item_cpu_function_read_szl_response.h |  54 ----
 .../s7/includes/s7_payload_write_var_request.h     |  45 ----
 .../s7/includes/s7_payload_write_var_response.h    |  45 ----
 .../s7/includes/s7_var_payload_data_item.h         |   6 +-
 .../s7/includes/s7_var_payload_status_item.h       |   4 +-
 .../s7/includes/s7_var_request_parameter_item.h    |   8 +
 .../s7_var_request_parameter_item_address.h        |  44 ----
 .../s7/includes/szl_data_tree_item.h               |   2 +
 .../plc4c/generated-sources/s7/includes/szl_id.h   |   6 +-
 .../generated-sources/s7/includes/tpkt_packet.h    |   3 +
 .../plc4c/generated-sources/s7/src/cotp_packet.c   |  70 +++--
 .../s7/src/cotp_packet_connection_request.c        |  50 ----
 .../s7/src/cotp_packet_connection_response.c       |  50 ----
 .../generated-sources/s7/src/cotp_packet_data.c    |  47 ----
 .../s7/src/cotp_packet_disconnect_request.c        |  50 ----
 .../s7/src/cotp_packet_disconnect_response.c       |  47 ----
 .../s7/src/cotp_packet_tpdu_error.c                |  47 ----
 .../generated-sources/s7/src/cotp_parameter.c      |  34 ++-
 .../s7/src/cotp_parameter_called_tsap.c            |  44 ----
 .../s7/src/cotp_parameter_calling_tsap.c           |  44 ----
 .../s7/src/cotp_parameter_checksum.c               |  44 ----
 ...p_parameter_disconnect_additional_information.c |  41 ---
 .../s7/src/cotp_parameter_tpdu_size.c              |  44 ----
 .../plc4c/generated-sources/s7/src/s7_address.c    |  25 +-
 .../generated-sources/s7/src/s7_address_any.c      |  67 -----
 .../plc4c/generated-sources/s7/src/s7_message.c    |  36 +--
 .../generated-sources/s7/src/s7_message_request.c  |  41 ---
 .../generated-sources/s7/src/s7_message_response.c |  47 ----
 .../s7/src/s7_message_response_data.c              |  47 ----
 .../s7/src/s7_message_user_data.c                  |  41 ---
 .../plc4c/generated-sources/s7/src/s7_parameter.c  |  46 ++--
 .../s7/src/s7_parameter_read_var_request.c         |  44 ----
 .../s7/src/s7_parameter_read_var_response.c        |  44 ----
 .../s7/src/s7_parameter_setup_communication.c      |  58 -----
 .../s7/src/s7_parameter_user_data.c                |  44 ----
 .../s7/src/s7_parameter_user_data_item.c           |  31 ++-
 .../s7_parameter_user_data_item_cpu_functions.c    |  77 ------
 .../s7/src/s7_parameter_write_var_request.c        |  44 ----
 .../s7/src/s7_parameter_write_var_response.c       |  44 ----
 .../plc4c/generated-sources/s7/src/s7_payload.c    |  28 +-
 .../s7/src/s7_payload_read_var_response.c          |  41 ---
 .../s7/src/s7_payload_user_data.c                  |  41 ---
 .../s7/src/s7_payload_user_data_item.c             |  21 +-
 ..._user_data_item_cpu_function_read_szl_request.c |  41 ---
 ...user_data_item_cpu_function_read_szl_response.c |  51 ----
 .../s7/src/s7_payload_write_var_request.c          |  41 ---
 .../s7/src/s7_payload_write_var_response.c         |  41 ---
 .../s7/src/s7_var_payload_data_item.c              |   8 +-
 .../s7/src/s7_var_payload_status_item.c            |   6 +-
 .../s7/src/s7_var_request_parameter_item.c         |  10 +-
 .../s7/src/s7_var_request_parameter_item_address.c |  48 ----
 .../generated-sources/s7/src/szl_data_tree_item.c  |   9 +-
 sandbox/plc4c/generated-sources/s7/src/szl_id.c    |   8 +-
 .../plc4c/generated-sources/s7/src/tpkt_packet.c   |   8 +-
 181 files changed, 834 insertions(+), 6345 deletions(-)

diff --git a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java
index 4c5a806..50ea54a 100644
--- a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java
+++ b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/FreemarkerLanguageOutput.java
@@ -132,6 +132,10 @@ public abstract class FreemarkerLanguageOutput implements LanguageOutput {
 
             // Extract the output path from the first line of the generated content
             String outputFileName = input.readLine();
+            // If there is no outputFileName, this file should be skipped.
+            if(outputFileName == null) {
+                return;
+            }
             File outputFile = new File(outputDir, outputFileName);
 
             // Create any missing directories
diff --git a/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java b/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
index 40367c9..c9a80e5 100644
--- a/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
+++ b/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
@@ -78,6 +78,25 @@ public class CLanguageTemplateHelper implements FreemarkerLanguageTemplateHelper
         return typeDefinition instanceof DiscriminatedComplexTypeDefinition;
     }
 
+    public boolean isSwitchField(Field field) {
+        return field instanceof SwitchField;
+    }
+
+    public boolean isEnumField(Field field) {
+        return field instanceof EnumField;
+    }
+
+    /**
+     * Modified version returning all the normal property fields, but also the typeSwitch fields
+     * As we need to generate the union structs for these.
+     *
+     * @return list of property fields as well as typeSwitch fields.
+     */
+    public Collection<Field> getFields() {
+        return ((ComplexTypeDefinition) thisType).getFields().stream().filter(
+            field -> (field instanceof PropertyField) || (field instanceof SwitchField)).collect(Collectors.toList());
+    }
+
     private SwitchField getSwitchField() {
         return getSwitchField(thisType);
     }
@@ -101,16 +120,28 @@ public class CLanguageTemplateHelper implements FreemarkerLanguageTemplateHelper
     }
 
     public Collection<ComplexTypeReference> getComplexTypeReferencesInFields() {
-        List<ComplexTypeReference> complexTypeReferences = new LinkedList<>();
-        if (thisType instanceof ComplexTypeDefinition) {
-            for (PropertyField propertyField : ((ComplexTypeDefinition) thisType).getAllPropertyFields()) {
-                if (propertyField.getType() instanceof ComplexTypeReference) {
-                    ComplexTypeReference complexTypeReference = (ComplexTypeReference) propertyField.getType();
-                    complexTypeReferences.add(complexTypeReference);
+        return getComplexTypeReferencesInFields(thisType);
+    }
+
+    public Collection<ComplexTypeReference> getComplexTypeReferencesInFields(TypeDefinition baseType) {
+        Set<ComplexTypeReference> complexTypeReferences = new HashSet<>();
+        if (baseType instanceof ComplexTypeDefinition) {
+            for (Field field : ((ComplexTypeDefinition) baseType).getFields()) {
+                if(field instanceof PropertyField) {
+                    PropertyField propertyField = (PropertyField) field;
+                    if (propertyField.getType() instanceof ComplexTypeReference) {
+                        ComplexTypeReference complexTypeReference = (ComplexTypeReference) propertyField.getType();
+                        complexTypeReferences.add(complexTypeReference);
+                    }
+                } else if(field instanceof SwitchField) {
+                    SwitchField switchField = (SwitchField) field;
+                    for (DiscriminatedComplexTypeDefinition switchCase : switchField.getCases()) {
+                        complexTypeReferences.addAll(getComplexTypeReferencesInFields(switchCase));
+                    }
                 }
             }
-        } else if (thisType instanceof EnumTypeDefinition) {
-            for (String constantName : ((EnumTypeDefinition) thisType).getConstantNames()) {
+        } else if (baseType instanceof EnumTypeDefinition) {
+            for (String constantName : ((EnumTypeDefinition) baseType).getConstantNames()) {
                 final TypeReference constantType = ((EnumTypeDefinition) thisType).getConstantType(constantName);
                 if (constantType instanceof ComplexTypeReference) {
                     ComplexTypeReference complexTypeReference = (ComplexTypeReference) constantType;
@@ -884,21 +915,16 @@ public class CLanguageTemplateHelper implements FreemarkerLanguageTemplateHelper
         for (ComplexTypeReference complexTypeReferencesInField : getComplexTypeReferencesInFields()) {
             imports.add(camelCaseToSnakeCase(complexTypeReferencesInField.getName()));
         }
-        // If this is a discriminated tpye, add an import to the parent type.
+        // If this is a discriminated type, add an import to the parent type.
         if (thisType instanceof DiscriminatedComplexTypeDefinition) {
-            DiscriminatedComplexTypeDefinition dicriminatedType = (DiscriminatedComplexTypeDefinition) thisType;
-            imports.add(camelCaseToSnakeCase(dicriminatedType.getParentType().getName()));
+            DiscriminatedComplexTypeDefinition discriminatedType = (DiscriminatedComplexTypeDefinition) thisType;
+            imports.add(camelCaseToSnakeCase(discriminatedType.getParentType().getName()));
         }
         return imports;
     }
 
     public Collection<String> getIncludeTypesForCFiles() {
         List<String> imports = new LinkedList<>();
-        SwitchField switchField = getSwitchField();
-        if (switchField != null) {
-            imports.addAll(switchField.getCases().stream().map(
-                sc -> camelCaseToSnakeCase(sc.getName())).collect(Collectors.toList()));
-        }
         // Add a reference to the current types header file itself.
         imports.add(camelCaseToSnakeCase(thisType.getName()));
         return imports;
@@ -936,7 +962,7 @@ public class CLanguageTemplateHelper implements FreemarkerLanguageTemplateHelper
             // Check if this segment is referring to an argument.
             final Optional<Argument> argument = Arrays.stream(parentType.getParserArguments()).filter(
                 curArgument -> curArgument.getName().equals(fieldName)).findFirst();
-            if(argument.isPresent()) {
+            if (argument.isPresent()) {
                 type = Optional.of(argument.get().getType());
             }
         }
@@ -945,10 +971,10 @@ public class CLanguageTemplateHelper implements FreemarkerLanguageTemplateHelper
         // found in this level, get that type's definition and continue from there.
         if (type.isPresent() && (rest != null)) {
             TypeReference typeReference = type.get();
-            if(typeReference instanceof ComplexTypeReference) {
+            if (typeReference instanceof ComplexTypeReference) {
                 ComplexTypeReference complexTypeReference = (ComplexTypeReference) typeReference;
                 final TypeDefinition typeDefinition = this.types.get(complexTypeReference.getName());
-                if(typeDefinition instanceof ComplexTypeDefinition) {
+                if (typeDefinition instanceof ComplexTypeDefinition) {
                     return getDiscriminatorType((ComplexTypeDefinition) typeDefinition, rest);
                 }
             }
@@ -1000,10 +1026,10 @@ public class CLanguageTemplateHelper implements FreemarkerLanguageTemplateHelper
             Map<String, Map<String, String>> discriminatorTypes = new TreeMap<>();
             for (DiscriminatedComplexTypeDefinition switchCase : switchField.getCases()) {
                 discriminatorTypes.put(switchCase.getName(), new TreeMap<>());
-                for(int i = 0; i < discriminatorNames.length; i++) {
+                for (int i = 0; i < discriminatorNames.length; i++) {
                     String discriminatorName = discriminatorNames[i];
                     String discriminatorValue;
-                    if(i < switchCase.getDiscriminatorValues().length) {
+                    if (i < switchCase.getDiscriminatorValues().length) {
                         discriminatorValue = switchCase.getDiscriminatorValues()[i];
                     } else {
                         discriminatorValue = null;
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
index 0c86d87..6ee1293 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
@@ -16,7 +16,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-${helper.setConstants(type, protocolName, outputFlavor)}${helper.getSourceDirectory()?replace(".", "/")}/${helper.camelCaseToSnakeCase(typeName)}.c
+<#if !helper.isDiscriminatedType(type)>${helper.setConstants(type, protocolName, outputFlavor)}${helper.getSourceDirectory()?replace(".", "/")}/${helper.camelCaseToSnakeCase(typeName)}.c
 /*
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
@@ -74,10 +74,9 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
+  plc4c_${helper.getCTypeName(type.name)}* msg = malloc(sizeof(plc4c_${helper.getCTypeName(type.name)}));
 <#if type.getPropertyFields()?has_content>
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)(<#list type.getPropertyFields() as field>${helper.getLanguageTypeNameForField(field)}<#sep >, </#list>) = NULL;
+
 </#if>
 <#list type.fields as field>
     <#switch field.typeName>
@@ -109,6 +108,7 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
 
   // Enum field (${field.name})
   ${helper.getLanguageTypeNameForField(field)} ${field.name} = ${helper.getReadBufferReadMethodCall(helper.getEnumBaseType(field.type))?no_esc};
+  msg->${helper.camelCaseToSnakeCase(field.name)} = ${field.name};
             <#break>
         <#case "discriminator">
 
@@ -124,6 +124,7 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
 
   // Manual Field (${field.name})
   ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(field, field.parseExpression, type.parserArguments)});
+  msg->${helper.camelCaseToSnakeCase(field.name)} = ${field.name};
         <#break>
         <#case "optional">
 
@@ -136,8 +137,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
         <#if helper.isSimpleType(field.type)>
     ${field.name} = ${helper.getReadBufferReadMethodCall(field.type)?no_esc};
         <#else>
+    plc4c_${helper.getCTypeName(field.type.name)}* ${field.name} = NULL;
     plc4c_${helper.getCTypeName(field.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, &${field.name});
         </#if>
+    msg->${helper.camelCaseToSnakeCase(field.name)} = ${field.name};
   }
             <#break>
         <#case "padding">
@@ -168,15 +171,21 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
             <#else>
             <#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
   ${helper.getLanguageTypeNameForField(field)}* ${field.name} = NULL;
-  plc4c_${helper.getCTypeName(field.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, &${field.name});
+  plc4c_${helper.getCTypeName(field.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &${field.name});
             </#if>
+  msg->${helper.camelCaseToSnakeCase(field.name)} = ${field.name};
             <#break>
         <#case "switch">
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
             <#list field.cases as case>
-  <#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue><#if case.discriminatorValues?size &gt; 1>(</#if>${helper.toSwitchExpression(field.discriminatorNames[discriminatorValue?index])?no_esc} == ${discriminatorValue}<#if case.discriminatorValues?size &gt; 1>)</#if><#sep> && </#sep></#list>) </#if>{
-    plc4c_${helper.getCTypeName(case.name)}_parse(buf<#if case.parserArguments?has_content>, <#list case.parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>, &msg);
+  <#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue><#if case.discriminatorValues?size &gt; 1>(</#if>${helper.toSwitchExpression(field.discriminatorNames[discriminatorValue?index])?no_esc} == ${discriminatorValue}<#if case.discriminatorValues?size &gt; 1>)</#if><#sep> && </#sep></#list>) </#if>{ /* ${case.name} */
+                <#list case.propertyFields as caseField>
+    ${helper.getLanguageTypeNameForField(caseField)}<#if !helper.isSimpleType(caseField.type)>*</#if> ${caseField.name}<#if field.loopType??>${helper.getLoopExpressionSuffix(caseField)}</#if><#if helper.getLanguageTypeNameForField(caseField) == "plc4c_list"><#elseif !helper.isSimpleType(caseField.type)> = NULL<#else> = -1</#if>;
+    msg->${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)} = ${caseField.name};
+                    <#sep >
+
+                </#list>
   }<#sep> else </#sep>
             </#list>
             <#break>
@@ -194,3 +203,4 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
 plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_serialize(plc4c_spi_write_buffer* buf, plc4c_${helper.getCTypeName(type.name)}* message) {
   return OK;
 }
+</#if>
\ No newline at end of file
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
index 7ac9125..3737ea6 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
@@ -16,7 +16,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-${helper.setConstants(type, protocolName, outputFlavor)}${helper.getIncludesDirectory()?replace(".", "/")}/${helper.camelCaseToSnakeCase(typeName)}.h
+<#if !helper.isDiscriminatedType(type)>${helper.setConstants(type, protocolName, outputFlavor)}${helper.getIncludesDirectory()?replace(".", "/")}/${helper.camelCaseToSnakeCase(typeName)}.h
 /*
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
@@ -81,16 +81,6 @@ typedef enum plc4c_${helper.getCTypeName(type.name)}_type plc4c_${helper.getCTyp
 // Function to get the discriminator values for a given type.
 plc4c_${helper.getCTypeName(type.name)}_discriminator plc4c_${helper.getCTypeName(type.name)}_get_discriminator(plc4c_${helper.getCTypeName(type.name)}_type type);
 </#if>
-<#--#if helper.isDiscriminatedType(type)>
-
-// Discriminator values used by the parser to determine the type to be used. All values have to apply.
-const void*[] DISCRIMINATOR_VALUES = {
-    <#list type.discriminatorValues as discriminatorValue>
-    <#- There are rare occasions where the discriminator is defined by a parser argument, in this case we currently can't detect the type ->
-  (${helper.getDiscriminatorConstantType(type, discriminatorValue?index)}) ${discriminatorValue}<#sep>, </#sep>
-    </#list>
-};
-</#if-->
 <#--
     When using const fields, output the constant reference values
     as global const values so we can use them elsewhere.
@@ -107,14 +97,27 @@ const ${helper.getLanguageTypeNameForField(field)} ${helper.getCTypeName(type.na
     Create the general data-structure for this type
 -->
 struct plc4c_${helper.getCTypeName(type.name)} {
+  /* This is an abstract type so this property saves the type of this typed union */
 <#if helper.isAbstractType(type)>
   plc4c_${helper.getCTypeName(type.name)}_type _type;
 </#if>
-<#if helper.isDiscriminatedType(type)>
-  plc4c_${helper.getCTypeName(type.parentType.name)}_type _type;
-</#if>
-<#list type.allPropertyFields as field>
+  /* Properties */
+<#list helper.getFields() as field>
+    <#if helper.isSwitchField(field)>
+  union {
+        <#list field.cases as case>
+    struct { /* ${case.name} */
+            <#list case.propertyFields as caseField>
+      ${helper.getLanguageTypeNameForField(caseField)}<#if !helper.isSimpleType(caseField.type)>*</#if> ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)}${helper.getTypeSizeForField(caseField)}<#if field.loopType??>${helper.getLoopExpressionSuffix(caseField)}</#if>;
+            </#list>
+    };
+        </#list>
+  };
+    <#elseif helper.isEnumField(field)>
+  ${helper.getLanguageTypeNameForField(field)} ${helper.camelCaseToSnakeCase(field.name)};
+    <#else>
   ${helper.getLanguageTypeNameForField(field)}<#if !helper.isSimpleType(field.type)>*</#if> ${helper.camelCaseToSnakeCase(field.name)}${helper.getTypeSizeForField(field)}<#if field.loopType??>${helper.getLoopExpressionSuffix(field)}</#if>;
+    </#if>
 </#list>
 };
 typedef struct plc4c_${helper.getCTypeName(type.name)} plc4c_${helper.getCTypeName(type.name)};
@@ -133,3 +136,4 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_serialize(plc4c_spi_wr
 }
 #endif
 #endif  // PLC4C_${helper.getCTypeName(type.name)?upper_case}_H_
+</#if>
\ No newline at end of file
diff --git a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
index bbaa147..3697670 100644
--- a/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/pojo-template.ftlh
@@ -103,8 +103,6 @@ public<#if type.abstract> abstract</#if> class ${typeName}<#if type.parentType??
     public Object[] getDiscriminatorValues() {
         return DISCRIMINATOR_VALUES;
     }
-
-    public
 </#if>
 
 <#list type.propertyFields as field>
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_constants.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_constants.h
index 229620d..2365896 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_constants.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_constants.h
@@ -30,6 +30,9 @@ extern "C" {
 const uint16_t MODBUS_READ_WRITE_MODBUS_CONSTANTS_MODBUS_TCP_DEFAULT_PORT = 502;
 
 struct plc4c_modbus_read_write_modbus_constants {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
+  uint16_t modbus_tcp_default_port;
 };
 typedef struct plc4c_modbus_read_write_modbus_constants plc4c_modbus_read_write_modbus_constants;
 
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h
index dac5cff..7ed9afc 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h
@@ -25,6 +25,10 @@ extern "C" {
 #include <stdbool.h>
 #include <stdint.h>
 #include <plc4c/utils/list.h>
+#include "modbus_pdu_read_file_record_request_item.h"
+#include "modbus_pdu_read_file_record_response_item.h"
+#include "modbus_pdu_write_file_record_request_item.h"
+#include "modbus_pdu_write_file_record_response_item.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
 struct plc4c_modbus_read_write_modbus_pdu_discriminator {
@@ -78,7 +82,140 @@ typedef enum plc4c_modbus_read_write_modbus_pdu_type plc4c_modbus_read_write_mod
 plc4c_modbus_read_write_modbus_pdu_discriminator plc4c_modbus_read_write_modbus_pdu_get_discriminator(plc4c_modbus_read_write_modbus_pdu_type type);
 
 struct plc4c_modbus_read_write_modbus_pdu {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_modbus_read_write_modbus_pdu_type _type;
+  /* Properties */
+  union {
+    struct { /* ModbusPDUError */
+      uint8_t modbus_pdu_error_exception_code;
+    };
+    struct { /* ModbusPDUReadDiscreteInputsRequest */
+      uint16_t modbus_pdu_read_discrete_inputs_request_starting_address;
+      uint16_t modbus_pdu_read_discrete_inputs_request_quantity;
+    };
+    struct { /* ModbusPDUReadDiscreteInputsResponse */
+      plc4c_list modbus_pdu_read_discrete_inputs_response_value;
+    };
+    struct { /* ModbusPDUReadCoilsRequest */
+      uint16_t modbus_pdu_read_coils_request_starting_address;
+      uint16_t modbus_pdu_read_coils_request_quantity;
+    };
+    struct { /* ModbusPDUReadCoilsResponse */
+      plc4c_list modbus_pdu_read_coils_response_value;
+    };
+    struct { /* ModbusPDUWriteSingleCoilRequest */
+      uint16_t modbus_pdu_write_single_coil_request_address;
+      uint16_t modbus_pdu_write_single_coil_request_value;
+    };
+    struct { /* ModbusPDUWriteSingleCoilResponse */
+      uint16_t modbus_pdu_write_single_coil_response_address;
+      uint16_t modbus_pdu_write_single_coil_response_value;
+    };
+    struct { /* ModbusPDUWriteMultipleCoilsRequest */
+      uint16_t modbus_pdu_write_multiple_coils_request_starting_address;
+      uint16_t modbus_pdu_write_multiple_coils_request_quantity;
+      plc4c_list modbus_pdu_write_multiple_coils_request_value;
+    };
+    struct { /* ModbusPDUWriteMultipleCoilsResponse */
+      uint16_t modbus_pdu_write_multiple_coils_response_starting_address;
+      uint16_t modbus_pdu_write_multiple_coils_response_quantity;
+    };
+    struct { /* ModbusPDUReadInputRegistersRequest */
+      uint16_t modbus_pdu_read_input_registers_request_starting_address;
+      uint16_t modbus_pdu_read_input_registers_request_quantity;
+    };
+    struct { /* ModbusPDUReadInputRegistersResponse */
+      plc4c_list modbus_pdu_read_input_registers_response_value;
+    };
+    struct { /* ModbusPDUReadHoldingRegistersRequest */
+      uint16_t modbus_pdu_read_holding_registers_request_starting_address;
+      uint16_t modbus_pdu_read_holding_registers_request_quantity;
+    };
+    struct { /* ModbusPDUReadHoldingRegistersResponse */
+      plc4c_list modbus_pdu_read_holding_registers_response_value;
+    };
+    struct { /* ModbusPDUWriteSingleRegisterRequest */
+      uint16_t modbus_pdu_write_single_register_request_address;
+      uint16_t modbus_pdu_write_single_register_request_value;
+    };
+    struct { /* ModbusPDUWriteSingleRegisterResponse */
+      uint16_t modbus_pdu_write_single_register_response_address;
+      uint16_t modbus_pdu_write_single_register_response_value;
+    };
+    struct { /* ModbusPDUWriteMultipleHoldingRegistersRequest */
+      uint16_t modbus_pdu_write_multiple_holding_registers_request_starting_address;
+      uint16_t modbus_pdu_write_multiple_holding_registers_request_quantity;
+      plc4c_list modbus_pdu_write_multiple_holding_registers_request_value;
+    };
+    struct { /* ModbusPDUWriteMultipleHoldingRegistersResponse */
+      uint16_t modbus_pdu_write_multiple_holding_registers_response_starting_address;
+      uint16_t modbus_pdu_write_multiple_holding_registers_response_quantity;
+    };
+    struct { /* ModbusPDUReadWriteMultipleHoldingRegistersRequest */
+      uint16_t modbus_pdu_read_write_multiple_holding_registers_request_read_starting_address;
+      uint16_t modbus_pdu_read_write_multiple_holding_registers_request_read_quantity;
+      uint16_t modbus_pdu_read_write_multiple_holding_registers_request_write_starting_address;
+      uint16_t modbus_pdu_read_write_multiple_holding_registers_request_write_quantity;
+      plc4c_list modbus_pdu_read_write_multiple_holding_registers_request_value;
+    };
+    struct { /* ModbusPDUReadWriteMultipleHoldingRegistersResponse */
+      plc4c_list modbus_pdu_read_write_multiple_holding_registers_response_value;
+    };
+    struct { /* ModbusPDUMaskWriteHoldingRegisterRequest */
+      uint16_t modbus_pdu_mask_write_holding_register_request_reference_address;
+      uint16_t modbus_pdu_mask_write_holding_register_request_and_mask;
+      uint16_t modbus_pdu_mask_write_holding_register_request_or_mask;
+    };
+    struct { /* ModbusPDUMaskWriteHoldingRegisterResponse */
+      uint16_t modbus_pdu_mask_write_holding_register_response_reference_address;
+      uint16_t modbus_pdu_mask_write_holding_register_response_and_mask;
+      uint16_t modbus_pdu_mask_write_holding_register_response_or_mask;
+    };
+    struct { /* ModbusPDUReadFifoQueueRequest */
+      uint16_t modbus_pdu_read_fifo_queue_request_fifo_pointer_address;
+    };
+    struct { /* ModbusPDUReadFifoQueueResponse */
+      plc4c_list modbus_pdu_read_fifo_queue_response_fifo_value;
+    };
+    struct { /* ModbusPDUReadFileRecordRequest */
+      plc4c_list* modbus_pdu_read_file_record_request_items;
+    };
+    struct { /* ModbusPDUReadFileRecordResponse */
+      plc4c_list* modbus_pdu_read_file_record_response_items;
+    };
+    struct { /* ModbusPDUWriteFileRecordRequest */
+      plc4c_list* modbus_pdu_write_file_record_request_items;
+    };
+    struct { /* ModbusPDUWriteFileRecordResponse */
+      plc4c_list* modbus_pdu_write_file_record_response_items;
+    };
+    struct { /* ModbusPDUReadExceptionStatusRequest */
+    };
+    struct { /* ModbusPDUReadExceptionStatusResponse */
+      uint8_t modbus_pdu_read_exception_status_response_value;
+    };
+    struct { /* ModbusPDUDiagnosticRequest */
+      uint16_t modbus_pdu_diagnostic_request_status;
+      uint16_t modbus_pdu_diagnostic_request_event_count;
+    };
+    struct { /* ModbusPDUGetComEventLogRequest */
+    };
+    struct { /* ModbusPDUGetComEventLogResponse */
+      uint16_t modbus_pdu_get_com_event_log_response_status;
+      uint16_t modbus_pdu_get_com_event_log_response_event_count;
+      uint16_t modbus_pdu_get_com_event_log_response_message_count;
+      plc4c_list modbus_pdu_get_com_event_log_response_events;
+    };
+    struct { /* ModbusPDUReportServerIdRequest */
+    };
+    struct { /* ModbusPDUReportServerIdResponse */
+      plc4c_list modbus_pdu_report_server_id_response_value;
+    };
+    struct { /* ModbusPDUReadDeviceIdentificationRequest */
+    };
+    struct { /* ModbusPDUReadDeviceIdentificationResponse */
+    };
+  };
 };
 typedef struct plc4c_modbus_read_write_modbus_pdu plc4c_modbus_read_write_modbus_pdu;
 
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_diagnostic_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_diagnostic_request.h
deleted file mode 100644
index 77fa6c7..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_diagnostic_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_DIAGNOSTIC_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_DIAGNOSTIC_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_diagnostic_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t status;
-  uint16_t event_count;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_diagnostic_request plc4c_modbus_read_write_modbus_pdu_diagnostic_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_diagnostic_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_diagnostic_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_diagnostic_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_diagnostic_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_DIAGNOSTIC_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_error.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_error.h
deleted file mode 100644
index 428be18..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_error.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_ERROR_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_ERROR_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_error {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint8_t exception_code;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_error plc4c_modbus_read_write_modbus_pdu_error;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_error_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_error** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_error_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_error* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_ERROR_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_get_com_event_log_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_get_com_event_log_request.h
deleted file mode 100644
index 6c32108..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_get_com_event_log_request.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_GET_COM_EVENT_LOG_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_GET_COM_EVENT_LOG_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_GET_COM_EVENT_LOG_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_get_com_event_log_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_get_com_event_log_response.h
deleted file mode 100644
index a38198c..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_get_com_event_log_response.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_GET_COM_EVENT_LOG_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_GET_COM_EVENT_LOG_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t status;
-  uint16_t event_count;
-  uint16_t message_count;
-  plc4c_list events;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_GET_COM_EVENT_LOG_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_mask_write_holding_register_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_mask_write_holding_register_request.h
deleted file mode 100644
index 83b4348..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_mask_write_holding_register_request.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_MASK_WRITE_HOLDING_REGISTER_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_MASK_WRITE_HOLDING_REGISTER_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t reference_address;
-  uint16_t and_mask;
-  uint16_t or_mask;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_MASK_WRITE_HOLDING_REGISTER_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_mask_write_holding_register_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_mask_write_holding_register_response.h
deleted file mode 100644
index caac3b1..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_mask_write_holding_register_response.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_MASK_WRITE_HOLDING_REGISTER_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_MASK_WRITE_HOLDING_REGISTER_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t reference_address;
-  uint16_t and_mask;
-  uint16_t or_mask;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_MASK_WRITE_HOLDING_REGISTER_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_coils_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_coils_request.h
deleted file mode 100644
index f75a704..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_coils_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_COILS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_COILS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_coils_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_coils_request plc4c_modbus_read_write_modbus_pdu_read_coils_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_coils_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_coils_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_COILS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_coils_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_coils_response.h
deleted file mode 100644
index e8568eb..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_coils_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_COILS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_COILS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_coils_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_coils_response plc4c_modbus_read_write_modbus_pdu_read_coils_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_coils_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_coils_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_COILS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_device_identification_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_device_identification_request.h
deleted file mode 100644
index a1a4f85..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_device_identification_request.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DEVICE_IDENTIFICATION_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DEVICE_IDENTIFICATION_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_device_identification_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_device_identification_request plc4c_modbus_read_write_modbus_pdu_read_device_identification_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_device_identification_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_device_identification_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DEVICE_IDENTIFICATION_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_device_identification_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_device_identification_response.h
deleted file mode 100644
index 057b56c..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_device_identification_response.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DEVICE_IDENTIFICATION_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DEVICE_IDENTIFICATION_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_device_identification_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_device_identification_response plc4c_modbus_read_write_modbus_pdu_read_device_identification_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_device_identification_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_device_identification_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DEVICE_IDENTIFICATION_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_discrete_inputs_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_discrete_inputs_request.h
deleted file mode 100644
index 29d0328..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_discrete_inputs_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DISCRETE_INPUTS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DISCRETE_INPUTS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DISCRETE_INPUTS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_discrete_inputs_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_discrete_inputs_response.h
deleted file mode 100644
index a3b92d7..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_discrete_inputs_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DISCRETE_INPUTS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DISCRETE_INPUTS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_DISCRETE_INPUTS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_exception_status_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_exception_status_request.h
deleted file mode 100644
index 5439b54..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_exception_status_request.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_EXCEPTION_STATUS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_EXCEPTION_STATUS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_exception_status_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_exception_status_request plc4c_modbus_read_write_modbus_pdu_read_exception_status_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_exception_status_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_exception_status_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_EXCEPTION_STATUS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_exception_status_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_exception_status_response.h
deleted file mode 100644
index 4c4ab11..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_exception_status_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_EXCEPTION_STATUS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_EXCEPTION_STATUS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_exception_status_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint8_t value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_exception_status_response plc4c_modbus_read_write_modbus_pdu_read_exception_status_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_exception_status_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_exception_status_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_EXCEPTION_STATUS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_fifo_queue_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_fifo_queue_request.h
deleted file mode 100644
index e8764d5..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_fifo_queue_request.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FIFO_QUEUE_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FIFO_QUEUE_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t fifo_pointer_address;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FIFO_QUEUE_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_fifo_queue_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_fifo_queue_response.h
deleted file mode 100644
index ec9d646..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_fifo_queue_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FIFO_QUEUE_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FIFO_QUEUE_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list fifo_value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FIFO_QUEUE_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request.h
deleted file mode 100644
index 9b9bdb1..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FILE_RECORD_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FILE_RECORD_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-#include "modbus_pdu_read_file_record_request_item.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_file_record_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_file_record_request plc4c_modbus_read_write_modbus_pdu_read_file_record_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_file_record_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_file_record_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FILE_RECORD_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request_item.h
index fff12a4..9386b3c 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_request_item.h
@@ -27,6 +27,8 @@ extern "C" {
 #include <plc4c/utils/list.h>
 
 struct plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint8_t reference_type;
   uint16_t file_number;
   uint16_t record_number;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response.h
deleted file mode 100644
index 4da8f4d..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FILE_RECORD_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FILE_RECORD_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-#include "modbus_pdu_read_file_record_response_item.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_file_record_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_file_record_response plc4c_modbus_read_write_modbus_pdu_read_file_record_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_file_record_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_file_record_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_FILE_RECORD_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h
index 2e6585e..9aa9a91 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h
@@ -27,6 +27,8 @@ extern "C" {
 #include <plc4c/utils/list.h>
 
 struct plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint8_t reference_type;
   plc4c_list data;
 };
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_holding_registers_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_holding_registers_request.h
deleted file mode 100644
index 6f5b4bc..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_holding_registers_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_HOLDING_REGISTERS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_HOLDING_REGISTERS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_HOLDING_REGISTERS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_holding_registers_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_holding_registers_response.h
deleted file mode 100644
index 386ceb5..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_holding_registers_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_HOLDING_REGISTERS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_HOLDING_REGISTERS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_HOLDING_REGISTERS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_input_registers_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_input_registers_request.h
deleted file mode 100644
index e648949..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_input_registers_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_INPUT_REGISTERS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_INPUT_REGISTERS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_input_registers_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_input_registers_request plc4c_modbus_read_write_modbus_pdu_read_input_registers_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_input_registers_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_input_registers_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_INPUT_REGISTERS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_input_registers_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_input_registers_response.h
deleted file mode 100644
index f419d3b..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_input_registers_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_INPUT_REGISTERS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_INPUT_REGISTERS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_input_registers_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_input_registers_response plc4c_modbus_read_write_modbus_pdu_read_input_registers_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_input_registers_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_input_registers_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_INPUT_REGISTERS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_write_multiple_holding_registers_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_write_multiple_holding_registers_request.h
deleted file mode 100644
index cd1caeb..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_write_multiple_holding_registers_request.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_WRITE_MULTIPLE_HOLDING_REGISTERS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_WRITE_MULTIPLE_HOLDING_REGISTERS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t read_starting_address;
-  uint16_t read_quantity;
-  uint16_t write_starting_address;
-  uint16_t write_quantity;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_WRITE_MULTIPLE_HOLDING_REGISTERS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_write_multiple_holding_registers_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_write_multiple_holding_registers_response.h
deleted file mode 100644
index 940743a..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_write_multiple_holding_registers_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_WRITE_MULTIPLE_HOLDING_REGISTERS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_WRITE_MULTIPLE_HOLDING_REGISTERS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_READ_WRITE_MULTIPLE_HOLDING_REGISTERS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_report_server_id_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_report_server_id_request.h
deleted file mode 100644
index d783c41..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_report_server_id_request.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_REPORT_SERVER_ID_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_REPORT_SERVER_ID_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_report_server_id_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_report_server_id_request plc4c_modbus_read_write_modbus_pdu_report_server_id_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_report_server_id_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_report_server_id_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_REPORT_SERVER_ID_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_report_server_id_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_report_server_id_response.h
deleted file mode 100644
index ac8dca7..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_report_server_id_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_REPORT_SERVER_ID_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_REPORT_SERVER_ID_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_report_server_id_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_report_server_id_response plc4c_modbus_read_write_modbus_pdu_report_server_id_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_report_server_id_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_report_server_id_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_REPORT_SERVER_ID_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request.h
deleted file mode 100644
index b1fc449..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_FILE_RECORD_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_FILE_RECORD_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-#include "modbus_pdu_write_file_record_request_item.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_file_record_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_file_record_request plc4c_modbus_read_write_modbus_pdu_write_file_record_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_file_record_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_file_record_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_FILE_RECORD_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h
index abdd962..3c41ee4 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h
@@ -27,6 +27,8 @@ extern "C" {
 #include <plc4c/utils/list.h>
 
 struct plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint8_t reference_type;
   uint16_t file_number;
   uint16_t record_number;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response.h
deleted file mode 100644
index e89beee..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_FILE_RECORD_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_FILE_RECORD_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-#include "modbus_pdu_write_file_record_response_item.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_file_record_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_file_record_response plc4c_modbus_read_write_modbus_pdu_write_file_record_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_file_record_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_file_record_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_FILE_RECORD_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h
index e603f9e..2dfa1f5 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h
@@ -27,6 +27,8 @@ extern "C" {
 #include <plc4c/utils/list.h>
 
 struct plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint8_t reference_type;
   uint16_t file_number;
   uint16_t record_number;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_coils_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_coils_request.h
deleted file mode 100644
index 432d5e2..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_coils_request.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_COILS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_COILS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_COILS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_coils_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_coils_response.h
deleted file mode 100644
index 7e95eca..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_coils_response.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_COILS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_COILS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_COILS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_holding_registers_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_holding_registers_request.h
deleted file mode 100644
index ed8bfb8..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_holding_registers_request.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_HOLDING_REGISTERS_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_HOLDING_REGISTERS_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-  plc4c_list value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_HOLDING_REGISTERS_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_holding_registers_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_holding_registers_response.h
deleted file mode 100644
index 8279f7a..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_multiple_holding_registers_response.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_HOLDING_REGISTERS_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_HOLDING_REGISTERS_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t starting_address;
-  uint16_t quantity;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_MULTIPLE_HOLDING_REGISTERS_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_coil_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_coil_request.h
deleted file mode 100644
index 6dc877b..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_coil_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_COIL_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_COIL_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_single_coil_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t address;
-  uint16_t value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_single_coil_request plc4c_modbus_read_write_modbus_pdu_write_single_coil_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_coil_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_coil_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_COIL_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_coil_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_coil_response.h
deleted file mode 100644
index 6e8b5bc..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_coil_response.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_COIL_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_COIL_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_single_coil_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t address;
-  uint16_t value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_single_coil_response plc4c_modbus_read_write_modbus_pdu_write_single_coil_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_coil_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_coil_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_COIL_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_register_request.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_register_request.h
deleted file mode 100644
index ac8e7ad..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_register_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_REGISTER_REQUEST_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_REGISTER_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_single_register_request {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t address;
-  uint16_t value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_single_register_request plc4c_modbus_read_write_modbus_pdu_write_single_register_request;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_register_request** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_register_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_REGISTER_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_register_response.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_register_response.h
deleted file mode 100644
index bf0da47..0000000
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_single_register_response.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_REGISTER_RESPONSE_H_
-#define PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_REGISTER_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "modbus_pdu.h"
-
-struct plc4c_modbus_read_write_modbus_pdu_write_single_register_response {
-  plc4c_modbus_read_write_modbus_pdu_type _type;
-  uint16_t address;
-  uint16_t value;
-};
-typedef struct plc4c_modbus_read_write_modbus_pdu_write_single_register_response plc4c_modbus_read_write_modbus_pdu_write_single_register_response;
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_register_response** message);
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_register_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_MODBUS_READ_WRITE_MODBUS_PDU_WRITE_SINGLE_REGISTER_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h
index c8f1b50..ed3951f 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h
@@ -28,6 +28,8 @@ extern "C" {
 #include "modbus_pdu.h"
 
 struct plc4c_modbus_read_write_modbus_serial_adu {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint16_t transaction_id;
   uint16_t length;
   uint8_t address;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h
index 959e2f4..7f3222e 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h
@@ -31,7 +31,10 @@ extern "C" {
 const uint16_t MODBUS_READ_WRITE_MODBUS_TCP_ADU_PROTOCOL_IDENTIFIER = 0x0000;
 
 struct plc4c_modbus_read_write_modbus_tcp_adu {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint16_t transaction_identifier;
+  uint16_t protocol_identifier;
   uint8_t unit_identifier;
   plc4c_modbus_read_write_modbus_pdu* pdu;
 };
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c
index d542952..8f4072d 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c
@@ -29,9 +29,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_constants_parse(plc4c_spi_read_
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_constants* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_constants));
 
   // Const Field (modbusTcpDefaultPort)
   uint16_t modbusTcpDefaultPort = plc4c_spi_read_unsigned_int(buf, 16);
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
index a319fd3..e258177 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -21,42 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_error.h"
-#include "modbus_pdu_read_discrete_inputs_request.h"
-#include "modbus_pdu_read_discrete_inputs_response.h"
-#include "modbus_pdu_read_coils_request.h"
-#include "modbus_pdu_read_coils_response.h"
-#include "modbus_pdu_write_single_coil_request.h"
-#include "modbus_pdu_write_single_coil_response.h"
-#include "modbus_pdu_write_multiple_coils_request.h"
-#include "modbus_pdu_write_multiple_coils_response.h"
-#include "modbus_pdu_read_input_registers_request.h"
-#include "modbus_pdu_read_input_registers_response.h"
-#include "modbus_pdu_read_holding_registers_request.h"
-#include "modbus_pdu_read_holding_registers_response.h"
-#include "modbus_pdu_write_single_register_request.h"
-#include "modbus_pdu_write_single_register_response.h"
-#include "modbus_pdu_write_multiple_holding_registers_request.h"
-#include "modbus_pdu_write_multiple_holding_registers_response.h"
-#include "modbus_pdu_read_write_multiple_holding_registers_request.h"
-#include "modbus_pdu_read_write_multiple_holding_registers_response.h"
-#include "modbus_pdu_mask_write_holding_register_request.h"
-#include "modbus_pdu_mask_write_holding_register_response.h"
-#include "modbus_pdu_read_fifo_queue_request.h"
-#include "modbus_pdu_read_fifo_queue_response.h"
-#include "modbus_pdu_read_file_record_request.h"
-#include "modbus_pdu_read_file_record_response.h"
-#include "modbus_pdu_write_file_record_request.h"
-#include "modbus_pdu_write_file_record_response.h"
-#include "modbus_pdu_read_exception_status_request.h"
-#include "modbus_pdu_read_exception_status_response.h"
-#include "modbus_pdu_diagnostic_request.h"
-#include "modbus_pdu_get_com_event_log_request.h"
-#include "modbus_pdu_get_com_event_log_response.h"
-#include "modbus_pdu_report_server_id_request.h"
-#include "modbus_pdu_report_server_id_response.h"
-#include "modbus_pdu_read_device_identification_request.h"
-#include "modbus_pdu_read_device_identification_response.h"
 #include "modbus_pdu.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -148,9 +112,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_pdu* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu));
 
   // Implicit Field (error) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   bool error = plc4c_spi_read_bit(buf);
@@ -159,113 +121,217 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
   unsigned int function = plc4c_spi_read_unsigned_short(buf, 7);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(error == true) {
-    plc4c_modbus_read_write_modbus_pdu_error_parse(buf, response, &msg);
+  if(error == true) { /* ModbusPDUError */
+    uint8_t exceptionCode = -1;
+    msg->modbus_pdu_error_exception_code = exceptionCode;
   } else 
-  if((error == false) && (function == 0x02) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x02) && (response == false)) { /* ModbusPDUReadDiscreteInputsRequest */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_read_discrete_inputs_request_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_read_discrete_inputs_request_quantity = quantity;
   } else 
-  if((error == false) && (function == 0x02) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x02) && (response == true)) { /* ModbusPDUReadDiscreteInputsResponse */
+    plc4c_list value;
+    msg->modbus_pdu_read_discrete_inputs_response_value = value;
   } else 
-  if((error == false) && (function == 0x01) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_coils_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x01) && (response == false)) { /* ModbusPDUReadCoilsRequest */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_read_coils_request_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_read_coils_request_quantity = quantity;
   } else 
-  if((error == false) && (function == 0x01) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_coils_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x01) && (response == true)) { /* ModbusPDUReadCoilsResponse */
+    plc4c_list value;
+    msg->modbus_pdu_read_coils_response_value = value;
   } else 
-  if((error == false) && (function == 0x05) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_write_single_coil_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x05) && (response == false)) { /* ModbusPDUWriteSingleCoilRequest */
+    uint16_t address = -1;
+    msg->modbus_pdu_write_single_coil_request_address = address;
+
+    uint16_t value = -1;
+    msg->modbus_pdu_write_single_coil_request_value = value;
   } else 
-  if((error == false) && (function == 0x05) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_write_single_coil_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x05) && (response == true)) { /* ModbusPDUWriteSingleCoilResponse */
+    uint16_t address = -1;
+    msg->modbus_pdu_write_single_coil_response_address = address;
+
+    uint16_t value = -1;
+    msg->modbus_pdu_write_single_coil_response_value = value;
   } else 
-  if((error == false) && (function == 0x0F) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x0F) && (response == false)) { /* ModbusPDUWriteMultipleCoilsRequest */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_write_multiple_coils_request_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_write_multiple_coils_request_quantity = quantity;
+
+    plc4c_list value;
+    msg->modbus_pdu_write_multiple_coils_request_value = value;
   } else 
-  if((error == false) && (function == 0x0F) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x0F) && (response == true)) { /* ModbusPDUWriteMultipleCoilsResponse */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_write_multiple_coils_response_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_write_multiple_coils_response_quantity = quantity;
   } else 
-  if((error == false) && (function == 0x04) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_input_registers_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x04) && (response == false)) { /* ModbusPDUReadInputRegistersRequest */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_read_input_registers_request_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_read_input_registers_request_quantity = quantity;
   } else 
-  if((error == false) && (function == 0x04) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_input_registers_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x04) && (response == true)) { /* ModbusPDUReadInputRegistersResponse */
+    plc4c_list value;
+    msg->modbus_pdu_read_input_registers_response_value = value;
   } else 
-  if((error == false) && (function == 0x03) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x03) && (response == false)) { /* ModbusPDUReadHoldingRegistersRequest */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_read_holding_registers_request_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_read_holding_registers_request_quantity = quantity;
   } else 
-  if((error == false) && (function == 0x03) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x03) && (response == true)) { /* ModbusPDUReadHoldingRegistersResponse */
+    plc4c_list value;
+    msg->modbus_pdu_read_holding_registers_response_value = value;
   } else 
-  if((error == false) && (function == 0x06) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_write_single_register_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x06) && (response == false)) { /* ModbusPDUWriteSingleRegisterRequest */
+    uint16_t address = -1;
+    msg->modbus_pdu_write_single_register_request_address = address;
+
+    uint16_t value = -1;
+    msg->modbus_pdu_write_single_register_request_value = value;
   } else 
-  if((error == false) && (function == 0x06) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_write_single_register_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x06) && (response == true)) { /* ModbusPDUWriteSingleRegisterResponse */
+    uint16_t address = -1;
+    msg->modbus_pdu_write_single_register_response_address = address;
+
+    uint16_t value = -1;
+    msg->modbus_pdu_write_single_register_response_value = value;
   } else 
-  if((error == false) && (function == 0x10) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x10) && (response == false)) { /* ModbusPDUWriteMultipleHoldingRegistersRequest */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_write_multiple_holding_registers_request_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_write_multiple_holding_registers_request_quantity = quantity;
+
+    plc4c_list value;
+    msg->modbus_pdu_write_multiple_holding_registers_request_value = value;
   } else 
-  if((error == false) && (function == 0x10) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x10) && (response == true)) { /* ModbusPDUWriteMultipleHoldingRegistersResponse */
+    uint16_t startingAddress = -1;
+    msg->modbus_pdu_write_multiple_holding_registers_response_starting_address = startingAddress;
+
+    uint16_t quantity = -1;
+    msg->modbus_pdu_write_multiple_holding_registers_response_quantity = quantity;
   } else 
-  if((error == false) && (function == 0x17) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x17) && (response == false)) { /* ModbusPDUReadWriteMultipleHoldingRegistersRequest */
+    uint16_t readStartingAddress = -1;
+    msg->modbus_pdu_read_write_multiple_holding_registers_request_read_starting_address = readStartingAddress;
+
+    uint16_t readQuantity = -1;
+    msg->modbus_pdu_read_write_multiple_holding_registers_request_read_quantity = readQuantity;
+
+    uint16_t writeStartingAddress = -1;
+    msg->modbus_pdu_read_write_multiple_holding_registers_request_write_starting_address = writeStartingAddress;
+
+    uint16_t writeQuantity = -1;
+    msg->modbus_pdu_read_write_multiple_holding_registers_request_write_quantity = writeQuantity;
+
+    plc4c_list value;
+    msg->modbus_pdu_read_write_multiple_holding_registers_request_value = value;
   } else 
-  if((error == false) && (function == 0x17) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x17) && (response == true)) { /* ModbusPDUReadWriteMultipleHoldingRegistersResponse */
+    plc4c_list value;
+    msg->modbus_pdu_read_write_multiple_holding_registers_response_value = value;
   } else 
-  if((error == false) && (function == 0x16) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x16) && (response == false)) { /* ModbusPDUMaskWriteHoldingRegisterRequest */
+    uint16_t referenceAddress = -1;
+    msg->modbus_pdu_mask_write_holding_register_request_reference_address = referenceAddress;
+
+    uint16_t andMask = -1;
+    msg->modbus_pdu_mask_write_holding_register_request_and_mask = andMask;
+
+    uint16_t orMask = -1;
+    msg->modbus_pdu_mask_write_holding_register_request_or_mask = orMask;
   } else 
-  if((error == false) && (function == 0x16) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x16) && (response == true)) { /* ModbusPDUMaskWriteHoldingRegisterResponse */
+    uint16_t referenceAddress = -1;
+    msg->modbus_pdu_mask_write_holding_register_response_reference_address = referenceAddress;
+
+    uint16_t andMask = -1;
+    msg->modbus_pdu_mask_write_holding_register_response_and_mask = andMask;
+
+    uint16_t orMask = -1;
+    msg->modbus_pdu_mask_write_holding_register_response_or_mask = orMask;
   } else 
-  if((error == false) && (function == 0x18) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x18) && (response == false)) { /* ModbusPDUReadFifoQueueRequest */
+    uint16_t fifoPointerAddress = -1;
+    msg->modbus_pdu_read_fifo_queue_request_fifo_pointer_address = fifoPointerAddress;
   } else 
-  if((error == false) && (function == 0x18) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x18) && (response == true)) { /* ModbusPDUReadFifoQueueResponse */
+    plc4c_list fifoValue;
+    msg->modbus_pdu_read_fifo_queue_response_fifo_value = fifoValue;
   } else 
-  if((error == false) && (function == 0x14) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_file_record_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x14) && (response == false)) { /* ModbusPDUReadFileRecordRequest */
+    plc4c_list* items;
+    msg->modbus_pdu_read_file_record_request_items = items;
   } else 
-  if((error == false) && (function == 0x14) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_file_record_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x14) && (response == true)) { /* ModbusPDUReadFileRecordResponse */
+    plc4c_list* items;
+    msg->modbus_pdu_read_file_record_response_items = items;
   } else 
-  if((error == false) && (function == 0x15) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_write_file_record_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x15) && (response == false)) { /* ModbusPDUWriteFileRecordRequest */
+    plc4c_list* items;
+    msg->modbus_pdu_write_file_record_request_items = items;
   } else 
-  if((error == false) && (function == 0x15) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_write_file_record_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x15) && (response == true)) { /* ModbusPDUWriteFileRecordResponse */
+    plc4c_list* items;
+    msg->modbus_pdu_write_file_record_response_items = items;
   } else 
-  if((error == false) && (function == 0x07) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_exception_status_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x07) && (response == false)) { /* ModbusPDUReadExceptionStatusRequest */
   } else 
-  if((error == false) && (function == 0x07) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_exception_status_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x07) && (response == true)) { /* ModbusPDUReadExceptionStatusResponse */
+    uint8_t value = -1;
+    msg->modbus_pdu_read_exception_status_response_value = value;
   } else 
-  if((error == false) && (function == 0x08) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_diagnostic_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x08) && (response == false)) { /* ModbusPDUDiagnosticRequest */
+    uint16_t status = -1;
+    msg->modbus_pdu_diagnostic_request_status = status;
+
+    uint16_t eventCount = -1;
+    msg->modbus_pdu_diagnostic_request_event_count = eventCount;
   } else 
-  if((error == false) && (function == 0x0C) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x0C) && (response == false)) { /* ModbusPDUGetComEventLogRequest */
   } else 
-  if((error == false) && (function == 0x0C) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x0C) && (response == true)) { /* ModbusPDUGetComEventLogResponse */
+    uint16_t status = -1;
+    msg->modbus_pdu_get_com_event_log_response_status = status;
+
+    uint16_t eventCount = -1;
+    msg->modbus_pdu_get_com_event_log_response_event_count = eventCount;
+
+    uint16_t messageCount = -1;
+    msg->modbus_pdu_get_com_event_log_response_message_count = messageCount;
+
+    plc4c_list events;
+    msg->modbus_pdu_get_com_event_log_response_events = events;
   } else 
-  if((error == false) && (function == 0x11) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_report_server_id_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x11) && (response == false)) { /* ModbusPDUReportServerIdRequest */
   } else 
-  if((error == false) && (function == 0x11) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_report_server_id_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x11) && (response == true)) { /* ModbusPDUReportServerIdResponse */
+    plc4c_list value;
+    msg->modbus_pdu_report_server_id_response_value = value;
   } else 
-  if((error == false) && (function == 0x2B) && (response == false)) {
-    plc4c_modbus_read_write_modbus_pdu_read_device_identification_request_parse(buf, response, &msg);
+  if((error == false) && (function == 0x2B) && (response == false)) { /* ModbusPDUReadDeviceIdentificationRequest */
   } else 
-  if((error == false) && (function == 0x2B) && (response == true)) {
-    plc4c_modbus_read_write_modbus_pdu_read_device_identification_response_parse(buf, response, &msg);
+  if((error == false) && (function == 0x2B) && (response == true)) { /* ModbusPDUReadDeviceIdentificationResponse */
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_diagnostic_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_diagnostic_request.c
deleted file mode 100644
index 3e4cffc..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_diagnostic_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_diagnostic_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_diagnostic_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_diagnostic_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (status)
-  uint16_t status = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (eventCount)
-  uint16_t eventCount = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_diagnostic_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_diagnostic_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_error.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_error.c
deleted file mode 100644
index 4f5de4b..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_error.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_error.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_error_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_error** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (exceptionCode)
-  uint8_t exceptionCode = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_error_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_error* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_get_com_event_log_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_get_com_event_log_request.c
deleted file mode 100644
index 164b680..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_get_com_event_log_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_get_com_event_log_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_get_com_event_log_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_get_com_event_log_response.c
deleted file mode 100644
index 8c6fe01..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_get_com_event_log_response.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_get_com_event_log_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (status)
-  uint16_t status = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (eventCount)
-  uint16_t eventCount = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (messageCount)
-  uint16_t messageCount = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_mask_write_holding_register_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_mask_write_holding_register_request.c
deleted file mode 100644
index e7f043f..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_mask_write_holding_register_request.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_mask_write_holding_register_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (referenceAddress)
-  uint16_t referenceAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (andMask)
-  uint16_t andMask = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (orMask)
-  uint16_t orMask = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_mask_write_holding_register_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_mask_write_holding_register_response.c
deleted file mode 100644
index 53dff96..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_mask_write_holding_register_response.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_mask_write_holding_register_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (referenceAddress)
-  uint16_t referenceAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (andMask)
-  uint16_t andMask = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (orMask)
-  uint16_t orMask = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_coils_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_coils_request.c
deleted file mode 100644
index a877a0d..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_coils_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_coils_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_coils_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_coils_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_coils_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_coils_response.c
deleted file mode 100644
index 00bdaa8..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_coils_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_coils_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_coils_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_coils_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_coils_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_device_identification_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_device_identification_request.c
deleted file mode 100644
index 57c1f85..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_device_identification_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_device_identification_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_device_identification_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_device_identification_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_device_identification_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_device_identification_response.c
deleted file mode 100644
index 2b17cb9..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_device_identification_response.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_device_identification_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_device_identification_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_device_identification_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_device_identification_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_discrete_inputs_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_discrete_inputs_request.c
deleted file mode 100644
index 76b0a98..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_discrete_inputs_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_discrete_inputs_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_discrete_inputs_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_discrete_inputs_response.c
deleted file mode 100644
index 86da991..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_discrete_inputs_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_discrete_inputs_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_exception_status_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_exception_status_request.c
deleted file mode 100644
index ffea691..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_exception_status_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_exception_status_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_exception_status_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_exception_status_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_exception_status_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_exception_status_response.c
deleted file mode 100644
index 9970a54..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_exception_status_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_exception_status_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_exception_status_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (value)
-  uint8_t value = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_exception_status_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_exception_status_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_fifo_queue_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_fifo_queue_request.c
deleted file mode 100644
index 67fc990..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_fifo_queue_request.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_fifo_queue_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (fifoPointerAddress)
-  uint16_t fifoPointerAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_fifo_queue_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_fifo_queue_response.c
deleted file mode 100644
index 6a5ce61..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_fifo_queue_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_fifo_queue_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint16_t byteCount = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Implicit Field (fifoCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint16_t fifoCount = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request.c
deleted file mode 100644
index 59824e3..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_file_record_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_file_record_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_file_record_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c
index ebae231..eeec654 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c
@@ -29,21 +29,24 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_request_it
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item));
+
 
   // Simple Field (referenceType)
   uint8_t referenceType = plc4c_spi_read_unsigned_short(buf, 8);
+  msg->reference_type = referenceType;
 
   // Simple Field (fileNumber)
   uint16_t fileNumber = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->file_number = fileNumber;
 
   // Simple Field (recordNumber)
   uint16_t recordNumber = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->record_number = recordNumber;
 
   // Simple Field (recordLength)
   uint16_t recordLength = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->record_length = recordLength;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response.c
deleted file mode 100644
index 051d2c2..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_file_record_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_file_record_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_file_record_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
index c689a36..fa70e63 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
@@ -29,15 +29,15 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_i
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item));
+
 
   // Implicit Field (dataLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   uint8_t dataLength = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Simple Field (referenceType)
   uint8_t referenceType = plc4c_spi_read_unsigned_short(buf, 8);
+  msg->reference_type = referenceType;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_holding_registers_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_holding_registers_request.c
deleted file mode 100644
index 60f25a0..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_holding_registers_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_holding_registers_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_holding_registers_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_holding_registers_response.c
deleted file mode 100644
index 57891fd..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_holding_registers_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_holding_registers_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_input_registers_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_input_registers_request.c
deleted file mode 100644
index b3843a6..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_input_registers_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_input_registers_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_input_registers_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_input_registers_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_input_registers_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_input_registers_response.c
deleted file mode 100644
index 17a957f..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_input_registers_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_input_registers_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_input_registers_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_input_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_input_registers_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_write_multiple_holding_registers_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_write_multiple_holding_registers_request.c
deleted file mode 100644
index d90943c..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_write_multiple_holding_registers_request.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_write_multiple_holding_registers_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (readStartingAddress)
-  uint16_t readStartingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (readQuantity)
-  uint16_t readQuantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (writeStartingAddress)
-  uint16_t writeStartingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (writeQuantity)
-  uint16_t writeQuantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_write_multiple_holding_registers_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_write_multiple_holding_registers_response.c
deleted file mode 100644
index a26f2dd..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_write_multiple_holding_registers_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_read_write_multiple_holding_registers_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_report_server_id_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_report_server_id_request.c
deleted file mode 100644
index 45fc18f..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_report_server_id_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_report_server_id_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_report_server_id_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_report_server_id_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_report_server_id_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_report_server_id_response.c
deleted file mode 100644
index 46ced15..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_report_server_id_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_report_server_id_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_report_server_id_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_report_server_id_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_report_server_id_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request.c
deleted file mode 100644
index 9daa6d7..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_file_record_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_file_record_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_file_record_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
index 3cba1b9..da37eae 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
@@ -29,18 +29,20 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_i
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item));
+
 
   // Simple Field (referenceType)
   uint8_t referenceType = plc4c_spi_read_unsigned_short(buf, 8);
+  msg->reference_type = referenceType;
 
   // Simple Field (fileNumber)
   uint16_t fileNumber = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->file_number = fileNumber;
 
   // Simple Field (recordNumber)
   uint16_t recordNumber = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->record_number = recordNumber;
 
   // Implicit Field (recordLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   uint16_t recordLength = plc4c_spi_read_unsigned_int(buf, 16);
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response.c
deleted file mode 100644
index 9dd1fb2..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_file_record_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_file_record_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_file_record_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
index 3a76612..1a5c914 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
@@ -29,18 +29,20 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item));
+
 
   // Simple Field (referenceType)
   uint8_t referenceType = plc4c_spi_read_unsigned_short(buf, 8);
+  msg->reference_type = referenceType;
 
   // Simple Field (fileNumber)
   uint16_t fileNumber = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->file_number = fileNumber;
 
   // Simple Field (recordNumber)
   uint16_t recordNumber = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->record_number = recordNumber;
 
   // Implicit Field (recordLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   uint16_t recordLength = plc4c_spi_read_unsigned_int(buf, 16);
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_coils_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_coils_request.c
deleted file mode 100644
index 7e5189f..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_coils_request.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_multiple_coils_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_coils_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_coils_response.c
deleted file mode 100644
index 92509df..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_coils_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_multiple_coils_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_holding_registers_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_holding_registers_request.c
deleted file mode 100644
index 15bbd5f..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_holding_registers_request.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_multiple_holding_registers_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t byteCount = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_holding_registers_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_holding_registers_response.c
deleted file mode 100644
index bf4bc5e..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_multiple_holding_registers_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_multiple_holding_registers_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (startingAddress)
-  uint16_t startingAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (quantity)
-  uint16_t quantity = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_coil_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_coil_request.c
deleted file mode 100644
index 8f26d0e..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_coil_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_single_coil_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_coil_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (address)
-  uint16_t address = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (value)
-  uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_coil_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_coil_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_coil_response.c
deleted file mode 100644
index 55ed96a..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_coil_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_single_coil_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_coil_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (address)
-  uint16_t address = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (value)
-  uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_coil_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_coil_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_register_request.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_register_request.c
deleted file mode 100644
index 6778c37..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_register_request.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_single_register_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_request_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_register_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (address)
-  uint16_t address = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (value)
-  uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_request_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_register_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_register_response.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_register_response.c
deleted file mode 100644
index 0798317..0000000
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_single_register_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "modbus_pdu_write_single_register_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_response_parse(plc4c_spi_read_buffer* buf, bool response, plc4c_modbus_read_write_modbus_pdu_write_single_register_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (address)
-  uint16_t address = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (value)
-  uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_single_register_response_serialize(plc4c_spi_write_buffer* buf, plc4c_modbus_read_write_modbus_pdu_write_single_register_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
index e98f1c9..fd72782 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
@@ -29,12 +29,12 @@ plc4c_return_code plc4c_modbus_read_write_modbus_serial_adu_parse(plc4c_spi_read
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_serial_adu* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_serial_adu));
+
 
   // Simple Field (transactionId)
   uint16_t transactionId = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->transaction_id = transactionId;
 
   // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
   {
@@ -46,13 +46,16 @@ plc4c_return_code plc4c_modbus_read_write_modbus_serial_adu_parse(plc4c_spi_read
 
   // Simple Field (length)
   uint16_t length = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->length = length;
 
   // Simple Field (address)
   uint8_t address = plc4c_spi_read_unsigned_short(buf, 8);
+  msg->address = address;
 
   // Simple Field (pdu)
   plc4c_modbus_read_write_modbus_pdu* pdu = NULL;
-  plc4c_modbus_read_write_modbus_pdu_parse(buf, response, &pdu);
+  plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
+  msg->pdu = pdu;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
index 34506e5..714acd6 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
@@ -29,12 +29,12 @@ plc4c_return_code plc4c_modbus_read_write_modbus_tcp_adu_parse(plc4c_spi_read_bu
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_modbus_read_write_modbus_tcp_adu* msg = malloc(sizeof(plc4c_modbus_read_write_modbus_tcp_adu));
+
 
   // Simple Field (transactionIdentifier)
   uint16_t transactionIdentifier = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->transaction_identifier = transactionIdentifier;
 
   // Const Field (protocolIdentifier)
   uint16_t protocolIdentifier = plc4c_spi_read_unsigned_int(buf, 16);
@@ -48,10 +48,12 @@ plc4c_return_code plc4c_modbus_read_write_modbus_tcp_adu_parse(plc4c_spi_read_bu
 
   // Simple Field (unitIdentifier)
   uint8_t unitIdentifier = plc4c_spi_read_unsigned_short(buf, 8);
+  msg->unit_identifier = unitIdentifier;
 
   // Simple Field (pdu)
   plc4c_modbus_read_write_modbus_pdu* pdu = NULL;
-  plc4c_modbus_read_write_modbus_pdu_parse(buf, response, &pdu);
+  plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
+  msg->pdu = pdu;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h
index 61236f5..7708c24 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h
@@ -26,6 +26,7 @@ extern "C" {
 #include <stdint.h>
 #include <plc4c/utils/list.h>
 #include "cotp_parameter.h"
+#include "cotp_protocol_class.h"
 #include "s7_message.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
@@ -48,7 +49,38 @@ typedef enum plc4c_s7_read_write_cotp_packet_type plc4c_s7_read_write_cotp_packe
 plc4c_s7_read_write_cotp_packet_discriminator plc4c_s7_read_write_cotp_packet_get_discriminator(plc4c_s7_read_write_cotp_packet_type type);
 
 struct plc4c_s7_read_write_cotp_packet {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_cotp_packet_type _type;
+  /* Properties */
+  union {
+    struct { /* COTPPacketData */
+      bool cotp_packet_data_eot : 1;
+      unsigned int cotp_packet_data_tpdu_ref : 7;
+    };
+    struct { /* COTPPacketConnectionRequest */
+      uint16_t cotp_packet_connection_request_destination_reference;
+      uint16_t cotp_packet_connection_request_source_reference;
+      plc4c_s7_read_write_cotp_protocol_class* cotp_packet_connection_request_protocol_class;
+    };
+    struct { /* COTPPacketConnectionResponse */
+      uint16_t cotp_packet_connection_response_destination_reference;
+      uint16_t cotp_packet_connection_response_source_reference;
+      plc4c_s7_read_write_cotp_protocol_class* cotp_packet_connection_response_protocol_class;
+    };
+    struct { /* COTPPacketDisconnectRequest */
+      uint16_t cotp_packet_disconnect_request_destination_reference;
+      uint16_t cotp_packet_disconnect_request_source_reference;
+      plc4c_s7_read_write_cotp_protocol_class* cotp_packet_disconnect_request_protocol_class;
+    };
+    struct { /* COTPPacketDisconnectResponse */
+      uint16_t cotp_packet_disconnect_response_destination_reference;
+      uint16_t cotp_packet_disconnect_response_source_reference;
+    };
+    struct { /* COTPPacketTpduError */
+      uint16_t cotp_packet_tpdu_error_destination_reference;
+      uint8_t cotp_packet_tpdu_error_reject_cause;
+    };
+  };
   plc4c_list* parameters;
   plc4c_s7_read_write_s7_message* payload;
 };
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_connection_request.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_connection_request.h
deleted file mode 100644
index d4e2a38..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_connection_request.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PACKET_CONNECTION_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_COTP_PACKET_CONNECTION_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_packet.h"
-#include "cotp_parameter.h"
-#include "cotp_protocol_class.h"
-#include "s7_message.h"
-
-struct plc4c_s7_read_write_cotp_packet_connection_request {
-  plc4c_s7_read_write_cotp_packet_type _type;
-  plc4c_list* parameters;
-  plc4c_s7_read_write_s7_message* payload;
-  uint16_t destination_reference;
-  uint16_t source_reference;
-  plc4c_s7_read_write_cotp_protocol_class* protocol_class;
-};
-typedef struct plc4c_s7_read_write_cotp_packet_connection_request plc4c_s7_read_write_cotp_packet_connection_request;
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_request_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_connection_request** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_connection_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PACKET_CONNECTION_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_connection_response.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_connection_response.h
deleted file mode 100644
index d83392f..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_connection_response.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PACKET_CONNECTION_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_COTP_PACKET_CONNECTION_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_packet.h"
-#include "cotp_parameter.h"
-#include "cotp_protocol_class.h"
-#include "s7_message.h"
-
-struct plc4c_s7_read_write_cotp_packet_connection_response {
-  plc4c_s7_read_write_cotp_packet_type _type;
-  plc4c_list* parameters;
-  plc4c_s7_read_write_s7_message* payload;
-  uint16_t destination_reference;
-  uint16_t source_reference;
-  plc4c_s7_read_write_cotp_protocol_class* protocol_class;
-};
-typedef struct plc4c_s7_read_write_cotp_packet_connection_response plc4c_s7_read_write_cotp_packet_connection_response;
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_response_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_connection_response** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_connection_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PACKET_CONNECTION_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_data.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_data.h
deleted file mode 100644
index f746e1c..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_data.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PACKET_DATA_H_
-#define PLC4C_S7_READ_WRITE_COTP_PACKET_DATA_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_packet.h"
-#include "cotp_parameter.h"
-#include "s7_message.h"
-
-struct plc4c_s7_read_write_cotp_packet_data {
-  plc4c_s7_read_write_cotp_packet_type _type;
-  plc4c_list* parameters;
-  plc4c_s7_read_write_s7_message* payload;
-  bool eot : 1;
-  unsigned int tpdu_ref : 7;
-};
-typedef struct plc4c_s7_read_write_cotp_packet_data plc4c_s7_read_write_cotp_packet_data;
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_data_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_data** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_data* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PACKET_DATA_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_disconnect_request.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_disconnect_request.h
deleted file mode 100644
index a1a3ca3..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_disconnect_request.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PACKET_DISCONNECT_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_COTP_PACKET_DISCONNECT_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_packet.h"
-#include "cotp_parameter.h"
-#include "cotp_protocol_class.h"
-#include "s7_message.h"
-
-struct plc4c_s7_read_write_cotp_packet_disconnect_request {
-  plc4c_s7_read_write_cotp_packet_type _type;
-  plc4c_list* parameters;
-  plc4c_s7_read_write_s7_message* payload;
-  uint16_t destination_reference;
-  uint16_t source_reference;
-  plc4c_s7_read_write_cotp_protocol_class* protocol_class;
-};
-typedef struct plc4c_s7_read_write_cotp_packet_disconnect_request plc4c_s7_read_write_cotp_packet_disconnect_request;
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_request_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_disconnect_request** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_disconnect_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PACKET_DISCONNECT_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_disconnect_response.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_disconnect_response.h
deleted file mode 100644
index 3e28c67..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_disconnect_response.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PACKET_DISCONNECT_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_COTP_PACKET_DISCONNECT_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_packet.h"
-#include "cotp_parameter.h"
-#include "s7_message.h"
-
-struct plc4c_s7_read_write_cotp_packet_disconnect_response {
-  plc4c_s7_read_write_cotp_packet_type _type;
-  plc4c_list* parameters;
-  plc4c_s7_read_write_s7_message* payload;
-  uint16_t destination_reference;
-  uint16_t source_reference;
-};
-typedef struct plc4c_s7_read_write_cotp_packet_disconnect_response plc4c_s7_read_write_cotp_packet_disconnect_response;
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_response_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_disconnect_response** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_disconnect_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PACKET_DISCONNECT_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_tpdu_error.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_tpdu_error.h
deleted file mode 100644
index 6cd5b86..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet_tpdu_error.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PACKET_TPDU_ERROR_H_
-#define PLC4C_S7_READ_WRITE_COTP_PACKET_TPDU_ERROR_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_packet.h"
-#include "cotp_parameter.h"
-#include "s7_message.h"
-
-struct plc4c_s7_read_write_cotp_packet_tpdu_error {
-  plc4c_s7_read_write_cotp_packet_type _type;
-  plc4c_list* parameters;
-  plc4c_s7_read_write_s7_message* payload;
-  uint16_t destination_reference;
-  uint8_t reject_cause;
-};
-typedef struct plc4c_s7_read_write_cotp_packet_tpdu_error plc4c_s7_read_write_cotp_packet_tpdu_error;
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_tpdu_error_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_tpdu_error** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_tpdu_error_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_tpdu_error* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PACKET_TPDU_ERROR_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h
index 5db2814..86ed288 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h
@@ -25,6 +25,7 @@ extern "C" {
 #include <stdbool.h>
 #include <stdint.h>
 #include <plc4c/utils/list.h>
+#include "cotp_tpdu_size.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
 struct plc4c_s7_read_write_cotp_parameter_discriminator {
@@ -45,7 +46,26 @@ typedef enum plc4c_s7_read_write_cotp_parameter_type plc4c_s7_read_write_cotp_pa
 plc4c_s7_read_write_cotp_parameter_discriminator plc4c_s7_read_write_cotp_parameter_get_discriminator(plc4c_s7_read_write_cotp_parameter_type type);
 
 struct plc4c_s7_read_write_cotp_parameter {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_cotp_parameter_type _type;
+  /* Properties */
+  union {
+    struct { /* COTPParameterTpduSize */
+      plc4c_s7_read_write_cotp_tpdu_size* cotp_parameter_tpdu_size_tpdu_size;
+    };
+    struct { /* COTPParameterCallingTsap */
+      uint16_t cotp_parameter_calling_tsap_tsap_id;
+    };
+    struct { /* COTPParameterCalledTsap */
+      uint16_t cotp_parameter_called_tsap_tsap_id;
+    };
+    struct { /* COTPParameterChecksum */
+      uint8_t cotp_parameter_checksum_crc;
+    };
+    struct { /* COTPParameterDisconnectAdditionalInformation */
+      plc4c_list cotp_parameter_disconnect_additional_information_data;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_cotp_parameter plc4c_s7_read_write_cotp_parameter;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_called_tsap.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_called_tsap.h
deleted file mode 100644
index 4712030..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_called_tsap.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PARAMETER_CALLED_TSAP_H_
-#define PLC4C_S7_READ_WRITE_COTP_PARAMETER_CALLED_TSAP_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_parameter.h"
-
-struct plc4c_s7_read_write_cotp_parameter_called_tsap {
-  plc4c_s7_read_write_cotp_parameter_type _type;
-  uint16_t tsap_id;
-};
-typedef struct plc4c_s7_read_write_cotp_parameter_called_tsap plc4c_s7_read_write_cotp_parameter_called_tsap;
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_called_tsap_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_called_tsap** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_called_tsap_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_called_tsap* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PARAMETER_CALLED_TSAP_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_calling_tsap.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_calling_tsap.h
deleted file mode 100644
index 917a6b6..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_calling_tsap.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PARAMETER_CALLING_TSAP_H_
-#define PLC4C_S7_READ_WRITE_COTP_PARAMETER_CALLING_TSAP_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_parameter.h"
-
-struct plc4c_s7_read_write_cotp_parameter_calling_tsap {
-  plc4c_s7_read_write_cotp_parameter_type _type;
-  uint16_t tsap_id;
-};
-typedef struct plc4c_s7_read_write_cotp_parameter_calling_tsap plc4c_s7_read_write_cotp_parameter_calling_tsap;
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_calling_tsap_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_calling_tsap** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_calling_tsap_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_calling_tsap* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PARAMETER_CALLING_TSAP_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_checksum.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_checksum.h
deleted file mode 100644
index 1aa836a..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_checksum.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PARAMETER_CHECKSUM_H_
-#define PLC4C_S7_READ_WRITE_COTP_PARAMETER_CHECKSUM_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_parameter.h"
-
-struct plc4c_s7_read_write_cotp_parameter_checksum {
-  plc4c_s7_read_write_cotp_parameter_type _type;
-  uint8_t crc;
-};
-typedef struct plc4c_s7_read_write_cotp_parameter_checksum plc4c_s7_read_write_cotp_parameter_checksum;
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_checksum_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_checksum** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_checksum_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_checksum* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PARAMETER_CHECKSUM_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_disconnect_additional_information.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_disconnect_additional_information.h
deleted file mode 100644
index 2809b62..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_disconnect_additional_information.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PARAMETER_DISCONNECT_ADDITIONAL_INFORMATION_H_
-#define PLC4C_S7_READ_WRITE_COTP_PARAMETER_DISCONNECT_ADDITIONAL_INFORMATION_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_parameter.h"
-
-struct plc4c_s7_read_write_cotp_parameter_disconnect_additional_information {
-  plc4c_s7_read_write_cotp_parameter_type _type;
-  plc4c_list data;
-};
-typedef struct plc4c_s7_read_write_cotp_parameter_disconnect_additional_information plc4c_s7_read_write_cotp_parameter_disconnect_additional_information;
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_disconnect_additional_information_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_disconnect_additional_information** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_disconnect_additional_information_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_disconnect_additional_information* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PARAMETER_DISCONNECT_ADDITIONAL_INFORMATION_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_tpdu_size.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_tpdu_size.h
deleted file mode 100644
index 8c39e08..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter_tpdu_size.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_COTP_PARAMETER_TPDU_SIZE_H_
-#define PLC4C_S7_READ_WRITE_COTP_PARAMETER_TPDU_SIZE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "cotp_parameter.h"
-#include "cotp_tpdu_size.h"
-
-struct plc4c_s7_read_write_cotp_parameter_tpdu_size {
-  plc4c_s7_read_write_cotp_parameter_type _type;
-  plc4c_s7_read_write_cotp_tpdu_size* tpdu_size;
-};
-typedef struct plc4c_s7_read_write_cotp_parameter_tpdu_size plc4c_s7_read_write_cotp_parameter_tpdu_size;
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_tpdu_size_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_tpdu_size** message);
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_tpdu_size_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_tpdu_size* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_COTP_PARAMETER_TPDU_SIZE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_address.h b/sandbox/plc4c/generated-sources/s7/includes/s7_address.h
index 88aee52..96b1e4b 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_address.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_address.h
@@ -25,6 +25,8 @@ extern "C" {
 #include <stdbool.h>
 #include <stdint.h>
 #include <plc4c/utils/list.h>
+#include "memory_area.h"
+#include "transport_size.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
 struct plc4c_s7_read_write_s7_address_discriminator {
@@ -41,7 +43,19 @@ typedef enum plc4c_s7_read_write_s7_address_type plc4c_s7_read_write_s7_address_
 plc4c_s7_read_write_s7_address_discriminator plc4c_s7_read_write_s7_address_get_discriminator(plc4c_s7_read_write_s7_address_type type);
 
 struct plc4c_s7_read_write_s7_address {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_address_type _type;
+  /* Properties */
+  union {
+    struct { /* S7AddressAny */
+      plc4c_s7_read_write_transport_size* s7_address_any_transport_size;
+      uint16_t s7_address_any_number_of_elements;
+      uint16_t s7_address_any_db_number;
+      plc4c_s7_read_write_memory_area* s7_address_any_area;
+      uint16_t s7_address_any_byte_address;
+      unsigned int s7_address_any_bit_address : 3;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_s7_address plc4c_s7_read_write_s7_address;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_address_any.h b/sandbox/plc4c/generated-sources/s7/includes/s7_address_any.h
deleted file mode 100644
index 4918717..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_address_any.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_ADDRESS_ANY_H_
-#define PLC4C_S7_READ_WRITE_S7_ADDRESS_ANY_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "memory_area.h"
-#include "s7_address.h"
-#include "transport_size.h"
-
-struct plc4c_s7_read_write_s7_address_any {
-  plc4c_s7_read_write_s7_address_type _type;
-  plc4c_s7_read_write_transport_size* transport_size;
-  uint16_t number_of_elements;
-  uint16_t db_number;
-  plc4c_s7_read_write_memory_area* area;
-  uint16_t byte_address;
-  unsigned int bit_address : 3;
-};
-typedef struct plc4c_s7_read_write_s7_address_any plc4c_s7_read_write_s7_address_any;
-
-plc4c_return_code plc4c_s7_read_write_s7_address_any_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_address_any** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_address_any_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_address_any* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_ADDRESS_ANY_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_message.h b/sandbox/plc4c/generated-sources/s7/includes/s7_message.h
index 35276a5..0ba9ee6 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_message.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_message.h
@@ -49,8 +49,25 @@ plc4c_s7_read_write_s7_message_discriminator plc4c_s7_read_write_s7_message_get_
 const uint8_t S7_READ_WRITE_S7_MESSAGE_PROTOCOL_ID = 0x32;
 
 struct plc4c_s7_read_write_s7_message {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_message_type _type;
+  /* Properties */
+  uint8_t protocol_id;
   uint16_t tpdu_reference;
+  union {
+    struct { /* S7MessageRequest */
+    };
+    struct { /* S7MessageResponse */
+      uint8_t s7_message_response_error_class;
+      uint8_t s7_message_response_error_code;
+    };
+    struct { /* S7MessageResponseData */
+      uint8_t s7_message_response_data_error_class;
+      uint8_t s7_message_response_data_error_code;
+    };
+    struct { /* S7MessageUserData */
+    };
+  };
   plc4c_s7_read_write_s7_parameter* parameter;
   plc4c_s7_read_write_s7_payload* payload;
 };
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_message_request.h b/sandbox/plc4c/generated-sources/s7/includes/s7_message_request.h
deleted file mode 100644
index a05699c..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_message_request.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_MESSAGE_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_S7_MESSAGE_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_message.h"
-#include "s7_parameter.h"
-#include "s7_payload.h"
-
-struct plc4c_s7_read_write_s7_message_request {
-  plc4c_s7_read_write_s7_message_type _type;
-  uint16_t tpdu_reference;
-  plc4c_s7_read_write_s7_parameter* parameter;
-  plc4c_s7_read_write_s7_payload* payload;
-};
-typedef struct plc4c_s7_read_write_s7_message_request plc4c_s7_read_write_s7_message_request;
-
-plc4c_return_code plc4c_s7_read_write_s7_message_request_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_request** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_message_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_MESSAGE_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_message_response.h b/sandbox/plc4c/generated-sources/s7/includes/s7_message_response.h
deleted file mode 100644
index cb4c27d..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_message_response.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_MESSAGE_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_S7_MESSAGE_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_message.h"
-#include "s7_parameter.h"
-#include "s7_payload.h"
-
-struct plc4c_s7_read_write_s7_message_response {
-  plc4c_s7_read_write_s7_message_type _type;
-  uint16_t tpdu_reference;
-  plc4c_s7_read_write_s7_parameter* parameter;
-  plc4c_s7_read_write_s7_payload* payload;
-  uint8_t error_class;
-  uint8_t error_code;
-};
-typedef struct plc4c_s7_read_write_s7_message_response plc4c_s7_read_write_s7_message_response;
-
-plc4c_return_code plc4c_s7_read_write_s7_message_response_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_response** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_message_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_MESSAGE_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_message_response_data.h b/sandbox/plc4c/generated-sources/s7/includes/s7_message_response_data.h
deleted file mode 100644
index 4f3e713..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_message_response_data.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_MESSAGE_RESPONSE_DATA_H_
-#define PLC4C_S7_READ_WRITE_S7_MESSAGE_RESPONSE_DATA_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_message.h"
-#include "s7_parameter.h"
-#include "s7_payload.h"
-
-struct plc4c_s7_read_write_s7_message_response_data {
-  plc4c_s7_read_write_s7_message_type _type;
-  uint16_t tpdu_reference;
-  plc4c_s7_read_write_s7_parameter* parameter;
-  plc4c_s7_read_write_s7_payload* payload;
-  uint8_t error_class;
-  uint8_t error_code;
-};
-typedef struct plc4c_s7_read_write_s7_message_response_data plc4c_s7_read_write_s7_message_response_data;
-
-plc4c_return_code plc4c_s7_read_write_s7_message_response_data_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_response_data** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_message_response_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_response_data* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_MESSAGE_RESPONSE_DATA_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_message_user_data.h b/sandbox/plc4c/generated-sources/s7/includes/s7_message_user_data.h
deleted file mode 100644
index b56aa64..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_message_user_data.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_MESSAGE_USER_DATA_H_
-#define PLC4C_S7_READ_WRITE_S7_MESSAGE_USER_DATA_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_message.h"
-#include "s7_parameter.h"
-#include "s7_payload.h"
-
-struct plc4c_s7_read_write_s7_message_user_data {
-  plc4c_s7_read_write_s7_message_type _type;
-  uint16_t tpdu_reference;
-  plc4c_s7_read_write_s7_parameter* parameter;
-  plc4c_s7_read_write_s7_payload* payload;
-};
-typedef struct plc4c_s7_read_write_s7_message_user_data plc4c_s7_read_write_s7_message_user_data;
-
-plc4c_return_code plc4c_s7_read_write_s7_message_user_data_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_user_data** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_message_user_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_user_data* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_MESSAGE_USER_DATA_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h
index 4ea84f8..b6c87eb 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h
@@ -25,6 +25,8 @@ extern "C" {
 #include <stdbool.h>
 #include <stdint.h>
 #include <plc4c/utils/list.h>
+#include "s7_parameter_user_data_item.h"
+#include "s7_var_request_parameter_item.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
 struct plc4c_s7_read_write_s7_parameter_discriminator {
@@ -47,7 +49,31 @@ typedef enum plc4c_s7_read_write_s7_parameter_type plc4c_s7_read_write_s7_parame
 plc4c_s7_read_write_s7_parameter_discriminator plc4c_s7_read_write_s7_parameter_get_discriminator(plc4c_s7_read_write_s7_parameter_type type);
 
 struct plc4c_s7_read_write_s7_parameter {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_parameter_type _type;
+  /* Properties */
+  union {
+    struct { /* S7ParameterSetupCommunication */
+      uint16_t s7_parameter_setup_communication_max_amq_caller;
+      uint16_t s7_parameter_setup_communication_max_amq_callee;
+      uint16_t s7_parameter_setup_communication_pdu_length;
+    };
+    struct { /* S7ParameterReadVarRequest */
+      plc4c_list* s7_parameter_read_var_request_items;
+    };
+    struct { /* S7ParameterReadVarResponse */
+      uint8_t s7_parameter_read_var_response_num_items;
+    };
+    struct { /* S7ParameterWriteVarRequest */
+      plc4c_list* s7_parameter_write_var_request_items;
+    };
+    struct { /* S7ParameterWriteVarResponse */
+      uint8_t s7_parameter_write_var_response_num_items;
+    };
+    struct { /* S7ParameterUserData */
+      plc4c_list* s7_parameter_user_data_items;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_s7_parameter plc4c_s7_read_write_s7_parameter;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_read_var_request.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_read_var_request.h
deleted file mode 100644
index 67aaa73..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_read_var_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_READ_VAR_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_READ_VAR_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_var_request_parameter_item.h"
-
-struct plc4c_s7_read_write_s7_parameter_read_var_request {
-  plc4c_s7_read_write_s7_parameter_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_read_var_request plc4c_s7_read_write_s7_parameter_read_var_request;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_request_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_read_var_request** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_read_var_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_READ_VAR_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_read_var_response.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_read_var_response.h
deleted file mode 100644
index 90de951..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_read_var_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_READ_VAR_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_READ_VAR_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-
-struct plc4c_s7_read_write_s7_parameter_read_var_response {
-  plc4c_s7_read_write_s7_parameter_type _type;
-  uint8_t num_items;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_read_var_response plc4c_s7_read_write_s7_parameter_read_var_response;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_read_var_response** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_read_var_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_READ_VAR_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_setup_communication.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_setup_communication.h
deleted file mode 100644
index b109e65..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_setup_communication.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_SETUP_COMMUNICATION_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_SETUP_COMMUNICATION_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-
-struct plc4c_s7_read_write_s7_parameter_setup_communication {
-  plc4c_s7_read_write_s7_parameter_type _type;
-  uint16_t max_amq_caller;
-  uint16_t max_amq_callee;
-  uint16_t pdu_length;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_setup_communication plc4c_s7_read_write_s7_parameter_setup_communication;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_setup_communication_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_setup_communication** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_setup_communication_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_setup_communication* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_SETUP_COMMUNICATION_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data.h
deleted file mode 100644
index 30e1543..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_USER_DATA_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_USER_DATA_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_parameter_user_data_item.h"
-
-struct plc4c_s7_read_write_s7_parameter_user_data {
-  plc4c_s7_read_write_s7_parameter_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_user_data plc4c_s7_read_write_s7_parameter_user_data;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_user_data** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_user_data* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_USER_DATA_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item.h
index da179f1..5f3679d 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item.h
@@ -41,7 +41,21 @@ typedef enum plc4c_s7_read_write_s7_parameter_user_data_item_type plc4c_s7_read_
 plc4c_s7_read_write_s7_parameter_user_data_item_discriminator plc4c_s7_read_write_s7_parameter_user_data_item_get_discriminator(plc4c_s7_read_write_s7_parameter_user_data_item_type type);
 
 struct plc4c_s7_read_write_s7_parameter_user_data_item {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_parameter_user_data_item_type _type;
+  /* Properties */
+  union {
+    struct { /* S7ParameterUserDataItemCPUFunctions */
+      uint8_t s7_parameter_user_data_item_cpu_functions_method;
+      unsigned int s7_parameter_user_data_item_cpu_functions_cpu_function_type : 4;
+      unsigned int s7_parameter_user_data_item_cpu_functions_cpu_function_group : 4;
+      uint8_t s7_parameter_user_data_item_cpu_functions_cpu_subfunction;
+      uint8_t s7_parameter_user_data_item_cpu_functions_sequence_number;
+      uint8_t s7_parameter_user_data_item_cpu_functions_data_unit_reference_number;
+      uint8_t s7_parameter_user_data_item_cpu_functions_last_data_unit;
+      uint16_t s7_parameter_user_data_item_cpu_functions_error_code;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_s7_parameter_user_data_item plc4c_s7_read_write_s7_parameter_user_data_item;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item_cpu_functions.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item_cpu_functions.h
deleted file mode 100644
index 994a962..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_user_data_item_cpu_functions.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_USER_DATA_ITEM_CPU_FUNCTIONS_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_USER_DATA_ITEM_CPU_FUNCTIONS_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter_user_data_item.h"
-
-struct plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions {
-  plc4c_s7_read_write_s7_parameter_user_data_item_type _type;
-  uint8_t method;
-  unsigned int cpu_function_type : 4;
-  unsigned int cpu_function_group : 4;
-  uint8_t cpu_subfunction;
-  uint8_t sequence_number;
-  uint8_t data_unit_reference_number;
-  uint8_t last_data_unit;
-  uint16_t error_code;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_USER_DATA_ITEM_CPU_FUNCTIONS_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_write_var_request.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_write_var_request.h
deleted file mode 100644
index 4ddcf97..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_write_var_request.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_WRITE_VAR_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_WRITE_VAR_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_var_request_parameter_item.h"
-
-struct plc4c_s7_read_write_s7_parameter_write_var_request {
-  plc4c_s7_read_write_s7_parameter_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_write_var_request plc4c_s7_read_write_s7_parameter_write_var_request;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_request_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_write_var_request** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_write_var_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_WRITE_VAR_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_write_var_response.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_write_var_response.h
deleted file mode 100644
index e13deb2..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter_write_var_response.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PARAMETER_WRITE_VAR_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_S7_PARAMETER_WRITE_VAR_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-
-struct plc4c_s7_read_write_s7_parameter_write_var_response {
-  plc4c_s7_read_write_s7_parameter_type _type;
-  uint8_t num_items;
-};
-typedef struct plc4c_s7_read_write_s7_parameter_write_var_response plc4c_s7_read_write_s7_parameter_write_var_response;
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_write_var_response** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_write_var_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PARAMETER_WRITE_VAR_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h
index 1526bfe..b364c99 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h
@@ -26,6 +26,9 @@ extern "C" {
 #include <stdint.h>
 #include <plc4c/utils/list.h>
 #include "s7_parameter.h"
+#include "s7_payload_user_data_item.h"
+#include "s7_var_payload_data_item.h"
+#include "s7_var_payload_status_item.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
 struct plc4c_s7_read_write_s7_payload_discriminator {
@@ -46,7 +49,23 @@ typedef enum plc4c_s7_read_write_s7_payload_type plc4c_s7_read_write_s7_payload_
 plc4c_s7_read_write_s7_payload_discriminator plc4c_s7_read_write_s7_payload_get_discriminator(plc4c_s7_read_write_s7_payload_type type);
 
 struct plc4c_s7_read_write_s7_payload {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_payload_type _type;
+  /* Properties */
+  union {
+    struct { /* S7PayloadReadVarResponse */
+      plc4c_list* s7_payload_read_var_response_items;
+    };
+    struct { /* S7PayloadWriteVarRequest */
+      plc4c_list* s7_payload_write_var_request_items;
+    };
+    struct { /* S7PayloadWriteVarResponse */
+      plc4c_list* s7_payload_write_var_response_items;
+    };
+    struct { /* S7PayloadUserData */
+      plc4c_list* s7_payload_user_data_items;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_s7_payload plc4c_s7_read_write_s7_payload;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_read_var_response.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_read_var_response.h
deleted file mode 100644
index 5e0c652..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_read_var_response.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PAYLOAD_READ_VAR_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_S7_PAYLOAD_READ_VAR_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_payload.h"
-#include "s7_var_payload_data_item.h"
-
-struct plc4c_s7_read_write_s7_payload_read_var_response {
-  plc4c_s7_read_write_s7_payload_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_payload_read_var_response plc4c_s7_read_write_s7_payload_read_var_response;
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_read_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_read_var_response** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_read_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_read_var_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PAYLOAD_READ_VAR_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data.h
deleted file mode 100644
index 709d2c3..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_H_
-#define PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_payload.h"
-#include "s7_payload_user_data_item.h"
-
-struct plc4c_s7_read_write_s7_payload_user_data {
-  plc4c_s7_read_write_s7_payload_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_payload_user_data plc4c_s7_read_write_s7_payload_user_data;
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_user_data** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_user_data* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h
index 0ab2349..67a035e 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h
@@ -27,6 +27,7 @@ extern "C" {
 #include <plc4c/utils/list.h>
 #include "data_transport_error_code.h"
 #include "data_transport_size.h"
+#include "szl_data_tree_item.h"
 #include "szl_id.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
@@ -45,11 +46,20 @@ typedef enum plc4c_s7_read_write_s7_payload_user_data_item_type plc4c_s7_read_wr
 plc4c_s7_read_write_s7_payload_user_data_item_discriminator plc4c_s7_read_write_s7_payload_user_data_item_get_discriminator(plc4c_s7_read_write_s7_payload_user_data_item_type type);
 
 struct plc4c_s7_read_write_s7_payload_user_data_item {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_payload_user_data_item_type _type;
-  plc4c_s7_read_write_data_transport_error_code* return_code;
-  plc4c_s7_read_write_data_transport_size* transport_size;
+  /* Properties */
+  plc4c_s7_read_write_data_transport_error_code return_code;
+  plc4c_s7_read_write_data_transport_size transport_size;
   plc4c_s7_read_write_szl_id* szl_id;
   uint16_t szl_index;
+  union {
+    struct { /* S7PayloadUserDataItemCpuFunctionReadSzlRequest */
+    };
+    struct { /* S7PayloadUserDataItemCpuFunctionReadSzlResponse */
+      plc4c_list* s7_payload_user_data_item_cpu_function_read_szl_response_items;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_s7_payload_user_data_item plc4c_s7_read_write_s7_payload_user_data_item;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item_cpu_function_read_szl_request.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item_cpu_function_read_szl_request.h
deleted file mode 100644
index 71b52aa..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item_cpu_function_read_szl_request.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "data_transport_error_code.h"
-#include "data_transport_size.h"
-#include "s7_payload_user_data_item.h"
-#include "szl_id.h"
-
-struct plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request {
-  plc4c_s7_read_write_s7_payload_user_data_item_type _type;
-  plc4c_s7_read_write_data_transport_error_code* return_code;
-  plc4c_s7_read_write_data_transport_size* transport_size;
-  plc4c_s7_read_write_szl_id* szl_id;
-  uint16_t szl_index;
-};
-typedef struct plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request;
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request_parse(plc4c_spi_read_buffer* buf, unsigned int cpuFunctionType, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item_cpu_function_read_szl_response.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item_cpu_function_read_szl_response.h
deleted file mode 100644
index 52a4af9..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item_cpu_function_read_szl_response.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "data_transport_error_code.h"
-#include "data_transport_size.h"
-#include "s7_payload_user_data_item.h"
-#include "szl_data_tree_item.h"
-#include "szl_id.h"
-
-// Constant values.
-const uint16_t S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH = 28;
-
-struct plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response {
-  plc4c_s7_read_write_s7_payload_user_data_item_type _type;
-  plc4c_s7_read_write_data_transport_error_code* return_code;
-  plc4c_s7_read_write_data_transport_size* transport_size;
-  plc4c_s7_read_write_szl_id* szl_id;
-  uint16_t szl_index;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response;
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response_parse(plc4c_spi_read_buffer* buf, unsigned int cpuFunctionType, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_write_var_request.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_write_var_request.h
deleted file mode 100644
index def42a7..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_write_var_request.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PAYLOAD_WRITE_VAR_REQUEST_H_
-#define PLC4C_S7_READ_WRITE_S7_PAYLOAD_WRITE_VAR_REQUEST_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_payload.h"
-#include "s7_var_payload_data_item.h"
-
-struct plc4c_s7_read_write_s7_payload_write_var_request {
-  plc4c_s7_read_write_s7_payload_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_payload_write_var_request plc4c_s7_read_write_s7_payload_write_var_request;
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_request_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_write_var_request** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_write_var_request* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PAYLOAD_WRITE_VAR_REQUEST_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_write_var_response.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_write_var_response.h
deleted file mode 100644
index 70ea775..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_write_var_response.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_PAYLOAD_WRITE_VAR_RESPONSE_H_
-#define PLC4C_S7_READ_WRITE_S7_PAYLOAD_WRITE_VAR_RESPONSE_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_parameter.h"
-#include "s7_payload.h"
-#include "s7_var_payload_status_item.h"
-
-struct plc4c_s7_read_write_s7_payload_write_var_response {
-  plc4c_s7_read_write_s7_payload_type _type;
-  plc4c_list* items;
-};
-typedef struct plc4c_s7_read_write_s7_payload_write_var_response plc4c_s7_read_write_s7_payload_write_var_response;
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_write_var_response** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_write_var_response* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_PAYLOAD_WRITE_VAR_RESPONSE_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h
index d6d65f0..fa37aee 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h
@@ -29,8 +29,10 @@ extern "C" {
 #include "data_transport_size.h"
 
 struct plc4c_s7_read_write_s7_var_payload_data_item {
-  plc4c_s7_read_write_data_transport_error_code* return_code;
-  plc4c_s7_read_write_data_transport_size* transport_size;
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
+  plc4c_s7_read_write_data_transport_error_code return_code;
+  plc4c_s7_read_write_data_transport_size transport_size;
   uint16_t data_length;
   plc4c_list data;
 };
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_status_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_status_item.h
index 355b83c..196e2b5 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_status_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_status_item.h
@@ -28,7 +28,9 @@ extern "C" {
 #include "data_transport_error_code.h"
 
 struct plc4c_s7_read_write_s7_var_payload_status_item {
-  plc4c_s7_read_write_data_transport_error_code* return_code;
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
+  plc4c_s7_read_write_data_transport_error_code return_code;
 };
 typedef struct plc4c_s7_read_write_s7_var_payload_status_item plc4c_s7_read_write_s7_var_payload_status_item;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h
index 3e54aa2..85ef4a2 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h
@@ -25,6 +25,7 @@ extern "C" {
 #include <stdbool.h>
 #include <stdint.h>
 #include <plc4c/utils/list.h>
+#include "s7_address.h"
 
 // Structure used to contain the discriminator values for discriminated types using this as a parent
 struct plc4c_s7_read_write_s7_var_request_parameter_item_discriminator {
@@ -41,7 +42,14 @@ typedef enum plc4c_s7_read_write_s7_var_request_parameter_item_type plc4c_s7_rea
 plc4c_s7_read_write_s7_var_request_parameter_item_discriminator plc4c_s7_read_write_s7_var_request_parameter_item_get_discriminator(plc4c_s7_read_write_s7_var_request_parameter_item_type type);
 
 struct plc4c_s7_read_write_s7_var_request_parameter_item {
+  /* This is an abstract type so this property saves the type of this typed union */
   plc4c_s7_read_write_s7_var_request_parameter_item_type _type;
+  /* Properties */
+  union {
+    struct { /* S7VarRequestParameterItemAddress */
+      plc4c_s7_read_write_s7_address* s7_var_request_parameter_item_address_address;
+    };
+  };
 };
 typedef struct plc4c_s7_read_write_s7_var_request_parameter_item plc4c_s7_read_write_s7_var_request_parameter_item;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item_address.h b/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item_address.h
deleted file mode 100644
index dd28f3c..0000000
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item_address.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-#ifndef PLC4C_S7_READ_WRITE_S7_VAR_REQUEST_PARAMETER_ITEM_ADDRESS_H_
-#define PLC4C_S7_READ_WRITE_S7_VAR_REQUEST_PARAMETER_ITEM_ADDRESS_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <plc4c/utils/list.h>
-#include "s7_address.h"
-#include "s7_var_request_parameter_item.h"
-
-struct plc4c_s7_read_write_s7_var_request_parameter_item_address {
-  plc4c_s7_read_write_s7_var_request_parameter_item_type _type;
-  plc4c_s7_read_write_s7_address* address;
-};
-typedef struct plc4c_s7_read_write_s7_var_request_parameter_item_address plc4c_s7_read_write_s7_var_request_parameter_item_address;
-
-plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_address_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_var_request_parameter_item_address** message);
-
-plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_address_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_var_request_parameter_item_address* message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif  // PLC4C_S7_READ_WRITE_S7_VAR_REQUEST_PARAMETER_ITEM_ADDRESS_H_
diff --git a/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h b/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
index 1c0ed9d..1b9480a 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
@@ -27,6 +27,8 @@ extern "C" {
 #include <plc4c/utils/list.h>
 
 struct plc4c_s7_read_write_szl_data_tree_item {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
   uint16_t item_index;
   int8_t mlfb[20];
   uint16_t module_type_id;
diff --git a/sandbox/plc4c/generated-sources/s7/includes/szl_id.h b/sandbox/plc4c/generated-sources/s7/includes/szl_id.h
index 0edb9ef5..544460f 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/szl_id.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/szl_id.h
@@ -29,9 +29,11 @@ extern "C" {
 #include "szl_sublist.h"
 
 struct plc4c_s7_read_write_szl_id {
-  plc4c_s7_read_write_szl_module_type_class* type_class;
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
+  plc4c_s7_read_write_szl_module_type_class type_class;
   unsigned int sublist_extract : 4;
-  plc4c_s7_read_write_szl_sublist* sublist_list;
+  plc4c_s7_read_write_szl_sublist sublist_list;
 };
 typedef struct plc4c_s7_read_write_szl_id plc4c_s7_read_write_szl_id;
 
diff --git a/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h b/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h
index 558410e..43501e3 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h
@@ -31,6 +31,9 @@ extern "C" {
 const uint8_t S7_READ_WRITE_TPKT_PACKET_PROTOCOL_ID = 0x03;
 
 struct plc4c_s7_read_write_tpkt_packet {
+  /* This is an abstract type so this property saves the type of this typed union */
+  /* Properties */
+  uint8_t protocol_id;
   plc4c_s7_read_write_cotp_packet* payload;
 };
 typedef struct plc4c_s7_read_write_tpkt_packet plc4c_s7_read_write_tpkt_packet;
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
index 0b55881..a03efe4 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
@@ -21,12 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_data.h"
-#include "cotp_packet_connection_request.h"
-#include "cotp_packet_connection_response.h"
-#include "cotp_packet_disconnect_request.h"
-#include "cotp_packet_disconnect_response.h"
-#include "cotp_packet_tpdu_error.h"
 #include "cotp_packet.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -58,9 +52,8 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* b
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_cotp_packet* msg = malloc(sizeof(plc4c_s7_read_write_cotp_packet));
+
 
   // Implicit Field (headerLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   uint8_t headerLength = plc4c_spi_read_unsigned_short(buf, 8);
@@ -69,30 +62,65 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* b
   uint8_t tpduCode = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(tpduCode == 0xF0) {
-    plc4c_s7_read_write_cotp_packet_data_parse(buf, cotpLen, &msg);
+  if(tpduCode == 0xF0) { /* COTPPacketData */
+    bool eot = -1;
+    msg->cotp_packet_data_eot = eot;
+
+    unsigned int tpduRef = -1;
+    msg->cotp_packet_data_tpdu_ref = tpduRef;
   } else 
-  if(tpduCode == 0xE0) {
-    plc4c_s7_read_write_cotp_packet_connection_request_parse(buf, cotpLen, &msg);
+  if(tpduCode == 0xE0) { /* COTPPacketConnectionRequest */
+    uint16_t destinationReference = -1;
+    msg->cotp_packet_connection_request_destination_reference = destinationReference;
+
+    uint16_t sourceReference = -1;
+    msg->cotp_packet_connection_request_source_reference = sourceReference;
+
+    plc4c_s7_read_write_cotp_protocol_class* protocolClass = NULL;
+    msg->cotp_packet_connection_request_protocol_class = protocolClass;
   } else 
-  if(tpduCode == 0xD0) {
-    plc4c_s7_read_write_cotp_packet_connection_response_parse(buf, cotpLen, &msg);
+  if(tpduCode == 0xD0) { /* COTPPacketConnectionResponse */
+    uint16_t destinationReference = -1;
+    msg->cotp_packet_connection_response_destination_reference = destinationReference;
+
+    uint16_t sourceReference = -1;
+    msg->cotp_packet_connection_response_source_reference = sourceReference;
+
+    plc4c_s7_read_write_cotp_protocol_class* protocolClass = NULL;
+    msg->cotp_packet_connection_response_protocol_class = protocolClass;
   } else 
-  if(tpduCode == 0x80) {
-    plc4c_s7_read_write_cotp_packet_disconnect_request_parse(buf, cotpLen, &msg);
+  if(tpduCode == 0x80) { /* COTPPacketDisconnectRequest */
+    uint16_t destinationReference = -1;
+    msg->cotp_packet_disconnect_request_destination_reference = destinationReference;
+
+    uint16_t sourceReference = -1;
+    msg->cotp_packet_disconnect_request_source_reference = sourceReference;
+
+    plc4c_s7_read_write_cotp_protocol_class* protocolClass = NULL;
+    msg->cotp_packet_disconnect_request_protocol_class = protocolClass;
   } else 
-  if(tpduCode == 0xC0) {
-    plc4c_s7_read_write_cotp_packet_disconnect_response_parse(buf, cotpLen, &msg);
+  if(tpduCode == 0xC0) { /* COTPPacketDisconnectResponse */
+    uint16_t destinationReference = -1;
+    msg->cotp_packet_disconnect_response_destination_reference = destinationReference;
+
+    uint16_t sourceReference = -1;
+    msg->cotp_packet_disconnect_response_source_reference = sourceReference;
   } else 
-  if(tpduCode == 0x70) {
-    plc4c_s7_read_write_cotp_packet_tpdu_error_parse(buf, cotpLen, &msg);
+  if(tpduCode == 0x70) { /* COTPPacketTpduError */
+    uint16_t destinationReference = -1;
+    msg->cotp_packet_tpdu_error_destination_reference = destinationReference;
+
+    uint8_t rejectCause = -1;
+    msg->cotp_packet_tpdu_error_reject_cause = rejectCause;
   }
 
   // Optional Field (payload) (Can be skipped, if a given expression evaluates to false)
   curPos = plc4c_spi_read_get_pos(buf) - startPos;
   plc4c_s7_read_write_s7_message* payload = NULL;
   if((curPos) < (cotpLen)) {
+    plc4c_s7_read_write_s7_message* payload = NULL;
     plc4c_s7_read_write_s7_message_parse(buf, &payload);
+    msg->payload = payload;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_connection_request.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet_connection_request.c
deleted file mode 100644
index 3f145a6..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_connection_request.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_connection_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_request_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_connection_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (destinationReference)
-  uint16_t destinationReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (sourceReference)
-  uint16_t sourceReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Enum field (protocolClass)
-  plc4c_s7_read_write_cotp_protocol_class protocolClass = plc4c_spi_read_byte(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_connection_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_connection_response.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet_connection_response.c
deleted file mode 100644
index 213e284..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_connection_response.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_connection_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_response_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_connection_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (destinationReference)
-  uint16_t destinationReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (sourceReference)
-  uint16_t sourceReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Enum field (protocolClass)
-  plc4c_s7_read_write_cotp_protocol_class protocolClass = plc4c_spi_read_byte(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_connection_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_connection_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_data.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet_data.c
deleted file mode 100644
index 1f3ef1d..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_data.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_data.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_packet_data_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_data** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (eot)
-  bool eot = plc4c_spi_read_bit(buf);
-
-  // Simple Field (tpduRef)
-  unsigned int tpduRef = plc4c_spi_read_unsigned_short(buf, 7);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_data* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_disconnect_request.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet_disconnect_request.c
deleted file mode 100644
index cb01362..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_disconnect_request.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_disconnect_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_request_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_disconnect_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (destinationReference)
-  uint16_t destinationReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (sourceReference)
-  uint16_t sourceReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Enum field (protocolClass)
-  plc4c_s7_read_write_cotp_protocol_class protocolClass = plc4c_spi_read_byte(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_disconnect_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_disconnect_response.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet_disconnect_response.c
deleted file mode 100644
index 75ea554..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_disconnect_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_disconnect_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_response_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_disconnect_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (destinationReference)
-  uint16_t destinationReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (sourceReference)
-  uint16_t sourceReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_disconnect_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_disconnect_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_tpdu_error.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet_tpdu_error.c
deleted file mode 100644
index b090cf6..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet_tpdu_error.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_packet_tpdu_error.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_packet_tpdu_error_parse(plc4c_spi_read_buffer* buf, uint16_t cotpLen, plc4c_s7_read_write_cotp_packet_tpdu_error** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (destinationReference)
-  uint16_t destinationReference = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (rejectCause)
-  uint8_t rejectCause = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_packet_tpdu_error_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_packet_tpdu_error* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
index be86263..9c0daf0 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
@@ -21,11 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "cotp_parameter_tpdu_size.h"
-#include "cotp_parameter_calling_tsap.h"
-#include "cotp_parameter_called_tsap.h"
-#include "cotp_parameter_checksum.h"
-#include "cotp_parameter_disconnect_additional_information.h"
 #include "cotp_parameter.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -55,9 +50,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_cotp_parameter* msg = malloc(sizeof(plc4c_s7_read_write_cotp_parameter));
 
   // Discriminator Field (parameterType) (Used as input to a switch field)
   uint8_t parameterType = plc4c_spi_read_unsigned_short(buf, 8);
@@ -66,20 +59,25 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
   uint8_t parameterLength = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(parameterType == 0xC0) {
-    plc4c_s7_read_write_cotp_parameter_tpdu_size_parse(buf, rest, &msg);
+  if(parameterType == 0xC0) { /* COTPParameterTpduSize */
+    plc4c_s7_read_write_cotp_tpdu_size* tpduSize = NULL;
+    msg->cotp_parameter_tpdu_size_tpdu_size = tpduSize;
   } else 
-  if(parameterType == 0xC1) {
-    plc4c_s7_read_write_cotp_parameter_calling_tsap_parse(buf, rest, &msg);
+  if(parameterType == 0xC1) { /* COTPParameterCallingTsap */
+    uint16_t tsapId = -1;
+    msg->cotp_parameter_calling_tsap_tsap_id = tsapId;
   } else 
-  if(parameterType == 0xC2) {
-    plc4c_s7_read_write_cotp_parameter_called_tsap_parse(buf, rest, &msg);
+  if(parameterType == 0xC2) { /* COTPParameterCalledTsap */
+    uint16_t tsapId = -1;
+    msg->cotp_parameter_called_tsap_tsap_id = tsapId;
   } else 
-  if(parameterType == 0xC3) {
-    plc4c_s7_read_write_cotp_parameter_checksum_parse(buf, rest, &msg);
+  if(parameterType == 0xC3) { /* COTPParameterChecksum */
+    uint8_t crc = -1;
+    msg->cotp_parameter_checksum_crc = crc;
   } else 
-  if(parameterType == 0xE0) {
-    plc4c_s7_read_write_cotp_parameter_disconnect_additional_information_parse(buf, rest, &msg);
+  if(parameterType == 0xE0) { /* COTPParameterDisconnectAdditionalInformation */
+    plc4c_list data;
+    msg->cotp_parameter_disconnect_additional_information_data = data;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_called_tsap.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_called_tsap.c
deleted file mode 100644
index 1dbbd13..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_called_tsap.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_parameter_called_tsap.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_called_tsap_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_called_tsap** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (tsapId)
-  uint16_t tsapId = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_called_tsap_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_called_tsap* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_calling_tsap.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_calling_tsap.c
deleted file mode 100644
index 9710330..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_calling_tsap.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_parameter_calling_tsap.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_calling_tsap_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_calling_tsap** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (tsapId)
-  uint16_t tsapId = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_calling_tsap_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_calling_tsap* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_checksum.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_checksum.c
deleted file mode 100644
index 6793191..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_checksum.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_parameter_checksum.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_checksum_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_checksum** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (crc)
-  uint8_t crc = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_checksum_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_checksum* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_disconnect_additional_information.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_disconnect_additional_information.c
deleted file mode 100644
index 3094452..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_disconnect_additional_information.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_parameter_disconnect_additional_information.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_disconnect_additional_information_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_disconnect_additional_information** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_disconnect_additional_information_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_disconnect_additional_information* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_tpdu_size.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_tpdu_size.c
deleted file mode 100644
index 66fc3c1..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter_tpdu_size.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "cotp_parameter_tpdu_size.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_tpdu_size_parse(plc4c_spi_read_buffer* buf, uint8_t rest, plc4c_s7_read_write_cotp_parameter_tpdu_size** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Enum field (tpduSize)
-  plc4c_s7_read_write_cotp_tpdu_size tpduSize = plc4c_spi_read_byte(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_cotp_parameter_tpdu_size_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_cotp_parameter_tpdu_size* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_address.c b/sandbox/plc4c/generated-sources/s7/src/s7_address.c
index ed074f8..f804f5c 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_address.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_address.c
@@ -21,7 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_address_any.h"
 #include "s7_address.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -43,16 +42,30 @@ plc4c_return_code plc4c_s7_read_write_s7_address_parse(plc4c_spi_read_buffer* bu
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_address* msg = malloc(sizeof(plc4c_s7_read_write_s7_address));
 
   // Discriminator Field (addressType) (Used as input to a switch field)
   uint8_t addressType = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(addressType == 0x10) {
-    plc4c_s7_read_write_s7_address_any_parse(buf, &msg);
+  if(addressType == 0x10) { /* S7AddressAny */
+    plc4c_s7_read_write_transport_size* transportSize = NULL;
+    msg->s7_address_any_transport_size = transportSize;
+
+    uint16_t numberOfElements = -1;
+    msg->s7_address_any_number_of_elements = numberOfElements;
+
+    uint16_t dbNumber = -1;
+    msg->s7_address_any_db_number = dbNumber;
+
+    plc4c_s7_read_write_memory_area* area = NULL;
+    msg->s7_address_any_area = area;
+
+    uint16_t byteAddress = -1;
+    msg->s7_address_any_byte_address = byteAddress;
+
+    unsigned int bitAddress = -1;
+    msg->s7_address_any_bit_address = bitAddress;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_address_any.c b/sandbox/plc4c/generated-sources/s7/src/s7_address_any.c
deleted file mode 100644
index 6c365ba..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_address_any.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_address_any.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_address_any_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_address_any** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Enum field (transportSize)
-  plc4c_s7_read_write_transport_size transportSize = plc4c_spi_read_byte(buf, 8);
-
-  // Simple Field (numberOfElements)
-  uint16_t numberOfElements = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (dbNumber)
-  uint16_t dbNumber = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Enum field (area)
-  plc4c_s7_read_write_memory_area area = plc4c_spi_read_byte(buf, 8);
-
-  // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-  {
-    unsigned int reserved = plc4c_spi_read_unsigned_short(buf, 5);
-    if(reserved != (unsigned int) 0x00) {
-      printf("Expected constant value '%d' but got '%d' for reserved field.", 0x00, reserved);
-    }
-  }
-
-  // Simple Field (byteAddress)
-  uint16_t byteAddress = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (bitAddress)
-  unsigned int bitAddress = plc4c_spi_read_unsigned_byte(buf, 3);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_address_any_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_address_any* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_message.c b/sandbox/plc4c/generated-sources/s7/src/s7_message.c
index 00cc5e0..1e34926 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_message.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_message.c
@@ -21,10 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_message_request.h"
-#include "s7_message_response.h"
-#include "s7_message_response_data.h"
-#include "s7_message_user_data.h"
 #include "s7_message.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -52,9 +48,8 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* bu
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_message* msg = malloc(sizeof(plc4c_s7_read_write_s7_message));
+
 
   // Const Field (protocolId)
   uint8_t protocolId = plc4c_spi_read_unsigned_short(buf, 8);
@@ -76,6 +71,7 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* bu
 
   // Simple Field (tpduReference)
   uint16_t tpduReference = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->tpdu_reference = tpduReference;
 
   // Implicit Field (parameterLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   uint16_t parameterLength = plc4c_spi_read_unsigned_int(buf, 16);
@@ -84,29 +80,39 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* bu
   uint16_t payloadLength = plc4c_spi_read_unsigned_int(buf, 16);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(messageType == 0x01) {
-    plc4c_s7_read_write_s7_message_request_parse(buf, &msg);
+  if(messageType == 0x01) { /* S7MessageRequest */
   } else 
-  if(messageType == 0x02) {
-    plc4c_s7_read_write_s7_message_response_parse(buf, &msg);
+  if(messageType == 0x02) { /* S7MessageResponse */
+    uint8_t errorClass = -1;
+    msg->s7_message_response_error_class = errorClass;
+
+    uint8_t errorCode = -1;
+    msg->s7_message_response_error_code = errorCode;
   } else 
-  if(messageType == 0x03) {
-    plc4c_s7_read_write_s7_message_response_data_parse(buf, &msg);
+  if(messageType == 0x03) { /* S7MessageResponseData */
+    uint8_t errorClass = -1;
+    msg->s7_message_response_data_error_class = errorClass;
+
+    uint8_t errorCode = -1;
+    msg->s7_message_response_data_error_code = errorCode;
   } else 
-  if(messageType == 0x07) {
-    plc4c_s7_read_write_s7_message_user_data_parse(buf, &msg);
+  if(messageType == 0x07) { /* S7MessageUserData */
   }
 
   // Optional Field (parameter) (Can be skipped, if a given expression evaluates to false)
   plc4c_s7_read_write_s7_parameter* parameter = NULL;
   if((parameterLength) > (0)) {
+    plc4c_s7_read_write_s7_parameter* parameter = NULL;
     plc4c_s7_read_write_s7_parameter_parse(buf, messageType, &parameter);
+    msg->parameter = parameter;
   }
 
   // Optional Field (payload) (Can be skipped, if a given expression evaluates to false)
   plc4c_s7_read_write_s7_payload* payload = NULL;
   if((payloadLength) > (0)) {
+    plc4c_s7_read_write_s7_payload* payload = NULL;
     plc4c_s7_read_write_s7_payload_parse(buf, messageType, parameter, &payload);
+    msg->payload = payload;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_message_request.c b/sandbox/plc4c/generated-sources/s7/src/s7_message_request.c
deleted file mode 100644
index c9e4292..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_message_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_message_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_message_request_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_message_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_message_response.c b/sandbox/plc4c/generated-sources/s7/src/s7_message_response.c
deleted file mode 100644
index 0b8dfe4..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_message_response.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_message_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_message_response_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (errorClass)
-  uint8_t errorClass = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (errorCode)
-  uint8_t errorCode = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_message_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_message_response_data.c b/sandbox/plc4c/generated-sources/s7/src/s7_message_response_data.c
deleted file mode 100644
index 44c6420..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_message_response_data.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_message_response_data.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_message_response_data_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_response_data** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (errorClass)
-  uint8_t errorClass = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (errorCode)
-  uint8_t errorCode = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_message_response_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_response_data* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_message_user_data.c b/sandbox/plc4c/generated-sources/s7/src/s7_message_user_data.c
deleted file mode 100644
index 7046605..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_message_user_data.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_message_user_data.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_message_user_data_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_message_user_data** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_message_user_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_message_user_data* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
index 3f1d98c..fae219f 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
@@ -21,12 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_setup_communication.h"
-#include "s7_parameter_read_var_request.h"
-#include "s7_parameter_read_var_response.h"
-#include "s7_parameter_write_var_request.h"
-#include "s7_parameter_write_var_response.h"
-#include "s7_parameter_user_data.h"
 #include "s7_parameter.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -58,31 +52,41 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_parameter* msg = malloc(sizeof(plc4c_s7_read_write_s7_parameter));
 
   // Discriminator Field (parameterType) (Used as input to a switch field)
   uint8_t parameterType = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(parameterType == 0xF0) {
-    plc4c_s7_read_write_s7_parameter_setup_communication_parse(buf, messageType, &msg);
+  if(parameterType == 0xF0) { /* S7ParameterSetupCommunication */
+    uint16_t maxAmqCaller = -1;
+    msg->s7_parameter_setup_communication_max_amq_caller = maxAmqCaller;
+
+    uint16_t maxAmqCallee = -1;
+    msg->s7_parameter_setup_communication_max_amq_callee = maxAmqCallee;
+
+    uint16_t pduLength = -1;
+    msg->s7_parameter_setup_communication_pdu_length = pduLength;
   } else 
-  if((parameterType == 0x04) && (messageType == 0x01)) {
-    plc4c_s7_read_write_s7_parameter_read_var_request_parse(buf, messageType, &msg);
+  if((parameterType == 0x04) && (messageType == 0x01)) { /* S7ParameterReadVarRequest */
+    plc4c_list* items;
+    msg->s7_parameter_read_var_request_items = items;
   } else 
-  if((parameterType == 0x04) && (messageType == 0x03)) {
-    plc4c_s7_read_write_s7_parameter_read_var_response_parse(buf, messageType, &msg);
+  if((parameterType == 0x04) && (messageType == 0x03)) { /* S7ParameterReadVarResponse */
+    uint8_t numItems = -1;
+    msg->s7_parameter_read_var_response_num_items = numItems;
   } else 
-  if((parameterType == 0x05) && (messageType == 0x01)) {
-    plc4c_s7_read_write_s7_parameter_write_var_request_parse(buf, messageType, &msg);
+  if((parameterType == 0x05) && (messageType == 0x01)) { /* S7ParameterWriteVarRequest */
+    plc4c_list* items;
+    msg->s7_parameter_write_var_request_items = items;
   } else 
-  if((parameterType == 0x05) && (messageType == 0x03)) {
-    plc4c_s7_read_write_s7_parameter_write_var_response_parse(buf, messageType, &msg);
+  if((parameterType == 0x05) && (messageType == 0x03)) { /* S7ParameterWriteVarResponse */
+    uint8_t numItems = -1;
+    msg->s7_parameter_write_var_response_num_items = numItems;
   } else 
-  if((parameterType == 0x00) && (messageType == 0x07)) {
-    plc4c_s7_read_write_s7_parameter_user_data_parse(buf, messageType, &msg);
+  if((parameterType == 0x00) && (messageType == 0x07)) { /* S7ParameterUserData */
+    plc4c_list* items;
+    msg->s7_parameter_user_data_items = items;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_read_var_request.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_read_var_request.c
deleted file mode 100644
index 45a1e4a..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_read_var_request.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_read_var_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_request_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_read_var_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (numItems) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t numItems = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_read_var_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_read_var_response.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_read_var_response.c
deleted file mode 100644
index 1e8eff7..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_read_var_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_read_var_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_read_var_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (numItems)
-  uint8_t numItems = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_read_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_read_var_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_setup_communication.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_setup_communication.c
deleted file mode 100644
index e8ddba7..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_setup_communication.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_setup_communication.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_setup_communication_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_setup_communication** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-  {
-    uint8_t reserved = plc4c_spi_read_unsigned_short(buf, 8);
-    if(reserved != (uint8_t) 0x00) {
-      printf("Expected constant value '%d' but got '%d' for reserved field.", 0x00, reserved);
-    }
-  }
-
-  // Simple Field (maxAmqCaller)
-  uint16_t maxAmqCaller = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (maxAmqCallee)
-  uint16_t maxAmqCallee = plc4c_spi_read_unsigned_int(buf, 16);
-
-  // Simple Field (pduLength)
-  uint16_t pduLength = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_setup_communication_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_setup_communication* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data.c
deleted file mode 100644
index 367a408..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_user_data.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_user_data** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (numItems) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t numItems = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_user_data* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
index e902130..bd5b8fa 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
@@ -21,7 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_user_data_item_cpu_functions.h"
 #include "s7_parameter_user_data_item.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -43,16 +42,36 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_parse(plc4c_sp
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_parameter_user_data_item* msg = malloc(sizeof(plc4c_s7_read_write_s7_parameter_user_data_item));
 
   // Discriminator Field (itemType) (Used as input to a switch field)
   uint8_t itemType = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(itemType == 0x12) {
-    plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions_parse(buf, &msg);
+  if(itemType == 0x12) { /* S7ParameterUserDataItemCPUFunctions */
+    uint8_t method = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_method = method;
+
+    unsigned int cpuFunctionType = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_cpu_function_type = cpuFunctionType;
+
+    unsigned int cpuFunctionGroup = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_cpu_function_group = cpuFunctionGroup;
+
+    uint8_t cpuSubfunction = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_cpu_subfunction = cpuSubfunction;
+
+    uint8_t sequenceNumber = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_sequence_number = sequenceNumber;
+
+    uint8_t dataUnitReferenceNumber = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_data_unit_reference_number = dataUnitReferenceNumber;
+
+    uint8_t lastDataUnit = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_last_data_unit = lastDataUnit;
+
+    uint16_t errorCode = -1;
+    msg->s7_parameter_user_data_item_cpu_functions_error_code = errorCode;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item_cpu_functions.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item_cpu_functions.c
deleted file mode 100644
index fe43648..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item_cpu_functions.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_user_data_item_cpu_functions.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (itemLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t itemLength = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (method)
-  uint8_t method = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (cpuFunctionType)
-  unsigned int cpuFunctionType = plc4c_spi_read_unsigned_byte(buf, 4);
-
-  // Simple Field (cpuFunctionGroup)
-  unsigned int cpuFunctionGroup = plc4c_spi_read_unsigned_byte(buf, 4);
-
-  // Simple Field (cpuSubfunction)
-  uint8_t cpuSubfunction = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (sequenceNumber)
-  uint8_t sequenceNumber = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Optional Field (dataUnitReferenceNumber) (Can be skipped, if a given expression evaluates to false)
-  uint8_t dataUnitReferenceNumber = 0;
-  if((cpuFunctionType) == (8)) {
-    dataUnitReferenceNumber = plc4c_spi_read_unsigned_short(buf, 8);
-  }
-
-  // Optional Field (lastDataUnit) (Can be skipped, if a given expression evaluates to false)
-  uint8_t lastDataUnit = 0;
-  if((cpuFunctionType) == (8)) {
-    lastDataUnit = plc4c_spi_read_unsigned_short(buf, 8);
-  }
-
-  // Optional Field (errorCode) (Can be skipped, if a given expression evaluates to false)
-  uint16_t errorCode = 0;
-  if((cpuFunctionType) == (8)) {
-    errorCode = plc4c_spi_read_unsigned_int(buf, 16);
-  }
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_write_var_request.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_write_var_request.c
deleted file mode 100644
index e4260c1..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_write_var_request.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_write_var_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_request_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_write_var_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (numItems) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t numItems = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_write_var_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_write_var_response.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_write_var_response.c
deleted file mode 100644
index fc5db96..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_write_var_response.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_parameter_write_var_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter_write_var_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Simple Field (numItems)
-  uint8_t numItems = plc4c_spi_read_unsigned_short(buf, 8);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_parameter_write_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_parameter_write_var_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
index 68bb1c5..a0fec69 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
@@ -21,10 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_read_var_response.h"
-#include "s7_payload_write_var_request.h"
-#include "s7_payload_write_var_response.h"
-#include "s7_payload_user_data.h"
 #include "s7_payload.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -52,22 +48,24 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_payload* msg = malloc(sizeof(plc4c_s7_read_write_s7_payload));
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if((parameter.getParameterType() == 0x04) && (messageType == 0x03)) {
-    plc4c_s7_read_write_s7_payload_read_var_response_parse(buf, messageType, parameter, &msg);
+  if((parameter.getParameterType() == 0x04) && (messageType == 0x03)) { /* S7PayloadReadVarResponse */
+    plc4c_list* items;
+    msg->s7_payload_read_var_response_items = items;
   } else 
-  if((parameter.getParameterType() == 0x05) && (messageType == 0x01)) {
-    plc4c_s7_read_write_s7_payload_write_var_request_parse(buf, messageType, parameter, &msg);
+  if((parameter.getParameterType() == 0x05) && (messageType == 0x01)) { /* S7PayloadWriteVarRequest */
+    plc4c_list* items;
+    msg->s7_payload_write_var_request_items = items;
   } else 
-  if((parameter.getParameterType() == 0x05) && (messageType == 0x03)) {
-    plc4c_s7_read_write_s7_payload_write_var_response_parse(buf, messageType, parameter, &msg);
+  if((parameter.getParameterType() == 0x05) && (messageType == 0x03)) { /* S7PayloadWriteVarResponse */
+    plc4c_list* items;
+    msg->s7_payload_write_var_response_items = items;
   } else 
-  if((parameter.getParameterType() == 0x00) && (messageType == 0x07)) {
-    plc4c_s7_read_write_s7_payload_user_data_parse(buf, messageType, parameter, &msg);
+  if((parameter.getParameterType() == 0x00) && (messageType == 0x07)) { /* S7PayloadUserData */
+    plc4c_list* items;
+    msg->s7_payload_user_data_items = items;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_read_var_response.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_read_var_response.c
deleted file mode 100644
index 107f52d..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_read_var_response.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_read_var_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_payload_read_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_read_var_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_read_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_read_var_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data.c
deleted file mode 100644
index df926f2..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_user_data.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_user_data** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_user_data* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
index 1402c57..f904173 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
@@ -21,8 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_user_data_item_cpu_function_read_szl_request.h"
-#include "s7_payload_user_data_item_cpu_function_read_szl_response.h"
 #include "s7_payload_user_data_item.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -46,32 +44,35 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_payload_user_data_item* msg = malloc(sizeof(plc4c_s7_read_write_s7_payload_user_data_item));
+
 
   // Enum field (returnCode)
   plc4c_s7_read_write_data_transport_error_code returnCode = plc4c_spi_read_byte(buf, 8);
+  msg->return_code = returnCode;
 
   // Enum field (transportSize)
   plc4c_s7_read_write_data_transport_size transportSize = plc4c_spi_read_byte(buf, 8);
+  msg->transport_size = transportSize;
 
   // Implicit Field (dataLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
   uint16_t dataLength = plc4c_spi_read_unsigned_int(buf, 16);
 
   // Simple Field (szlId)
   plc4c_s7_read_write_szl_id* szlId = NULL;
-  plc4c_s7_read_write_szl_id_parse(buf, &szlId);
+  plc4c_s7_read_write_szl_id_parse(buf, (void*) &szlId);
+  msg->szl_id = szlId;
 
   // Simple Field (szlIndex)
   uint16_t szlIndex = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->szl_index = szlIndex;
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(cpuFunctionType == 0x04) {
-    plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request_parse(buf, cpuFunctionType, &msg);
+  if(cpuFunctionType == 0x04) { /* S7PayloadUserDataItemCpuFunctionReadSzlRequest */
   } else 
-  if(cpuFunctionType == 0x08) {
-    plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response_parse(buf, cpuFunctionType, &msg);
+  if(cpuFunctionType == 0x08) { /* S7PayloadUserDataItemCpuFunctionReadSzlResponse */
+    plc4c_list* items;
+    msg->s7_payload_user_data_item_cpu_function_read_szl_response_items = items;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item_cpu_function_read_szl_request.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item_cpu_function_read_szl_request.c
deleted file mode 100644
index 1a41a2e..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item_cpu_function_read_szl_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_user_data_item_cpu_function_read_szl_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request_parse(plc4c_spi_read_buffer* buf, unsigned int cpuFunctionType, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item_cpu_function_read_szl_response.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item_cpu_function_read_szl_response.c
deleted file mode 100644
index 28d1997..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item_cpu_function_read_szl_response.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_user_data_item_cpu_function_read_szl_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response_parse(plc4c_spi_read_buffer* buf, unsigned int cpuFunctionType, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Const Field (szlItemLength)
-  uint16_t szlItemLength = plc4c_spi_read_unsigned_int(buf, 16);
-  if(szlItemLength != S7_READ_WRITE_S7_PAYLOAD_USER_DATA_ITEM_CPU_FUNCTION_READ_SZL_RESPONSE_SZL_ITEM_LENGTH) {
-    return PARSE_ERROR;
-    // throw new ParseException("Expected constant value " + S7PayloadUserDataItemCpuFunctionReadSzlResponse.SZLITEMLENGTH + " but got " + szlItemLength);
-  }
-
-  // Implicit Field (szlItemCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint16_t szlItemCount = plc4c_spi_read_unsigned_int(buf, 16);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_write_var_request.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_write_var_request.c
deleted file mode 100644
index d1a25c6..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_write_var_request.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_write_var_request.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_request_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_write_var_request** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_request_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_write_var_request* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_write_var_response.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_write_var_response.c
deleted file mode 100644
index 91208d0..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_write_var_response.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_payload_write_var_response.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_response_parse(plc4c_spi_read_buffer* buf, uint8_t messageType, plc4c_s7_read_write_s7_parameter* parameter, plc4c_s7_read_write_s7_payload_write_var_response** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_payload_write_var_response_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_payload_write_var_response* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
index c2b0594..13e1eed 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
@@ -29,18 +29,20 @@ plc4c_return_code plc4c_s7_read_write_s7_var_payload_data_item_parse(plc4c_spi_r
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_var_payload_data_item* msg = malloc(sizeof(plc4c_s7_read_write_s7_var_payload_data_item));
+
 
   // Enum field (returnCode)
   plc4c_s7_read_write_data_transport_error_code returnCode = plc4c_spi_read_byte(buf, 8);
+  msg->return_code = returnCode;
 
   // Enum field (transportSize)
   plc4c_s7_read_write_data_transport_size transportSize = plc4c_spi_read_byte(buf, 8);
+  msg->transport_size = transportSize;
 
   // Simple Field (dataLength)
   uint16_t dataLength = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->data_length = dataLength;
 
   // Padding Field (pad)
   bool _padNeedsPadding = (bool) ((plc4c_spi_read_has_more(buf, 8)) && ((!(lastItem)) && (((((COUNT(data)) % (2))) == (1)))));
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c
index 9fe8311..054375a 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c
@@ -29,12 +29,12 @@ plc4c_return_code plc4c_s7_read_write_s7_var_payload_status_item_parse(plc4c_spi
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_var_payload_status_item* msg = malloc(sizeof(plc4c_s7_read_write_s7_var_payload_status_item));
+
 
   // Enum field (returnCode)
   plc4c_s7_read_write_data_transport_error_code returnCode = plc4c_spi_read_byte(buf, 8);
+  msg->return_code = returnCode;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
index 414e105..2e3f2f1 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
@@ -21,7 +21,6 @@
 #include <plc4c/spi/read_buffer.h>
 #include <plc4c/spi/write_buffer.h>
 #include <plc4c/spi/evaluation_helper.h>
-#include "s7_var_request_parameter_item_address.h"
 #include "s7_var_request_parameter_item.h"
 
 // Array of discriminator values that match the enum type constants.
@@ -43,16 +42,15 @@ plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_parse(plc4c_
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_s7_var_request_parameter_item* msg = malloc(sizeof(plc4c_s7_read_write_s7_var_request_parameter_item));
 
   // Discriminator Field (itemType) (Used as input to a switch field)
   uint8_t itemType = plc4c_spi_read_unsigned_short(buf, 8);
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(itemType == 0x12) {
-    plc4c_s7_read_write_s7_var_request_parameter_item_address_parse(buf, &msg);
+  if(itemType == 0x12) { /* S7VarRequestParameterItemAddress */
+    plc4c_s7_read_write_s7_address* address = NULL;
+    msg->s7_var_request_parameter_item_address_address = address;
   }
 
   return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item_address.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item_address.c
deleted file mode 100644
index abb8674..0000000
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item_address.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-*/
-
-#include <stdio.h>
-#include <plc4c/spi/read_buffer.h>
-#include <plc4c/spi/write_buffer.h>
-#include <plc4c/spi/evaluation_helper.h>
-#include "s7_var_request_parameter_item_address.h"
-
-// Parse function.
-plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_address_parse(plc4c_spi_read_buffer* buf, plc4c_s7_read_write_s7_var_request_parameter_item_address** message) {
-  uint16_t startPos = plc4c_spi_read_get_pos(buf);
-  uint16_t curPos;
-
-  // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
-
-  // Implicit Field (itemLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
-  uint8_t itemLength = plc4c_spi_read_unsigned_short(buf, 8);
-
-  // Simple Field (address)
-  plc4c_s7_read_write_s7_address* address = NULL;
-  plc4c_s7_read_write_s7_address_parse(buf, &address);
-
-  return OK;
-}
-
-plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_address_serialize(plc4c_spi_write_buffer* buf, plc4c_s7_read_write_s7_var_request_parameter_item_address* message) {
-  return OK;
-}
diff --git a/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c b/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
index fb0790d..15565b7 100644
--- a/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
@@ -29,21 +29,24 @@ plc4c_return_code plc4c_s7_read_write_szl_data_tree_item_parse(plc4c_spi_read_bu
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_szl_data_tree_item* msg = malloc(sizeof(plc4c_s7_read_write_szl_data_tree_item));
+
 
   // Simple Field (itemIndex)
   uint16_t itemIndex = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->item_index = itemIndex;
 
   // Simple Field (moduleTypeId)
   uint16_t moduleTypeId = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->module_type_id = moduleTypeId;
 
   // Simple Field (ausbg)
   uint16_t ausbg = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->ausbg = ausbg;
 
   // Simple Field (ausbe)
   uint16_t ausbe = plc4c_spi_read_unsigned_int(buf, 16);
+  msg->ausbe = ausbe;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/s7/src/szl_id.c b/sandbox/plc4c/generated-sources/s7/src/szl_id.c
index 6093721..e120032 100644
--- a/sandbox/plc4c/generated-sources/s7/src/szl_id.c
+++ b/sandbox/plc4c/generated-sources/s7/src/szl_id.c
@@ -29,18 +29,20 @@ plc4c_return_code plc4c_s7_read_write_szl_id_parse(plc4c_spi_read_buffer* buf, p
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_szl_id* msg = malloc(sizeof(plc4c_s7_read_write_szl_id));
+
 
   // Enum field (typeClass)
   plc4c_s7_read_write_szl_module_type_class typeClass = plc4c_spi_read_byte(buf, 4);
+  msg->type_class = typeClass;
 
   // Simple Field (sublistExtract)
   unsigned int sublistExtract = plc4c_spi_read_unsigned_byte(buf, 4);
+  msg->sublist_extract = sublistExtract;
 
   // Enum field (sublistList)
   plc4c_s7_read_write_szl_sublist sublistList = plc4c_spi_read_byte(buf, 8);
+  msg->sublist_list = sublistList;
 
   return OK;
 }
diff --git a/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c b/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
index 703ac7f..91c532d 100644
--- a/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
+++ b/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
@@ -29,9 +29,8 @@ plc4c_return_code plc4c_s7_read_write_tpkt_packet_parse(plc4c_spi_read_buffer* b
   uint16_t curPos;
 
   // Pointer to the parsed datastructure.
-  void* msg = NULL;
-  // Factory function that allows filling the properties of this type
-  void (*factory_ptr)()
+  plc4c_s7_read_write_tpkt_packet* msg = malloc(sizeof(plc4c_s7_read_write_tpkt_packet));
+
 
   // Const Field (protocolId)
   uint8_t protocolId = plc4c_spi_read_unsigned_short(buf, 8);
@@ -53,7 +52,8 @@ plc4c_return_code plc4c_s7_read_write_tpkt_packet_parse(plc4c_spi_read_buffer* b
 
   // Simple Field (payload)
   plc4c_s7_read_write_cotp_packet* payload = NULL;
-  plc4c_s7_read_write_cotp_packet_parse(buf, (len) - (4), &payload);
+  plc4c_s7_read_write_cotp_packet_parse(buf, (len) - (4), (void*) &payload);
+  msg->payload = payload;
 
   return OK;
 }