chore: Get the Go and C part of the build working again.
diff --git a/plc4c/drivers/s7/src/driver_s7_encode_decode.c b/plc4c/drivers/s7/src/driver_s7_encode_decode.c
index 161ec53..ffce436 100644
--- a/plc4c/drivers/s7/src/driver_s7_encode_decode.c
+++ b/plc4c/drivers/s7/src/driver_s7_encode_decode.c
@@ -358,7 +358,7 @@
             plc4c_s7_read_write_transport_size_DATE_AND_TIME) {
       any_address->s7_address_any_transport_size = plc4c_s7_read_write_transport_size_BYTE;
         any_address->s7_address_any_number_of_elements =
-          plc4c_s7_read_write_transport_size_length_in_bytes(&(any_address->s7_address_any_transport_size)) *
+          plc4c_s7_read_write_transport_size_length_in_bytes(plc4x_spi_context_background(), &(any_address->s7_address_any_transport_size)) *
             any_address->s7_address_any_number_of_elements;
     } else if (any_address->s7_address_any_transport_size ==
          plc4c_s7_read_write_transport_size_STRING) {
diff --git a/plc4c/generated-sources/plc4x/src/plc4x_value.c b/plc4c/generated-sources/plc4x/src/plc4x_value.c
index e6c1442..a1a15c6 100644
--- a/plc4c/generated-sources/plc4x/src/plc4x_value.c
+++ b/plc4c/generated-sources/plc4x/src/plc4x_value.c
@@ -240,14 +240,14 @@
                 // Manual Field (value)
                 char* value = (char*) (plc4c_plc4x_read_write_parse_string(readBuffer, "UTF-8"));
 
-                                    *data_item = plc4c_data_create_string_data(strlen(value), value);
+                *data_item = plc4c_data_create_string_data(strlen(value), value);
 
     } else         if(valueType == plc4c_plc4x_read_write_plc4x_value_type_WSTRING) { /* STRING */
 
                 // Manual Field (value)
                 char* value = (char*) (plc4c_plc4x_read_write_parse_string(readBuffer, "UTF-16"));
 
-                                    *data_item = plc4c_data_create_string_data(strlen(value), value);
+                *data_item = plc4c_data_create_string_data(strlen(value), value);
 
     } else         if(valueType == plc4c_plc4x_read_write_plc4x_value_type_TIME) { /* TIME */
 
diff --git a/plc4c/generated-sources/s7/src/data_item.c b/plc4c/generated-sources/s7/src/data_item.c
index fd94f5a..25a7d3f 100644
--- a/plc4c/generated-sources/s7/src/data_item.c
+++ b/plc4c/generated-sources/s7/src/data_item.c
@@ -232,14 +232,14 @@
                 // Manual Field (value)
                 char* value = (char*) (plc4c_s7_read_write_parse_s7_string(readBuffer, stringLength, "UTF-8", stringEncoding));
 
-                                    *data_item = plc4c_data_create_string_data(stringLength, value);
+                *data_item = plc4c_data_create_string_data(stringLength, value);
 
     } else         if(strcmp(dataProtocolId, "IEC61131_WSTRING") == 0) { /* STRING */
 
                 // Manual Field (value)
                 char* value = (char*) (plc4c_s7_read_write_parse_s7_string(readBuffer, stringLength, "UTF-16", stringEncoding));
 
-                                    *data_item = plc4c_data_create_string_data(stringLength, value);
+                *data_item = plc4c_data_create_string_data(stringLength, value);
 
     } else         if(strcmp(dataProtocolId, "IEC61131_TIME") == 0) { /* TIME */
 
diff --git a/plc4c/generated-sources/s7/src/transport_size.c b/plc4c/generated-sources/s7/src/transport_size.c
index fc76d7d..50978d3 100644
--- a/plc4c/generated-sources/s7/src/transport_size.c
+++ b/plc4c/generated-sources/s7/src/transport_size.c
@@ -1154,9 +1154,6 @@
         case plc4c_s7_read_write_transport_size_INT: /* '0x06' */{
             return plc4c_s7_read_write_transport_size_INT;
         }
-        case plc4c_s7_read_write_transport_size_REAL: /* '0x0E' */{
-            return plc4c_s7_read_write_transport_size_REAL;
-        }
         case plc4c_s7_read_write_transport_size_LWORD: /* '0x05' */{
             return plc4c_s7_read_write_transport_size_LWORD;
         }
diff --git a/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml b/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml
index 8d76a5c..97aab67 100644
--- a/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml
+++ b/plc4go/assets/testing/protocols/s7/DriverTestsuite.xml
@@ -441,7 +441,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">10</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -450,7 +450,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">1</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">14</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">0</payloadLength>
                   <S7MessageRequest>
@@ -508,7 +508,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">0</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -517,7 +517,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">3</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">2</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">6</payloadLength>
                   <S7MessageResponseData>
@@ -613,7 +613,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">10</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -622,7 +622,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">1</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">14</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">0</payloadLength>
                   <S7MessageRequest>
@@ -680,7 +680,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">0</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -689,7 +689,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">2</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">0</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">0</payloadLength>
                   <S7MessageResponse>
diff --git a/plc4go/go.mod b/plc4go/go.mod
index 4298126..cb23e94 100644
--- a/plc4go/go.mod
+++ b/plc4go/go.mod
@@ -19,7 +19,7 @@
 
 module github.com/apache/plc4x/plc4go
 
-go 1.19
+go 1.18
 
 require (
 	github.com/IBM/netaddr v1.5.0
diff --git a/plc4go/protocols/s7/readwrite/ParserHelper.go b/plc4go/protocols/s7/readwrite/ParserHelper.go
index 86cb61b..fc717c5 100644
--- a/plc4go/protocols/s7/readwrite/ParserHelper.go
+++ b/plc4go/protocols/s7/readwrite/ParserHelper.go
@@ -43,7 +43,11 @@
 		if err != nil {
 			return nil, errors.Wrap(err, "Error parsing")
 		}
-		return model.DataItemParseWithBuffer(context.Background(), io, dataProtocolId, stringLength)
+		stringEncoding, err := utils.StrToString(arguments[2])
+		if err != nil {
+			return nil, errors.Wrap(err, "Error parsing")
+		}
+		return model.DataItemParseWithBuffer(context.Background(), io, dataProtocolId, stringLength, stringEncoding)
 	case "SzlId":
 		return model.SzlIdParseWithBuffer(context.Background(), io)
 	case "AlarmMessageObjectAckType":
diff --git a/plc4go/protocols/s7/readwrite/XmlParserHelper.go b/plc4go/protocols/s7/readwrite/XmlParserHelper.go
index a8374be..9d1a8e8 100644
--- a/plc4go/protocols/s7/readwrite/XmlParserHelper.go
+++ b/plc4go/protocols/s7/readwrite/XmlParserHelper.go
@@ -52,7 +52,9 @@
 			return nil, err
 		}
 		stringLength := int32(parsedInt1)
-		return model.DataItemParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)), dataProtocolId, stringLength)
+		// TODO: find a way to parse the sub types
+		var stringEncoding string
+		return model.DataItemParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)), dataProtocolId, stringLength, stringEncoding)
 	case "SzlId":
 		return model.SzlIdParseWithBuffer(context.Background(), utils.NewXmlReadBuffer(strings.NewReader(xmlString)))
 	case "AlarmMessageObjectAckType":
diff --git a/plc4go/protocols/s7/readwrite/model/DataItem.go b/plc4go/protocols/s7/readwrite/model/DataItem.go
index a787946..5aec9ab 100644
--- a/plc4go/protocols/s7/readwrite/model/DataItem.go
+++ b/plc4go/protocols/s7/readwrite/model/DataItem.go
@@ -29,11 +29,11 @@
 
 // Code generated by code-generation. DO NOT EDIT.
 
-func DataItemParse(ctx context.Context, theBytes []byte, dataProtocolId string, stringLength int32) (api.PlcValue, error) {
-	return DataItemParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes), dataProtocolId, stringLength)
+func DataItemParse(ctx context.Context, theBytes []byte, dataProtocolId string, stringLength int32, stringEncoding string) (api.PlcValue, error) {
+	return DataItemParseWithBuffer(ctx, utils.NewReadBufferByteBased(theBytes), dataProtocolId, stringLength, stringEncoding)
 }
 
-func DataItemParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, dataProtocolId string, stringLength int32) (api.PlcValue, error) {
+func DataItemParseWithBuffer(ctx context.Context, readBuffer utils.ReadBuffer, dataProtocolId string, stringLength int32, stringEncoding string) (api.PlcValue, error) {
 	readBuffer.PullContext("DataItem")
 	switch {
 	case dataProtocolId == "IEC61131_BOOL": // BOOL
@@ -162,16 +162,16 @@
 		readBuffer.CloseContext("DataItem")
 		return values.NewPlcLREAL(value), nil
 	case dataProtocolId == "IEC61131_CHAR": // CHAR
-		// Simple Field (value)
-		value, _valueErr := readBuffer.ReadString("value", uint32(8), "UTF-8")
+		// Manual Field (value)
+		value, _valueErr := ParseS7Char(readBuffer, "UTF-8", stringEncoding)
 		if _valueErr != nil {
 			return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 		}
 		readBuffer.CloseContext("DataItem")
 		return values.NewPlcCHAR(value), nil
 	case dataProtocolId == "IEC61131_WCHAR": // CHAR
-		// Simple Field (value)
-		value, _valueErr := readBuffer.ReadString("value", uint32(16), "UTF-16")
+		// Manual Field (value)
+		value, _valueErr := ParseS7Char(readBuffer, "UTF-16", stringEncoding)
 		if _valueErr != nil {
 			return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 		}
@@ -179,7 +179,7 @@
 		return values.NewPlcCHAR(value), nil
 	case dataProtocolId == "IEC61131_STRING": // STRING
 		// Manual Field (value)
-		value, _valueErr := ParseS7String(readBuffer, stringLength, "UTF-8")
+		value, _valueErr := ParseS7String(readBuffer, stringLength, "UTF-8", stringEncoding)
 		if _valueErr != nil {
 			return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 		}
@@ -187,7 +187,7 @@
 		return values.NewPlcSTRING(value), nil
 	case dataProtocolId == "IEC61131_WSTRING": // STRING
 		// Manual Field (value)
-		value, _valueErr := ParseS7String(readBuffer, stringLength, "UTF-16")
+		value, _valueErr := ParseS7String(readBuffer, stringLength, "UTF-16", stringEncoding)
 		if _valueErr != nil {
 			return nil, errors.Wrap(_valueErr, "Error parsing 'value' field")
 		}
@@ -288,21 +288,23 @@
 	return nil, errors.New("unsupported type")
 }
 
-func DataItemSerialize(value api.PlcValue, dataProtocolId string, stringLength int32) ([]byte, error) {
+func DataItemSerialize(value api.PlcValue, dataProtocolId string, stringLength int32, stringEncoding string) ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased()
-	if err := DataItemSerializeWithWriteBuffer(context.Background(), wb, value, dataProtocolId, stringLength); err != nil {
+	if err := DataItemSerializeWithWriteBuffer(context.Background(), wb, value, dataProtocolId, stringLength, stringEncoding); err != nil {
 		return nil, err
 	}
 	return wb.GetBytes(), nil
 }
 
-func DataItemSerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer, value api.PlcValue, dataProtocolId string, stringLength int32) error {
+func DataItemSerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer, value api.PlcValue, dataProtocolId string, stringLength int32, stringEncoding string) error {
 	m := struct {
 		DataProtocolId string
 		StringLength   int32
+		StringEncoding string
 	}{
 		DataProtocolId: dataProtocolId,
 		StringLength:   stringLength,
+		StringEncoding: stringEncoding,
 	}
 	_ = m
 	writeBuffer.PushContext("DataItem")
@@ -388,24 +390,26 @@
 			return errors.Wrap(_err, "Error serializing 'value' field")
 		}
 	case dataProtocolId == "IEC61131_CHAR": // CHAR
-		// Simple Field (value)
-		if _err := writeBuffer.WriteString("value", uint32(8), "UTF-8", value.GetString()); _err != nil {
-			return errors.Wrap(_err, "Error serializing 'value' field")
+		// Manual Field (value)
+		_valueErr := SerializeS7Char(writeBuffer, value, "UTF-8", m.StringEncoding)
+		if _valueErr != nil {
+			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 	case dataProtocolId == "IEC61131_WCHAR": // CHAR
-		// Simple Field (value)
-		if _err := writeBuffer.WriteString("value", uint32(16), "UTF-16", value.GetString()); _err != nil {
-			return errors.Wrap(_err, "Error serializing 'value' field")
+		// Manual Field (value)
+		_valueErr := SerializeS7Char(writeBuffer, value, "UTF-16", m.StringEncoding)
+		if _valueErr != nil {
+			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 	case dataProtocolId == "IEC61131_STRING": // STRING
 		// Manual Field (value)
-		_valueErr := SerializeS7String(writeBuffer, value, stringLength, "UTF-8")
+		_valueErr := SerializeS7String(writeBuffer, value, stringLength, "UTF-8", m.StringEncoding)
 		if _valueErr != nil {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
 	case dataProtocolId == "IEC61131_WSTRING": // STRING
 		// Manual Field (value)
-		_valueErr := SerializeS7String(writeBuffer, value, stringLength, "UTF-16")
+		_valueErr := SerializeS7String(writeBuffer, value, stringLength, "UTF-16", m.StringEncoding)
 		if _valueErr != nil {
 			return errors.Wrap(_valueErr, "Error serializing 'value' field")
 		}
diff --git a/plc4go/protocols/s7/readwrite/model/StaticHelper.go b/plc4go/protocols/s7/readwrite/model/StaticHelper.go
index 0b58864..90110b2 100644
--- a/plc4go/protocols/s7/readwrite/model/StaticHelper.go
+++ b/plc4go/protocols/s7/readwrite/model/StaticHelper.go
@@ -20,9 +20,10 @@
 package model
 
 import (
+	"time"
+
 	"github.com/apache/plc4x/plc4go/pkg/api/values"
 	"github.com/apache/plc4x/plc4go/spi/utils"
-	"time"
 )
 
 func ParseTiaTime(io utils.ReadBuffer) (uint32, error) {
@@ -122,33 +123,46 @@
 	return nil
 }
 
-func ParseS7String(io utils.ReadBuffer, stringLength int32, encoding string) (string, error) {
+func ParseS7String(io utils.ReadBuffer, stringLength int32, defaultEncoding string, encoding string) (string, error) {
+	usedEncoding := defaultEncoding
+	if len(encoding) > 0 {
+		usedEncoding = encoding
+	}
 	var multiplier int32
-	switch encoding {
+	switch usedEncoding {
 	case "UTF-8":
 		multiplier = 8
 	case "UTF-16":
 		multiplier = 16
 	}
-	return io.ReadString("", uint32(stringLength*multiplier), encoding)
+	return io.ReadString("", uint32(stringLength*multiplier), usedEncoding)
 }
 
-func SerializeS7String(io utils.WriteBuffer, value values.PlcValue, stringLength int32, encoding string) error {
+func SerializeS7String(io utils.WriteBuffer, value values.PlcValue, stringLength int32, defaultEncoding string, encoding string) error {
+	usedEncoding := defaultEncoding
+	if len(encoding) > 0 {
+		usedEncoding = encoding
+	}
 	var multiplier int32
-	switch encoding {
+	switch usedEncoding {
 	case "UTF-8":
 		multiplier = 8
 	case "UTF-16":
 		multiplier = 16
 	}
-	return io.WriteString("", uint32(stringLength*multiplier), encoding, value.GetString())
+	return io.WriteString("", uint32(stringLength*multiplier), usedEncoding, value.GetString())
 }
 
-func ParseS7Char(io utils.ReadBuffer, encoding string) (uint8, error) {
-	return io.ReadUint8("", 8)
+func ParseS7Char(io utils.ReadBuffer, defaultEncoding string, encoding string) (string, error) {
+	usedEncoding := defaultEncoding
+	if len(encoding) > 0 {
+		usedEncoding = encoding
+	}
+	return io.ReadString("value", uint32(8), usedEncoding)
 }
 
-func SerializeS7Char(io utils.WriteBuffer, value values.PlcValue, encoding string) error {
+func SerializeS7Char(io utils.WriteBuffer, value values.PlcValue, defaultEncoding string, encoding string) error {
+	// TODO: This sort of looks wrong.
 	return io.WriteUint8("", 8, value.GetUint8())
 }
 
diff --git a/plc4go/protocols/s7/readwrite/model/TransportSize.go b/plc4go/protocols/s7/readwrite/model/TransportSize.go
index 1d33671..a89861a 100644
--- a/plc4go/protocols/s7/readwrite/model/TransportSize.go
+++ b/plc4go/protocols/s7/readwrite/model/TransportSize.go
@@ -1132,19 +1132,19 @@
 		}
 	case 0x0C:
 		{ /* '0x0C' */
-			return 0
+			return DataTransportSize_BYTE_WORD_DWORD
 		}
 	case 0x0D:
 		{ /* '0x0D' */
-			return 0
+			return DataTransportSize_BYTE_WORD_DWORD
 		}
 	case 0x0E:
 		{ /* '0x0E' */
-			return DataTransportSize_REAL
+			return DataTransportSize_BYTE_WORD_DWORD
 		}
 	case 0x0F:
 		{ /* '0x0F' */
-			return 0
+			return DataTransportSize_BYTE_WORD_DWORD
 		}
 	case 0x10:
 		{ /* '0x10' */
@@ -1152,7 +1152,7 @@
 		}
 	case 0x11:
 		{ /* '0x11' */
-			return 0
+			return DataTransportSize_BYTE_WORD_DWORD
 		}
 	case 0x12:
 		{ /* '0x12' */
@@ -1160,7 +1160,7 @@
 		}
 	case 0x13:
 		{ /* '0x13' */
-			return 0
+			return DataTransportSize_BYTE_WORD_DWORD
 		}
 	case 0x14:
 		{ /* '0x14' */
@@ -1376,11 +1376,11 @@
 		}
 	case 0x0C:
 		{ /* '0x0C' */
-			return TransportSize_INT
+			return 0
 		}
 	case 0x0D:
 		{ /* '0x0D' */
-			return TransportSize_INT
+			return 0
 		}
 	case 0x0E:
 		{ /* '0x0E' */
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java
index cbd068d..91f9c99 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Block_DevicePropertiesNameOfStation.java
@@ -51,8 +51,6 @@
 
   // Arguments.
   protected final Integer blockLength;
-  // Reserved Fields
-  private Integer reservedField0;
 
   public PnDcp_Block_DevicePropertiesNameOfStation(byte[] nameOfStation, Integer blockLength) {
     super();
@@ -71,12 +69,6 @@
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("PnDcp_Block_DevicePropertiesNameOfStation");
 
-    // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (int) 0x0000,
-        writeUnsignedInt(writeBuffer, 16));
-
     // Array Field (nameOfStation)
     writeByteArrayField("nameOfStation", nameOfStation, writeByteArray(writeBuffer, 8));
 
@@ -104,9 +96,6 @@
     PnDcp_Block_DevicePropertiesNameOfStation _value = this;
     boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
-    // Reserved Field (reserved)
-    lengthInBits += 16;
-
     // Array field
     if (nameOfStation != null) {
       lengthInBits += 8 * nameOfStation.length;
@@ -133,9 +122,6 @@
     int curPos;
     boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
-    Integer reservedField0 =
-        readReservedField("reserved", readUnsignedInt(readBuffer, 16), (int) 0x0000);
-
     byte[] nameOfStation =
         readBuffer.readByteArray("nameOfStation", Math.toIntExact((blockLength) - (2)));
 
@@ -148,27 +134,23 @@
 
     readBuffer.closeContext("PnDcp_Block_DevicePropertiesNameOfStation");
     // Create the instance
-    return new PnDcp_Block_DevicePropertiesNameOfStationBuilderImpl(
-        nameOfStation, blockLength, reservedField0);
+    return new PnDcp_Block_DevicePropertiesNameOfStationBuilderImpl(nameOfStation, blockLength);
   }
 
   public static class PnDcp_Block_DevicePropertiesNameOfStationBuilderImpl
       implements PnDcp_Block.PnDcp_BlockBuilder {
     private final byte[] nameOfStation;
     private final Integer blockLength;
-    private final Integer reservedField0;
 
     public PnDcp_Block_DevicePropertiesNameOfStationBuilderImpl(
-        byte[] nameOfStation, Integer blockLength, Integer reservedField0) {
+        byte[] nameOfStation, Integer blockLength) {
       this.nameOfStation = nameOfStation;
       this.blockLength = blockLength;
-      this.reservedField0 = reservedField0;
     }
 
     public PnDcp_Block_DevicePropertiesNameOfStation build() {
       PnDcp_Block_DevicePropertiesNameOfStation pnDcp_Block_DevicePropertiesNameOfStation =
           new PnDcp_Block_DevicePropertiesNameOfStation(nameOfStation, blockLength);
-      pnDcp_Block_DevicePropertiesNameOfStation.reservedField0 = reservedField0;
       return pnDcp_Block_DevicePropertiesNameOfStation;
     }
   }
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java
index d544424..9ed532a 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnDcp_Pdu_RealTimeCyclic.java
@@ -179,9 +179,6 @@
     // Manual Field (dataUnit)
     lengthInBits += ((dataUnit.getLengthInBytes())) * (8);
 
-    // Manual Field (dataUnit)
-    lengthInBits += ((dataUnit.getLengthInBytes())) * (8);
-
     // Simple field (cycleCounter)
     lengthInBits += 16;
 
@@ -232,15 +229,6 @@
                     (org.apache.plc4x.java.profinet.readwrite.utils.StaticHelper.readDataUnit(
                         readBuffer)));
 
-    PnIo_CyclicServiceDataUnit dataUnit =
-        readManualField(
-            "dataUnit",
-            readBuffer,
-            () ->
-                (PnIo_CyclicServiceDataUnit)
-                    (org.apache.plc4x.java.profinet.readwrite.utils.StaticHelper.readDataUnit(
-                        readBuffer)));
-
     int cycleCounter = readSimpleField("cycleCounter", readUnsignedInt(readBuffer, 16));
 
     boolean ignore = readSimpleField("ignore", readBoolean(readBuffer));
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java
index 7078d7d..ea08b3e 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrReq.java
@@ -269,15 +269,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Simple field (alarmType)
     lengthInBits += 16;
 
@@ -340,24 +331,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     PnIoCm_AlarmCrType alarmType =
         readEnumField(
             "alarmType",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java
index 1bbe50a..b20e3da 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_AlarmCrRes.java
@@ -161,15 +161,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Simple field (alarmType)
     lengthInBits += 16;
 
@@ -208,24 +199,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     PnIoCm_AlarmCrType alarmType =
         readEnumField(
             "alarmType",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java
index 760d7ba..6c88f47 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArReq.java
@@ -388,15 +388,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Simple field (arType)
     lengthInBits += 16;
 
@@ -486,24 +477,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     PnIoCm_ArType arType =
         readEnumField(
             "arType",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java
index 47fdfe0..8c14bfc 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArRes.java
@@ -187,15 +187,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Simple field (arType)
     lengthInBits += 16;
 
@@ -240,24 +231,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     PnIoCm_ArType arType =
         readEnumField(
             "arType",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java
index 3b182b3..d6c6943 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ArServer.java
@@ -144,24 +144,6 @@
       lengthInBits += 8;
     }
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
-    // Simple field (stationName)
-    lengthInBits += stationName.getLengthInBits();
-
-    // Padding Field (padding)
-    int _timesPadding = (int) (((20) - (6)) - ((stationName.getStringLength())));
-    while (_timesPadding-- > 0) {
-      lengthInBits += 8;
-    }
-
     return lengthInBits;
   }
 
@@ -202,35 +184,6 @@
         (int) (((20) - (6)) - ((stationName.getStringLength()))),
         WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    PascalString stationName =
-        readSimpleField(
-            "stationName",
-            new DataReaderComplexDefault<>(() -> PascalString.staticParse(readBuffer), readBuffer),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    readPaddingField(
-        readUnsignedShort(readBuffer, 8),
-        (int) (((20) - (6)) - ((stationName.getStringLength()))),
-        WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     readBuffer.closeContext("PnIoCm_Block_ArServer");
     // Create the instance
     return new PnIoCm_Block_ArServerBuilderImpl(blockVersionHigh, blockVersionLow, stationName);
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java
index 46a1790..6259486 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ExpectedSubmoduleReq.java
@@ -135,15 +135,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Implicit Field (numberOfApis)
     lengthInBits += 16;
 
@@ -185,24 +176,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     int numberOfApis =
         readImplicitField(
             "numberOfApis",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java
index 95ae711..47e22bf 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrReq.java
@@ -423,15 +423,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Simple field (ioCrType)
     lengthInBits += 16;
 
@@ -536,24 +527,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     PnIoCm_IoCrType ioCrType =
         readEnumField(
             "ioCrType",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java
index 73501ee..44492f5 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_IoCrRes.java
@@ -159,15 +159,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Simple field (ioCrType)
     lengthInBits += 16;
 
@@ -206,24 +197,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     PnIoCm_IoCrType ioCrType =
         readEnumField(
             "ioCrType",
diff --git a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java
index 6bee067..533dabe 100644
--- a/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java
+++ b/plc4j/drivers/profinet/src/main/generated/org/apache/plc4x/java/profinet/readwrite/PnIoCm_Block_ModuleDiff.java
@@ -133,15 +133,6 @@
     // Simple field (blockVersionLow)
     lengthInBits += 8;
 
-    // Implicit Field (blockLength)
-    lengthInBits += 16;
-
-    // Simple field (blockVersionHigh)
-    lengthInBits += 8;
-
-    // Simple field (blockVersionLow)
-    lengthInBits += 8;
-
     // Implicit Field (numberOfApis)
     lengthInBits += 16;
 
@@ -183,24 +174,6 @@
             readUnsignedShort(readBuffer, 8),
             WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
-    int blockLength =
-        readImplicitField(
-            "blockLength",
-            readUnsignedInt(readBuffer, 16),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionHigh =
-        readSimpleField(
-            "blockVersionHigh",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
-    short blockVersionLow =
-        readSimpleField(
-            "blockVersionLow",
-            readUnsignedShort(readBuffer, 8),
-            WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
-
     int numberOfApis =
         readImplicitField(
             "numberOfApis",
diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index a08655b..edec5eb 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -48,11 +48,6 @@
               <languageName>java</languageName>
               <outputFlavor>read-write</outputFlavor>
               <outputDir>src/main/generated</outputDir>
-              <options>
-                  <generate-properties-for-parser-arguments>true</generate-properties-for-parser-arguments>
-                  <!-- We want properties that contain the values of reserved fields, if the value differs from the expected one -->
-                  <generate-properties-for-reserved-fields>true</generate-properties-for-reserved-fields>
-              </options>              
             </configuration>
           </execution>
         </executions>
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
index c2dabe6..49f8d6f 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/AlarmMessageObjectQueryType.java
@@ -50,9 +50,6 @@
   protected final DateAndTime timeGoing;
   protected final AssociatedValueType valueGoing;
 
-  // Reserved Fields
-  private Integer reservedField0;
-
   public AlarmMessageObjectQueryType(
       short lengthDataset,
       State eventState,
@@ -119,10 +116,7 @@
     writeSimpleField("lengthDataset", lengthDataset, writeUnsignedShort(writeBuffer, 8));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (int) 0x0000,
-        writeUnsignedInt(writeBuffer, 16));
+    writeReservedField("reserved", (int) 0x0000, writeUnsignedInt(writeBuffer, 16));
 
     // Const Field (variableSpec)
     writeConstField("variableSpec", VARIABLESPEC, writeUnsignedShort(writeBuffer, 8));
@@ -270,7 +264,6 @@
             valueComing,
             timeGoing,
             valueGoing);
-    _alarmMessageObjectQueryType.reservedField0 = reservedField0;
     return _alarmMessageObjectQueryType;
   }
 
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
index ac9c30d..6d4f3cd 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacket.java
@@ -44,14 +44,10 @@
   protected final List<COTPParameter> parameters;
   protected final S7Message payload;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
-  public COTPPacket(List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
+  public COTPPacket(List<COTPParameter> parameters, S7Message payload) {
     super();
     this.parameters = parameters;
     this.payload = payload;
-    this.cotpLen = cotpLen;
   }
 
   public List<COTPParameter> getParameters() {
@@ -90,11 +86,7 @@
     writeComplexTypeArrayField("parameters", parameters, writeBuffer);
 
     // Optional Field (payload) (Can be skipped, if the value is null)
-    writeOptionalField(
-        "payload",
-        payload,
-        new DataWriterComplexDefault<>(writeBuffer),
-        ((positionAware.getPos() - startPos)) < (cotpLen));
+    writeOptionalField("payload", payload, new DataWriterComplexDefault<>(writeBuffer));
 
     writeBuffer.popContext("COTPPacket");
   }
@@ -208,12 +200,12 @@
 
     readBuffer.closeContext("COTPPacket");
     // Create the instance
-    COTPPacket _cOTPPacket = builder.build(parameters, payload, cotpLen);
+    COTPPacket _cOTPPacket = builder.build(parameters, payload);
     return _cOTPPacket;
   }
 
   public interface COTPPacketBuilder {
-    COTPPacket build(List<COTPParameter> parameters, S7Message payload, Integer cotpLen);
+    COTPPacket build(List<COTPParameter> parameters, S7Message payload);
   }
 
   @Override
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
index ed9c1b5..afe5079 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionRequest.java
@@ -47,21 +47,16 @@
   protected final int sourceReference;
   protected final COTPProtocolClass protocolClass;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
   public COTPPacketConnectionRequest(
       List<COTPParameter> parameters,
       S7Message payload,
       int destinationReference,
       int sourceReference,
-      COTPProtocolClass protocolClass,
-      Integer cotpLen) {
-    super(parameters, payload, cotpLen);
+      COTPProtocolClass protocolClass) {
+    super(parameters, payload);
     this.destinationReference = destinationReference;
     this.sourceReference = sourceReference;
     this.protocolClass = protocolClass;
-    this.cotpLen = cotpLen;
   }
 
   public int getDestinationReference() {
@@ -149,7 +144,7 @@
     readBuffer.closeContext("COTPPacketConnectionRequest");
     // Create the instance
     return new COTPPacketConnectionRequestBuilderImpl(
-        destinationReference, sourceReference, protocolClass, cotpLen);
+        destinationReference, sourceReference, protocolClass);
   }
 
   public static class COTPPacketConnectionRequestBuilderImpl
@@ -157,24 +152,18 @@
     private final int destinationReference;
     private final int sourceReference;
     private final COTPProtocolClass protocolClass;
-    private final Integer cotpLen;
 
     public COTPPacketConnectionRequestBuilderImpl(
-        int destinationReference,
-        int sourceReference,
-        COTPProtocolClass protocolClass,
-        Integer cotpLen) {
+        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
       this.destinationReference = destinationReference;
       this.sourceReference = sourceReference;
       this.protocolClass = protocolClass;
-      this.cotpLen = cotpLen;
     }
 
-    public COTPPacketConnectionRequest build(
-        List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
+    public COTPPacketConnectionRequest build(List<COTPParameter> parameters, S7Message payload) {
       COTPPacketConnectionRequest cOTPPacketConnectionRequest =
           new COTPPacketConnectionRequest(
-              parameters, payload, destinationReference, sourceReference, protocolClass, cotpLen);
+              parameters, payload, destinationReference, sourceReference, protocolClass);
       return cOTPPacketConnectionRequest;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
index 65a5bd4..5fb6eb6 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketConnectionResponse.java
@@ -47,21 +47,16 @@
   protected final int sourceReference;
   protected final COTPProtocolClass protocolClass;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
   public COTPPacketConnectionResponse(
       List<COTPParameter> parameters,
       S7Message payload,
       int destinationReference,
       int sourceReference,
-      COTPProtocolClass protocolClass,
-      Integer cotpLen) {
-    super(parameters, payload, cotpLen);
+      COTPProtocolClass protocolClass) {
+    super(parameters, payload);
     this.destinationReference = destinationReference;
     this.sourceReference = sourceReference;
     this.protocolClass = protocolClass;
-    this.cotpLen = cotpLen;
   }
 
   public int getDestinationReference() {
@@ -149,7 +144,7 @@
     readBuffer.closeContext("COTPPacketConnectionResponse");
     // Create the instance
     return new COTPPacketConnectionResponseBuilderImpl(
-        destinationReference, sourceReference, protocolClass, cotpLen);
+        destinationReference, sourceReference, protocolClass);
   }
 
   public static class COTPPacketConnectionResponseBuilderImpl
@@ -157,24 +152,18 @@
     private final int destinationReference;
     private final int sourceReference;
     private final COTPProtocolClass protocolClass;
-    private final Integer cotpLen;
 
     public COTPPacketConnectionResponseBuilderImpl(
-        int destinationReference,
-        int sourceReference,
-        COTPProtocolClass protocolClass,
-        Integer cotpLen) {
+        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
       this.destinationReference = destinationReference;
       this.sourceReference = sourceReference;
       this.protocolClass = protocolClass;
-      this.cotpLen = cotpLen;
     }
 
-    public COTPPacketConnectionResponse build(
-        List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
+    public COTPPacketConnectionResponse build(List<COTPParameter> parameters, S7Message payload) {
       COTPPacketConnectionResponse cOTPPacketConnectionResponse =
           new COTPPacketConnectionResponse(
-              parameters, payload, destinationReference, sourceReference, protocolClass, cotpLen);
+              parameters, payload, destinationReference, sourceReference, protocolClass);
       return cOTPPacketConnectionResponse;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
index d806cf3..3b56645 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketData.java
@@ -46,19 +46,11 @@
   protected final boolean eot;
   protected final short tpduRef;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
   public COTPPacketData(
-      List<COTPParameter> parameters,
-      S7Message payload,
-      boolean eot,
-      short tpduRef,
-      Integer cotpLen) {
-    super(parameters, payload, cotpLen);
+      List<COTPParameter> parameters, S7Message payload, boolean eot, short tpduRef) {
+    super(parameters, payload);
     this.eot = eot;
     this.tpduRef = tpduRef;
-    this.cotpLen = cotpLen;
   }
 
   public boolean getEot() {
@@ -119,24 +111,20 @@
 
     readBuffer.closeContext("COTPPacketData");
     // Create the instance
-    return new COTPPacketDataBuilderImpl(eot, tpduRef, cotpLen);
+    return new COTPPacketDataBuilderImpl(eot, tpduRef);
   }
 
   public static class COTPPacketDataBuilderImpl implements COTPPacket.COTPPacketBuilder {
     private final boolean eot;
     private final short tpduRef;
-    private final Integer cotpLen;
 
-    public COTPPacketDataBuilderImpl(boolean eot, short tpduRef, Integer cotpLen) {
+    public COTPPacketDataBuilderImpl(boolean eot, short tpduRef) {
       this.eot = eot;
       this.tpduRef = tpduRef;
-      this.cotpLen = cotpLen;
     }
 
-    public COTPPacketData build(
-        List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
-      COTPPacketData cOTPPacketData =
-          new COTPPacketData(parameters, payload, eot, tpduRef, cotpLen);
+    public COTPPacketData build(List<COTPParameter> parameters, S7Message payload) {
+      COTPPacketData cOTPPacketData = new COTPPacketData(parameters, payload, eot, tpduRef);
       return cOTPPacketData;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
index 398070d..7a30250 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectRequest.java
@@ -47,21 +47,16 @@
   protected final int sourceReference;
   protected final COTPProtocolClass protocolClass;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
   public COTPPacketDisconnectRequest(
       List<COTPParameter> parameters,
       S7Message payload,
       int destinationReference,
       int sourceReference,
-      COTPProtocolClass protocolClass,
-      Integer cotpLen) {
-    super(parameters, payload, cotpLen);
+      COTPProtocolClass protocolClass) {
+    super(parameters, payload);
     this.destinationReference = destinationReference;
     this.sourceReference = sourceReference;
     this.protocolClass = protocolClass;
-    this.cotpLen = cotpLen;
   }
 
   public int getDestinationReference() {
@@ -149,7 +144,7 @@
     readBuffer.closeContext("COTPPacketDisconnectRequest");
     // Create the instance
     return new COTPPacketDisconnectRequestBuilderImpl(
-        destinationReference, sourceReference, protocolClass, cotpLen);
+        destinationReference, sourceReference, protocolClass);
   }
 
   public static class COTPPacketDisconnectRequestBuilderImpl
@@ -157,24 +152,18 @@
     private final int destinationReference;
     private final int sourceReference;
     private final COTPProtocolClass protocolClass;
-    private final Integer cotpLen;
 
     public COTPPacketDisconnectRequestBuilderImpl(
-        int destinationReference,
-        int sourceReference,
-        COTPProtocolClass protocolClass,
-        Integer cotpLen) {
+        int destinationReference, int sourceReference, COTPProtocolClass protocolClass) {
       this.destinationReference = destinationReference;
       this.sourceReference = sourceReference;
       this.protocolClass = protocolClass;
-      this.cotpLen = cotpLen;
     }
 
-    public COTPPacketDisconnectRequest build(
-        List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
+    public COTPPacketDisconnectRequest build(List<COTPParameter> parameters, S7Message payload) {
       COTPPacketDisconnectRequest cOTPPacketDisconnectRequest =
           new COTPPacketDisconnectRequest(
-              parameters, payload, destinationReference, sourceReference, protocolClass, cotpLen);
+              parameters, payload, destinationReference, sourceReference, protocolClass);
       return cOTPPacketDisconnectRequest;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
index 7d0a6ad..cf4df50 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketDisconnectResponse.java
@@ -46,19 +46,14 @@
   protected final int destinationReference;
   protected final int sourceReference;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
   public COTPPacketDisconnectResponse(
       List<COTPParameter> parameters,
       S7Message payload,
       int destinationReference,
-      int sourceReference,
-      Integer cotpLen) {
-    super(parameters, payload, cotpLen);
+      int sourceReference) {
+    super(parameters, payload);
     this.destinationReference = destinationReference;
     this.sourceReference = sourceReference;
-    this.cotpLen = cotpLen;
   }
 
   public int getDestinationReference() {
@@ -121,28 +116,23 @@
 
     readBuffer.closeContext("COTPPacketDisconnectResponse");
     // Create the instance
-    return new COTPPacketDisconnectResponseBuilderImpl(
-        destinationReference, sourceReference, cotpLen);
+    return new COTPPacketDisconnectResponseBuilderImpl(destinationReference, sourceReference);
   }
 
   public static class COTPPacketDisconnectResponseBuilderImpl
       implements COTPPacket.COTPPacketBuilder {
     private final int destinationReference;
     private final int sourceReference;
-    private final Integer cotpLen;
 
-    public COTPPacketDisconnectResponseBuilderImpl(
-        int destinationReference, int sourceReference, Integer cotpLen) {
+    public COTPPacketDisconnectResponseBuilderImpl(int destinationReference, int sourceReference) {
       this.destinationReference = destinationReference;
       this.sourceReference = sourceReference;
-      this.cotpLen = cotpLen;
     }
 
-    public COTPPacketDisconnectResponse build(
-        List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
+    public COTPPacketDisconnectResponse build(List<COTPParameter> parameters, S7Message payload) {
       COTPPacketDisconnectResponse cOTPPacketDisconnectResponse =
           new COTPPacketDisconnectResponse(
-              parameters, payload, destinationReference, sourceReference, cotpLen);
+              parameters, payload, destinationReference, sourceReference);
       return cOTPPacketDisconnectResponse;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
index 466731da..1cfaf8c 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPPacketTpduError.java
@@ -46,19 +46,14 @@
   protected final int destinationReference;
   protected final short rejectCause;
 
-  // Arguments.
-  protected final Integer cotpLen;
-
   public COTPPacketTpduError(
       List<COTPParameter> parameters,
       S7Message payload,
       int destinationReference,
-      short rejectCause,
-      Integer cotpLen) {
-    super(parameters, payload, cotpLen);
+      short rejectCause) {
+    super(parameters, payload);
     this.destinationReference = destinationReference;
     this.rejectCause = rejectCause;
-    this.cotpLen = cotpLen;
   }
 
   public int getDestinationReference() {
@@ -121,25 +116,21 @@
 
     readBuffer.closeContext("COTPPacketTpduError");
     // Create the instance
-    return new COTPPacketTpduErrorBuilderImpl(destinationReference, rejectCause, cotpLen);
+    return new COTPPacketTpduErrorBuilderImpl(destinationReference, rejectCause);
   }
 
   public static class COTPPacketTpduErrorBuilderImpl implements COTPPacket.COTPPacketBuilder {
     private final int destinationReference;
     private final short rejectCause;
-    private final Integer cotpLen;
 
-    public COTPPacketTpduErrorBuilderImpl(
-        int destinationReference, short rejectCause, Integer cotpLen) {
+    public COTPPacketTpduErrorBuilderImpl(int destinationReference, short rejectCause) {
       this.destinationReference = destinationReference;
       this.rejectCause = rejectCause;
-      this.cotpLen = cotpLen;
     }
 
-    public COTPPacketTpduError build(
-        List<COTPParameter> parameters, S7Message payload, Integer cotpLen) {
+    public COTPPacketTpduError build(List<COTPParameter> parameters, S7Message payload) {
       COTPPacketTpduError cOTPPacketTpduError =
-          new COTPPacketTpduError(parameters, payload, destinationReference, rejectCause, cotpLen);
+          new COTPPacketTpduError(parameters, payload, destinationReference, rejectCause);
       return cOTPPacketTpduError;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
index 7f96389..76a3a88 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameter.java
@@ -40,12 +40,8 @@
   // Abstract accessors for discriminator values.
   public abstract Short getParameterType();
 
-  // Arguments.
-  protected final Short rest;
-
-  public COTPParameter(Short rest) {
+  public COTPParameter() {
     super();
-    this.rest = rest;
   }
 
   protected abstract void serializeCOTPParameterChild(WriteBuffer writeBuffer)
@@ -151,13 +147,12 @@
 
     readBuffer.closeContext("COTPParameter");
     // Create the instance
-    COTPParameter _cOTPParameter = builder.build(rest);
-
+    COTPParameter _cOTPParameter = builder.build();
     return _cOTPParameter;
   }
 
   public interface COTPParameterBuilder {
-    COTPParameter build(Short rest);
+    COTPParameter build();
   }
 
   @Override
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
index 66fb19d..2a9f41a 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCalledTsap.java
@@ -45,13 +45,9 @@
   // Properties.
   protected final int tsapId;
 
-  // Arguments.
-  protected final Short rest;
-
-  public COTPParameterCalledTsap(int tsapId, Short rest) {
-    super(rest);
+  public COTPParameterCalledTsap(int tsapId) {
+    super();
     this.tsapId = tsapId;
-    this.rest = rest;
   }
 
   public int getTsapId() {
@@ -101,22 +97,19 @@
 
     readBuffer.closeContext("COTPParameterCalledTsap");
     // Create the instance
-    return new COTPParameterCalledTsapBuilderImpl(tsapId, rest);
+    return new COTPParameterCalledTsapBuilderImpl(tsapId);
   }
 
   public static class COTPParameterCalledTsapBuilderImpl
       implements COTPParameter.COTPParameterBuilder {
     private final int tsapId;
-    private final Short rest;
 
-    public COTPParameterCalledTsapBuilderImpl(int tsapId, Short rest) {
+    public COTPParameterCalledTsapBuilderImpl(int tsapId) {
       this.tsapId = tsapId;
-      this.rest = rest;
     }
 
-    public COTPParameterCalledTsap build(Short rest) {
-
-      COTPParameterCalledTsap cOTPParameterCalledTsap = new COTPParameterCalledTsap(tsapId, rest);
+    public COTPParameterCalledTsap build() {
+      COTPParameterCalledTsap cOTPParameterCalledTsap = new COTPParameterCalledTsap(tsapId);
       return cOTPParameterCalledTsap;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
index f44af13..bcbaf50 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterCallingTsap.java
@@ -45,13 +45,9 @@
   // Properties.
   protected final int tsapId;
 
-  // Arguments.
-  protected final Short rest;
-
-  public COTPParameterCallingTsap(int tsapId, Short rest) {
-    super(rest);
+  public COTPParameterCallingTsap(int tsapId) {
+    super();
     this.tsapId = tsapId;
-    this.rest = rest;
   }
 
   public int getTsapId() {
@@ -101,23 +97,19 @@
 
     readBuffer.closeContext("COTPParameterCallingTsap");
     // Create the instance
-    return new COTPParameterCallingTsapBuilderImpl(tsapId, rest);
+    return new COTPParameterCallingTsapBuilderImpl(tsapId);
   }
 
   public static class COTPParameterCallingTsapBuilderImpl
       implements COTPParameter.COTPParameterBuilder {
     private final int tsapId;
-    private final Short rest;
 
-    public COTPParameterCallingTsapBuilderImpl(int tsapId, Short rest) {
+    public COTPParameterCallingTsapBuilderImpl(int tsapId) {
       this.tsapId = tsapId;
-      this.rest = rest;
     }
 
-    public COTPParameterCallingTsap build(Short rest) {
-
-      COTPParameterCallingTsap cOTPParameterCallingTsap =
-          new COTPParameterCallingTsap(tsapId, rest);
+    public COTPParameterCallingTsap build() {
+      COTPParameterCallingTsap cOTPParameterCallingTsap = new COTPParameterCallingTsap(tsapId);
       return cOTPParameterCallingTsap;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
index c94215b..23e0cef 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterChecksum.java
@@ -45,13 +45,9 @@
   // Properties.
   protected final short crc;
 
-  // Arguments.
-  protected final Short rest;
-
-  public COTPParameterChecksum(short crc, Short rest) {
-    super(rest);
+  public COTPParameterChecksum(short crc) {
+    super();
     this.crc = crc;
-    this.rest = rest;
   }
 
   public short getCrc() {
@@ -101,22 +97,19 @@
 
     readBuffer.closeContext("COTPParameterChecksum");
     // Create the instance
-    return new COTPParameterChecksumBuilderImpl(crc, rest);
+    return new COTPParameterChecksumBuilderImpl(crc);
   }
 
   public static class COTPParameterChecksumBuilderImpl
       implements COTPParameter.COTPParameterBuilder {
     private final short crc;
-    private final Short rest;
 
-    public COTPParameterChecksumBuilderImpl(short crc, Short rest) {
+    public COTPParameterChecksumBuilderImpl(short crc) {
       this.crc = crc;
-      this.rest = rest;
     }
 
-    public COTPParameterChecksum build(Short rest) {
-
-      COTPParameterChecksum cOTPParameterChecksum = new COTPParameterChecksum(crc, rest);
+    public COTPParameterChecksum build() {
+      COTPParameterChecksum cOTPParameterChecksum = new COTPParameterChecksum(crc);
       return cOTPParameterChecksum;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
index c1c12ad..b4a61e8 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterDisconnectAdditionalInformation.java
@@ -45,13 +45,9 @@
   // Properties.
   protected final byte[] data;
 
-  // Arguments.
-  protected final Short rest;
-
-  public COTPParameterDisconnectAdditionalInformation(byte[] data, Short rest) {
-    super(rest);
+  public COTPParameterDisconnectAdditionalInformation(byte[] data) {
+    super();
     this.data = data;
-    this.rest = rest;
   }
 
   public byte[] getData() {
@@ -103,23 +99,20 @@
 
     readBuffer.closeContext("COTPParameterDisconnectAdditionalInformation");
     // Create the instance
-    return new COTPParameterDisconnectAdditionalInformationBuilderImpl(data, rest);
+    return new COTPParameterDisconnectAdditionalInformationBuilderImpl(data);
   }
 
   public static class COTPParameterDisconnectAdditionalInformationBuilderImpl
       implements COTPParameter.COTPParameterBuilder {
     private final byte[] data;
-    private final Short rest;
 
-    public COTPParameterDisconnectAdditionalInformationBuilderImpl(byte[] data, Short rest) {
+    public COTPParameterDisconnectAdditionalInformationBuilderImpl(byte[] data) {
       this.data = data;
-      this.rest = rest;
     }
 
-    public COTPParameterDisconnectAdditionalInformation build(Short rest) {
-
+    public COTPParameterDisconnectAdditionalInformation build() {
       COTPParameterDisconnectAdditionalInformation cOTPParameterDisconnectAdditionalInformation =
-          new COTPParameterDisconnectAdditionalInformation(data, rest);
+          new COTPParameterDisconnectAdditionalInformation(data);
       return cOTPParameterDisconnectAdditionalInformation;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
index 84c3316..4cb45b9 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/COTPParameterTpduSize.java
@@ -45,13 +45,9 @@
   // Properties.
   protected final COTPTpduSize tpduSize;
 
-  // Arguments.
-  protected final Short rest;
-
-  public COTPParameterTpduSize(COTPTpduSize tpduSize, Short rest) {
-    super(rest);
+  public COTPParameterTpduSize(COTPTpduSize tpduSize) {
+    super();
     this.tpduSize = tpduSize;
-    this.rest = rest;
   }
 
   public COTPTpduSize getTpduSize() {
@@ -111,22 +107,19 @@
 
     readBuffer.closeContext("COTPParameterTpduSize");
     // Create the instance
-    return new COTPParameterTpduSizeBuilderImpl(tpduSize, rest);
+    return new COTPParameterTpduSizeBuilderImpl(tpduSize);
   }
 
   public static class COTPParameterTpduSizeBuilderImpl
       implements COTPParameter.COTPParameterBuilder {
     private final COTPTpduSize tpduSize;
-    private final Short rest;
 
-    public COTPParameterTpduSizeBuilderImpl(COTPTpduSize tpduSize, Short rest) {
+    public COTPParameterTpduSizeBuilderImpl(COTPTpduSize tpduSize) {
       this.tpduSize = tpduSize;
-      this.rest = rest;
     }
 
-    public COTPParameterTpduSize build(Short rest) {
-
-      COTPParameterTpduSize cOTPParameterTpduSize = new COTPParameterTpduSize(tpduSize, rest);
+    public COTPParameterTpduSize build() {
+      COTPParameterTpduSize cOTPParameterTpduSize = new COTPParameterTpduSize(tpduSize);
       return cOTPParameterTpduSize;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
index 59be893..5fc9b8f 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7AddressAny.java
@@ -50,9 +50,6 @@
   protected final int byteAddress;
   protected final byte bitAddress;
 
-  // Reserved Fields
-  private Short reservedField0;
-
   public S7AddressAny(
       TransportSize transportSize,
       int numberOfElements,
@@ -123,10 +120,7 @@
             MemoryArea::getValue, MemoryArea::name, writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 5));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 5));
 
     // Simple Field (byteAddress)
     writeSimpleField("byteAddress", byteAddress, writeUnsignedInt(writeBuffer, 16));
@@ -207,7 +201,7 @@
     readBuffer.closeContext("S7AddressAny");
     // Create the instance
     return new S7AddressAnyBuilderImpl(
-        transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress, reservedField0);
+        transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress);
   }
 
   public static class S7AddressAnyBuilderImpl implements S7Address.S7AddressBuilder {
@@ -217,7 +211,6 @@
     private final MemoryArea area;
     private final int byteAddress;
     private final byte bitAddress;
-    private final Short reservedField0;
 
     public S7AddressAnyBuilderImpl(
         TransportSize transportSize,
@@ -225,22 +218,19 @@
         int dbNumber,
         MemoryArea area,
         int byteAddress,
-        byte bitAddress,
-        Short reservedField0) {
+        byte bitAddress) {
       this.transportSize = transportSize;
       this.numberOfElements = numberOfElements;
       this.dbNumber = dbNumber;
       this.area = area;
       this.byteAddress = byteAddress;
       this.bitAddress = bitAddress;
-      this.reservedField0 = reservedField0;
     }
 
     public S7AddressAny build() {
       S7AddressAny s7AddressAny =
           new S7AddressAny(
               transportSize, numberOfElements, dbNumber, area, byteAddress, bitAddress);
-      s7AddressAny.reservedField0 = reservedField0;
       return s7AddressAny;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
index 961efb9..4fc347c 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Message.java
@@ -48,9 +48,6 @@
   protected final S7Parameter parameter;
   protected final S7Payload payload;
 
-  // Reserved Fields
-  private Integer reservedField0;
-
   public S7Message(int tpduReference, S7Parameter parameter, S7Payload payload) {
     super();
     this.tpduReference = tpduReference;
@@ -90,10 +87,7 @@
     writeDiscriminatorField("messageType", getMessageType(), writeUnsignedShort(writeBuffer, 8));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (int) 0x0000,
-        writeUnsignedInt(writeBuffer, 16));
+    writeReservedField("reserved", (int) 0x0000, writeUnsignedInt(writeBuffer, 16));
 
     // Simple Field (tpduReference)
     writeSimpleField("tpduReference", tpduReference, writeUnsignedInt(writeBuffer, 16));
@@ -113,18 +107,10 @@
     serializeS7MessageChild(writeBuffer);
 
     // Optional Field (parameter) (Can be skipped, if the value is null)
-    writeOptionalField(
-        "parameter",
-        parameter,
-        new DataWriterComplexDefault<>(writeBuffer),
-        ((((getParameter()) != (null)) ? getParameter().getLengthInBytes() : 0)) > (0));
+    writeOptionalField("parameter", parameter, new DataWriterComplexDefault<>(writeBuffer));
 
     // Optional Field (payload) (Can be skipped, if the value is null)
-    writeOptionalField(
-        "payload",
-        payload,
-        new DataWriterComplexDefault<>(writeBuffer),
-        ((((getPayload()) != (null)) ? getPayload().getLengthInBytes() : 0)) > (0));
+    writeOptionalField("payload", payload, new DataWriterComplexDefault<>(writeBuffer));
 
     writeBuffer.popContext("S7Message");
   }
@@ -239,7 +225,6 @@
     readBuffer.closeContext("S7Message");
     // Create the instance
     S7Message _s7Message = builder.build(tpduReference, parameter, payload);
-    _s7Message.reservedField0 = reservedField0;
     return _s7Message;
   }
 
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
index 4430acd..4c85600 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectRequest.java
@@ -51,10 +51,6 @@
   protected final QueryType queryType;
   protected final AlarmType alarmType;
 
-  // Reserved Fields
-  private Short reservedField0;
-  private Short reservedField1;
-
   public S7MessageObjectRequest(SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
     super();
     this.syntaxId = syntaxId;
@@ -105,10 +101,7 @@
             SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
 
     // Simple Field (queryType)
     writeSimpleEnumField(
@@ -119,10 +112,7 @@
             QueryType::getValue, QueryType::name, writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField1 != null ? reservedField1 : (short) 0x34,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x34, writeUnsignedShort(writeBuffer, 8));
 
     // Simple Field (alarmType)
     writeSimpleEnumField(
@@ -212,8 +202,7 @@
 
     readBuffer.closeContext("S7MessageObjectRequest");
     // Create the instance
-    return new S7MessageObjectRequestBuilderImpl(
-        syntaxId, queryType, alarmType, reservedField0, reservedField1);
+    return new S7MessageObjectRequestBuilderImpl(syntaxId, queryType, alarmType);
   }
 
   public static class S7MessageObjectRequestBuilderImpl
@@ -221,27 +210,17 @@
     private final SyntaxIdType syntaxId;
     private final QueryType queryType;
     private final AlarmType alarmType;
-    private final Short reservedField0;
-    private final Short reservedField1;
 
     public S7MessageObjectRequestBuilderImpl(
-        SyntaxIdType syntaxId,
-        QueryType queryType,
-        AlarmType alarmType,
-        Short reservedField0,
-        Short reservedField1) {
+        SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
       this.syntaxId = syntaxId;
       this.queryType = queryType;
       this.alarmType = alarmType;
-      this.reservedField0 = reservedField0;
-      this.reservedField1 = reservedField1;
     }
 
     public S7MessageObjectRequest build() {
       S7MessageObjectRequest s7MessageObjectRequest =
           new S7MessageObjectRequest(syntaxId, queryType, alarmType);
-      s7MessageObjectRequest.reservedField0 = reservedField0;
-      s7MessageObjectRequest.reservedField1 = reservedField1;
       return s7MessageObjectRequest;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
index bac089b..36bf1ce 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7MessageObjectResponse.java
@@ -46,9 +46,6 @@
   protected final DataTransportErrorCode returnCode;
   protected final DataTransportSize transportSize;
 
-  // Reserved Fields
-  private Short reservedField0;
-
   public S7MessageObjectResponse(
       DataTransportErrorCode returnCode, DataTransportSize transportSize) {
     super();
@@ -93,10 +90,7 @@
             writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
 
     writeBuffer.popContext("S7MessageObjectResponse");
   }
@@ -151,26 +145,23 @@
 
     readBuffer.closeContext("S7MessageObjectResponse");
     // Create the instance
-    return new S7MessageObjectResponseBuilderImpl(returnCode, transportSize, reservedField0);
+    return new S7MessageObjectResponseBuilderImpl(returnCode, transportSize);
   }
 
   public static class S7MessageObjectResponseBuilderImpl
       implements S7DataAlarmMessage.S7DataAlarmMessageBuilder {
     private final DataTransportErrorCode returnCode;
     private final DataTransportSize transportSize;
-    private final Short reservedField0;
 
     public S7MessageObjectResponseBuilderImpl(
-        DataTransportErrorCode returnCode, DataTransportSize transportSize, Short reservedField0) {
+        DataTransportErrorCode returnCode, DataTransportSize transportSize) {
       this.returnCode = returnCode;
       this.transportSize = transportSize;
-      this.reservedField0 = reservedField0;
     }
 
     public S7MessageObjectResponse build() {
       S7MessageObjectResponse s7MessageObjectResponse =
           new S7MessageObjectResponse(returnCode, transportSize);
-      s7MessageObjectResponse.reservedField0 = reservedField0;
       return s7MessageObjectResponse;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
index 8187bbe..b65cb58 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterModeTransition.java
@@ -53,9 +53,6 @@
   protected final short currentMode;
   protected final short sequenceNumber;
 
-  // Reserved Fields
-  private Integer reservedField0;
-
   public S7ParameterModeTransition(
       short method,
       byte cpuFunctionType,
@@ -98,10 +95,7 @@
     writeBuffer.pushContext("S7ParameterModeTransition");
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (int) 0x0010,
-        writeUnsignedInt(writeBuffer, 16));
+    writeReservedField("reserved", (int) 0x0010, writeUnsignedInt(writeBuffer, 16));
 
     // Implicit Field (itemLength) (Used for parsing, but its value is not stored as it's implicitly
     // given by the objects content)
@@ -187,7 +181,7 @@
     readBuffer.closeContext("S7ParameterModeTransition");
     // Create the instance
     return new S7ParameterModeTransitionBuilderImpl(
-        method, cpuFunctionType, cpuFunctionGroup, currentMode, sequenceNumber, reservedField0);
+        method, cpuFunctionType, cpuFunctionGroup, currentMode, sequenceNumber);
   }
 
   public static class S7ParameterModeTransitionBuilderImpl
@@ -197,28 +191,24 @@
     private final byte cpuFunctionGroup;
     private final short currentMode;
     private final short sequenceNumber;
-    private final Integer reservedField0;
 
     public S7ParameterModeTransitionBuilderImpl(
         short method,
         byte cpuFunctionType,
         byte cpuFunctionGroup,
         short currentMode,
-        short sequenceNumber,
-        Integer reservedField0) {
+        short sequenceNumber) {
       this.method = method;
       this.cpuFunctionType = cpuFunctionType;
       this.cpuFunctionGroup = cpuFunctionGroup;
       this.currentMode = currentMode;
       this.sequenceNumber = sequenceNumber;
-      this.reservedField0 = reservedField0;
     }
 
     public S7ParameterModeTransition build() {
       S7ParameterModeTransition s7ParameterModeTransition =
           new S7ParameterModeTransition(
               method, cpuFunctionType, cpuFunctionGroup, currentMode, sequenceNumber);
-      s7ParameterModeTransition.reservedField0 = reservedField0;
       return s7ParameterModeTransition;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterSetupCommunication.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterSetupCommunication.java
index 5c72b97..4e12e06 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterSetupCommunication.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterSetupCommunication.java
@@ -51,9 +51,6 @@
   protected final int maxAmqCallee;
   protected final int pduLength;
 
-  // Reserved Fields
-  private Short reservedField0;
-
   public S7ParameterSetupCommunication(int maxAmqCaller, int maxAmqCallee, int pduLength) {
     super();
     this.maxAmqCaller = maxAmqCaller;
@@ -81,10 +78,7 @@
     writeBuffer.pushContext("S7ParameterSetupCommunication");
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
 
     // Simple Field (maxAmqCaller)
     writeSimpleField("maxAmqCaller", maxAmqCaller, writeUnsignedInt(writeBuffer, 16));
@@ -143,8 +137,7 @@
 
     readBuffer.closeContext("S7ParameterSetupCommunication");
     // Create the instance
-    return new S7ParameterSetupCommunicationBuilderImpl(
-        maxAmqCaller, maxAmqCallee, pduLength, reservedField0);
+    return new S7ParameterSetupCommunicationBuilderImpl(maxAmqCaller, maxAmqCallee, pduLength);
   }
 
   public static class S7ParameterSetupCommunicationBuilderImpl
@@ -152,20 +145,17 @@
     private final int maxAmqCaller;
     private final int maxAmqCallee;
     private final int pduLength;
-    private final Short reservedField0;
 
     public S7ParameterSetupCommunicationBuilderImpl(
-        int maxAmqCaller, int maxAmqCallee, int pduLength, Short reservedField0) {
+        int maxAmqCaller, int maxAmqCallee, int pduLength) {
       this.maxAmqCaller = maxAmqCaller;
       this.maxAmqCallee = maxAmqCallee;
       this.pduLength = pduLength;
-      this.reservedField0 = reservedField0;
     }
 
     public S7ParameterSetupCommunication build() {
       S7ParameterSetupCommunication s7ParameterSetupCommunication =
           new S7ParameterSetupCommunication(maxAmqCaller, maxAmqCallee, pduLength);
-      s7ParameterSetupCommunication.reservedField0 = reservedField0;
       return s7ParameterSetupCommunication;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterUserDataItemCPUFunctions.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterUserDataItemCPUFunctions.java
index 521b749..f86c2cd 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterUserDataItemCPUFunctions.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7ParameterUserDataItemCPUFunctions.java
@@ -135,21 +135,13 @@
 
     // Optional Field (dataUnitReferenceNumber) (Can be skipped, if the value is null)
     writeOptionalField(
-        "dataUnitReferenceNumber",
-        dataUnitReferenceNumber,
-        writeUnsignedShort(writeBuffer, 8),
-        (getCpuFunctionType()) == (8));
+        "dataUnitReferenceNumber", dataUnitReferenceNumber, writeUnsignedShort(writeBuffer, 8));
 
     // Optional Field (lastDataUnit) (Can be skipped, if the value is null)
-    writeOptionalField(
-        "lastDataUnit",
-        lastDataUnit,
-        writeUnsignedShort(writeBuffer, 8),
-        (getCpuFunctionType()) == (8));
+    writeOptionalField("lastDataUnit", lastDataUnit, writeUnsignedShort(writeBuffer, 8));
 
     // Optional Field (errorCode) (Can be skipped, if the value is null)
-    writeOptionalField(
-        "errorCode", errorCode, writeUnsignedInt(writeBuffer, 16), (getCpuFunctionType()) == (8));
+    writeOptionalField("errorCode", errorCode, writeUnsignedInt(writeBuffer, 16));
 
     writeBuffer.popContext("S7ParameterUserDataItemCPUFunctions");
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Payload.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Payload.java
index a0e3499..8f9b7d1 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Payload.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7Payload.java
@@ -42,12 +42,8 @@
 
   public abstract Short getParameterParameterType();
 
-  // Arguments.
-  protected final S7Parameter parameter;
-
-  public S7Payload(S7Parameter parameter) {
+  public S7Payload() {
     super();
-    this.parameter = parameter;
   }
 
   protected abstract void serializeS7PayloadChild(WriteBuffer writeBuffer)
@@ -148,13 +144,12 @@
 
     readBuffer.closeContext("S7Payload");
     // Create the instance
-    S7Payload _s7Payload = builder.build(parameter);
-
+    S7Payload _s7Payload = builder.build();
     return _s7Payload;
   }
 
   public interface S7PayloadBuilder {
-    S7Payload build(S7Parameter parameter);
+    S7Payload build();
   }
 
   @Override
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadReadVarResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadReadVarResponse.java
index ef4cd20..ced89ad 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadReadVarResponse.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadReadVarResponse.java
@@ -49,13 +49,9 @@
   // Properties.
   protected final List<S7VarPayloadDataItem> items;
 
-  // Arguments.
-  protected final S7Parameter parameter;
-
-  public S7PayloadReadVarResponse(List<S7VarPayloadDataItem> items, S7Parameter parameter) {
-    super(parameter);
+  public S7PayloadReadVarResponse(List<S7VarPayloadDataItem> items) {
+    super();
     this.items = items;
-    this.parameter = parameter;
   }
 
   public List<S7VarPayloadDataItem> getItems() {
@@ -115,23 +111,18 @@
 
     readBuffer.closeContext("S7PayloadReadVarResponse");
     // Create the instance
-    return new S7PayloadReadVarResponseBuilderImpl(items, parameter);
+    return new S7PayloadReadVarResponseBuilderImpl(items);
   }
 
   public static class S7PayloadReadVarResponseBuilderImpl implements S7Payload.S7PayloadBuilder {
     private final List<S7VarPayloadDataItem> items;
-    private final S7Parameter parameter;
 
-    public S7PayloadReadVarResponseBuilderImpl(
-        List<S7VarPayloadDataItem> items, S7Parameter parameter) {
+    public S7PayloadReadVarResponseBuilderImpl(List<S7VarPayloadDataItem> items) {
       this.items = items;
-      this.parameter = parameter;
     }
 
-    public S7PayloadReadVarResponse build(S7Parameter parameter) {
-
-      S7PayloadReadVarResponse s7PayloadReadVarResponse =
-          new S7PayloadReadVarResponse(items, parameter);
+    public S7PayloadReadVarResponse build() {
+      S7PayloadReadVarResponse s7PayloadReadVarResponse = new S7PayloadReadVarResponse(items);
       return s7PayloadReadVarResponse;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserData.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserData.java
index 05f5c99..ec92892 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserData.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserData.java
@@ -49,13 +49,9 @@
   // Properties.
   protected final List<S7PayloadUserDataItem> items;
 
-  // Arguments.
-  protected final S7Parameter parameter;
-
-  public S7PayloadUserData(List<S7PayloadUserDataItem> items, S7Parameter parameter) {
-    super(parameter);
+  public S7PayloadUserData(List<S7PayloadUserDataItem> items) {
+    super();
     this.items = items;
-    this.parameter = parameter;
   }
 
   public List<S7PayloadUserDataItem> getItems() {
@@ -128,21 +124,18 @@
 
     readBuffer.closeContext("S7PayloadUserData");
     // Create the instance
-    return new S7PayloadUserDataBuilderImpl(items, parameter);
+    return new S7PayloadUserDataBuilderImpl(items);
   }
 
   public static class S7PayloadUserDataBuilderImpl implements S7Payload.S7PayloadBuilder {
     private final List<S7PayloadUserDataItem> items;
-    private final S7Parameter parameter;
 
-    public S7PayloadUserDataBuilderImpl(List<S7PayloadUserDataItem> items, S7Parameter parameter) {
+    public S7PayloadUserDataBuilderImpl(List<S7PayloadUserDataItem> items) {
       this.items = items;
-      this.parameter = parameter;
     }
 
-    public S7PayloadUserData build(S7Parameter parameter) {
-
-      S7PayloadUserData s7PayloadUserData = new S7PayloadUserData(items, parameter);
+    public S7PayloadUserData build() {
+      S7PayloadUserData s7PayloadUserData = new S7PayloadUserData(items);
       return s7PayloadUserData;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQuery.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQuery.java
index d19f1c9..3e638ac 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQuery.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQuery.java
@@ -62,10 +62,6 @@
   protected final QueryType queryType;
   protected final AlarmType alarmType;
 
-  // Reserved Fields
-  private Short reservedField0;
-  private Short reservedField1;
-
   public S7PayloadUserDataItemCpuFunctionAlarmQuery(
       DataTransportErrorCode returnCode,
       DataTransportSize transportSize,
@@ -135,10 +131,7 @@
             SyntaxIdType::getValue, SyntaxIdType::name, writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
 
     // Simple Field (queryType)
     writeSimpleEnumField(
@@ -149,10 +142,7 @@
             QueryType::getValue, QueryType::name, writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField1 != null ? reservedField1 : (short) 0x34,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x34, writeUnsignedShort(writeBuffer, 8));
 
     // Simple Field (alarmType)
     writeSimpleEnumField(
@@ -266,7 +256,7 @@
     readBuffer.closeContext("S7PayloadUserDataItemCpuFunctionAlarmQuery");
     // Create the instance
     return new S7PayloadUserDataItemCpuFunctionAlarmQueryBuilderImpl(
-        syntaxId, queryType, alarmType, reservedField0, reservedField1);
+        syntaxId, queryType, alarmType);
   }
 
   public static class S7PayloadUserDataItemCpuFunctionAlarmQueryBuilderImpl
@@ -274,20 +264,12 @@
     private final SyntaxIdType syntaxId;
     private final QueryType queryType;
     private final AlarmType alarmType;
-    private final Short reservedField0;
-    private final Short reservedField1;
 
     public S7PayloadUserDataItemCpuFunctionAlarmQueryBuilderImpl(
-        SyntaxIdType syntaxId,
-        QueryType queryType,
-        AlarmType alarmType,
-        Short reservedField0,
-        Short reservedField1) {
+        SyntaxIdType syntaxId, QueryType queryType, AlarmType alarmType) {
       this.syntaxId = syntaxId;
       this.queryType = queryType;
       this.alarmType = alarmType;
-      this.reservedField0 = reservedField0;
-      this.reservedField1 = reservedField1;
     }
 
     public S7PayloadUserDataItemCpuFunctionAlarmQuery build(
@@ -295,8 +277,6 @@
       S7PayloadUserDataItemCpuFunctionAlarmQuery s7PayloadUserDataItemCpuFunctionAlarmQuery =
           new S7PayloadUserDataItemCpuFunctionAlarmQuery(
               returnCode, transportSize, syntaxId, queryType, alarmType);
-      s7PayloadUserDataItemCpuFunctionAlarmQuery.reservedField0 = reservedField0;
-      s7PayloadUserDataItemCpuFunctionAlarmQuery.reservedField1 = reservedField1;
       return s7PayloadUserDataItemCpuFunctionAlarmQuery;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.java
index 572a18c..6b1ec43 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionAlarmQueryResponse.java
@@ -59,9 +59,6 @@
   protected final DataTransportErrorCode pudicfReturnCode;
   protected final DataTransportSize pudicftransportSize;
 
-  // Reserved Fields
-  private Short reservedField0;
-
   public S7PayloadUserDataItemCpuFunctionAlarmQueryResponse(
       DataTransportErrorCode returnCode,
       DataTransportSize transportSize,
@@ -123,10 +120,7 @@
             writeUnsignedShort(writeBuffer, 8)));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
 
     writeBuffer.popContext("S7PayloadUserDataItemCpuFunctionAlarmQueryResponse");
   }
@@ -200,22 +194,18 @@
     readBuffer.closeContext("S7PayloadUserDataItemCpuFunctionAlarmQueryResponse");
     // Create the instance
     return new S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilderImpl(
-        pudicfReturnCode, pudicftransportSize, reservedField0);
+        pudicfReturnCode, pudicftransportSize);
   }
 
   public static class S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilderImpl
       implements S7PayloadUserDataItem.S7PayloadUserDataItemBuilder {
     private final DataTransportErrorCode pudicfReturnCode;
     private final DataTransportSize pudicftransportSize;
-    private final Short reservedField0;
 
     public S7PayloadUserDataItemCpuFunctionAlarmQueryResponseBuilderImpl(
-        DataTransportErrorCode pudicfReturnCode,
-        DataTransportSize pudicftransportSize,
-        Short reservedField0) {
+        DataTransportErrorCode pudicfReturnCode, DataTransportSize pudicftransportSize) {
       this.pudicfReturnCode = pudicfReturnCode;
       this.pudicftransportSize = pudicftransportSize;
-      this.reservedField0 = reservedField0;
     }
 
     public S7PayloadUserDataItemCpuFunctionAlarmQueryResponse build(
@@ -224,7 +214,6 @@
           s7PayloadUserDataItemCpuFunctionAlarmQueryResponse =
               new S7PayloadUserDataItemCpuFunctionAlarmQueryResponse(
                   returnCode, transportSize, pudicfReturnCode, pudicftransportSize);
-      s7PayloadUserDataItemCpuFunctionAlarmQueryResponse.reservedField0 = reservedField0;
       return s7PayloadUserDataItemCpuFunctionAlarmQueryResponse;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionMsgSubscription.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionMsgSubscription.java
index 2ddf918..1ee2f9a 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionMsgSubscription.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadUserDataItemCpuFunctionMsgSubscription.java
@@ -57,9 +57,6 @@
   protected final AlarmStateType Alarmtype;
   protected final Short Reserve;
 
-  // Reserved Fields
-  private Short reservedField0;
-
   public S7PayloadUserDataItemCpuFunctionMsgSubscription(
       DataTransportErrorCode returnCode,
       DataTransportSize transportSize,
@@ -102,10 +99,7 @@
     writeSimpleField("Subscription", Subscription, writeUnsignedShort(writeBuffer, 8));
 
     // Reserved Field (reserved)
-    writeReservedField(
-        "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
-        writeUnsignedShort(writeBuffer, 8));
+    writeReservedField("reserved", (short) 0x00, writeUnsignedShort(writeBuffer, 8));
 
     // Simple Field (magicKey)
     writeSimpleField("magicKey", magicKey, writeString(writeBuffer, 64));
@@ -120,8 +114,7 @@
         (getSubscription()) >= (128));
 
     // Optional Field (Reserve) (Can be skipped, if the value is null)
-    writeOptionalField(
-        "Reserve", Reserve, writeUnsignedShort(writeBuffer, 8), (getSubscription()) >= (128));
+    writeOptionalField("Reserve", Reserve, writeUnsignedShort(writeBuffer, 8));
 
     writeBuffer.popContext("S7PayloadUserDataItemCpuFunctionMsgSubscription");
   }
@@ -187,7 +180,7 @@
     readBuffer.closeContext("S7PayloadUserDataItemCpuFunctionMsgSubscription");
     // Create the instance
     return new S7PayloadUserDataItemCpuFunctionMsgSubscriptionBuilderImpl(
-        Subscription, magicKey, Alarmtype, Reserve, reservedField0);
+        Subscription, magicKey, Alarmtype, Reserve);
   }
 
   public static class S7PayloadUserDataItemCpuFunctionMsgSubscriptionBuilderImpl
@@ -196,19 +189,13 @@
     private final String magicKey;
     private final AlarmStateType Alarmtype;
     private final Short Reserve;
-    private final Short reservedField0;
 
     public S7PayloadUserDataItemCpuFunctionMsgSubscriptionBuilderImpl(
-        short Subscription,
-        String magicKey,
-        AlarmStateType Alarmtype,
-        Short Reserve,
-        Short reservedField0) {
+        short Subscription, String magicKey, AlarmStateType Alarmtype, Short Reserve) {
       this.Subscription = Subscription;
       this.magicKey = magicKey;
       this.Alarmtype = Alarmtype;
       this.Reserve = Reserve;
-      this.reservedField0 = reservedField0;
     }
 
     public S7PayloadUserDataItemCpuFunctionMsgSubscription build(
@@ -217,7 +204,6 @@
           s7PayloadUserDataItemCpuFunctionMsgSubscription =
               new S7PayloadUserDataItemCpuFunctionMsgSubscription(
                   returnCode, transportSize, Subscription, magicKey, Alarmtype, Reserve);
-      s7PayloadUserDataItemCpuFunctionMsgSubscription.reservedField0 = reservedField0;
       return s7PayloadUserDataItemCpuFunctionMsgSubscription;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarRequest.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarRequest.java
index d9afe7e..48d4a5a 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarRequest.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarRequest.java
@@ -49,13 +49,9 @@
   // Properties.
   protected final List<S7VarPayloadDataItem> items;
 
-  // Arguments.
-  protected final S7Parameter parameter;
-
-  public S7PayloadWriteVarRequest(List<S7VarPayloadDataItem> items, S7Parameter parameter) {
-    super(parameter);
+  public S7PayloadWriteVarRequest(List<S7VarPayloadDataItem> items) {
+    super();
     this.items = items;
-    this.parameter = parameter;
   }
 
   public List<S7VarPayloadDataItem> getItems() {
@@ -115,23 +111,18 @@
 
     readBuffer.closeContext("S7PayloadWriteVarRequest");
     // Create the instance
-    return new S7PayloadWriteVarRequestBuilderImpl(items, parameter);
+    return new S7PayloadWriteVarRequestBuilderImpl(items);
   }
 
   public static class S7PayloadWriteVarRequestBuilderImpl implements S7Payload.S7PayloadBuilder {
     private final List<S7VarPayloadDataItem> items;
-    private final S7Parameter parameter;
 
-    public S7PayloadWriteVarRequestBuilderImpl(
-        List<S7VarPayloadDataItem> items, S7Parameter parameter) {
+    public S7PayloadWriteVarRequestBuilderImpl(List<S7VarPayloadDataItem> items) {
       this.items = items;
-      this.parameter = parameter;
     }
 
-    public S7PayloadWriteVarRequest build(S7Parameter parameter) {
-
-      S7PayloadWriteVarRequest s7PayloadWriteVarRequest =
-          new S7PayloadWriteVarRequest(items, parameter);
+    public S7PayloadWriteVarRequest build() {
+      S7PayloadWriteVarRequest s7PayloadWriteVarRequest = new S7PayloadWriteVarRequest(items);
       return s7PayloadWriteVarRequest;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarResponse.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarResponse.java
index 32fd6f1..1f6e13c 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarResponse.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/S7PayloadWriteVarResponse.java
@@ -49,13 +49,9 @@
   // Properties.
   protected final List<S7VarPayloadStatusItem> items;
 
-  // Arguments.
-  protected final S7Parameter parameter;
-
-  public S7PayloadWriteVarResponse(List<S7VarPayloadStatusItem> items, S7Parameter parameter) {
-    super(parameter);
+  public S7PayloadWriteVarResponse(List<S7VarPayloadStatusItem> items) {
+    super();
     this.items = items;
-    this.parameter = parameter;
   }
 
   public List<S7VarPayloadStatusItem> getItems() {
@@ -115,23 +111,18 @@
 
     readBuffer.closeContext("S7PayloadWriteVarResponse");
     // Create the instance
-    return new S7PayloadWriteVarResponseBuilderImpl(items, parameter);
+    return new S7PayloadWriteVarResponseBuilderImpl(items);
   }
 
   public static class S7PayloadWriteVarResponseBuilderImpl implements S7Payload.S7PayloadBuilder {
     private final List<S7VarPayloadStatusItem> items;
-    private final S7Parameter parameter;
 
-    public S7PayloadWriteVarResponseBuilderImpl(
-        List<S7VarPayloadStatusItem> items, S7Parameter parameter) {
+    public S7PayloadWriteVarResponseBuilderImpl(List<S7VarPayloadStatusItem> items) {
       this.items = items;
-      this.parameter = parameter;
     }
 
-    public S7PayloadWriteVarResponse build(S7Parameter parameter) {
-
-      S7PayloadWriteVarResponse s7PayloadWriteVarResponse =
-          new S7PayloadWriteVarResponse(items, parameter);
+    public S7PayloadWriteVarResponse build() {
+      S7PayloadWriteVarResponse s7PayloadWriteVarResponse = new S7PayloadWriteVarResponse(items);
       return s7PayloadWriteVarResponse;
     }
   }
diff --git a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TPKTPacket.java b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TPKTPacket.java
index 8115570..10351a8 100644
--- a/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TPKTPacket.java
+++ b/plc4j/drivers/s7/src/main/generated/org/apache/plc4x/java/s7/readwrite/TPKTPacket.java
@@ -43,9 +43,6 @@
   // Properties.
   protected final COTPPacket payload;
 
-  // Reserved Fields
-  private Short reservedField0;
-
   public TPKTPacket(COTPPacket payload) {
     super();
     this.payload = payload;
@@ -75,7 +72,7 @@
     // Reserved Field (reserved)
     writeReservedField(
         "reserved",
-        reservedField0 != null ? reservedField0 : (short) 0x00,
+        (short) 0x00,
         writeUnsignedShort(writeBuffer, 8),
         WithOption.WithByteOrder(ByteOrder.BIG_ENDIAN));
 
@@ -166,7 +163,6 @@
     // Create the instance
     TPKTPacket _tPKTPacket;
     _tPKTPacket = new TPKTPacket(payload);
-    _tPKTPacket.reservedField0 = reservedField0;
     return _tPKTPacket;
   }
 
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java
index f576765..13035ea 100644
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/optimizer/S7Optimizer.java
@@ -41,11 +41,11 @@
     public static final int EMPTY_READ_REQUEST_SIZE = new S7MessageRequest(0, new S7ParameterReadVarRequest(
         Collections.emptyList()), null).getLengthInBytes();
     public static final int EMPTY_READ_RESPONSE_SIZE = new S7MessageResponseData(0, new S7ParameterReadVarResponse(
-        (short) 0), new S7PayloadReadVarResponse(Collections.emptyList(), null), (short) 0, (short) 0).getLengthInBytes();
+        (short) 0), new S7PayloadReadVarResponse(Collections.emptyList()), (short) 0, (short) 0).getLengthInBytes();
     public static final int EMPTY_WRITE_REQUEST_SIZE = new S7MessageRequest(0, new S7ParameterWriteVarRequest(
-        Collections.emptyList()), new S7PayloadWriteVarRequest(Collections.emptyList(), null)).getLengthInBytes();
+        Collections.emptyList()), new S7PayloadWriteVarRequest(Collections.emptyList())).getLengthInBytes();
     public static final int EMPTY_WRITE_RESPONSE_SIZE = new S7MessageResponseData(0, new S7ParameterWriteVarResponse(
-        (short) 0), new S7PayloadWriteVarResponse(Collections.emptyList(), null), (short) 0, (short) 0).getLengthInBytes();
+        (short) 0), new S7PayloadWriteVarResponse(Collections.emptyList()), (short) 0, (short) 0).getLengthInBytes();
     public static final int S7_ADDRESS_ANY_SIZE = 2 +
         new S7AddressAny(TransportSize.INT, 1, 1, MemoryArea.DATA_BLOCKS, 1, (byte) 0).getLengthInBytes();
 
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
index b8b3a47..4c41a61 100644
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
@@ -84,7 +84,7 @@
 public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements HasConfiguration<S7Configuration> {
 
     private final Logger logger = LoggerFactory.getLogger(S7ProtocolLogic.class);
-    private final AtomicInteger tpduGenerator = new AtomicInteger(1);
+    private final AtomicInteger tpduGenerator = new AtomicInteger(0);
 
     private S7Configuration configuration;
     /*
@@ -263,16 +263,7 @@
      */
     private CompletableFuture<S7Message> readInternal(S7MessageRequest request) {
         CompletableFuture<S7Message> future = new CompletableFuture<>();
-        int thisTpduId = 0;
-        if (this.s7DriverContext.getControllerType() != S7ControllerType.S7_200)
-        {
-            thisTpduId = tpduGenerator.getAndIncrement();
-        }
-        final int tpduId = thisTpduId;
-        // If we've reached the max value for a 16 bit transaction identifier, reset back to 1
-        if(tpduGenerator.get() == 0xFFFF) {
-            tpduGenerator.set(0);
-        }
+        int tpduId = getTpduId();
 
         // Create a new Request with correct tpuId (is not known before)
         S7MessageRequest s7MessageRequest = new S7MessageRequest(tpduId, request.getParameter(), request.getPayload());
@@ -324,13 +315,7 @@
 //
 //        }
 
-
-
-        final int tpduId = tpduGenerator.getAndIncrement();
-        // If we've reached the max value for a 16 bit transaction identifier, reset back to 1
-        if (tpduGenerator.get() == 0xFFFF) {
-            tpduGenerator.set(1);
-        }
+        int tpduId = getTpduId();
 
         TPKTPacket tpktPacket = new TPKTPacket(
             new COTPPacketData(
@@ -404,11 +389,8 @@
             //parameterItems.add(new S7VarRequestParameterItemAddress(encodeS7Address(tag)));
             //payloadItems.add(serializePlcValue(tag, plcValue));
         }
-        final int tpduId = tpduGenerator.getAndIncrement();
-        // If we've reached the max value for a 16 bit transaction identifier, reset back to 1
-        if (tpduGenerator.get() == 0xFFFF) {
-            tpduGenerator.set(1);
-        }
+
+        int tpduId = getTpduId();
 
         TPKTPacket tpktPacket = new TPKTPacket(new COTPPacketData(null,
             new S7MessageUserData(tpduId,
@@ -709,7 +691,7 @@
     }
 
     private TPKTPacket createIdentifyRemoteMessage() {
-        S7MessageUserData identifyRemoteMessage = new S7MessageUserData(1, new S7ParameterUserData(Collections.singletonList(
+        S7MessageUserData identifyRemoteMessage = new S7MessageUserData(getTpduId(), new S7ParameterUserData(Collections.singletonList(
             new S7ParameterUserDataItemCPUFunctions((short) 0x11, (byte) 0x4, (byte) 0x4, (short) 0x01, (short) 0x00, null, null, null)
         )), new S7PayloadUserData(Collections.singletonList(
             new S7PayloadUserDataItemCpuFunctionReadSzlRequest(DataTransportErrorCode.OK, DataTransportSize.OCTET_STRING, new SzlId(SzlModuleTypeClass.CPU, (byte) 0x00, SzlSublist.MODULE_IDENTIFICATION), 0x0000)
@@ -741,7 +723,7 @@
         S7ParameterSetupCommunication s7ParameterSetupCommunication =
             new S7ParameterSetupCommunication(
                 s7DriverContext.getMaxAmqCaller(), s7DriverContext.getMaxAmqCallee(), s7DriverContext.getPduSize());
-        S7Message s7Message = new S7MessageRequest(0, s7ParameterSetupCommunication,
+        S7Message s7Message = new S7MessageRequest(getTpduId(), s7ParameterSetupCommunication,
             null);
         COTPPacketData cotpPacketData = new COTPPacketData(null, s7Message, true, (short) 1);
         return new TPKTPacket(cotpPacketData);
@@ -1074,4 +1056,18 @@
             future.completeExceptionally(e);
         }
     }
+
+    protected int getTpduId() {
+        int tpduId = 0;
+        // It seems an S7 200 doesn't like any TPDU-Id that's not 0
+        if (this.s7DriverContext.getControllerType() != S7ControllerType.S7_200) {
+            tpduId = tpduGenerator.getAndIncrement();
+        }
+        // If we've reached the max value for a 16 bit transaction identifier, reset back to 1
+        if(tpduGenerator.get() == 0xFFFF) {
+            tpduGenerator.set(0);
+        }
+        return tpduId;
+    }
+
 }
diff --git a/plc4j/integrations/opcua-server/pom.xml b/plc4j/integrations/opcua-server/pom.xml
index 17ef31b..084a708 100644
--- a/plc4j/integrations/opcua-server/pom.xml
+++ b/plc4j/integrations/opcua-server/pom.xml
@@ -253,7 +253,7 @@
         <configuration>
           <usedDependencies combine.children="append">
             <usedDependency>org.slf4j:slf4j-simple</usedDependency>
-            <usedDependency>org.bouncycastle:bcmail-jdk15on</usedDependency>
+            <usedDependency>org.bouncycastle:bcmail-jdk18on</usedDependency>
             <usedDependency>org.apache.plc4x:plc4j-driver-ab-eth</usedDependency>
             <usedDependency>org.apache.plc4x:plc4j-driver-ads</usedDependency>
             <usedDependency>org.apache.plc4x:plc4j-driver-canopen</usedDependency>
diff --git a/plc4j/pom.xml b/plc4j/pom.xml
index 4af3e39..732394a 100644
--- a/plc4j/pom.xml
+++ b/plc4j/pom.xml
@@ -224,7 +224,7 @@
             We have to slightly increase the heap-size or some tests will fail.
             Notice the @ instead of the $ as prefix? That's late evaluation.
           -->
-          <argLine>-Xmx256m @{failsafeArgLine}</argLine>
+          <argLine>-Xmx256m</argLine>
           <includes>
             <include>**/*IT.java</include>
           </includes>
diff --git a/protocols/open-protocol/pom.xml b/protocols/open-protocol/pom.xml
index 761a892..6ba8760 100644
--- a/protocols/open-protocol/pom.xml
+++ b/protocols/open-protocol/pom.xml
@@ -38,12 +38,6 @@
       <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
       <version>0.11.0-SNAPSHOT</version>
     </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/protocols/pom.xml b/protocols/pom.xml
index 8912523..37da46a 100644
--- a/protocols/pom.xml
+++ b/protocols/pom.xml
@@ -222,6 +222,12 @@
       <artifactId>junit-jupiter-api</artifactId>
       <scope>test</scope>
     </dependency>
+    <!-- Needed by the *ProtocolTests in all modules, or it won't output any findings -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 </project>
diff --git a/protocols/s7/src/test/resources/protocols/s7/DriverTestsuite.xml b/protocols/s7/src/test/resources/protocols/s7/DriverTestsuite.xml
index 8d76a5c..97aab67 100644
--- a/protocols/s7/src/test/resources/protocols/s7/DriverTestsuite.xml
+++ b/protocols/s7/src/test/resources/protocols/s7/DriverTestsuite.xml
@@ -441,7 +441,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">10</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -450,7 +450,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">1</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">14</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">0</payloadLength>
                   <S7MessageRequest>
@@ -508,7 +508,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">0</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -517,7 +517,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">3</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">2</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">6</payloadLength>
                   <S7MessageResponseData>
@@ -613,7 +613,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">10</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -622,7 +622,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">1</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">14</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">0</payloadLength>
                   <S7MessageRequest>
@@ -680,7 +680,7 @@
               <tpduCode dataType="uint" bitLength="8">240</tpduCode>
               <COTPPacketData>
                 <eot dataType="bit" bitLength="1">true</eot>
-                <tpduRef dataType="uint" bitLength="7">0</tpduRef>
+                <tpduRef dataType="uint" bitLength="7">2</tpduRef>
               </COTPPacketData>
               <parameters isList="true">
               </parameters>
@@ -689,7 +689,7 @@
                   <protocolId dataType="uint" bitLength="8">50</protocolId>
                   <messageType dataType="uint" bitLength="8">2</messageType>
                   <reserved dataType="uint" bitLength="16">0</reserved>
-                  <tpduReference dataType="uint" bitLength="16">10</tpduReference>
+                  <tpduReference dataType="uint" bitLength="16">2</tpduReference>
                   <parameterLength dataType="uint" bitLength="16">0</parameterLength>
                   <payloadLength dataType="uint" bitLength="16">0</payloadLength>
                   <S7MessageResponse>