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:05 UTC

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

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;
 }