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

[plc4x] branch feature/plc4go updated (9bf1659 -> 839b73b)

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

cdutz pushed a change to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git.


    from 9bf1659  - Fixed the enum support of string-typed-enums in C
     new bf34c28  - Quick-Fix to get the PLC4J Modbus working again ...
     new 839b73b  - Removed the ModbusDataType in modbus.mspes which is replaced by the new ModbusDataTypeSizes

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


Summary of changes:
 .../BaseFreemarkerLanguageTemplateHelper.java      |   1 -
 .../plc4x/java/modbus/field/ModbusField.java       |   8 +-
 .../modbus/field/ModbusFieldHoldingRegister.java   |   3 +-
 .../java/modbus/protocol/ModbusProtocolLogic.java  |   2 +-
 .../plc4x/java/examples/helloplc4x/HelloPlc4x.java |   2 +-
 .../main/resources/protocols/modbus/modbus.mspec   |  31 ---
 sandbox/plc4go/cmd/main/drivers/bacnetip_test.go   |   4 +-
 sandbox/plc4go/cmd/main/drivers/knxnetip_test.go   |  10 +-
 sandbox/plc4go/cmd/main/drivers/modbus_test.go     |  10 +-
 sandbox/plc4go/cmd/main/drivers/s7_test.go         |  10 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |   7 +-
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |   7 +-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |   9 +-
 .../readwrite/model/APDUConfirmedRequest.go        |  11 +-
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |   9 +-
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |   7 +-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |   7 +-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |   7 +-
 .../readwrite/model/APDUUnconfirmedRequest.go      |   9 +-
 .../bacnetip/readwrite/model/ApplicationTag.go     |  11 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |   7 +-
 .../readwrite/model/BACnetConfirmedServiceACK.go   |   7 +-
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |   7 +-
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |   7 +-
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |   7 +-
 .../model/BACnetConfirmedServiceACKCreateObject.go |   7 +-
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |   7 +-
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |   7 +-
 ...BACnetConfirmedServiceACKGetEventInformation.go |   7 +-
 .../model/BACnetConfirmedServiceACKReadProperty.go |   7 +-
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |   7 +-
 .../model/BACnetConfirmedServiceACKReadRange.go    |   7 +-
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |   7 +-
 ...rmedServiceACKRemovedReadPropertyConditional.go |   7 +-
 .../model/BACnetConfirmedServiceACKVTData.go       |   7 +-
 .../model/BACnetConfirmedServiceACKVTOpen.go       |   7 +-
 .../model/BACnetConfirmedServiceRequest.go         |   7 +-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   7 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   7 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   7 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   7 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |   9 +-
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   7 +-
 ...rmedServiceRequestConfirmedEventNotification.go |   7 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   7 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   7 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   7 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   7 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   7 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   7 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   7 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   7 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |   7 +-
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   7 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   7 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   7 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   7 +-
 ...etConfirmedServiceRequestRemovedAuthenticate.go |   7 +-
 ...ServiceRequestRemovedReadPropertyConditional.go |   7 +-
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |   7 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |   9 +-
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   7 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   7 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   7 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   7 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   7 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |   9 +-
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   7 +-
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |   7 +-
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |   7 +-
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |   7 +-
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |   7 +-
 .../readwrite/model/BACnetErrorCreateObject.go     |   7 +-
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |   7 +-
 .../model/BACnetErrorGetEnrollmentSummary.go       |   7 +-
 .../model/BACnetErrorGetEventInformation.go        |   7 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |   9 +-
 .../model/BACnetErrorReadPropertyMultiple.go       |   7 +-
 .../readwrite/model/BACnetErrorReadRange.go        |   7 +-
 .../model/BACnetErrorRemovedAuthenticate.go        |   7 +-
 .../BACnetErrorRemovedReadPropertyConditional.go   |   7 +-
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |   7 +-
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |   7 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |  11 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |  11 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |  11 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |  11 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   7 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |   7 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   7 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   7 +-
 .../model/BACnetServiceAckCreateObject.go          |   7 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   7 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   7 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   7 +-
 .../model/BACnetServiceAckReadProperty.go          |   9 +-
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   7 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   7 +-
 .../model/BACnetServiceAckRemovedAuthenticate.go   |   7 +-
 ...CnetServiceAckRemovedReadPropertyConditional.go |   7 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   7 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   7 +-
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |   7 +-
 .../model/BACnetTagApplicationBitString.go         |   9 +-
 .../readwrite/model/BACnetTagApplicationBoolean.go |   7 +-
 .../model/BACnetTagApplicationCharacterString.go   |   7 +-
 .../readwrite/model/BACnetTagApplicationDate.go    |   7 +-
 .../readwrite/model/BACnetTagApplicationDouble.go  |   7 +-
 .../model/BACnetTagApplicationEnumerated.go        |   9 +-
 .../readwrite/model/BACnetTagApplicationNull.go    |   7 +-
 .../model/BACnetTagApplicationObjectIdentifier.go  |   7 +-
 .../model/BACnetTagApplicationOctetString.go       |   7 +-
 .../readwrite/model/BACnetTagApplicationReal.go    |   7 +-
 .../model/BACnetTagApplicationSignedInteger.go     |   9 +-
 .../readwrite/model/BACnetTagApplicationTime.go    |   7 +-
 .../model/BACnetTagApplicationUnsignedInteger.go   |   9 +-
 .../bacnetip/readwrite/model/BACnetTagContext.go   |   9 +-
 .../readwrite/model/BACnetTagWithContent.go        |  11 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   7 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   9 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   7 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   7 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   7 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   7 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   7 +-
 ...edServiceRequestUnconfirmedEventNotification.go |   7 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   9 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   7 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   9 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   7 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   7 +-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |   9 +-
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   7 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   7 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |   9 +-
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |   9 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |   9 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   7 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   7 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   7 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   7 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   7 +-
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |   7 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   7 +-
 .../model/BVLCWideBroadcastDistributionTable.go    |   7 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |   7 +-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |   9 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |   9 +-
 .../plc4go/bacnetip/readwrite/model/NPDU.go        |  21 +-
 .../plc4go/knxnetip/readwrite/model/APCI.go        |  11 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |   7 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |   7 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |   7 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |   7 +-
 .../knxnetip/readwrite/model/CEMIBusmonInd.go      |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIDataCon.go |   9 +-
 .../knxnetip/readwrite/model/CEMIDataFrame.go      |   9 +-
 .../plc4go/knxnetip/readwrite/model/CEMIDataInd.go |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIDataReq.go |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIFrame.go   |   7 +-
 .../knxnetip/readwrite/model/CEMIFrameAck.go       |   7 +-
 .../knxnetip/readwrite/model/CEMIFrameData.go      |   9 +-
 .../knxnetip/readwrite/model/CEMIFrameDataExt.go   |   9 +-
 .../readwrite/model/CEMIFramePollingData.go        |   7 +-
 .../readwrite/model/CEMIFramePollingDataExt.go     |   7 +-
 .../knxnetip/readwrite/model/CEMIMPropReadCon.go   |   7 +-
 .../knxnetip/readwrite/model/CEMIMPropReadReq.go   |   7 +-
 .../knxnetip/readwrite/model/CEMIPollDataCon.go    |   7 +-
 .../knxnetip/readwrite/model/CEMIPollDataReq.go    |   7 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |  11 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawCon.go  |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawInd.go  |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawReq.go  |   7 +-
 .../knxnetip/readwrite/model/ConnectionRequest.go  |   9 +-
 .../model/ConnectionRequestInformation.go          |   7 +-
 ...ConnectionRequestInformationDeviceManagement.go |   7 +-
 ...ConnectionRequestInformationTunnelConnection.go |   7 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |   9 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |   7 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |   7 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |   9 +-
 .../readwrite/model/ConnectionStateRequest.go      |   9 +-
 .../readwrite/model/ConnectionStateResponse.go     |   7 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |   9 +-
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |   9 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |   7 +-
 .../readwrite/model/DescriptionResponse.go         |   7 +-
 .../readwrite/model/DeviceConfigurationAck.go      |   9 +-
 .../model/DeviceConfigurationAckDataBlock.go       |   7 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |   9 +-
 .../model/DeviceConfigurationRequestDataBlock.go   |   7 +-
 .../knxnetip/readwrite/model/DeviceStatus.go       |   7 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |   9 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |   7 +-
 .../readwrite/model/HPAIControlEndpoint.go         |   9 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |   9 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |   9 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |  11 +-
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |   7 +-
 .../plc4go/knxnetip/readwrite/model/KNXAddress.go  |   7 +-
 .../knxnetip/readwrite/model/KNXGroupAddress.go    |   7 +-
 .../readwrite/model/KNXGroupAddress2Level.go       |   7 +-
 .../readwrite/model/KNXGroupAddress3Level.go       |   7 +-
 .../readwrite/model/KNXGroupAddressFreeLevel.go    |   7 +-
 .../knxnetip/readwrite/model/KNXNetIPMessage.go    |   7 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       |  10 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |  11 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   7 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   7 +-
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   7 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   7 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   7 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   7 +-
 .../knxnetip/readwrite/model/KnxStaticHelper.go    |   4 +-
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |   7 +-
 .../model/ProjectInstallationIdentifier.go         |   7 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   7 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   7 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |   9 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |   9 +-
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |   7 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |  11 +-
 .../plc4go/knxnetip/readwrite/model/TPCI.go        |  11 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |   9 +-
 .../readwrite/model/TunnelingRequestDataBlock.go   |   7 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |   9 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |   7 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |   7 +-
 .../internal/plc4go/modbus/ModbusMessageCodec.go   |   6 +-
 .../plc4go/internal/plc4go/modbus/ModbusReader.go  |   2 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |   4 +-
 .../modbus/readwrite/model/ModbusConstants.go      |   7 +-
 .../modbus/readwrite/model/ModbusDataType.go       | 242 ---------------------
 .../modbus/readwrite/model/ModbusDataTypeSizes.go  |  11 +-
 .../modbus/readwrite/model/ModbusErrorCode.go      |  11 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |   7 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |   7 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |   7 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |   7 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |   7 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |   7 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |   7 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |   7 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |   7 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |   7 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |   7 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |   7 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   7 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   7 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |   7 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |   7 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   7 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |   7 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |   7 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |   7 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |   9 +-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |   7 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |   9 +-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |   7 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |   7 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |   7 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |   7 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |   7 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |   7 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |   7 +-
 .../model/ModbusPDUReportServerIdRequest.go        |   7 +-
 .../model/ModbusPDUReportServerIdResponse.go       |   7 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |   9 +-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |   7 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |   9 +-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |   7 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |   7 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |   7 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |   7 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |   7 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |   7 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |   7 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |   7 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |   7 +-
 .../modbus/readwrite/model/ModbusSerialADU.go      |   7 +-
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |   7 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |   9 +-
 .../readwrite/model/COTPPacketConnectionRequest.go |   7 +-
 .../model/COTPPacketConnectionResponse.go          |   7 +-
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |   7 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |   7 +-
 .../model/COTPPacketDisconnectResponse.go          |   7 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |   7 +-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |   7 +-
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   7 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   7 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   7 +-
 ...COTPParameterDisconnectAdditionalInformation.go |   7 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   7 +-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |  11 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |  11 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |   4 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |  11 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |  11 +-
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |  11 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |  11 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |   7 +-
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |   7 +-
 .../plc4go/s7/readwrite/model/S7Message.go         |  11 +-
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |   7 +-
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |   7 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |   7 +-
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |   7 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |   7 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |   7 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |   7 +-
 .../model/S7ParameterSetupCommunication.go         |   7 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |   7 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   7 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |   7 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |   7 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |   7 +-
 .../plc4go/s7/readwrite/model/S7Payload.go         |   7 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |   7 +-
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |   7 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   7 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   7 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |   7 +-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |   7 +-
 .../readwrite/model/S7PayloadWriteVarResponse.go   |   7 +-
 .../plc4go/s7/readwrite/model/S7StaticHelper.go    |  30 +--
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  19 +-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   7 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |   7 +-
 .../model/S7VarRequestParameterItemAddress.go      |   7 +-
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |   7 +-
 .../internal/plc4go/s7/readwrite/model/SzlId.go    |   7 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |  11 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |  11 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |   7 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  11 +-
 .../internal/plc4go/{spi => utils}/ReadBuffer.go   |   4 +-
 .../plc4go/internal/plc4go/{spi => utils}/Utils.go |   2 +-
 .../internal/plc4go/{spi => utils}/WriteBuffer.go  |   2 +-
 339 files changed, 1463 insertions(+), 1374 deletions(-)
 delete mode 100644 sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
 rename sandbox/plc4go/internal/plc4go/{spi => utils}/ReadBuffer.go (99%)
 rename sandbox/plc4go/internal/plc4go/{spi => utils}/Utils.go (98%)
 rename sandbox/plc4go/internal/plc4go/{spi => utils}/WriteBuffer.go (99%)


[plc4x] 01/02: - Quick-Fix to get the PLC4J Modbus working again ...

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

cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit bf34c28f3c407e5c259271148e246837828cc55d
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Oct 23 13:51:41 2020 +0200

    - Quick-Fix to get the PLC4J Modbus working again ...
---
 .../src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java | 4 ++--
 .../apache/plc4x/java/modbus/field/ModbusFieldHoldingRegister.java    | 3 ++-
 .../org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java    | 2 +-
 .../java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java    | 2 +-
 4 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
index 9a47936..cff640f 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
@@ -67,7 +67,7 @@ public abstract class ModbusField implements PlcField {
             throw new IllegalArgumentException("quantity must be greater then zero. Was " + this.quantity);
         }
         this.dataType = dataType != null ? dataType : "INT";
-        ModbusDataTypeSizes.valueOf(this.dataType);
+        ModbusDataTypeSizes.enumForValue(this.dataType);
     }
 
     public int getAddress() {
@@ -83,7 +83,7 @@ public abstract class ModbusField implements PlcField {
     }
 
     public int getLengthWords() {
-        return (int) (quantity * ((float) ModbusDataType.valueOf(dataType).getDataTypeSize())/2.0f);
+        return (int) (quantity * ((float) ModbusDataTypeSizes.enumForValue(dataType).getDataTypeSize())/2.0f);
     }
 
     public String getDataType() {
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHoldingRegister.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHoldingRegister.java
index f99061f..0783328 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHoldingRegister.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusFieldHoldingRegister.java
@@ -71,7 +71,8 @@ public class ModbusFieldHoldingRegister extends ModbusField {
         }
 
         String datatypeTemp = matcher.group("datatype");
-        String datatype = datatypeTemp != null ? datatypeTemp : "INT";
+        String datatype = "IEC61131_" + (datatypeTemp != null ? datatypeTemp : "INT");
+
 
         return new ModbusFieldHoldingRegister(address, quantity, datatype.toUpperCase());
     }
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
index 9df1bac..3580c04 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
@@ -337,7 +337,7 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
     }
 
     private PlcValue toPlcValue(ModbusPDU request, ModbusPDU response, String dataType) throws ParseException {
-        Short fieldDataTypeSize = ModbusDataType.valueOf(dataType).getDataTypeSize();
+        Short fieldDataTypeSize = ModbusDataTypeSizes.enumForValue(dataType).getDataTypeSize();
 
         if (request instanceof ModbusPDUReadDiscreteInputsRequest) {
             if (!(response instanceof ModbusPDUReadDiscreteInputsResponse)) {
diff --git a/plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java b/plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java
index f9bed87..f5e40e6 100644
--- a/plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java
+++ b/plc4j/examples/hello-world-plc4x/src/main/java/org/apache/plc4x/java/examples/helloplc4x/HelloPlc4x.java
@@ -74,7 +74,7 @@ public class HelloPlc4x {
             printResponse(syncResponse);
 
             PlcValue asPlcValue = syncResponse.getAsPlcValue();
-            System.out.println(asPlcValue);
+            System.out.println(asPlcValue.toString());
 
             //////////////////////////////////////////////////////////
             // Read asynchronously ...


[plc4x] 02/02: - Removed the ModbusDataType in modbus.mspes which is replaced by the new ModbusDataTypeSizes

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

cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 839b73b64dab9f0148e4a0ec8365a7a75769e672
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Oct 23 13:55:58 2020 +0200

    - Removed the ModbusDataType in modbus.mspes which is replaced by the new ModbusDataTypeSizes
---
 .../BaseFreemarkerLanguageTemplateHelper.java      |   1 -
 .../plc4x/java/modbus/field/ModbusField.java       |   4 +-
 .../main/resources/protocols/modbus/modbus.mspec   |  31 ---
 sandbox/plc4go/cmd/main/drivers/bacnetip_test.go   |   4 +-
 sandbox/plc4go/cmd/main/drivers/knxnetip_test.go   |  10 +-
 sandbox/plc4go/cmd/main/drivers/modbus_test.go     |  10 +-
 sandbox/plc4go/cmd/main/drivers/s7_test.go         |  10 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |   7 +-
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |   7 +-
 .../bacnetip/readwrite/model/APDUComplexAck.go     |   9 +-
 .../readwrite/model/APDUConfirmedRequest.go        |  11 +-
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |   9 +-
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |   7 +-
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |   7 +-
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |   7 +-
 .../readwrite/model/APDUUnconfirmedRequest.go      |   9 +-
 .../bacnetip/readwrite/model/ApplicationTag.go     |  11 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |   7 +-
 .../readwrite/model/BACnetConfirmedServiceACK.go   |   7 +-
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |   7 +-
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |   7 +-
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |   7 +-
 .../model/BACnetConfirmedServiceACKCreateObject.go |   7 +-
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |   7 +-
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |   7 +-
 ...BACnetConfirmedServiceACKGetEventInformation.go |   7 +-
 .../model/BACnetConfirmedServiceACKReadProperty.go |   7 +-
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |   7 +-
 .../model/BACnetConfirmedServiceACKReadRange.go    |   7 +-
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |   7 +-
 ...rmedServiceACKRemovedReadPropertyConditional.go |   7 +-
 .../model/BACnetConfirmedServiceACKVTData.go       |   7 +-
 .../model/BACnetConfirmedServiceACKVTOpen.go       |   7 +-
 .../model/BACnetConfirmedServiceRequest.go         |   7 +-
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   7 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   7 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   7 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   7 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |   9 +-
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   7 +-
 ...rmedServiceRequestConfirmedEventNotification.go |   7 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   7 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   7 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   7 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   7 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   7 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   7 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   7 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   7 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |   7 +-
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   7 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   7 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   7 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   7 +-
 ...etConfirmedServiceRequestRemovedAuthenticate.go |   7 +-
 ...ServiceRequestRemovedReadPropertyConditional.go |   7 +-
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |   7 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |   9 +-
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   7 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   7 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   7 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   7 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   7 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |   9 +-
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   7 +-
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |   7 +-
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |   7 +-
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |   7 +-
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |   7 +-
 .../readwrite/model/BACnetErrorCreateObject.go     |   7 +-
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |   7 +-
 .../model/BACnetErrorGetEnrollmentSummary.go       |   7 +-
 .../model/BACnetErrorGetEventInformation.go        |   7 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |   9 +-
 .../model/BACnetErrorReadPropertyMultiple.go       |   7 +-
 .../readwrite/model/BACnetErrorReadRange.go        |   7 +-
 .../model/BACnetErrorRemovedAuthenticate.go        |   7 +-
 .../BACnetErrorRemovedReadPropertyConditional.go   |   7 +-
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |   7 +-
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |   7 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |  11 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |  11 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |  11 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |  11 +-
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |   7 +-
 .../model/BACnetServiceAckAtomicReadFile.go        |   7 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   7 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   7 +-
 .../model/BACnetServiceAckCreateObject.go          |   7 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   7 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   7 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   7 +-
 .../model/BACnetServiceAckReadProperty.go          |   9 +-
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   7 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   7 +-
 .../model/BACnetServiceAckRemovedAuthenticate.go   |   7 +-
 ...CnetServiceAckRemovedReadPropertyConditional.go |   7 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   7 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   7 +-
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |   7 +-
 .../model/BACnetTagApplicationBitString.go         |   9 +-
 .../readwrite/model/BACnetTagApplicationBoolean.go |   7 +-
 .../model/BACnetTagApplicationCharacterString.go   |   7 +-
 .../readwrite/model/BACnetTagApplicationDate.go    |   7 +-
 .../readwrite/model/BACnetTagApplicationDouble.go  |   7 +-
 .../model/BACnetTagApplicationEnumerated.go        |   9 +-
 .../readwrite/model/BACnetTagApplicationNull.go    |   7 +-
 .../model/BACnetTagApplicationObjectIdentifier.go  |   7 +-
 .../model/BACnetTagApplicationOctetString.go       |   7 +-
 .../readwrite/model/BACnetTagApplicationReal.go    |   7 +-
 .../model/BACnetTagApplicationSignedInteger.go     |   9 +-
 .../readwrite/model/BACnetTagApplicationTime.go    |   7 +-
 .../model/BACnetTagApplicationUnsignedInteger.go   |   9 +-
 .../bacnetip/readwrite/model/BACnetTagContext.go   |   9 +-
 .../readwrite/model/BACnetTagWithContent.go        |  11 +-
 .../model/BACnetUnconfirmedServiceRequest.go       |   7 +-
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |   9 +-
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   7 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   7 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   7 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   7 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   7 +-
 ...edServiceRequestUnconfirmedEventNotification.go |   7 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |   9 +-
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   7 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |   9 +-
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |   7 +-
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   7 +-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |   9 +-
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   7 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   7 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |   9 +-
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |   9 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |   9 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   7 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   7 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   7 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   7 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   7 +-
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |   7 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   7 +-
 .../model/BVLCWideBroadcastDistributionTable.go    |   7 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |   7 +-
 .../readwrite/model/NLMIAmRouterToNetwork.go       |   9 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |   9 +-
 .../plc4go/bacnetip/readwrite/model/NPDU.go        |  21 +-
 .../plc4go/knxnetip/readwrite/model/APCI.go        |  11 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |   7 +-
 .../readwrite/model/CEMIAdditionalInformation.go   |   7 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |   7 +-
 .../CEMIAdditionalInformationRelativeTimestamp.go  |   7 +-
 .../knxnetip/readwrite/model/CEMIBusmonInd.go      |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIDataCon.go |   9 +-
 .../knxnetip/readwrite/model/CEMIDataFrame.go      |   9 +-
 .../plc4go/knxnetip/readwrite/model/CEMIDataInd.go |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIDataReq.go |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIFrame.go   |   7 +-
 .../knxnetip/readwrite/model/CEMIFrameAck.go       |   7 +-
 .../knxnetip/readwrite/model/CEMIFrameData.go      |   9 +-
 .../knxnetip/readwrite/model/CEMIFrameDataExt.go   |   9 +-
 .../readwrite/model/CEMIFramePollingData.go        |   7 +-
 .../readwrite/model/CEMIFramePollingDataExt.go     |   7 +-
 .../knxnetip/readwrite/model/CEMIMPropReadCon.go   |   7 +-
 .../knxnetip/readwrite/model/CEMIMPropReadReq.go   |   7 +-
 .../knxnetip/readwrite/model/CEMIPollDataCon.go    |   7 +-
 .../knxnetip/readwrite/model/CEMIPollDataReq.go    |   7 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |  11 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawCon.go  |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawInd.go  |   7 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawReq.go  |   7 +-
 .../knxnetip/readwrite/model/ConnectionRequest.go  |   9 +-
 .../model/ConnectionRequestInformation.go          |   7 +-
 ...ConnectionRequestInformationDeviceManagement.go |   7 +-
 ...ConnectionRequestInformationTunnelConnection.go |   7 +-
 .../knxnetip/readwrite/model/ConnectionResponse.go |   9 +-
 .../readwrite/model/ConnectionResponseDataBlock.go |   7 +-
 .../ConnectionResponseDataBlockDeviceManagement.go |   7 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |   9 +-
 .../readwrite/model/ConnectionStateRequest.go      |   9 +-
 .../readwrite/model/ConnectionStateResponse.go     |   7 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |   9 +-
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |   9 +-
 .../knxnetip/readwrite/model/DescriptionRequest.go |   7 +-
 .../readwrite/model/DescriptionResponse.go         |   7 +-
 .../readwrite/model/DeviceConfigurationAck.go      |   9 +-
 .../model/DeviceConfigurationAckDataBlock.go       |   7 +-
 .../readwrite/model/DeviceConfigurationRequest.go  |   9 +-
 .../model/DeviceConfigurationRequestDataBlock.go   |   7 +-
 .../knxnetip/readwrite/model/DeviceStatus.go       |   7 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |   9 +-
 .../knxnetip/readwrite/model/DisconnectResponse.go |   7 +-
 .../readwrite/model/HPAIControlEndpoint.go         |   9 +-
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |   9 +-
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |   9 +-
 .../knxnetip/readwrite/model/HostProtocolCode.go   |  11 +-
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |   7 +-
 .../plc4go/knxnetip/readwrite/model/KNXAddress.go  |   7 +-
 .../knxnetip/readwrite/model/KNXGroupAddress.go    |   7 +-
 .../readwrite/model/KNXGroupAddress2Level.go       |   7 +-
 .../readwrite/model/KNXGroupAddress3Level.go       |   7 +-
 .../readwrite/model/KNXGroupAddressFreeLevel.go    |   7 +-
 .../knxnetip/readwrite/model/KNXNetIPMessage.go    |   7 +-
 .../knxnetip/readwrite/model/KnxDatapoint.go       |  10 +-
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |  11 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   7 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   7 +-
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   7 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   7 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   7 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   7 +-
 .../knxnetip/readwrite/model/KnxStaticHelper.go    |   4 +-
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |   7 +-
 .../model/ProjectInstallationIdentifier.go         |   7 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   7 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   7 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |   9 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |   9 +-
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |   7 +-
 .../plc4go/knxnetip/readwrite/model/Status.go      |  11 +-
 .../plc4go/knxnetip/readwrite/model/TPCI.go        |  11 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |   9 +-
 .../readwrite/model/TunnelingRequestDataBlock.go   |   7 +-
 .../knxnetip/readwrite/model/TunnelingResponse.go  |   9 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |   7 +-
 .../knxnetip/readwrite/model/UnknownMessage.go     |   7 +-
 .../internal/plc4go/modbus/ModbusMessageCodec.go   |   6 +-
 .../plc4go/internal/plc4go/modbus/ModbusReader.go  |   2 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |   4 +-
 .../modbus/readwrite/model/ModbusConstants.go      |   7 +-
 .../modbus/readwrite/model/ModbusDataType.go       | 242 ---------------------
 .../modbus/readwrite/model/ModbusDataTypeSizes.go  |  11 +-
 .../modbus/readwrite/model/ModbusErrorCode.go      |  11 +-
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |   7 +-
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |   7 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |   7 +-
 .../modbus/readwrite/model/ModbusPDUError.go       |   7 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |   7 +-
 .../model/ModbusPDUGetComEventCounterResponse.go   |   7 +-
 .../model/ModbusPDUGetComEventLogRequest.go        |   7 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |   7 +-
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |   7 +-
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |   7 +-
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |   7 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |   7 +-
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   7 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   7 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |   7 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |   7 +-
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   7 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |   7 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |   7 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |   7 +-
 .../model/ModbusPDUReadFileRecordRequest.go        |   9 +-
 .../model/ModbusPDUReadFileRecordRequestItem.go    |   7 +-
 .../model/ModbusPDUReadFileRecordResponse.go       |   9 +-
 .../model/ModbusPDUReadFileRecordResponseItem.go   |   7 +-
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |   7 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |   7 +-
 .../model/ModbusPDUReadInputRegistersRequest.go    |   7 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |   7 +-
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |   7 +-
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |   7 +-
 .../model/ModbusPDUReportServerIdRequest.go        |   7 +-
 .../model/ModbusPDUReportServerIdResponse.go       |   7 +-
 .../model/ModbusPDUWriteFileRecordRequest.go       |   9 +-
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |   7 +-
 .../model/ModbusPDUWriteFileRecordResponse.go      |   9 +-
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |   7 +-
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |   7 +-
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |   7 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |   7 +-
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |   7 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |   7 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |   7 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |   7 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |   7 +-
 .../modbus/readwrite/model/ModbusSerialADU.go      |   7 +-
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |   7 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |   9 +-
 .../readwrite/model/COTPPacketConnectionRequest.go |   7 +-
 .../model/COTPPacketConnectionResponse.go          |   7 +-
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |   7 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |   7 +-
 .../model/COTPPacketDisconnectResponse.go          |   7 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |   7 +-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |   7 +-
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   7 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   7 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   7 +-
 ...COTPParameterDisconnectAdditionalInformation.go |   7 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   7 +-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |  11 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |  11 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |   4 +-
 .../s7/readwrite/model/DataTransportErrorCode.go   |  11 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |  11 +-
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |  11 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |  11 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |   7 +-
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |   7 +-
 .../plc4go/s7/readwrite/model/S7Message.go         |  11 +-
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |   7 +-
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |   7 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |   7 +-
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |   7 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |   7 +-
 .../readwrite/model/S7ParameterReadVarRequest.go   |   7 +-
 .../readwrite/model/S7ParameterReadVarResponse.go  |   7 +-
 .../model/S7ParameterSetupCommunication.go         |   7 +-
 .../s7/readwrite/model/S7ParameterUserData.go      |   7 +-
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |   7 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |   7 +-
 .../readwrite/model/S7ParameterWriteVarRequest.go  |   7 +-
 .../readwrite/model/S7ParameterWriteVarResponse.go |   7 +-
 .../plc4go/s7/readwrite/model/S7Payload.go         |   7 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |   7 +-
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |   7 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |   7 +-
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   7 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |   7 +-
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |   7 +-
 .../readwrite/model/S7PayloadWriteVarResponse.go   |   7 +-
 .../plc4go/s7/readwrite/model/S7StaticHelper.go    |  30 +--
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  19 +-
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   7 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |   7 +-
 .../model/S7VarRequestParameterItemAddress.go      |   7 +-
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |   7 +-
 .../internal/plc4go/s7/readwrite/model/SzlId.go    |   7 +-
 .../s7/readwrite/model/SzlModuleTypeClass.go       |  11 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |  11 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |   7 +-
 .../plc4go/s7/readwrite/model/TransportSize.go     |  11 +-
 .../internal/plc4go/{spi => utils}/ReadBuffer.go   |   4 +-
 .../plc4go/internal/plc4go/{spi => utils}/Utils.go |   2 +-
 .../internal/plc4go/{spi => utils}/WriteBuffer.go  |   2 +-
 336 files changed, 1457 insertions(+), 1369 deletions(-)

diff --git a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
index c3e168a..74b91ff 100644
--- a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
+++ b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
@@ -18,7 +18,6 @@ under the License.
 */
 package org.apache.plc4x.plugins.codegenerator.protocol.freemarker;
 
-import jdk.nashorn.internal.runtime.regexp.joni.constants.StringType;
 import net.objecthunter.exp4j.Expression;
 import net.objecthunter.exp4j.ExpressionBuilder;
 import org.apache.plc4x.plugins.codegenerator.types.definitions.*;
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
index cff640f..a7a3e2a 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/field/ModbusField.java
@@ -79,7 +79,7 @@ public abstract class ModbusField implements PlcField {
     }
 
     public int getLengthBytes() {
-        return quantity * ModbusDataType.valueOf(dataType).getDataTypeSize();
+        return quantity * ModbusDataTypeSizes.enumForValue(dataType).getDataTypeSize();
     }
 
     public int getLengthWords() {
@@ -96,7 +96,7 @@ public abstract class ModbusField implements PlcField {
     }
 
     public int getDataTypeSize() {
-        return ModbusDataType.valueOf(dataType).getDataTypeSize();
+        return ModbusDataTypeSizes.enumForValue(dataType).getDataTypeSize();
     }
 
     @Override
diff --git a/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec b/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
index 84a9d4c..412bd2b 100644
--- a/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
+++ b/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
@@ -408,37 +408,6 @@
     ['IEC61131_WSTRING' WSTRING ['2']]
 ]
 
-[enum uint 8 'ModbusDataType' [uint 8 'dataTypeSize']
-    ['00' NULL ['0']]
-    ['01' BOOL ['1']]
-    ['10' BYTE ['1']]
-    ['11' WORD ['2']]
-    ['12' DWORD ['4']]
-    ['13' LWORD ['8']]
-    ['20' SINT ['1']]
-    ['21' INT ['2']]
-    ['22' DINT ['4']]
-    ['23' LINT ['8']]
-    ['24' USINT ['1']]
-    ['25' UINT ['2']]
-    ['26' UDINT ['4']]
-    ['27' ULINT ['8']]
-    ['30' REAL ['4']]
-    ['31' LREAL ['8']]
-    ['40' TIME ['8']]
-    ['41' LTIME ['8']]
-    ['50' DATE ['8']]
-    ['51' LDATE ['8']]
-    ['60' TIME_OF_DAY ['8']]
-    ['61' LTIME_OF_DAY ['8']]
-    ['70' DATE_AND_TIME ['8']]
-    ['71' LDATE_AND_TIME ['8']]
-    ['80' CHAR ['1']]
-    ['81' WCHAR ['2']]
-    ['82' STRING ['1']]
-    ['83' WSTRING ['2']]
-]
-
 [enum uint 8 'ModbusErrorCode'
     ['1'    ILLEGAL_FUNCTION]
     ['2'    ILLEGAL_DATA_ADDRESS]
diff --git a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
index 4b3b0ab..b9073e4 100644
--- a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
@@ -21,7 +21,7 @@ package drivers
 import (
 	"encoding/hex"
 	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/bacnetip/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 	"testing"
 )
 
@@ -31,7 +31,7 @@ func TestBacnetIp(t *testing.T) {
 	if err != nil {
 		t.Errorf("Error decoding test input")
 	}
-	rb := spi.ReadBufferNew(request)
+	rb := utils.ReadBufferNew(request)
 	adu, err := model.BVLCParse(rb)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
index beef415..e00fd0a 100644
--- a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
@@ -19,10 +19,10 @@
 package drivers
 
 import (
-	"encoding/hex"
-	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-	"testing"
+    "encoding/hex"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+    "testing"
 )
 
 func TestKnxNetIp(t *testing.T) {
@@ -31,7 +31,7 @@ func TestKnxNetIp(t *testing.T) {
 	if err != nil {
 		t.Errorf("Error decoding test input")
 	}
-	rb := spi.ReadBufferNew(request)
+	rb := utils.ReadBufferNew(request)
 	adu, err := model.KNXNetIPMessageParse(rb)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/cmd/main/drivers/modbus_test.go b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
index 2560457..b6b99e0 100644
--- a/sandbox/plc4go/cmd/main/drivers/modbus_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
@@ -25,9 +25,9 @@ import (
     "os"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/modbus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/modbus/readwrite/model"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/testutils"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/transports/tcp"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go"
     "strings"
     "testing"
@@ -52,13 +52,13 @@ func test(t *testing.T, rawMessage string, response bool) {
 	if err != nil {
 		t.Errorf("Error decoding test input")
 	}
-	rb := spi.ReadBufferNew(request)
+	rb := utils.ReadBufferNew(request)
 	adu, err := model.ModbusTcpADUParse(rb, response)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
 	}
 	if adu != nil {
-		wb := spi.WriteBufferNew()
+		wb := utils.WriteBufferNew()
 		val := model.CastIModbusTcpADU(adu)
 		val.Serialize(*wb)
 		serializedMessage := hex.EncodeToString(wb.GetBytes())
@@ -82,7 +82,7 @@ func Connection(t *testing.T) {
 		Pdu:                   &pdu,
 	}
 
-	wb := spi.WriteBufferNew()
+	wb := utils.WriteBufferNew()
 	adu.Serialize(*wb)
 
 	servAddr := "192.168.23.30:502"
@@ -112,7 +112,7 @@ func Connection(t *testing.T) {
 		os.Exit(1)
 	}
 
-	rb := spi.ReadBufferNew(buffer[0:numBytes])
+	rb := utils.ReadBufferNew(buffer[0:numBytes])
 	response, err := model.ModbusTcpADUParse(rb, true)
 	if err != nil {
 		println("Parsing response failed:", err.Error())
diff --git a/sandbox/plc4go/cmd/main/drivers/s7_test.go b/sandbox/plc4go/cmd/main/drivers/s7_test.go
index 7c2ae18..6ce57fb 100644
--- a/sandbox/plc4go/cmd/main/drivers/s7_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/s7_test.go
@@ -19,10 +19,10 @@
 package drivers
 
 import (
-	"encoding/hex"
-	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-	"testing"
+    "encoding/hex"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+    "testing"
 )
 
 func TestS7(t *testing.T) {
@@ -31,7 +31,7 @@ func TestS7(t *testing.T) {
 	if err != nil {
 		// Output an error ...
 	}
-	rb := spi.ReadBufferNew(request)
+	rb := utils.ReadBufferNew(request)
 	adu, err := model.TPKTPacketParse(rb)
 	if err != nil {
 		t.Errorf("Error parsing: %s", err)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 4cc7b94..2661ba9 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type APDU struct {
 type IAPDU interface {
     spi.Message
     ApduType() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type APDUInitializer interface {
@@ -82,7 +83,7 @@ func (m APDU) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
+func APDUParse(io *utils.ReadBuffer, apduLength uint16) (spi.Message, error) {
 
     // Discriminator Field (apduType) (Used as input to a switch field)
     apduType, _apduTypeErr := io.ReadUint8(4)
@@ -119,7 +120,7 @@ func APDUParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func APDUSerialize(io spi.WriteBuffer, m APDU, i IAPDU, childSerialize func() error) error {
+func APDUSerialize(io utils.WriteBuffer, m APDU, i IAPDU, childSerialize func() error) error {
 
     // Discriminator Field (apduType) (Used as input to a switch field)
     apduType := uint8(i.ApduType())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
index a210794..22489a2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type APDUAbort struct {
 // The corresponding interface
 type IAPDUAbort interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -96,7 +97,7 @@ func (m APDUAbort) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUAbortParse(io *spi.ReadBuffer) (APDUInitializer, error) {
+func APDUAbortParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -134,7 +135,7 @@ func APDUAbortParse(io *spi.ReadBuffer) (APDUInitializer, error) {
     return NewAPDUAbort(server, originalInvokeId, abortReason), nil
 }
 
-func (m APDUAbort) Serialize(io spi.WriteBuffer) error {
+func (m APDUAbort) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Reserved Field (reserved)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
index 3e9d4c4..03483a6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -39,7 +40,7 @@ type APDUComplexAck struct {
 // The corresponding interface
 type IAPDUComplexAck interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -113,7 +114,7 @@ func (m APDUComplexAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUComplexAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
+func APDUComplexAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
     // Simple Field (segmentedMessage)
     segmentedMessage, _segmentedMessageErr := io.ReadBit()
@@ -184,7 +185,7 @@ func APDUComplexAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
     return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
 }
 
-func (m APDUComplexAck) Serialize(io spi.WriteBuffer) error {
+func (m APDUComplexAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (segmentedMessage)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
index 824a786..08726bc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -42,7 +43,7 @@ type APDUConfirmedRequest struct {
 // The corresponding interface
 type IAPDUConfirmedRequest interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -125,7 +126,7 @@ func (m APDUConfirmedRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUConfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
+func APDUConfirmedRequestParse(io *utils.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
 
     // Simple Field (segmentedMessage)
     segmentedMessage, _segmentedMessageErr := io.ReadBit()
@@ -200,7 +201,7 @@ func APDUConfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUIniti
     }
 
     // Simple Field (serviceRequest)
-    _serviceRequestMessage, _err := BACnetConfirmedServiceRequestParse(io, uint16(apduLength) - uint16(uint16(uint16(uint16(3)) + uint16(uint16(spi.InlineIf(segmentedMessage, uint16(uint16(2)), uint16(uint16(0))))))))
+    _serviceRequestMessage, _err := BACnetConfirmedServiceRequestParse(io, uint16(apduLength) - uint16(uint16(uint16(uint16(3)) + uint16(uint16(utils.InlineIf(segmentedMessage, uint16(uint16(2)), uint16(uint16(0))))))))
     if _err != nil {
         return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
     }
@@ -214,7 +215,7 @@ func APDUConfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUIniti
     return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
 }
 
-func (m APDUConfirmedRequest) Serialize(io spi.WriteBuffer) error {
+func (m APDUConfirmedRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (segmentedMessage)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
index e35cf4d..08fe679 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type APDUError struct {
 // The corresponding interface
 type IAPDUError interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,7 +94,7 @@ func (m APDUError) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUErrorParse(io *spi.ReadBuffer) (APDUInitializer, error) {
+func APDUErrorParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -130,7 +131,7 @@ func APDUErrorParse(io *spi.ReadBuffer) (APDUInitializer, error) {
     return NewAPDUError(originalInvokeId, error), nil
 }
 
-func (m APDUError) Serialize(io spi.WriteBuffer) error {
+func (m APDUError) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Reserved Field (reserved)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
index a3858e1..6a269e3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type APDUReject struct {
 // The corresponding interface
 type IAPDUReject interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -92,7 +93,7 @@ func (m APDUReject) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDURejectParse(io *spi.ReadBuffer) (APDUInitializer, error) {
+func APDURejectParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -124,7 +125,7 @@ func APDURejectParse(io *spi.ReadBuffer) (APDUInitializer, error) {
     return NewAPDUReject(originalInvokeId, rejectReason), nil
 }
 
-func (m APDUReject) Serialize(io spi.WriteBuffer) error {
+func (m APDUReject) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Reserved Field (reserved)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
index 0fe5e7f..5b6b65d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -37,7 +38,7 @@ type APDUSegmentAck struct {
 // The corresponding interface
 type IAPDUSegmentAck interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -104,7 +105,7 @@ func (m APDUSegmentAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUSegmentAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
+func APDUSegmentAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -154,7 +155,7 @@ func APDUSegmentAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
     return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
 }
 
-func (m APDUSegmentAck) Serialize(io spi.WriteBuffer) error {
+func (m APDUSegmentAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Reserved Field (reserved)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
index 4d08fb1..9078431 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type APDUSimpleAck struct {
 // The corresponding interface
 type IAPDUSimpleAck interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -92,7 +93,7 @@ func (m APDUSimpleAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUSimpleAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
+func APDUSimpleAckParse(io *utils.ReadBuffer) (APDUInitializer, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -124,7 +125,7 @@ func APDUSimpleAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
     return NewAPDUSimpleAck(originalInvokeId, serviceChoice), nil
 }
 
-func (m APDUSimpleAck) Serialize(io spi.WriteBuffer) error {
+func (m APDUSimpleAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Reserved Field (reserved)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
index c5c17e4..bc36956 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type APDUUnconfirmedRequest struct {
 // The corresponding interface
 type IAPDUUnconfirmedRequest interface {
     IAPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -89,7 +90,7 @@ func (m APDUUnconfirmedRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APDUUnconfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
+func APDUUnconfirmedRequestParse(io *utils.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -120,7 +121,7 @@ func APDUUnconfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUIni
     return NewAPDUUnconfirmedRequest(serviceRequest), nil
 }
 
-func (m APDUUnconfirmedRequest) Serialize(io spi.WriteBuffer) error {
+func (m APDUUnconfirmedRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Reserved Field (reserved)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
index 4d6b6d3..ba85181 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type ApplicationTag int8
 
 type IApplicationTag interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -93,12 +96,12 @@ func (m ApplicationTag) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ApplicationTagParse(io *spi.ReadBuffer) (ApplicationTag, error) {
+func ApplicationTagParse(io *utils.ReadBuffer) (ApplicationTag, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e ApplicationTag) Serialize(io spi.WriteBuffer) error {
+func (e ApplicationTag) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
index 28d9927..0834600 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type BACnetAddress struct {
 // The corresponding interface
 type IBACnetAddress interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -82,7 +83,7 @@ func (m BACnetAddress) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BACnetAddressParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Array field (address)
     // Count array
@@ -106,7 +107,7 @@ func BACnetAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewBACnetAddress(address, port), nil
 }
 
-func (m BACnetAddress) Serialize(io spi.WriteBuffer) error {
+func (m BACnetAddress) Serialize(io utils.WriteBuffer) error {
 
     // Array Field (address)
     if m.Address != nil {
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index 48a3afd..16970f9 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetConfirmedServiceACK struct {
 type IBACnetConfirmedServiceACK interface {
     spi.Message
     ServiceChoice() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BACnetConfirmedServiceACKInitializer interface {
@@ -82,7 +83,7 @@ func (m BACnetConfirmedServiceACK) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BACnetConfirmedServiceACKParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
@@ -131,7 +132,7 @@ func BACnetConfirmedServiceACKParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func BACnetConfirmedServiceACKSerialize(io spi.WriteBuffer, m BACnetConfirmedServiceACK, i IBACnetConfirmedServiceACK, childSerialize func() error) error {
+func BACnetConfirmedServiceACKSerialize(io utils.WriteBuffer, m BACnetConfirmedServiceACK, i IBACnetConfirmedServiceACK, childSerialize func() error) error {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice := uint8(i.ServiceChoice())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
index 346b5c7..f656773 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKAtomicReadFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicReadFile interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKAtomicReadFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKAtomicReadFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKAtomicReadFileParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKAtomicReadFile(), nil
 }
 
-func (m BACnetConfirmedServiceACKAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKAtomicReadFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
index 318f293..3246237 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicWriteFile interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKAtomicWriteFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKAtomicWriteFileParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKAtomicWriteFile(), nil
 }
 
-func (m BACnetConfirmedServiceACKAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKAtomicWriteFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
index a73fb3f..b1176ce 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKConfirmedPrivateTransfer interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) LengthInBytes() uint1
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKConfirmedPrivateTransferParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
index 1ea54fc..ee20bf1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKCreateObject struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKCreateObject interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKCreateObject) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKCreateObjectParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKCreateObjectParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKCreateObject(), nil
 }
 
-func (m BACnetConfirmedServiceACKCreateObject) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKCreateObject) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
index 28e3e81..b2d2c5a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKGetAlarmSummary struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetAlarmSummary interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKGetAlarmSummary) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKGetAlarmSummaryParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKGetAlarmSummary(), nil
 }
 
-func (m BACnetConfirmedServiceACKGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKGetAlarmSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
index 793b65b..047ec97 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEnrollmentSummary interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKGetEnrollmentSummary) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKGetEnrollmentSummaryParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKGetEnrollmentSummary(), nil
 }
 
-func (m BACnetConfirmedServiceACKGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKGetEnrollmentSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
index 382c2aa..8971cdd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKGetEventInformation struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEventInformation interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKGetEventInformation) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKGetEventInformationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKGetEventInformationParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKGetEventInformation(), nil
 }
 
-func (m BACnetConfirmedServiceACKGetEventInformation) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKGetEventInformation) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
index cd06adf..20a49dd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKReadProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadProperty interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKReadProperty) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKReadPropertyParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKReadPropertyParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKReadProperty(), nil
 }
 
-func (m BACnetConfirmedServiceACKReadProperty) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKReadProperty) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
index ccd2bce..90ef818 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadPropertyMultiple interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKReadPropertyMultiple) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKReadPropertyMultipleParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKReadPropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceACKReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKReadPropertyMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
index 13f9fcc..e9c41e5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKReadRange struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadRange interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKReadRange) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKReadRangeParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKReadRangeParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKReadRange(), nil
 }
 
-func (m BACnetConfirmedServiceACKReadRange) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKReadRange) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
index c5b7aca..b44861d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedAuthenticate interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKRemovedAuthenticate) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKRemovedAuthenticateParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKRemovedAuthenticate(), nil
 }
 
-func (m BACnetConfirmedServiceACKRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKRemovedAuthenticate) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
index fefcb4b..1b9719d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedReadPropertyConditional interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) LengthInBytes()
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
index bda3931..cedb441 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKVTData struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTData interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKVTData) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKVTDataParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKVTDataParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKVTData(), nil
 }
 
-func (m BACnetConfirmedServiceACKVTData) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKVTData) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
index 65949cb..299fc75 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceACKVTOpen struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTOpen interface {
     IBACnetConfirmedServiceACK
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceACKVTOpen) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceACKVTOpenParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
+func BACnetConfirmedServiceACKVTOpenParse(io *utils.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceACKVTOpen(), nil
 }
 
-func (m BACnetConfirmedServiceACKVTOpen) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceACKVTOpen) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index ec7bf7b..ed76387 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetConfirmedServiceRequest struct {
 type IBACnetConfirmedServiceRequest interface {
     spi.Message
     ServiceChoice() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BACnetConfirmedServiceRequestInitializer interface {
@@ -82,7 +83,7 @@ func (m BACnetConfirmedServiceRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.Message, error) {
+func BACnetConfirmedServiceRequestParse(io *utils.ReadBuffer, len uint16) (spi.Message, error) {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
@@ -177,7 +178,7 @@ func BACnetConfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.Mes
     return initializer.initialize(), nil
 }
 
-func BACnetConfirmedServiceRequestSerialize(io spi.WriteBuffer, m BACnetConfirmedServiceRequest, i IBACnetConfirmedServiceRequest, childSerialize func() error) error {
+func BACnetConfirmedServiceRequestSerialize(io utils.WriteBuffer, m BACnetConfirmedServiceRequest, i IBACnetConfirmedServiceRequest, childSerialize func() error) error {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice := uint8(i.ServiceChoice())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
index fb3b62e..220e75c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestAcknowledgeAlarm struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAcknowledgeAlarm interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestAcknowledgeAlarmParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestAcknowledgeAlarmParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestAcknowledgeAlarm(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
index d96409c..d0a03ee 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestAddListElement struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAddListElement interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestAddListElement) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestAddListElementParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestAddListElementParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestAddListElement(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAddListElement) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestAddListElement) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
index f1cf70f..a43166d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestAtomicReadFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAtomicReadFile interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestAtomicReadFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestAtomicReadFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestAtomicReadFileParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestAtomicReadFile(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestAtomicReadFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
index c275039..fc9b23a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAtomicWriteFile interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestAtomicWriteFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestAtomicWriteFileParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestAtomicWriteFile(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
index 5d9c3ef..42c3525 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
     "strconv"
 )
 
@@ -49,7 +50,7 @@ type BACnetConfirmedServiceRequestConfirmedCOVNotification struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotification interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -146,7 +147,7 @@ func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBytes() u
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io *spi.ReadBuffer, len uint16) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io *utils.ReadBuffer, len uint16) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Const Field (subscriberProcessIdentifierHeader)
     subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
@@ -272,7 +273,7 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io *spi.ReadBuff
     return NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotificationsType, issueConfirmedNotificationsInstanceNumber, lifetimeLength, lifetimeSeconds, notifications), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (subscriberProcessIdentifierHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
index 765fa14..3a524ad 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) LengthInB
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
index 81c8022..f837ef8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestConfirmedEventNotification struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedEventNotification interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestConfirmedEventNotification) LengthInBytes()
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestConfirmedEventNotificationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestConfirmedEventNotificationParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestConfirmedEventNotification(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedEventNotification) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestConfirmedEventNotification) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
index e141b99..9b047a9 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedPrivateTransfer interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) LengthInBytes() u
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
index c97c998..ebd2056 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestConfirmedTextMessage struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedTextMessage interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestConfirmedTextMessage) LengthInBytes() uint1
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestConfirmedTextMessageParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestConfirmedTextMessageParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestConfirmedTextMessage(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedTextMessage) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestConfirmedTextMessage) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
index 6df1941..38a351d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestCreateObject struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestCreateObject interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestCreateObject) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestCreateObjectParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestCreateObjectParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestCreateObject(), nil
 }
 
-func (m BACnetConfirmedServiceRequestCreateObject) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestCreateObject) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
index 621d73f..848a949 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestDeleteObject struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeleteObject interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestDeleteObject) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestDeleteObjectParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestDeleteObjectParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestDeleteObject(), nil
 }
 
-func (m BACnetConfirmedServiceRequestDeleteObject) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestDeleteObject) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
index 3056872..7b6b495a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestDeviceCommunicationControl struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeviceCommunicationControl interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) LengthInBytes()
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestDeviceCommunicationControl(), nil
 }
 
-func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
index 9c91b5f..34a1ec2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEnrollmentSummary interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) LengthInBytes() uint1
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestGetEnrollmentSummary(), nil
 }
 
-func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
index 2f6dc20..9963b5d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestGetEventInformation struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEventInformation interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestGetEventInformation) LengthInBytes() uint16
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestGetEventInformationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestGetEventInformationParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestGetEventInformation(), nil
 }
 
-func (m BACnetConfirmedServiceRequestGetEventInformation) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestGetEventInformation) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
index 43a29ea..ca05c4a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestLifeSafetyOperation struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestLifeSafetyOperation interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestLifeSafetyOperation) LengthInBytes() uint16
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestLifeSafetyOperationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestLifeSafetyOperationParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestLifeSafetyOperation(), nil
 }
 
-func (m BACnetConfirmedServiceRequestLifeSafetyOperation) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestLifeSafetyOperation) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
index 5e653e1..124932e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "strconv"
 )
 
@@ -40,7 +41,7 @@ type BACnetConfirmedServiceRequestReadProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadProperty interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -109,7 +110,7 @@ func (m BACnetConfirmedServiceRequestReadProperty) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestReadPropertyParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestReadPropertyParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Const Field (objectIdentifierHeader)
     objectIdentifierHeader, _objectIdentifierHeaderErr := io.ReadUint8(8)
@@ -163,7 +164,7 @@ func BACnetConfirmedServiceRequestReadPropertyParse(io *spi.ReadBuffer) (BACnetC
     return NewBACnetConfirmedServiceRequestReadProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier), nil
 }
 
-func (m BACnetConfirmedServiceRequestReadProperty) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestReadProperty) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (objectIdentifierHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
index 641b0b7..612cf04 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadPropertyMultiple interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestReadPropertyMultiple) LengthInBytes() uint1
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestReadPropertyMultipleParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestReadPropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestReadPropertyMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
index bf4629e..a5fbac8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestReadRange struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadRange interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestReadRange) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestReadRangeParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestReadRangeParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestReadRange(), nil
 }
 
-func (m BACnetConfirmedServiceRequestReadRange) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestReadRange) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
index 9422cc1..9f3781b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestReinitializeDevice struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReinitializeDevice interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestReinitializeDevice) LengthInBytes() uint16
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestReinitializeDeviceParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestReinitializeDeviceParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestReinitializeDevice(), nil
 }
 
-func (m BACnetConfirmedServiceRequestReinitializeDevice) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestReinitializeDevice) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
index 038b46d..4c9d450 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestRemoveListElement struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemoveListElement interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestRemoveListElement) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestRemoveListElementParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestRemoveListElementParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestRemoveListElement(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemoveListElement) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestRemoveListElement) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
index 654f29b..1119b03 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemovedAuthenticate interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestRemovedAuthenticate) LengthInBytes() uint16
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestRemovedAuthenticateParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestRemovedAuthenticate(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestRemovedAuthenticate) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
index b580584..72684a5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemovedReadPropertyConditional interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) LengthInByt
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestRemovedReadPropertyConditionalParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
index 7ce7d40..628e2f8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestRemovedRequestKey struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemovedRequestKey interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestRemovedRequestKey) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestRemovedRequestKeyParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestRemovedRequestKeyParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestRemovedRequestKey(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemovedRequestKey) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestRemovedRequestKey) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index 51d8443..e51897a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "strconv"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -45,7 +46,7 @@ type BACnetConfirmedServiceRequestSubscribeCOV struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOV interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -129,7 +130,7 @@ func (m BACnetConfirmedServiceRequestSubscribeCOV) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestSubscribeCOVParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestSubscribeCOVParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Const Field (subscriberProcessIdentifierHeader)
     subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
@@ -222,7 +223,7 @@ func BACnetConfirmedServiceRequestSubscribeCOVParse(io *spi.ReadBuffer) (BACnetC
     return NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotifications, lifetimeLength, lifetimeSeconds), nil
 }
 
-func (m BACnetConfirmedServiceRequestSubscribeCOV) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestSubscribeCOV) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (subscriberProcessIdentifierHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
index 5990e38..3efea1e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestSubscribeCOVProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOVProperty interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) LengthInBytes() uint1
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestSubscribeCOVProperty(), nil
 }
 
-func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
index caddd83..7a9aac6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) LengthInBytes
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
index 7241a50..8a60aea 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestVTClose struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestVTClose interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestVTClose) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestVTCloseParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestVTCloseParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestVTClose(), nil
 }
 
-func (m BACnetConfirmedServiceRequestVTClose) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestVTClose) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
index a0d2e6b..c85121b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestVTData struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestVTData interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestVTData) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestVTDataParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestVTDataParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestVTData(), nil
 }
 
-func (m BACnetConfirmedServiceRequestVTData) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestVTData) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
index 2c7464e..c18c64d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestVTOpen struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestVTOpen interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestVTOpen) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestVTOpenParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestVTOpenParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestVTOpen(), nil
 }
 
-func (m BACnetConfirmedServiceRequestVTOpen) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestVTOpen) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
index 292d1ed..1d9774c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
     "strconv"
 )
 
@@ -45,7 +46,7 @@ type BACnetConfirmedServiceRequestWriteProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestWriteProperty interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -128,7 +129,7 @@ func (m BACnetConfirmedServiceRequestWriteProperty) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestWritePropertyParse(io *spi.ReadBuffer, len uint16) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestWritePropertyParse(io *utils.ReadBuffer, len uint16) (BACnetConfirmedServiceRequestInitializer, error) {
     var startPos = io.GetPos()
     var curPos uint16
 
@@ -229,7 +230,7 @@ func BACnetConfirmedServiceRequestWritePropertyParse(io *spi.ReadBuffer, len uin
     return NewBACnetConfirmedServiceRequestWriteProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier, value, priority), nil
 }
 
-func (m BACnetConfirmedServiceRequestWriteProperty) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestWriteProperty) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (objectIdentifierHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
index bcbe62b..2aa7478 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetConfirmedServiceRequestWritePropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestWritePropertyMultiple interface {
     IBACnetConfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetConfirmedServiceRequestWritePropertyMultiple) LengthInBytes() uint
     return m.LengthInBits() / 8
 }
 
-func BACnetConfirmedServiceRequestWritePropertyMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
+func BACnetConfirmedServiceRequestWritePropertyMultipleParse(io *utils.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetConfirmedServiceRequestWritePropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestWritePropertyMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetConfirmedServiceRequestWritePropertyMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
index 65c461d..8ebe2f2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetError struct {
 type IBACnetError interface {
     spi.Message
     ServiceChoice() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BACnetErrorInitializer interface {
@@ -82,7 +83,7 @@ func (m BACnetError) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BACnetErrorParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
@@ -131,7 +132,7 @@ func BACnetErrorParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func BACnetErrorSerialize(io spi.WriteBuffer, m BACnetError, i IBACnetError, childSerialize func() error) error {
+func BACnetErrorSerialize(io utils.WriteBuffer, m BACnetError, i IBACnetError, childSerialize func() error) error {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice := uint8(i.ServiceChoice())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
index b2e9fda..4820079 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorAtomicReadFile struct {
 // The corresponding interface
 type IBACnetErrorAtomicReadFile interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorAtomicReadFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorAtomicReadFileParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorAtomicReadFileParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorAtomicReadFile(), nil
 }
 
-func (m BACnetErrorAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorAtomicReadFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
index 18d99f1..0da7eff 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetErrorAtomicWriteFile interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorAtomicWriteFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorAtomicWriteFileParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorAtomicWriteFile(), nil
 }
 
-func (m BACnetErrorAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorAtomicWriteFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
index 38afd07..0ece5a3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetErrorConfirmedPrivateTransfer interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorConfirmedPrivateTransfer) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorConfirmedPrivateTransferParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetErrorConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorConfirmedPrivateTransfer) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
index 39d61f7..b8e172a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorCreateObject struct {
 // The corresponding interface
 type IBACnetErrorCreateObject interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorCreateObject) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorCreateObjectParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorCreateObjectParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorCreateObject(), nil
 }
 
-func (m BACnetErrorCreateObject) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorCreateObject) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
index bca328a..0047b20 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorGetAlarmSummary struct {
 // The corresponding interface
 type IBACnetErrorGetAlarmSummary interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorGetAlarmSummary) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorGetAlarmSummaryParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorGetAlarmSummary(), nil
 }
 
-func (m BACnetErrorGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorGetAlarmSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
index bddd6b8..88bd54a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetErrorGetEnrollmentSummary interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorGetEnrollmentSummary) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorGetEnrollmentSummaryParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorGetEnrollmentSummary(), nil
 }
 
-func (m BACnetErrorGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorGetEnrollmentSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
index a9d9818..f6ebc2e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorGetEventInformation struct {
 // The corresponding interface
 type IBACnetErrorGetEventInformation interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorGetEventInformation) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorGetEventInformationParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorGetEventInformationParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorGetEventInformation(), nil
 }
 
-func (m BACnetErrorGetEventInformation) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorGetEventInformation) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
index a166ea8..98f2c27 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "strconv"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -40,7 +41,7 @@ type BACnetErrorReadProperty struct {
 // The corresponding interface
 type IBACnetErrorReadProperty interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -111,7 +112,7 @@ func (m BACnetErrorReadProperty) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorReadPropertyParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorReadPropertyParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Const Field (errorClassHeader)
     errorClassHeader, _errorClassHeaderErr := io.ReadUint8(5)
@@ -171,7 +172,7 @@ func BACnetErrorReadPropertyParse(io *spi.ReadBuffer) (BACnetErrorInitializer, e
     return NewBACnetErrorReadProperty(errorClassLength, errorClass, errorCodeLength, errorCode), nil
 }
 
-func (m BACnetErrorReadProperty) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorReadProperty) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (errorClassHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
index bb11418..84494cd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetErrorReadPropertyMultiple interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorReadPropertyMultiple) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorReadPropertyMultipleParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorReadPropertyMultiple(), nil
 }
 
-func (m BACnetErrorReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorReadPropertyMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
index ded5753..808129e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorReadRange struct {
 // The corresponding interface
 type IBACnetErrorReadRange interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorReadRange) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorReadRangeParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorReadRangeParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorReadRange(), nil
 }
 
-func (m BACnetErrorReadRange) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorReadRange) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
index ffc5b86..dd78eb8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetErrorRemovedAuthenticate interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorRemovedAuthenticate) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorRemovedAuthenticateParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorRemovedAuthenticate(), nil
 }
 
-func (m BACnetErrorRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorRemovedAuthenticate) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
index 68952e2..6ad8879 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetErrorRemovedReadPropertyConditional interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorRemovedReadPropertyConditional) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorRemovedReadPropertyConditionalParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetErrorRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorRemovedReadPropertyConditional) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
index 9320b00..e0eadf9 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorVTData struct {
 // The corresponding interface
 type IBACnetErrorVTData interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorVTData) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorVTDataParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorVTDataParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorVTData(), nil
 }
 
-func (m BACnetErrorVTData) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorVTData) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
index fd48510..90c3507 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetErrorVTOpen struct {
 // The corresponding interface
 type IBACnetErrorVTOpen interface {
     IBACnetError
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetErrorVTOpen) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetErrorVTOpenParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error) {
+func BACnetErrorVTOpenParse(io *utils.ReadBuffer) (BACnetErrorInitializer, error) {
 
     // Create the instance
     return NewBACnetErrorVTOpen(), nil
 }
 
-func (m BACnetErrorVTOpen) Serialize(io spi.WriteBuffer) error {
+func (m BACnetErrorVTOpen) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
index 8a183df..b49ad46 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type BACnetNetworkType uint8
 
 type IBACnetNetworkType interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -87,12 +90,12 @@ func (m BACnetNetworkType) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetNetworkTypeParse(io *spi.ReadBuffer) (BACnetNetworkType, error) {
+func BACnetNetworkTypeParse(io *utils.ReadBuffer) (BACnetNetworkType, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e BACnetNetworkType) Serialize(io spi.WriteBuffer) error {
+func (e BACnetNetworkType) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
index dcfe467..9d78c7c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type BACnetNodeType uint8
 
 type IBACnetNodeType interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -120,12 +123,12 @@ func (m BACnetNodeType) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetNodeTypeParse(io *spi.ReadBuffer) (BACnetNodeType, error) {
+func BACnetNodeTypeParse(io *utils.ReadBuffer) (BACnetNodeType, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e BACnetNodeType) Serialize(io spi.WriteBuffer) error {
+func (e BACnetNodeType) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
index b3a6634..ddba7ac 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type BACnetNotifyType uint8
 
 type IBACnetNotifyType interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -63,12 +66,12 @@ func (m BACnetNotifyType) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetNotifyTypeParse(io *spi.ReadBuffer) (BACnetNotifyType, error) {
+func BACnetNotifyTypeParse(io *utils.ReadBuffer) (BACnetNotifyType, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e BACnetNotifyType) Serialize(io spi.WriteBuffer) error {
+func (e BACnetNotifyType) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
index 309db9a..cbd47a0 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type BACnetObjectType uint16
 
 type IBACnetObjectType interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -231,12 +234,12 @@ func (m BACnetObjectType) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetObjectTypeParse(io *spi.ReadBuffer) (BACnetObjectType, error) {
+func BACnetObjectTypeParse(io *utils.ReadBuffer) (BACnetObjectType, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e BACnetObjectType) Serialize(io spi.WriteBuffer) error {
+func (e BACnetObjectType) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
index 5373a42..87cb0e3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetServiceAck struct {
 type IBACnetServiceAck interface {
     spi.Message
     ServiceChoice() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BACnetServiceAckInitializer interface {
@@ -82,7 +83,7 @@ func (m BACnetServiceAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BACnetServiceAckParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
@@ -131,7 +132,7 @@ func BACnetServiceAckParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func BACnetServiceAckSerialize(io spi.WriteBuffer, m BACnetServiceAck, i IBACnetServiceAck, childSerialize func() error) error {
+func BACnetServiceAckSerialize(io utils.WriteBuffer, m BACnetServiceAck, i IBACnetServiceAck, childSerialize func() error) error {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice := uint8(i.ServiceChoice())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
index a590bfa..e8840cc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckAtomicReadFile struct {
 // The corresponding interface
 type IBACnetServiceAckAtomicReadFile interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckAtomicReadFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckAtomicReadFileParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckAtomicReadFileParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckAtomicReadFile(), nil
 }
 
-func (m BACnetServiceAckAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckAtomicReadFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
index 0ef98f0..e3c52c7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetServiceAckAtomicWriteFile interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckAtomicWriteFile) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckAtomicWriteFileParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckAtomicWriteFile(), nil
 }
 
-func (m BACnetServiceAckAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckAtomicWriteFile) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
index bd6bb53..6c83ef7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetServiceAckConfirmedPrivateTransfer interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckConfirmedPrivateTransfer) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckConfirmedPrivateTransferParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetServiceAckConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckConfirmedPrivateTransfer) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
index a4ac282..859bf7f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckCreateObject struct {
 // The corresponding interface
 type IBACnetServiceAckCreateObject interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckCreateObject) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckCreateObjectParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckCreateObjectParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckCreateObject(), nil
 }
 
-func (m BACnetServiceAckCreateObject) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckCreateObject) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
index 3eda36a..4808898 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckGetAlarmSummary struct {
 // The corresponding interface
 type IBACnetServiceAckGetAlarmSummary interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckGetAlarmSummary) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckGetAlarmSummaryParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckGetAlarmSummary(), nil
 }
 
-func (m BACnetServiceAckGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckGetAlarmSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
index 0eab3e8..7947d5c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetServiceAckGetEnrollmentSummary interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckGetEnrollmentSummary) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckGetEnrollmentSummaryParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckGetEnrollmentSummary(), nil
 }
 
-func (m BACnetServiceAckGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckGetEnrollmentSummary) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
index 3efef26..b9f03d8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckGetEventInformation struct {
 // The corresponding interface
 type IBACnetServiceAckGetEventInformation interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckGetEventInformation) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckGetEventInformationParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckGetEventInformationParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckGetEventInformation(), nil
 }
 
-func (m BACnetServiceAckGetEventInformation) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckGetEventInformation) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index d65429a..efa5312 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
     "strconv"
 )
 
@@ -44,7 +45,7 @@ type BACnetServiceAckReadProperty struct {
 // The corresponding interface
 type IBACnetServiceAckReadProperty interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -122,7 +123,7 @@ func (m BACnetServiceAckReadProperty) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckReadPropertyParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckReadPropertyParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Const Field (objectIdentifierHeader)
     objectIdentifierHeader, _objectIdentifierHeaderErr := io.ReadUint8(8)
@@ -205,7 +206,7 @@ func BACnetServiceAckReadPropertyParse(io *spi.ReadBuffer) (BACnetServiceAckInit
     return NewBACnetServiceAckReadProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier, value), nil
 }
 
-func (m BACnetServiceAckReadProperty) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckReadProperty) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (objectIdentifierHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
index 27c2907..a31d7c8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetServiceAckReadPropertyMultiple interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckReadPropertyMultiple) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckReadPropertyMultipleParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckReadPropertyMultiple(), nil
 }
 
-func (m BACnetServiceAckReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckReadPropertyMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
index 0a93ec2..d450049 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckReadRange struct {
 // The corresponding interface
 type IBACnetServiceAckReadRange interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckReadRange) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckReadRangeParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckReadRangeParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckReadRange(), nil
 }
 
-func (m BACnetServiceAckReadRange) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckReadRange) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
index ccd0d74..fb2ce98 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetServiceAckRemovedAuthenticate interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckRemovedAuthenticate) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckRemovedAuthenticateParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckRemovedAuthenticate(), nil
 }
 
-func (m BACnetServiceAckRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckRemovedAuthenticate) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
index 2dddf73..6884f5e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetServiceAckRemovedReadPropertyConditional interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckRemovedReadPropertyConditional) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckRemovedReadPropertyConditionalParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetServiceAckRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckRemovedReadPropertyConditional) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
index 716cac3..7b064e4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckVTData struct {
 // The corresponding interface
 type IBACnetServiceAckVTData interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckVTData) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckVTDataParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckVTDataParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckVTData(), nil
 }
 
-func (m BACnetServiceAckVTData) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckVTData) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
index 7a80230..dba6a5a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetServiceAckVTOpen struct {
 // The corresponding interface
 type IBACnetServiceAckVTOpen interface {
     IBACnetServiceAck
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetServiceAckVTOpen) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetServiceAckVTOpenParse(io *spi.ReadBuffer) (BACnetServiceAckInitializer, error) {
+func BACnetServiceAckVTOpenParse(io *utils.ReadBuffer) (BACnetServiceAckInitializer, error) {
 
     // Create the instance
     return NewBACnetServiceAckVTOpen(), nil
 }
 
-func (m BACnetServiceAckVTOpen) Serialize(io spi.WriteBuffer) error {
+func (m BACnetServiceAckVTOpen) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index e24c650..fae4973 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -36,7 +37,7 @@ type BACnetTag struct {
 type IBACnetTag interface {
     spi.Message
     ContextSpecificTag() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BACnetTagInitializer interface {
@@ -102,7 +103,7 @@ func (m BACnetTag) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BACnetTagParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Simple Field (typeOrTagNumber)
     typeOrTagNumber, _typeOrTagNumberErr := io.ReadUint8(4)
@@ -185,7 +186,7 @@ func BACnetTagParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(typeOrTagNumber, lengthValueType, extTagNumber, extLength), nil
 }
 
-func BACnetTagSerialize(io spi.WriteBuffer, m BACnetTag, i IBACnetTag, childSerialize func() error) error {
+func BACnetTagSerialize(io utils.WriteBuffer, m BACnetTag, i IBACnetTag, childSerialize func() error) error {
 
     // Simple Field (typeOrTagNumber)
     typeOrTagNumber := uint8(m.TypeOrTagNumber)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
index c2ecd8c..5cd9c40 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type BACnetTagApplicationBitString struct {
 // The corresponding interface
 type IBACnetTagApplicationBitString interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -94,7 +95,7 @@ func (m BACnetTagApplicationBitString) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationBitStringParse(io *spi.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagApplicationBitStringParse(io *utils.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Simple Field (unusedBits)
     unusedBits, _unusedBitsErr := io.ReadUint8(8)
@@ -105,7 +106,7 @@ func BACnetTagApplicationBitStringParse(io *spi.ReadBuffer, lengthValueType uint
     // Array field (data)
     // Length array
     data := make([]int8, 0)
-    _dataLength := spi.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(uint16(uint16(extLength) - uint16(uint16(1)))), uint16(uint16(uint16(lengthValueType) - uint16(uint16(1)))))
+    _dataLength := utils.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(uint16(uint16(extLength) - uint16(uint16(1)))), uint16(uint16(uint16(lengthValueType) - uint16(uint16(1)))))
     _dataEndPos := io.GetPos() + uint16(_dataLength)
     for ;io.GetPos() < _dataEndPos; {
         _item, _err := io.ReadInt8(8)
@@ -119,7 +120,7 @@ func BACnetTagApplicationBitStringParse(io *spi.ReadBuffer, lengthValueType uint
     return NewBACnetTagApplicationBitString(unusedBits, data), nil
 }
 
-func (m BACnetTagApplicationBitString) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationBitString) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (unusedBits)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
index e400a71..d5912df 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationBoolean struct {
 // The corresponding interface
 type IBACnetTagApplicationBoolean interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationBoolean) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationBooleanParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationBooleanParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationBoolean(), nil
 }
 
-func (m BACnetTagApplicationBoolean) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationBoolean) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
index 9ea9a7c..597e4d5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationCharacterString struct {
 // The corresponding interface
 type IBACnetTagApplicationCharacterString interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationCharacterString) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationCharacterStringParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationCharacterStringParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationCharacterString(), nil
 }
 
-func (m BACnetTagApplicationCharacterString) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationCharacterString) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
index c222432..67ab23a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationDate struct {
 // The corresponding interface
 type IBACnetTagApplicationDate interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationDate) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationDateParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationDateParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationDate(), nil
 }
 
-func (m BACnetTagApplicationDate) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationDate) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
index 5670f84..b79e3dd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetTagApplicationDouble struct {
 // The corresponding interface
 type IBACnetTagApplicationDouble interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -88,7 +89,7 @@ func (m BACnetTagApplicationDouble) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationDoubleParse(io *spi.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagApplicationDoubleParse(io *utils.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Simple Field (value)
     value, _valueErr := io.ReadFloat64(64)
@@ -100,7 +101,7 @@ func BACnetTagApplicationDoubleParse(io *spi.ReadBuffer, lengthValueType uint8,
     return NewBACnetTagApplicationDouble(value), nil
 }
 
-func (m BACnetTagApplicationDouble) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationDouble) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (value)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
index 819954d..28cad8a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetTagApplicationEnumerated struct {
 // The corresponding interface
 type IBACnetTagApplicationEnumerated interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -90,12 +91,12 @@ func (m BACnetTagApplicationEnumerated) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationEnumeratedParse(io *spi.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagApplicationEnumeratedParse(io *utils.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Array field (data)
     // Length array
     data := make([]int8, 0)
-    _dataLength := spi.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
+    _dataLength := utils.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
     _dataEndPos := io.GetPos() + uint16(_dataLength)
     for ;io.GetPos() < _dataEndPos; {
         _item, _err := io.ReadInt8(8)
@@ -109,7 +110,7 @@ func BACnetTagApplicationEnumeratedParse(io *spi.ReadBuffer, lengthValueType uin
     return NewBACnetTagApplicationEnumerated(data), nil
 }
 
-func (m BACnetTagApplicationEnumerated) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationEnumerated) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (data)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
index 0d614d7..3d8c51d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationNull struct {
 // The corresponding interface
 type IBACnetTagApplicationNull interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationNull) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationNullParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationNullParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationNull(), nil
 }
 
-func (m BACnetTagApplicationNull) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationNull) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
index 7c38888..e817ec7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationObjectIdentifier struct {
 // The corresponding interface
 type IBACnetTagApplicationObjectIdentifier interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationObjectIdentifier) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationObjectIdentifierParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationObjectIdentifierParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationObjectIdentifier(), nil
 }
 
-func (m BACnetTagApplicationObjectIdentifier) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationObjectIdentifier) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
index a47a76b..ec8c6a2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationOctetString struct {
 // The corresponding interface
 type IBACnetTagApplicationOctetString interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationOctetString) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationOctetStringParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationOctetStringParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationOctetString(), nil
 }
 
-func (m BACnetTagApplicationOctetString) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationOctetString) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
index 931b65d..eb5f804 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetTagApplicationReal struct {
 // The corresponding interface
 type IBACnetTagApplicationReal interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -88,7 +89,7 @@ func (m BACnetTagApplicationReal) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationRealParse(io *spi.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagApplicationRealParse(io *utils.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Simple Field (value)
     value, _valueErr := io.ReadFloat32(32)
@@ -100,7 +101,7 @@ func BACnetTagApplicationRealParse(io *spi.ReadBuffer, lengthValueType uint8, ex
     return NewBACnetTagApplicationReal(value), nil
 }
 
-func (m BACnetTagApplicationReal) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationReal) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (value)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
index 8f5eeb8..f2457c3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetTagApplicationSignedInteger struct {
 // The corresponding interface
 type IBACnetTagApplicationSignedInteger interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -90,12 +91,12 @@ func (m BACnetTagApplicationSignedInteger) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationSignedIntegerParse(io *spi.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagApplicationSignedIntegerParse(io *utils.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Array field (data)
     // Length array
     data := make([]int8, 0)
-    _dataLength := spi.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
+    _dataLength := utils.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
     _dataEndPos := io.GetPos() + uint16(_dataLength)
     for ;io.GetPos() < _dataEndPos; {
         _item, _err := io.ReadInt8(8)
@@ -109,7 +110,7 @@ func BACnetTagApplicationSignedIntegerParse(io *spi.ReadBuffer, lengthValueType
     return NewBACnetTagApplicationSignedInteger(data), nil
 }
 
-func (m BACnetTagApplicationSignedInteger) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationSignedInteger) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (data)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
index f7c5f1c..af9c917 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetTagApplicationTime struct {
 // The corresponding interface
 type IBACnetTagApplicationTime interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -83,13 +84,13 @@ func (m BACnetTagApplicationTime) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationTimeParse(io *spi.ReadBuffer) (BACnetTagInitializer, error) {
+func BACnetTagApplicationTimeParse(io *utils.ReadBuffer) (BACnetTagInitializer, error) {
 
     // Create the instance
     return NewBACnetTagApplicationTime(), nil
 }
 
-func (m BACnetTagApplicationTime) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationTime) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
index e805a38..dc50e73 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetTagApplicationUnsignedInteger struct {
 // The corresponding interface
 type IBACnetTagApplicationUnsignedInteger interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -90,12 +91,12 @@ func (m BACnetTagApplicationUnsignedInteger) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagApplicationUnsignedIntegerParse(io *spi.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagApplicationUnsignedIntegerParse(io *utils.ReadBuffer, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Array field (data)
     // Length array
     data := make([]int8, 0)
-    _dataLength := spi.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
+    _dataLength := utils.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
     _dataEndPos := io.GetPos() + uint16(_dataLength)
     for ;io.GetPos() < _dataEndPos; {
         _item, _err := io.ReadInt8(8)
@@ -109,7 +110,7 @@ func BACnetTagApplicationUnsignedIntegerParse(io *spi.ReadBuffer, lengthValueTyp
     return NewBACnetTagApplicationUnsignedInteger(data), nil
 }
 
-func (m BACnetTagApplicationUnsignedInteger) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagApplicationUnsignedInteger) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (data)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
index b31bfb4..b786f71 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetTagContext struct {
 // The corresponding interface
 type IBACnetTagContext interface {
     IBACnetTag
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -90,12 +91,12 @@ func (m BACnetTagContext) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagContextParse(io *spi.ReadBuffer, typeOrTagNumber uint8, extTagNumber uint8, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
+func BACnetTagContextParse(io *utils.ReadBuffer, typeOrTagNumber uint8, extTagNumber uint8, lengthValueType uint8, extLength uint8) (BACnetTagInitializer, error) {
 
     // Array field (data)
     // Length array
     data := make([]int8, 0)
-    _dataLength := spi.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
+    _dataLength := utils.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16(extLength), uint16(lengthValueType))
     _dataEndPos := io.GetPos() + uint16(_dataLength)
     for ;io.GetPos() < _dataEndPos; {
         _item, _err := io.ReadInt8(8)
@@ -109,7 +110,7 @@ func BACnetTagContextParse(io *spi.ReadBuffer, typeOrTagNumber uint8, extTagNumb
     return NewBACnetTagContext(data), nil
 }
 
-func (m BACnetTagContext) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagContext) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (data)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
index 957fe72..efe1aa0 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
     "strconv"
 )
 
@@ -44,7 +45,7 @@ type BACnetTagWithContent struct {
 // The corresponding interface
 type IBACnetTagWithContent interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -118,7 +119,7 @@ func (m BACnetTagWithContent) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetTagWithContentParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BACnetTagWithContentParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Simple Field (typeOrTagNumber)
     typeOrTagNumber, _typeOrTagNumberErr := io.ReadUint8(4)
@@ -163,7 +164,7 @@ func BACnetTagWithContentParse(io *spi.ReadBuffer) (spi.Message, error) {
     // Array field (propertyIdentifier)
     // Length array
     propertyIdentifier := make([]uint8, 0)
-    _propertyIdentifierLength := spi.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16((*extLength)), uint16(lengthValueType))
+    _propertyIdentifierLength := utils.InlineIf(bool(bool((lengthValueType) == ((5)))), uint16((*extLength)), uint16(lengthValueType))
     _propertyIdentifierEndPos := io.GetPos() + uint16(_propertyIdentifierLength)
     for ;io.GetPos() < _propertyIdentifierEndPos; {
         _item, _err := io.ReadUint8(8)
@@ -206,7 +207,7 @@ func BACnetTagWithContentParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewBACnetTagWithContent(typeOrTagNumber, contextSpecificTag, lengthValueType, extTagNumber, extLength, propertyIdentifier, value), nil
 }
 
-func (m BACnetTagWithContent) Serialize(io spi.WriteBuffer) error {
+func (m BACnetTagWithContent) Serialize(io utils.WriteBuffer) error {
 
     // Simple Field (typeOrTagNumber)
     typeOrTagNumber := uint8(m.TypeOrTagNumber)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index ce067b7..ab35658 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type BACnetUnconfirmedServiceRequest struct {
 type IBACnetUnconfirmedServiceRequest interface {
     spi.Message
     ServiceChoice() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BACnetUnconfirmedServiceRequestInitializer interface {
@@ -82,7 +83,7 @@ func (m BACnetUnconfirmedServiceRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.Message, error) {
+func BACnetUnconfirmedServiceRequestParse(io *utils.ReadBuffer, len uint16) (spi.Message, error) {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
@@ -127,7 +128,7 @@ func BACnetUnconfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.M
     return initializer.initialize(), nil
 }
 
-func BACnetUnconfirmedServiceRequestSerialize(io spi.WriteBuffer, m BACnetUnconfirmedServiceRequest, i IBACnetUnconfirmedServiceRequest, childSerialize func() error) error {
+func BACnetUnconfirmedServiceRequestSerialize(io utils.WriteBuffer, m BACnetUnconfirmedServiceRequest, i IBACnetUnconfirmedServiceRequest, childSerialize func() error) error {
 
     // Discriminator Field (serviceChoice) (Used as input to a switch field)
     serviceChoice := uint8(i.ServiceChoice())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
index a4497cb..95ee841 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "strconv"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -44,7 +45,7 @@ type BACnetUnconfirmedServiceRequestIAm struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestIAm interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -125,7 +126,7 @@ func (m BACnetUnconfirmedServiceRequestIAm) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestIAmParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestIAmParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Const Field (objectIdentifierHeader)
     objectIdentifierHeader, _objectIdentifierHeaderErr := io.ReadUint8(8)
@@ -209,7 +210,7 @@ func BACnetUnconfirmedServiceRequestIAmParse(io *spi.ReadBuffer) (BACnetUnconfir
     return NewBACnetUnconfirmedServiceRequestIAm(objectType, objectInstanceNumber, maximumApduLengthAcceptedLength, maximumApduLengthAccepted, segmentationSupported, vendorId), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestIAm) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestIAm) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (objectIdentifierHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
index 7642512..2220fc7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestIHave struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestIHave interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestIHave) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestIHaveParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestIHaveParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestIHave(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestIHave) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestIHave) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
index f1608b5..d535d03 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestTimeSynchronization struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestTimeSynchronization interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestTimeSynchronization) LengthInBytes() uint
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestTimeSynchronizationParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestTimeSynchronizationParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestTimeSynchronization(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestTimeSynchronization) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestTimeSynchronization) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
index 782a43c..86c149b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestUTCTimeSynchronization struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUTCTimeSynchronization interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) LengthInBytes() u
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestUTCTimeSynchronizationParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestUTCTimeSynchronizationParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestUTCTimeSynchronization(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
index e993a3c..eb4305a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) LengthInBytes
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
index 7e69f31..061af59 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Lengt
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultipleParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultipleParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
index bc4e8a8..64d130e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedEventNotification struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedEventNotification interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) LengthInByt
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestUnconfirmedEventNotificationParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestUnconfirmedEventNotificationParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestUnconfirmedEventNotification(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
index 68e3105..adcee0b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "strconv"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -41,7 +42,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -113,7 +114,7 @@ func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) LengthInBytes
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransferParse(io *spi.ReadBuffer, len uint16) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransferParse(io *utils.ReadBuffer, len uint16) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Const Field (vendorIdHeader)
     vendorIdHeader, _vendorIdHeaderErr := io.ReadUint8(8)
@@ -180,7 +181,7 @@ func BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransferParse(io *spi.Read
     return NewBACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer(vendorId, serviceNumber, values), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (vendorIdHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
index c4bb8a1..d241879 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedTextMessage struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedTextMessage interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) LengthInBytes() u
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestUnconfirmedTextMessageParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestUnconfirmedTextMessageParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestUnconfirmedTextMessage(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
index 5155107..8109036 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "strconv"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -41,7 +42,7 @@ type BACnetUnconfirmedServiceRequestWhoHas struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestWhoHas interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -116,7 +117,7 @@ func (m BACnetUnconfirmedServiceRequestWhoHas) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestWhoHasParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestWhoHasParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Const Field (deviceInstanceLowLimitHeader)
     deviceInstanceLowLimitHeader, _deviceInstanceLowLimitHeaderErr := io.ReadUint8(8)
@@ -186,7 +187,7 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(io *spi.ReadBuffer) (BACnetUncon
     return NewBACnetUnconfirmedServiceRequestWhoHas(deviceInstanceLowLimit, deviceInstanceHighLimit, objectNameCharacterSet, objectName), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestWhoHas) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestWhoHas) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (deviceInstanceLowLimitHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
index 0d750f1..b3232df 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "strconv"
 )
 
@@ -40,7 +41,7 @@ type BACnetUnconfirmedServiceRequestWhoIs struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestWhoIs interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -111,7 +112,7 @@ func (m BACnetUnconfirmedServiceRequestWhoIs) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestWhoIsParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestWhoIsParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Const Field (deviceInstanceRangeLowLimitHeader)
     deviceInstanceRangeLowLimitHeader, _deviceInstanceRangeLowLimitHeaderErr := io.ReadUint8(5)
@@ -171,7 +172,7 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(io *spi.ReadBuffer) (BACnetUnconf
     return NewBACnetUnconfirmedServiceRequestWhoIs(deviceInstanceRangeLowLimitLength, deviceInstanceRangeLowLimit, deviceInstanceRangeHighLimitLength, deviceInstanceRangeHighLimit), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestWhoIs) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestWhoIs) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (deviceInstanceRangeLowLimitHeader)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
index 4fb6976..b6f6840 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BACnetUnconfirmedServiceRequestWriteGroup struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestWriteGroup interface {
     IBACnetUnconfirmedServiceRequest
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BACnetUnconfirmedServiceRequestWriteGroup) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BACnetUnconfirmedServiceRequestWriteGroupParse(io *spi.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
+func BACnetUnconfirmedServiceRequestWriteGroupParse(io *utils.ReadBuffer) (BACnetUnconfirmedServiceRequestInitializer, error) {
 
     // Create the instance
     return NewBACnetUnconfirmedServiceRequestWriteGroup(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestWriteGroup) Serialize(io spi.WriteBuffer) error {
+func (m BACnetUnconfirmedServiceRequestWriteGroup) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index 88e76fb..582c75e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "strconv"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"strconv"
 )
 
 // Constant values.
@@ -36,7 +37,7 @@ type BVLC struct {
 type IBVLC interface {
     spi.Message
     BvlcFunction() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type BVLCInitializer interface {
@@ -92,7 +93,7 @@ func (m BVLC) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCParse(io *spi.ReadBuffer) (spi.Message, error) {
+func BVLCParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Const Field (bacnetType)
     bacnetType, _bacnetTypeErr := io.ReadUint8(8)
@@ -154,7 +155,7 @@ func BVLCParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func BVLCSerialize(io spi.WriteBuffer, m BVLC, i IBVLC, childSerialize func() error) error {
+func BVLCSerialize(io utils.WriteBuffer, m BVLC, i IBVLC, childSerialize func() error) error {
 
     // Const Field (bacnetType)
     _bacnetTypeErr := io.WriteUint8(8, 0x81)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
index c272830..cf09846 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCDeleteForeignDeviceTableEntry struct {
 // The corresponding interface
 type IBVLCDeleteForeignDeviceTableEntry interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCDeleteForeignDeviceTableEntry) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCDeleteForeignDeviceTableEntryParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCDeleteForeignDeviceTableEntryParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCDeleteForeignDeviceTableEntry(), nil
 }
 
-func (m BVLCDeleteForeignDeviceTableEntry) Serialize(io spi.WriteBuffer) error {
+func (m BVLCDeleteForeignDeviceTableEntry) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
index 8140a77..3ac440f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCDistributeBroadcastToNetwork struct {
 // The corresponding interface
 type IBVLCDistributeBroadcastToNetwork interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCDistributeBroadcastToNetwork) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCDistributeBroadcastToNetworkParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCDistributeBroadcastToNetworkParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCDistributeBroadcastToNetwork(), nil
 }
 
-func (m BVLCDistributeBroadcastToNetwork) Serialize(io spi.WriteBuffer) error {
+func (m BVLCDistributeBroadcastToNetwork) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
index 43c45b7..b661e5b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type BVLCForwardedNPDU struct {
 // The corresponding interface
 type IBVLCForwardedNPDU interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -95,7 +96,7 @@ func (m BVLCForwardedNPDU) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCForwardedNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCInitializer, error) {
+func BVLCForwardedNPDUParse(io *utils.ReadBuffer, bvlcLength uint16) (BVLCInitializer, error) {
 
     // Array field (ip)
     // Count array
@@ -130,7 +131,7 @@ func BVLCForwardedNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCInitiali
     return NewBVLCForwardedNPDU(ip, port, npdu), nil
 }
 
-func (m BVLCForwardedNPDU) Serialize(io spi.WriteBuffer) error {
+func (m BVLCForwardedNPDU) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (ip)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
index 3c33fae..646b568 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type BVLCOriginalBroadcastNPDU struct {
 // The corresponding interface
 type IBVLCOriginalBroadcastNPDU interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m BVLCOriginalBroadcastNPDU) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCOriginalBroadcastNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCInitializer, error) {
+func BVLCOriginalBroadcastNPDUParse(io *utils.ReadBuffer, bvlcLength uint16) (BVLCInitializer, error) {
 
     // Simple Field (npdu)
     _npduMessage, _err := NPDUParse(io, uint16(bvlcLength) - uint16(uint16(4)))
@@ -102,7 +103,7 @@ func BVLCOriginalBroadcastNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLC
     return NewBVLCOriginalBroadcastNPDU(npdu), nil
 }
 
-func (m BVLCOriginalBroadcastNPDU) Serialize(io spi.WriteBuffer) error {
+func (m BVLCOriginalBroadcastNPDU) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (npdu)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
index f6fbb1f..60e09bc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type BVLCOriginalUnicastNPDU struct {
 // The corresponding interface
 type IBVLCOriginalUnicastNPDU interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m BVLCOriginalUnicastNPDU) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCOriginalUnicastNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCInitializer, error) {
+func BVLCOriginalUnicastNPDUParse(io *utils.ReadBuffer, bvlcLength uint16) (BVLCInitializer, error) {
 
     // Simple Field (npdu)
     _npduMessage, _err := NPDUParse(io, uint16(bvlcLength) - uint16(uint16(4)))
@@ -102,7 +103,7 @@ func BVLCOriginalUnicastNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCIn
     return NewBVLCOriginalUnicastNPDU(npdu), nil
 }
 
-func (m BVLCOriginalUnicastNPDU) Serialize(io spi.WriteBuffer) error {
+func (m BVLCOriginalUnicastNPDU) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (npdu)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
index 8d3ed85..7ceb9c7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCReadBroadcastDistributionTable struct {
 // The corresponding interface
 type IBVLCReadBroadcastDistributionTable interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCReadBroadcastDistributionTable) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCReadBroadcastDistributionTableParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCReadBroadcastDistributionTableParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCReadBroadcastDistributionTable(), nil
 }
 
-func (m BVLCReadBroadcastDistributionTable) Serialize(io spi.WriteBuffer) error {
+func (m BVLCReadBroadcastDistributionTable) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
index e4d13ce..4c3eae3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCReadBroadcastDistributionTableAck struct {
 // The corresponding interface
 type IBVLCReadBroadcastDistributionTableAck interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCReadBroadcastDistributionTableAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCReadBroadcastDistributionTableAckParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCReadBroadcastDistributionTableAckParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCReadBroadcastDistributionTableAck(), nil
 }
 
-func (m BVLCReadBroadcastDistributionTableAck) Serialize(io spi.WriteBuffer) error {
+func (m BVLCReadBroadcastDistributionTableAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
index c44aaff..d9bf125 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCReadForeignDeviceTable struct {
 // The corresponding interface
 type IBVLCReadForeignDeviceTable interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCReadForeignDeviceTable) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCReadForeignDeviceTableParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCReadForeignDeviceTableParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCReadForeignDeviceTable(), nil
 }
 
-func (m BVLCReadForeignDeviceTable) Serialize(io spi.WriteBuffer) error {
+func (m BVLCReadForeignDeviceTable) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
index 159e465..44b1598 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCReadForeignDeviceTableAck struct {
 // The corresponding interface
 type IBVLCReadForeignDeviceTableAck interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCReadForeignDeviceTableAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCReadForeignDeviceTableAckParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCReadForeignDeviceTableAckParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCReadForeignDeviceTableAck(), nil
 }
 
-func (m BVLCReadForeignDeviceTableAck) Serialize(io spi.WriteBuffer) error {
+func (m BVLCReadForeignDeviceTableAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
index abd6496..b77aa93 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCRegisterForeignDevice struct {
 // The corresponding interface
 type IBVLCRegisterForeignDevice interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCRegisterForeignDevice) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCRegisterForeignDeviceParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCRegisterForeignDeviceParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCRegisterForeignDevice(), nil
 }
 
-func (m BVLCRegisterForeignDevice) Serialize(io spi.WriteBuffer) error {
+func (m BVLCRegisterForeignDevice) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
index 54f9283..1906b5a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCResult struct {
 // The corresponding interface
 type IBVLCResult interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCResult) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCResultParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCResultParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCResult(), nil
 }
 
-func (m BVLCResult) Serialize(io spi.WriteBuffer) error {
+func (m BVLCResult) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
index d750c01..ba33e58 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCSecureBVLL struct {
 // The corresponding interface
 type IBVLCSecureBVLL interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCSecureBVLL) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCSecureBVLLParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCSecureBVLLParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCSecureBVLL(), nil
 }
 
-func (m BVLCSecureBVLL) Serialize(io spi.WriteBuffer) error {
+func (m BVLCSecureBVLL) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
index e488811..a217995 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type BVLCWideBroadcastDistributionTable struct {
 // The corresponding interface
 type IBVLCWideBroadcastDistributionTable interface {
     IBVLC
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m BVLCWideBroadcastDistributionTable) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func BVLCWideBroadcastDistributionTableParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
+func BVLCWideBroadcastDistributionTableParse(io *utils.ReadBuffer) (BVLCInitializer, error) {
 
     // Create the instance
     return NewBVLCWideBroadcastDistributionTable(), nil
 }
 
-func (m BVLCWideBroadcastDistributionTable) Serialize(io spi.WriteBuffer) error {
+func (m BVLCWideBroadcastDistributionTable) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
index 235f5bb..eab7632 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type NLM struct {
 type INLM interface {
     spi.Message
     MessageType() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type NLMInitializer interface {
@@ -88,7 +89,7 @@ func (m NLM) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func NLMParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
+func NLMParse(io *utils.ReadBuffer, apduLength uint16) (spi.Message, error) {
 
     // Discriminator Field (messageType) (Used as input to a switch field)
     messageType, _messageTypeErr := io.ReadUint8(8)
@@ -124,7 +125,7 @@ func NLMParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
     return initializer.initialize(vendorId), nil
 }
 
-func NLMSerialize(io spi.WriteBuffer, m NLM, i INLM, childSerialize func() error) error {
+func NLMSerialize(io utils.WriteBuffer, m NLM, i INLM, childSerialize func() error) error {
 
     // Discriminator Field (messageType) (Used as input to a switch field)
     messageType := uint8(i.MessageType())
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
index e3fb234..f6459a6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type NLMIAmRouterToNetwork struct {
 // The corresponding interface
 type INLMIAmRouterToNetwork interface {
     INLM
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -87,12 +88,12 @@ func (m NLMIAmRouterToNetwork) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func NLMIAmRouterToNetworkParse(io *spi.ReadBuffer, apduLength uint16, messageType uint8) (NLMInitializer, error) {
+func NLMIAmRouterToNetworkParse(io *utils.ReadBuffer, apduLength uint16, messageType uint8) (NLMInitializer, error) {
 
     // Array field (destinationNetworkAddress)
     // Length array
     destinationNetworkAddress := make([]uint16, 0)
-    _destinationNetworkAddressLength := uint16(apduLength) - uint16(uint16(spi.InlineIf(bool(bool(bool(bool((messageType) >= ((128))))) && bool(bool(bool((messageType) <= ((255)))))), uint16(uint16(3)), uint16(uint16(1)))))
+    _destinationNetworkAddressLength := uint16(apduLength) - uint16(uint16(utils.InlineIf(bool(bool(bool(bool((messageType) >= ((128))))) && bool(bool(bool((messageType) <= ((255)))))), uint16(uint16(3)), uint16(uint16(1)))))
     _destinationNetworkAddressEndPos := io.GetPos() + uint16(_destinationNetworkAddressLength)
     for ;io.GetPos() < _destinationNetworkAddressEndPos; {
         _item, _err := io.ReadUint16(16)
@@ -106,7 +107,7 @@ func NLMIAmRouterToNetworkParse(io *spi.ReadBuffer, apduLength uint16, messageTy
     return NewNLMIAmRouterToNetwork(destinationNetworkAddress), nil
 }
 
-func (m NLMIAmRouterToNetwork) Serialize(io spi.WriteBuffer) error {
+func (m NLMIAmRouterToNetwork) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (destinationNetworkAddress)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
index a4f6ee0..7e65f0f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type NLMWhoIsRouterToNetwork struct {
 // The corresponding interface
 type INLMWhoIsRouterToNetwork interface {
     INLM
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -87,12 +88,12 @@ func (m NLMWhoIsRouterToNetwork) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func NLMWhoIsRouterToNetworkParse(io *spi.ReadBuffer, apduLength uint16, messageType uint8) (NLMInitializer, error) {
+func NLMWhoIsRouterToNetworkParse(io *utils.ReadBuffer, apduLength uint16, messageType uint8) (NLMInitializer, error) {
 
     // Array field (destinationNetworkAddress)
     // Length array
     destinationNetworkAddress := make([]uint16, 0)
-    _destinationNetworkAddressLength := uint16(apduLength) - uint16(uint16(spi.InlineIf(bool(bool(bool(bool((messageType) >= ((128))))) && bool(bool(bool((messageType) <= ((255)))))), uint16(uint16(3)), uint16(uint16(1)))))
+    _destinationNetworkAddressLength := uint16(apduLength) - uint16(uint16(utils.InlineIf(bool(bool(bool(bool((messageType) >= ((128))))) && bool(bool(bool((messageType) <= ((255)))))), uint16(uint16(3)), uint16(uint16(1)))))
     _destinationNetworkAddressEndPos := io.GetPos() + uint16(_destinationNetworkAddressLength)
     for ;io.GetPos() < _destinationNetworkAddressEndPos; {
         _item, _err := io.ReadUint16(16)
@@ -106,7 +107,7 @@ func NLMWhoIsRouterToNetworkParse(io *spi.ReadBuffer, apduLength uint16, message
     return NewNLMWhoIsRouterToNetwork(destinationNetworkAddress), nil
 }
 
-func (m NLMWhoIsRouterToNetwork) Serialize(io spi.WriteBuffer) error {
+func (m NLMWhoIsRouterToNetwork) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (destinationNetworkAddress)
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
index 87ff4ca..b58b2c9 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -48,7 +49,7 @@ type NPDU struct {
 // The corresponding interface
 type INPDU interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -158,7 +159,7 @@ func (m NPDU) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
+func NPDUParse(io *utils.ReadBuffer, npduLength uint16) (spi.Message, error) {
 
     // Simple Field (protocolVersionNumber)
     protocolVersionNumber, _protocolVersionNumberErr := io.ReadUint8(8)
@@ -248,8 +249,8 @@ func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
 
     // Array field (destinationAddress)
     // Count array
-    destinationAddress := make([]uint8, spi.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0))))
-    for curItem := uint16(0); curItem < uint16(spi.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0)))); curItem++ {
+    destinationAddress := make([]uint8, utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0))))
+    for curItem := uint16(0); curItem < uint16(utils.InlineIf(destinationSpecified, uint16((*destinationLength)), uint16(uint16(0)))); curItem++ {
 
         _item, _err := io.ReadUint8(8)
         if _err != nil {
@@ -282,8 +283,8 @@ func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
 
     // Array field (sourceAddress)
     // Count array
-    sourceAddress := make([]uint8, spi.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0))))
-    for curItem := uint16(0); curItem < uint16(spi.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0)))); curItem++ {
+    sourceAddress := make([]uint8, utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0))))
+    for curItem := uint16(0); curItem < uint16(utils.InlineIf(sourceSpecified, uint16((*sourceLength)), uint16(uint16(0)))); curItem++ {
 
         _item, _err := io.ReadUint8(8)
         if _err != nil {
@@ -306,7 +307,7 @@ func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
     // Optional Field (nlm) (Can be skipped, if a given expression evaluates to false)
     var nlm *INLM = nil
     if messageTypeFieldPresent {
-        _message, _err := NLMParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(spi.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(spi.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(spi.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
+        _message, _err := NLMParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
         if _err != nil {
             return nil, errors.New("Error parsing 'nlm' field " + _err.Error())
         }
@@ -321,7 +322,7 @@ func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
     // Optional Field (apdu) (Can be skipped, if a given expression evaluates to false)
     var apdu *IAPDU = nil
     if !(messageTypeFieldPresent) {
-        _message, _err := APDUParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(spi.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(spi.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(spi.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
+        _message, _err := APDUParse(io, uint16(npduLength) - uint16(uint16(uint16(uint16(uint16(uint16(2)) + uint16(uint16(utils.InlineIf(sourceSpecified, uint16(uint16(uint16(3)) + uint16((*sourceLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(destinationSpecified, uint16(uint16(uint16(3)) + uint16((*destinationLength))), uint16(uint16(0)))))) + uint16(uint16(utils.InlineIf(bool(bool(destinationSpecified) || bool(sourceSpecified)), uint16(uint16(1)), uint16(uint16(0))))))))
         if _err != nil {
             return nil, errors.New("Error parsing 'apdu' field " + _err.Error())
         }
@@ -337,7 +338,7 @@ func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
     return NewNPDU(protocolVersionNumber, messageTypeFieldPresent, destinationSpecified, sourceSpecified, expectingReply, networkPriority, destinationNetworkAddress, destinationLength, destinationAddress, sourceNetworkAddress, sourceLength, sourceAddress, hopCount, nlm, apdu), nil
 }
 
-func (m NPDU) Serialize(io spi.WriteBuffer) error {
+func (m NPDU) Serialize(io utils.WriteBuffer) error {
 
     // Simple Field (protocolVersionNumber)
     protocolVersionNumber := uint8(m.ProtocolVersionNumber)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
index 3790228..bb565d4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type APCI uint8
 
 type IAPCI interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -102,12 +105,12 @@ func (m APCI) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func APCIParse(io *spi.ReadBuffer) (APCI, error) {
+func APCIParse(io *utils.ReadBuffer) (APCI, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e APCI) Serialize(io spi.WriteBuffer) error {
+func (e APCI) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
index 89de783..d16e1d8 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type CEMI struct {
 type ICEMI interface {
     spi.Message
     MessageCode() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type CEMIInitializer interface {
@@ -82,7 +83,7 @@ func (m CEMI) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIParse(io *spi.ReadBuffer, size uint8) (spi.Message, error) {
+func CEMIParse(io *utils.ReadBuffer, size uint8) (spi.Message, error) {
 
     // Discriminator Field (messageCode) (Used as input to a switch field)
     messageCode, _messageCodeErr := io.ReadUint8(8)
@@ -125,7 +126,7 @@ func CEMIParse(io *spi.ReadBuffer, size uint8) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func CEMISerialize(io spi.WriteBuffer, m CEMI, i ICEMI, childSerialize func() error) error {
+func CEMISerialize(io utils.WriteBuffer, m CEMI, i ICEMI, childSerialize func() error) error {
 
     // Discriminator Field (messageCode) (Used as input to a switch field)
     messageCode := uint8(i.MessageCode())
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index 0e87822..18d8fa8 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type CEMIAdditionalInformation struct {
 type ICEMIAdditionalInformation interface {
     spi.Message
     AdditionalInformationType() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type CEMIAdditionalInformationInitializer interface {
@@ -82,7 +83,7 @@ func (m CEMIAdditionalInformation) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIAdditionalInformationParse(io *spi.ReadBuffer) (spi.Message, error) {
+func CEMIAdditionalInformationParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Discriminator Field (additionalInformationType) (Used as input to a switch field)
     additionalInformationType, _additionalInformationTypeErr := io.ReadUint8(8)
@@ -107,7 +108,7 @@ func CEMIAdditionalInformationParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func CEMIAdditionalInformationSerialize(io spi.WriteBuffer, m CEMIAdditionalInformation, i ICEMIAdditionalInformation, childSerialize func() error) error {
+func CEMIAdditionalInformationSerialize(io utils.WriteBuffer, m CEMIAdditionalInformation, i ICEMIAdditionalInformation, childSerialize func() error) error {
 
     // Discriminator Field (additionalInformationType) (Used as input to a switch field)
     additionalInformationType := uint8(i.AdditionalInformationType())
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index 6d0b966..878ede6 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "strconv"
 )
 
@@ -41,7 +42,7 @@ type CEMIAdditionalInformationBusmonitorInfo struct {
 // The corresponding interface
 type ICEMIAdditionalInformationBusmonitorInfo interface {
     ICEMIAdditionalInformation
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -111,7 +112,7 @@ func (m CEMIAdditionalInformationBusmonitorInfo) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIAdditionalInformationBusmonitorInfoParse(io *spi.ReadBuffer) (CEMIAdditionalInformationInitializer, error) {
+func CEMIAdditionalInformationBusmonitorInfoParse(io *utils.ReadBuffer) (CEMIAdditionalInformationInitializer, error) {
 
     // Const Field (len)
     len, _lenErr := io.ReadUint8(8)
@@ -162,7 +163,7 @@ func CEMIAdditionalInformationBusmonitorInfoParse(io *spi.ReadBuffer) (CEMIAddit
     return NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag, bitErrorFlag, parityErrorFlag, unknownFlag, lostFlag, sequenceNumber), nil
 }
 
-func (m CEMIAdditionalInformationBusmonitorInfo) Serialize(io spi.WriteBuffer) error {
+func (m CEMIAdditionalInformationBusmonitorInfo) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (len)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
index d602240..8c90d41 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "reflect"
     "strconv"
 )
@@ -37,7 +38,7 @@ type CEMIAdditionalInformationRelativeTimestamp struct {
 // The corresponding interface
 type ICEMIAdditionalInformationRelativeTimestamp interface {
     ICEMIAdditionalInformation
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -92,7 +93,7 @@ func (m CEMIAdditionalInformationRelativeTimestamp) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIAdditionalInformationRelativeTimestampParse(io *spi.ReadBuffer) (CEMIAdditionalInformationInitializer, error) {
+func CEMIAdditionalInformationRelativeTimestampParse(io *utils.ReadBuffer) (CEMIAdditionalInformationInitializer, error) {
 
     // Const Field (len)
     len, _lenErr := io.ReadUint8(8)
@@ -118,7 +119,7 @@ func CEMIAdditionalInformationRelativeTimestampParse(io *spi.ReadBuffer) (CEMIAd
     return NewCEMIAdditionalInformationRelativeTimestamp(relativeTimestamp), nil
 }
 
-func (m CEMIAdditionalInformationRelativeTimestamp) Serialize(io spi.WriteBuffer) error {
+func (m CEMIAdditionalInformationRelativeTimestamp) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Const Field (len)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go
index c34d2f2..4c9e66b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "reflect"
 )
 
@@ -35,7 +36,7 @@ type CEMIBusmonInd struct {
 // The corresponding interface
 type ICEMIBusmonInd interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,7 +98,7 @@ func (m CEMIBusmonInd) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIBusmonIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIBusmonIndParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Simple Field (additionalInformationLength)
     additionalInformationLength, _additionalInformationLengthErr := io.ReadUint8(8)
@@ -138,7 +139,7 @@ func CEMIBusmonIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
     return NewCEMIBusmonInd(additionalInformationLength, additionalInformation, cemiFrame), nil
 }
 
-func (m CEMIBusmonInd) Serialize(io spi.WriteBuffer) error {
+func (m CEMIBusmonInd) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (additionalInformationLength)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go
index 0e2924a..4ecd6e4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type CEMIDataCon struct {
 // The corresponding interface
 type ICEMIDataCon interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,7 +98,7 @@ func (m CEMIDataCon) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIDataConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIDataConParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Simple Field (additionalInformationLength)
     additionalInformationLength, _additionalInformationLengthErr := io.ReadUint8(8)
@@ -138,7 +139,7 @@ func CEMIDataConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
     return NewCEMIDataCon(additionalInformationLength, additionalInformation, cemiDataFrame), nil
 }
 
-func (m CEMIDataCon) Serialize(io spi.WriteBuffer) error {
+func (m CEMIDataCon) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (additionalInformationLength)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
index 6f83d3a..ad6e651 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -50,7 +51,7 @@ type CEMIDataFrame struct {
 // The corresponding interface
 type ICEMIDataFrame interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -149,7 +150,7 @@ func (m CEMIDataFrame) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIDataFrameParse(io *spi.ReadBuffer) (spi.Message, error) {
+func CEMIDataFrameParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Simple Field (standardFrame)
     standardFrame, _standardFrameErr := io.ReadBit()
@@ -280,7 +281,7 @@ func CEMIDataFrameParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewCEMIDataFrame(standardFrame, polling, notRepeated, notAckFrame, priority, acknowledgeRequested, errorFlag, groupDestinationAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data), nil
 }
 
-func (m CEMIDataFrame) Serialize(io spi.WriteBuffer) error {
+func (m CEMIDataFrame) Serialize(io utils.WriteBuffer) error {
 
     // Simple Field (standardFrame)
     standardFrame := bool(m.StandardFrame)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go
index afd53d2..1bc2b26 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "reflect"
 )
 
@@ -35,7 +36,7 @@ type CEMIDataInd struct {
 // The corresponding interface
 type ICEMIDataInd interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,7 +98,7 @@ func (m CEMIDataInd) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIDataIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIDataIndParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Simple Field (additionalInformationLength)
     additionalInformationLength, _additionalInformationLengthErr := io.ReadUint8(8)
@@ -138,7 +139,7 @@ func CEMIDataIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
     return NewCEMIDataInd(additionalInformationLength, additionalInformation, cemiDataFrame), nil
 }
 
-func (m CEMIDataInd) Serialize(io spi.WriteBuffer) error {
+func (m CEMIDataInd) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (additionalInformationLength)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go
index c326e02..9092793 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "reflect"
 )
 
@@ -35,7 +36,7 @@ type CEMIDataReq struct {
 // The corresponding interface
 type ICEMIDataReq interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,7 +98,7 @@ func (m CEMIDataReq) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIDataReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIDataReqParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Simple Field (additionalInformationLength)
     additionalInformationLength, _additionalInformationLengthErr := io.ReadUint8(8)
@@ -138,7 +139,7 @@ func CEMIDataReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
     return NewCEMIDataReq(additionalInformationLength, additionalInformation, cemiDataFrame), nil
 }
 
-func (m CEMIDataReq) Serialize(io spi.WriteBuffer) error {
+func (m CEMIDataReq) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (additionalInformationLength)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
index 885a6c4..98d51c3 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -38,7 +39,7 @@ type ICEMIFrame interface {
     NotAckFrame() bool
     Polling() bool
     StandardFrame() bool
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type CEMIFrameInitializer interface {
@@ -114,7 +115,7 @@ func (m CEMIFrame) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIFrameParse(io *spi.ReadBuffer) (spi.Message, error) {
+func CEMIFrameParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Discriminator Field (standardFrame) (Used as input to a switch field)
     standardFrame, _standardFrameErr := io.ReadBit()
@@ -181,7 +182,7 @@ func CEMIFrameParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(repeated, priority, acknowledgeRequested, errorFlag), nil
 }
 
-func CEMIFrameSerialize(io spi.WriteBuffer, m CEMIFrame, i ICEMIFrame, childSerialize func() error) error {
+func CEMIFrameSerialize(io utils.WriteBuffer, m CEMIFrame, i ICEMIFrame, childSerialize func() error) error {
 
     // Discriminator Field (standardFrame) (Used as input to a switch field)
     standardFrame := bool(i.StandardFrame())
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go
index d1d0068..00b0e2c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIFrameAck struct {
 // The corresponding interface
 type ICEMIFrameAck interface {
     ICEMIFrame
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -91,13 +92,13 @@ func (m CEMIFrameAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIFrameAckParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
+func CEMIFrameAckParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
     // Create the instance
     return NewCEMIFrameAck(), nil
 }
 
-func (m CEMIFrameAck) Serialize(io spi.WriteBuffer) error {
+func (m CEMIFrameAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
index 330ef92..920f88b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -43,7 +44,7 @@ type CEMIFrameData struct {
 // The corresponding interface
 type ICEMIFrameData interface {
     ICEMIFrame
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -141,7 +142,7 @@ func (m CEMIFrameData) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIFrameDataParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
+func CEMIFrameDataParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
     // Simple Field (sourceAddress)
     _sourceAddressMessage, _err := KNXAddressParse(io)
@@ -230,7 +231,7 @@ func CEMIFrameDataParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
     return NewCEMIFrameData(sourceAddress, destinationAddress, groupAddress, hopCount, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
 }
 
-func (m CEMIFrameData) Serialize(io spi.WriteBuffer) error {
+func (m CEMIFrameData) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (sourceAddress)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
index f6dab29..4800c89 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -44,7 +45,7 @@ type CEMIFrameDataExt struct {
 // The corresponding interface
 type ICEMIFrameDataExt interface {
     ICEMIFrame
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -145,7 +146,7 @@ func (m CEMIFrameDataExt) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIFrameDataExtParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
+func CEMIFrameDataExtParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
     // Simple Field (groupAddress)
     groupAddress, _groupAddressErr := io.ReadBit()
@@ -240,7 +241,7 @@ func CEMIFrameDataExtParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
     return NewCEMIFrameDataExt(groupAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
 }
 
-func (m CEMIFrameDataExt) Serialize(io spi.WriteBuffer) error {
+func (m CEMIFrameDataExt) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (groupAddress)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go
index a2d460a..6425f6a 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIFramePollingData struct {
 // The corresponding interface
 type ICEMIFramePollingData interface {
     ICEMIFrame
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -91,13 +92,13 @@ func (m CEMIFramePollingData) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIFramePollingDataParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
+func CEMIFramePollingDataParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
     // Create the instance
     return NewCEMIFramePollingData(), nil
 }
 
-func (m CEMIFramePollingData) Serialize(io spi.WriteBuffer) error {
+func (m CEMIFramePollingData) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go
index 4e78518..a784c78 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIFramePollingDataExt struct {
 // The corresponding interface
 type ICEMIFramePollingDataExt interface {
     ICEMIFrame
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -91,13 +92,13 @@ func (m CEMIFramePollingDataExt) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIFramePollingDataExtParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
+func CEMIFramePollingDataExtParse(io *utils.ReadBuffer) (CEMIFrameInitializer, error) {
 
     // Create the instance
     return NewCEMIFramePollingDataExt(), nil
 }
 
-func (m CEMIFramePollingDataExt) Serialize(io spi.WriteBuffer) error {
+func (m CEMIFramePollingDataExt) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go
index f3e3743..016e4eb 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -37,7 +38,7 @@ type CEMIMPropReadCon struct {
 // The corresponding interface
 type ICEMIMPropReadCon interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -104,7 +105,7 @@ func (m CEMIMPropReadCon) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIMPropReadConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIMPropReadConParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Simple Field (interfaceObjectType)
     interfaceObjectType, _interfaceObjectTypeErr := io.ReadUint16(16)
@@ -146,7 +147,7 @@ func CEMIMPropReadConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
     return NewCEMIMPropReadCon(interfaceObjectType, objectInstance, propertyId, numberOfElements, startIndex, unknown), nil
 }
 
-func (m CEMIMPropReadCon) Serialize(io spi.WriteBuffer) error {
+func (m CEMIMPropReadCon) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (interfaceObjectType)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go
index e68b65b..f289469 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -36,7 +37,7 @@ type CEMIMPropReadReq struct {
 // The corresponding interface
 type ICEMIMPropReadReq interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -100,7 +101,7 @@ func (m CEMIMPropReadReq) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIMPropReadReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIMPropReadReqParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Simple Field (interfaceObjectType)
     interfaceObjectType, _interfaceObjectTypeErr := io.ReadUint16(16)
@@ -136,7 +137,7 @@ func CEMIMPropReadReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
     return NewCEMIMPropReadReq(interfaceObjectType, objectInstance, propertyId, numberOfElements, startIndex), nil
 }
 
-func (m CEMIMPropReadReq) Serialize(io spi.WriteBuffer) error {
+func (m CEMIMPropReadReq) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (interfaceObjectType)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go
index 361f04a..716eada 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIPollDataCon struct {
 // The corresponding interface
 type ICEMIPollDataCon interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m CEMIPollDataCon) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIPollDataConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIPollDataConParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Create the instance
     return NewCEMIPollDataCon(), nil
 }
 
-func (m CEMIPollDataCon) Serialize(io spi.WriteBuffer) error {
+func (m CEMIPollDataCon) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go
index da19248..25fb582 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIPollDataReq struct {
 // The corresponding interface
 type ICEMIPollDataReq interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m CEMIPollDataReq) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIPollDataReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIPollDataReqParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Create the instance
     return NewCEMIPollDataReq(), nil
 }
 
-func (m CEMIPollDataReq) Serialize(io spi.WriteBuffer) error {
+func (m CEMIPollDataReq) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
index 7a9852c..c0a9e83 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type CEMIPriority uint8
 
 type ICEMIPriority interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -66,12 +69,12 @@ func (m CEMIPriority) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIPriorityParse(io *spi.ReadBuffer) (CEMIPriority, error) {
+func CEMIPriorityParse(io *utils.ReadBuffer) (CEMIPriority, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e CEMIPriority) Serialize(io spi.WriteBuffer) error {
+func (e CEMIPriority) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go
index 9bab8c8..1a2acf4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIRawCon struct {
 // The corresponding interface
 type ICEMIRawCon interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m CEMIRawCon) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIRawConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIRawConParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Create the instance
     return NewCEMIRawCon(), nil
 }
 
-func (m CEMIRawCon) Serialize(io spi.WriteBuffer) error {
+func (m CEMIRawCon) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go
index fd902ee..20e7f30 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIRawInd struct {
 // The corresponding interface
 type ICEMIRawInd interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m CEMIRawInd) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIRawIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIRawIndParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Create the instance
     return NewCEMIRawInd(), nil
 }
 
-func (m CEMIRawInd) Serialize(io spi.WriteBuffer) error {
+func (m CEMIRawInd) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go
index 58eb788..9f7278c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type CEMIRawReq struct {
 // The corresponding interface
 type ICEMIRawReq interface {
     ICEMI
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m CEMIRawReq) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func CEMIRawReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
+func CEMIRawReqParse(io *utils.ReadBuffer) (CEMIInitializer, error) {
 
     // Create the instance
     return NewCEMIRawReq(), nil
 }
 
-func (m CEMIRawReq) Serialize(io spi.WriteBuffer) error {
+func (m CEMIRawReq) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
index 299eb52..83a6aaa 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type ConnectionRequest struct {
 // The corresponding interface
 type IConnectionRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,7 +94,7 @@ func (m ConnectionRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func ConnectionRequestParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (hpaiDiscoveryEndpoint)
     _hpaiDiscoveryEndpointMessage, _err := HPAIDiscoveryEndpointParse(io)
@@ -132,7 +133,7 @@ func ConnectionRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
     return NewConnectionRequest(hpaiDiscoveryEndpoint, hpaiDataEndpoint, connectionRequestInformation), nil
 }
 
-func (m ConnectionRequest) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (hpaiDiscoveryEndpoint)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
index c3648df..78731b2 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type ConnectionRequestInformation struct {
 type IConnectionRequestInformation interface {
     spi.Message
     ConnectionType() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type ConnectionRequestInformationInitializer interface {
@@ -85,7 +86,7 @@ func (m ConnectionRequestInformation) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionRequestInformationParse(io *spi.ReadBuffer) (spi.Message, error) {
+func ConnectionRequestInformationParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -116,7 +117,7 @@ func ConnectionRequestInformationParse(io *spi.ReadBuffer) (spi.Message, error)
     return initializer.initialize(), nil
 }
 
-func ConnectionRequestInformationSerialize(io spi.WriteBuffer, m ConnectionRequestInformation, i IConnectionRequestInformation, childSerialize func() error) error {
+func ConnectionRequestInformationSerialize(io utils.WriteBuffer, m ConnectionRequestInformation, i IConnectionRequestInformation, childSerialize func() error) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
index b35d214..a5ad113 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type ConnectionRequestInformationDeviceManagement struct {
 // The corresponding interface
 type IConnectionRequestInformationDeviceManagement interface {
     IConnectionRequestInformation
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m ConnectionRequestInformationDeviceManagement) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionRequestInformationDeviceManagementParse(io *spi.ReadBuffer) (ConnectionRequestInformationInitializer, error) {
+func ConnectionRequestInformationDeviceManagementParse(io *utils.ReadBuffer) (ConnectionRequestInformationInitializer, error) {
 
     // Create the instance
     return NewConnectionRequestInformationDeviceManagement(), nil
 }
 
-func (m ConnectionRequestInformationDeviceManagement) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionRequestInformationDeviceManagement) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
index 2c3b9c6..08c371a 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ConnectionRequestInformationTunnelConnection struct {
 // The corresponding interface
 type IConnectionRequestInformationTunnelConnection interface {
     IConnectionRequestInformation
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -88,7 +89,7 @@ func (m ConnectionRequestInformationTunnelConnection) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionRequestInformationTunnelConnectionParse(io *spi.ReadBuffer) (ConnectionRequestInformationInitializer, error) {
+func ConnectionRequestInformationTunnelConnectionParse(io *utils.ReadBuffer) (ConnectionRequestInformationInitializer, error) {
 
     // Enum field (knxLayer)
     knxLayer, _knxLayerErr := KnxLayerParse(io)
@@ -114,7 +115,7 @@ func ConnectionRequestInformationTunnelConnectionParse(io *spi.ReadBuffer) (Conn
     return NewConnectionRequestInformationTunnelConnection(knxLayer), nil
 }
 
-func (m ConnectionRequestInformationTunnelConnection) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionRequestInformationTunnelConnection) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Enum field (knxLayer)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
index b736740..a17d974 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -36,7 +37,7 @@ type ConnectionResponse struct {
 // The corresponding interface
 type IConnectionResponse interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -101,7 +102,7 @@ func (m ConnectionResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func ConnectionResponseParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (communicationChannelId)
     communicationChannelId, _communicationChannelIdErr := io.ReadUint8(8)
@@ -149,7 +150,7 @@ func ConnectionResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, er
     return NewConnectionResponse(communicationChannelId, status, hpaiDataEndpoint, connectionResponseDataBlock), nil
 }
 
-func (m ConnectionResponse) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (communicationChannelId)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 448d412..dd5f009 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type ConnectionResponseDataBlock struct {
 type IConnectionResponseDataBlock interface {
     spi.Message
     ConnectionType() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type ConnectionResponseDataBlockInitializer interface {
@@ -85,7 +86,7 @@ func (m ConnectionResponseDataBlock) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionResponseDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
+func ConnectionResponseDataBlockParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -116,7 +117,7 @@ func ConnectionResponseDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func ConnectionResponseDataBlockSerialize(io spi.WriteBuffer, m ConnectionResponseDataBlock, i IConnectionResponseDataBlock, childSerialize func() error) error {
+func ConnectionResponseDataBlockSerialize(io utils.WriteBuffer, m ConnectionResponseDataBlock, i IConnectionResponseDataBlock, childSerialize func() error) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
index 0059d98..a7327fb 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type ConnectionResponseDataBlockDeviceManagement struct {
 // The corresponding interface
 type IConnectionResponseDataBlockDeviceManagement interface {
     IConnectionResponseDataBlock
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m ConnectionResponseDataBlockDeviceManagement) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionResponseDataBlockDeviceManagementParse(io *spi.ReadBuffer) (ConnectionResponseDataBlockInitializer, error) {
+func ConnectionResponseDataBlockDeviceManagementParse(io *utils.ReadBuffer) (ConnectionResponseDataBlockInitializer, error) {
 
     // Create the instance
     return NewConnectionResponseDataBlockDeviceManagement(), nil
 }
 
-func (m ConnectionResponseDataBlockDeviceManagement) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionResponseDataBlockDeviceManagement) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
index 6788376..67c9ca1 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ConnectionResponseDataBlockTunnelConnection struct {
 // The corresponding interface
 type IConnectionResponseDataBlockTunnelConnection interface {
     IConnectionResponseDataBlock
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m ConnectionResponseDataBlockTunnelConnection) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionResponseDataBlockTunnelConnectionParse(io *spi.ReadBuffer) (ConnectionResponseDataBlockInitializer, error) {
+func ConnectionResponseDataBlockTunnelConnectionParse(io *utils.ReadBuffer) (ConnectionResponseDataBlockInitializer, error) {
 
     // Simple Field (knxAddress)
     _knxAddressMessage, _err := KNXAddressParse(io)
@@ -102,7 +103,7 @@ func ConnectionResponseDataBlockTunnelConnectionParse(io *spi.ReadBuffer) (Conne
     return NewConnectionResponseDataBlockTunnelConnection(knxAddress), nil
 }
 
-func (m ConnectionResponseDataBlockTunnelConnection) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionResponseDataBlockTunnelConnection) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (knxAddress)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
index 7a1c779..b3ffaa4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type ConnectionStateRequest struct {
 // The corresponding interface
 type IConnectionStateRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,7 +94,7 @@ func (m ConnectionStateRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionStateRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func ConnectionStateRequestParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (communicationChannelId)
     communicationChannelId, _communicationChannelIdErr := io.ReadUint8(8)
@@ -130,7 +131,7 @@ func ConnectionStateRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer
     return NewConnectionStateRequest(communicationChannelId, hpaiControlEndpoint), nil
 }
 
-func (m ConnectionStateRequest) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionStateRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (communicationChannelId)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
index dac5df8..4322323 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ConnectionStateResponse struct {
 // The corresponding interface
 type IConnectionStateResponse interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -88,7 +89,7 @@ func (m ConnectionStateResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ConnectionStateResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func ConnectionStateResponseParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (communicationChannelId)
     communicationChannelId, _communicationChannelIdErr := io.ReadUint8(8)
@@ -106,7 +107,7 @@ func ConnectionStateResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitialize
     return NewConnectionStateResponse(communicationChannelId, status), nil
 }
 
-func (m ConnectionStateResponse) Serialize(io spi.WriteBuffer) error {
+func (m ConnectionStateResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (communicationChannelId)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
index dc1e79d..006ba75 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -41,7 +42,7 @@ type DIBDeviceInfo struct {
 // The corresponding interface
 type IDIBDeviceInfo interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -116,7 +117,7 @@ func (m DIBDeviceInfo) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DIBDeviceInfoParse(io *spi.ReadBuffer) (spi.Message, error) {
+func DIBDeviceInfoParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -219,7 +220,7 @@ func DIBDeviceInfoParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewDIBDeviceInfo(descriptionType, knxMedium, deviceStatus, knxAddress, projectInstallationIdentifier, knxNetIpDeviceSerialNumber, knxNetIpDeviceMulticastAddress, knxNetIpDeviceMacAddress, deviceFriendlyName), nil
 }
 
-func (m DIBDeviceInfo) Serialize(io spi.WriteBuffer) error {
+func (m DIBDeviceInfo) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
index 519d6dc..51e25ee 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type DIBSuppSvcFamilies struct {
 // The corresponding interface
 type IDIBSuppSvcFamilies interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -88,7 +89,7 @@ func (m DIBSuppSvcFamilies) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DIBSuppSvcFamiliesParse(io *spi.ReadBuffer) (spi.Message, error) {
+func DIBSuppSvcFamiliesParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -123,7 +124,7 @@ func DIBSuppSvcFamiliesParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewDIBSuppSvcFamilies(descriptionType, serviceIds), nil
 }
 
-func (m DIBSuppSvcFamilies) Serialize(io spi.WriteBuffer) error {
+func (m DIBSuppSvcFamilies) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
index 1430743..82e4b3e 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "reflect"
 )
 
@@ -33,7 +34,7 @@ type DescriptionRequest struct {
 // The corresponding interface
 type IDescriptionRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m DescriptionRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DescriptionRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func DescriptionRequestParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (hpaiControlEndpoint)
     _hpaiControlEndpointMessage, _err := HPAIControlEndpointParse(io)
@@ -102,7 +103,7 @@ func DescriptionRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, er
     return NewDescriptionRequest(hpaiControlEndpoint), nil
 }
 
-func (m DescriptionRequest) Serialize(io spi.WriteBuffer) error {
+func (m DescriptionRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (hpaiControlEndpoint)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
index a117f05..b8786e6 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "reflect"
 )
 
@@ -34,7 +35,7 @@ type DescriptionResponse struct {
 // The corresponding interface
 type IDescriptionResponse interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -89,7 +90,7 @@ func (m DescriptionResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DescriptionResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func DescriptionResponseParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (dibDeviceInfo)
     _dibDeviceInfoMessage, _err := DIBDeviceInfoParse(io)
@@ -117,7 +118,7 @@ func DescriptionResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, e
     return NewDescriptionResponse(dibDeviceInfo, dibSuppSvcFamilies), nil
 }
 
-func (m DescriptionResponse) Serialize(io spi.WriteBuffer) error {
+func (m DescriptionResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (dibDeviceInfo)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
index b9c66f3..cf9d751 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type DeviceConfigurationAck struct {
 // The corresponding interface
 type IDeviceConfigurationAck interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m DeviceConfigurationAck) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DeviceConfigurationAckParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func DeviceConfigurationAckParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (deviceConfigurationAckDataBlock)
     _deviceConfigurationAckDataBlockMessage, _err := DeviceConfigurationAckDataBlockParse(io)
@@ -102,7 +103,7 @@ func DeviceConfigurationAckParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer
     return NewDeviceConfigurationAck(deviceConfigurationAckDataBlock), nil
 }
 
-func (m DeviceConfigurationAck) Serialize(io spi.WriteBuffer) error {
+func (m DeviceConfigurationAck) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (deviceConfigurationAckDataBlock)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
index 17fd154..3d95423 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type DeviceConfigurationAckDataBlock struct {
 // The corresponding interface
 type IDeviceConfigurationAckDataBlock interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -87,7 +88,7 @@ func (m DeviceConfigurationAckDataBlock) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DeviceConfigurationAckDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
+func DeviceConfigurationAckDataBlockParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -117,7 +118,7 @@ func DeviceConfigurationAckDataBlockParse(io *spi.ReadBuffer) (spi.Message, erro
     return NewDeviceConfigurationAckDataBlock(communicationChannelId, sequenceCounter, status), nil
 }
 
-func (m DeviceConfigurationAckDataBlock) Serialize(io spi.WriteBuffer) error {
+func (m DeviceConfigurationAckDataBlock) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
index 96ddf70..f0727b4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type DeviceConfigurationRequest struct {
 // The corresponding interface
 type IDeviceConfigurationRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -89,7 +90,7 @@ func (m DeviceConfigurationRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DeviceConfigurationRequestParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMessageInitializer, error) {
+func DeviceConfigurationRequestParse(io *utils.ReadBuffer, totalLength uint16) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (deviceConfigurationRequestDataBlock)
     _deviceConfigurationRequestDataBlockMessage, _err := DeviceConfigurationRequestDataBlockParse(io)
@@ -117,7 +118,7 @@ func DeviceConfigurationRequestParse(io *spi.ReadBuffer, totalLength uint16) (KN
     return NewDeviceConfigurationRequest(deviceConfigurationRequestDataBlock, cemi), nil
 }
 
-func (m DeviceConfigurationRequest) Serialize(io spi.WriteBuffer) error {
+func (m DeviceConfigurationRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (deviceConfigurationRequestDataBlock)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
index 39b0511..caf809c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type DeviceConfigurationRequestDataBlock struct {
 // The corresponding interface
 type IDeviceConfigurationRequestDataBlock interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -87,7 +88,7 @@ func (m DeviceConfigurationRequestDataBlock) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DeviceConfigurationRequestDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
+func DeviceConfigurationRequestDataBlockParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -125,7 +126,7 @@ func DeviceConfigurationRequestDataBlockParse(io *spi.ReadBuffer) (spi.Message,
     return NewDeviceConfigurationRequestDataBlock(communicationChannelId, sequenceCounter), nil
 }
 
-func (m DeviceConfigurationRequestDataBlock) Serialize(io spi.WriteBuffer) error {
+func (m DeviceConfigurationRequestDataBlock) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
index 346cf23..d3a703b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type DeviceStatus struct {
 // The corresponding interface
 type IDeviceStatus interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -80,7 +81,7 @@ func (m DeviceStatus) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DeviceStatusParse(io *spi.ReadBuffer) (spi.Message, error) {
+func DeviceStatusParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
     {
@@ -106,7 +107,7 @@ func DeviceStatusParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewDeviceStatus(programMode), nil
 }
 
-func (m DeviceStatus) Serialize(io spi.WriteBuffer) error {
+func (m DeviceStatus) Serialize(io utils.WriteBuffer) error {
 
     // Reserved Field (reserved)
     {
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
index 2fcce87..45d6c00 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
@@ -22,7 +22,8 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type DisconnectRequest struct {
 // The corresponding interface
 type IDisconnectRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,7 +94,7 @@ func (m DisconnectRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DisconnectRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func DisconnectRequestParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (communicationChannelId)
     communicationChannelId, _communicationChannelIdErr := io.ReadUint8(8)
@@ -130,7 +131,7 @@ func DisconnectRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
     return NewDisconnectRequest(communicationChannelId, hpaiControlEndpoint), nil
 }
 
-func (m DisconnectRequest) Serialize(io spi.WriteBuffer) error {
+func (m DisconnectRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (communicationChannelId)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
index 57e094c..bd6ca6f 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type DisconnectResponse struct {
 // The corresponding interface
 type IDisconnectResponse interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -88,7 +89,7 @@ func (m DisconnectResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func DisconnectResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func DisconnectResponseParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (communicationChannelId)
     communicationChannelId, _communicationChannelIdErr := io.ReadUint8(8)
@@ -106,7 +107,7 @@ func DisconnectResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, er
     return NewDisconnectResponse(communicationChannelId, status), nil
 }
 
-func (m DisconnectResponse) Serialize(io spi.WriteBuffer) error {
+func (m DisconnectResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (communicationChannelId)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
index 20edd6a..b845082 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type HPAIControlEndpoint struct {
 // The corresponding interface
 type IHPAIControlEndpoint interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -88,7 +89,7 @@ func (m HPAIControlEndpoint) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func HPAIControlEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
+func HPAIControlEndpointParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -123,7 +124,7 @@ func HPAIControlEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewHPAIControlEndpoint(hostProtocolCode, ipAddress, ipPort), nil
 }
 
-func (m HPAIControlEndpoint) Serialize(io spi.WriteBuffer) error {
+func (m HPAIControlEndpoint) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
index 672e13b..f7f4172 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type HPAIDataEndpoint struct {
 // The corresponding interface
 type IHPAIDataEndpoint interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -88,7 +89,7 @@ func (m HPAIDataEndpoint) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func HPAIDataEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
+func HPAIDataEndpointParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -123,7 +124,7 @@ func HPAIDataEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewHPAIDataEndpoint(hostProtocolCode, ipAddress, ipPort), nil
 }
 
-func (m HPAIDataEndpoint) Serialize(io spi.WriteBuffer) error {
+func (m HPAIDataEndpoint) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
index fa0f45f..2cc4a60 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type HPAIDiscoveryEndpoint struct {
 // The corresponding interface
 type IHPAIDiscoveryEndpoint interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -88,7 +89,7 @@ func (m HPAIDiscoveryEndpoint) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func HPAIDiscoveryEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
+func HPAIDiscoveryEndpointParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -123,7 +124,7 @@ func HPAIDiscoveryEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewHPAIDiscoveryEndpoint(hostProtocolCode, ipAddress, ipPort), nil
 }
 
-func (m HPAIDiscoveryEndpoint) Serialize(io spi.WriteBuffer) error {
+func (m HPAIDiscoveryEndpoint) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
index 30bb564..1983708 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type HostProtocolCode uint8
 
 type IHostProtocolCode interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -60,12 +63,12 @@ func (m HostProtocolCode) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func HostProtocolCodeParse(io *spi.ReadBuffer) (HostProtocolCode, error) {
+func HostProtocolCodeParse(io *utils.ReadBuffer) (HostProtocolCode, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e HostProtocolCode) Serialize(io spi.WriteBuffer) error {
+func (e HostProtocolCode) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
index 69153db..cf3ac0c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type IPAddress struct {
 // The corresponding interface
 type IIPAddress interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -78,7 +79,7 @@ func (m IPAddress) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func IPAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
+func IPAddressParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Array field (addr)
     // Count array
@@ -96,7 +97,7 @@ func IPAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewIPAddress(addr), nil
 }
 
-func (m IPAddress) Serialize(io spi.WriteBuffer) error {
+func (m IPAddress) Serialize(io utils.WriteBuffer) error {
 
     // Array Field (addr)
     if m.Addr != nil {
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go
index 4909f1b..f4a75a8 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type KNXAddress struct {
 // The corresponding interface
 type IKNXAddress interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -84,7 +85,7 @@ func (m KNXAddress) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KNXAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
+func KNXAddressParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Simple Field (mainGroup)
     mainGroup, _mainGroupErr := io.ReadUint8(4)
@@ -108,7 +109,7 @@ func KNXAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewKNXAddress(mainGroup, middleGroup, subGroup), nil
 }
 
-func (m KNXAddress) Serialize(io spi.WriteBuffer) error {
+func (m KNXAddress) Serialize(io utils.WriteBuffer) error {
 
     // Simple Field (mainGroup)
     mainGroup := uint8(m.MainGroup)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go
index 5783e93..aa48a96 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KNXGroupAddress struct {
 type IKNXGroupAddress interface {
     spi.Message
     NumLevels() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type KNXGroupAddressInitializer interface {
@@ -79,7 +80,7 @@ func (m KNXGroupAddress) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KNXGroupAddressParse(io *spi.ReadBuffer, numLevels uint8) (spi.Message, error) {
+func KNXGroupAddressParse(io *utils.ReadBuffer, numLevels uint8) (spi.Message, error) {
 
     // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
     var initializer KNXGroupAddressInitializer
@@ -100,7 +101,7 @@ func KNXGroupAddressParse(io *spi.ReadBuffer, numLevels uint8) (spi.Message, err
     return initializer.initialize(), nil
 }
 
-func KNXGroupAddressSerialize(io spi.WriteBuffer, m KNXGroupAddress, i IKNXGroupAddress, childSerialize func() error) error {
+func KNXGroupAddressSerialize(io utils.WriteBuffer, m KNXGroupAddress, i IKNXGroupAddress, childSerialize func() error) error {
 
     // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
     _typeSwitchErr := childSerialize()
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go
index 4661eb2..66d69c9 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type KNXGroupAddress2Level struct {
 // The corresponding interface
 type IKNXGroupAddress2Level interface {
     IKNXGroupAddress
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -88,7 +89,7 @@ func (m KNXGroupAddress2Level) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KNXGroupAddress2LevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer, error) {
+func KNXGroupAddress2LevelParse(io *utils.ReadBuffer) (KNXGroupAddressInitializer, error) {
 
     // Simple Field (mainGroup)
     mainGroup, _mainGroupErr := io.ReadUint8(5)
@@ -106,7 +107,7 @@ func KNXGroupAddress2LevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer,
     return NewKNXGroupAddress2Level(mainGroup, subGroup), nil
 }
 
-func (m KNXGroupAddress2Level) Serialize(io spi.WriteBuffer) error {
+func (m KNXGroupAddress2Level) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (mainGroup)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go
index 4fe7d63..57f98dc 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type KNXGroupAddress3Level struct {
 // The corresponding interface
 type IKNXGroupAddress3Level interface {
     IKNXGroupAddress
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -92,7 +93,7 @@ func (m KNXGroupAddress3Level) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KNXGroupAddress3LevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer, error) {
+func KNXGroupAddress3LevelParse(io *utils.ReadBuffer) (KNXGroupAddressInitializer, error) {
 
     // Simple Field (mainGroup)
     mainGroup, _mainGroupErr := io.ReadUint8(5)
@@ -116,7 +117,7 @@ func KNXGroupAddress3LevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer,
     return NewKNXGroupAddress3Level(mainGroup, middleGroup, subGroup), nil
 }
 
-func (m KNXGroupAddress3Level) Serialize(io spi.WriteBuffer) error {
+func (m KNXGroupAddress3Level) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (mainGroup)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go
index 87f3cbd..a9bab4b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KNXGroupAddressFreeLevel struct {
 // The corresponding interface
 type IKNXGroupAddressFreeLevel interface {
     IKNXGroupAddress
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KNXGroupAddressFreeLevel) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KNXGroupAddressFreeLevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer, error) {
+func KNXGroupAddressFreeLevelParse(io *utils.ReadBuffer) (KNXGroupAddressInitializer, error) {
 
     // Simple Field (subGroup)
     subGroup, _subGroupErr := io.ReadUint16(16)
@@ -96,7 +97,7 @@ func KNXGroupAddressFreeLevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializ
     return NewKNXGroupAddressFreeLevel(subGroup), nil
 }
 
-func (m KNXGroupAddressFreeLevel) Serialize(io spi.WriteBuffer) error {
+func (m KNXGroupAddressFreeLevel) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (subGroup)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go
index 635d4ba..dd9ccd3 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "strconv"
 )
 
@@ -36,7 +37,7 @@ type KNXNetIPMessage struct {
 type IKNXNetIPMessage interface {
     spi.Message
     MsgType() uint16
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type KNXNetIPMessageInitializer interface {
@@ -95,7 +96,7 @@ func (m KNXNetIPMessage) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KNXNetIPMessageParse(io *spi.ReadBuffer) (spi.Message, error) {
+func KNXNetIPMessageParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (headerLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _headerLengthErr := io.ReadUint8(8)
@@ -169,7 +170,7 @@ func KNXNetIPMessageParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func KNXNetIPMessageSerialize(io spi.WriteBuffer, m KNXNetIPMessage, i IKNXNetIPMessage, childSerialize func() error) error {
+func KNXNetIPMessageSerialize(io utils.WriteBuffer, m KNXNetIPMessage, i IKNXNetIPMessage, childSerialize func() error) error {
 
     // Implicit Field (headerLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     headerLength := uint8(uint8(6))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
index a6a6ef3..0611849 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxDatapoint.go
@@ -19,13 +19,13 @@
 package model
 
 import (
-    "errors"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/model/values"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    api "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go/values"
+	"errors"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/model/values"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	api "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go/values"
 )
 
-func KnxDatapointParse(io *spi.ReadBuffer, mainNumber uint16, subNumber uint16) (api.PlcValue, error) {
+func KnxDatapointParse(io *utils.ReadBuffer, mainNumber uint16, subNumber uint16) (api.PlcValue, error) {
     switch {
         case mainNumber == 1: // BOOL
 
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
index 3166ecd..9e66770 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type KnxLayer uint8
 
 type IKnxLayer interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -63,12 +66,12 @@ func (m KnxLayer) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxLayerParse(io *spi.ReadBuffer) (KnxLayer, error) {
+func KnxLayerParse(io *utils.ReadBuffer) (KnxLayer, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e KnxLayer) Serialize(io spi.WriteBuffer) error {
+func (e KnxLayer) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
index a0ab5a5..365277b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KnxNetIpCore struct {
 // The corresponding interface
 type IKnxNetIpCore interface {
     IServiceId
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KnxNetIpCore) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxNetIpCoreParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
+func KnxNetIpCoreParse(io *utils.ReadBuffer) (ServiceIdInitializer, error) {
 
     // Simple Field (version)
     version, _versionErr := io.ReadUint8(8)
@@ -96,7 +97,7 @@ func KnxNetIpCoreParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
     return NewKnxNetIpCore(version), nil
 }
 
-func (m KnxNetIpCore) Serialize(io spi.WriteBuffer) error {
+func (m KnxNetIpCore) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (version)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
index 51b1cd9..8212ff2 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KnxNetIpDeviceManagement struct {
 // The corresponding interface
 type IKnxNetIpDeviceManagement interface {
     IServiceId
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KnxNetIpDeviceManagement) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxNetIpDeviceManagementParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
+func KnxNetIpDeviceManagementParse(io *utils.ReadBuffer) (ServiceIdInitializer, error) {
 
     // Simple Field (version)
     version, _versionErr := io.ReadUint8(8)
@@ -96,7 +97,7 @@ func KnxNetIpDeviceManagementParse(io *spi.ReadBuffer) (ServiceIdInitializer, er
     return NewKnxNetIpDeviceManagement(version), nil
 }
 
-func (m KnxNetIpDeviceManagement) Serialize(io spi.WriteBuffer) error {
+func (m KnxNetIpDeviceManagement) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (version)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
index 30d00b8..777ed8e 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KnxNetIpTunneling struct {
 // The corresponding interface
 type IKnxNetIpTunneling interface {
     IServiceId
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KnxNetIpTunneling) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxNetIpTunnelingParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
+func KnxNetIpTunnelingParse(io *utils.ReadBuffer) (ServiceIdInitializer, error) {
 
     // Simple Field (version)
     version, _versionErr := io.ReadUint8(8)
@@ -96,7 +97,7 @@ func KnxNetIpTunnelingParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
     return NewKnxNetIpTunneling(version), nil
 }
 
-func (m KnxNetIpTunneling) Serialize(io spi.WriteBuffer) error {
+func (m KnxNetIpTunneling) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (version)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
index 69022af..df583a9 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KnxNetObjectServer struct {
 // The corresponding interface
 type IKnxNetObjectServer interface {
     IServiceId
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KnxNetObjectServer) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxNetObjectServerParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
+func KnxNetObjectServerParse(io *utils.ReadBuffer) (ServiceIdInitializer, error) {
 
     // Simple Field (version)
     version, _versionErr := io.ReadUint8(8)
@@ -96,7 +97,7 @@ func KnxNetObjectServerParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
     return NewKnxNetObjectServer(version), nil
 }
 
-func (m KnxNetObjectServer) Serialize(io spi.WriteBuffer) error {
+func (m KnxNetObjectServer) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (version)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
index b821858..dd79983 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KnxNetRemoteConfigurationAndDiagnosis struct {
 // The corresponding interface
 type IKnxNetRemoteConfigurationAndDiagnosis interface {
     IServiceId
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KnxNetRemoteConfigurationAndDiagnosis) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxNetRemoteConfigurationAndDiagnosisParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
+func KnxNetRemoteConfigurationAndDiagnosisParse(io *utils.ReadBuffer) (ServiceIdInitializer, error) {
 
     // Simple Field (version)
     version, _versionErr := io.ReadUint8(8)
@@ -96,7 +97,7 @@ func KnxNetRemoteConfigurationAndDiagnosisParse(io *spi.ReadBuffer) (ServiceIdIn
     return NewKnxNetRemoteConfigurationAndDiagnosis(version), nil
 }
 
-func (m KnxNetRemoteConfigurationAndDiagnosis) Serialize(io spi.WriteBuffer) error {
+func (m KnxNetRemoteConfigurationAndDiagnosis) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (version)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
index 3f56a32..1fc4ac6 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type KnxNetRemoteLogging struct {
 // The corresponding interface
 type IKnxNetRemoteLogging interface {
     IServiceId
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -84,7 +85,7 @@ func (m KnxNetRemoteLogging) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func KnxNetRemoteLoggingParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
+func KnxNetRemoteLoggingParse(io *utils.ReadBuffer) (ServiceIdInitializer, error) {
 
     // Simple Field (version)
     version, _versionErr := io.ReadUint8(8)
@@ -96,7 +97,7 @@ func KnxNetRemoteLoggingParse(io *spi.ReadBuffer) (ServiceIdInitializer, error)
     return NewKnxNetRemoteLogging(version), nil
 }
 
-func (m KnxNetRemoteLogging) Serialize(io spi.WriteBuffer) error {
+func (m KnxNetRemoteLogging) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (version)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxStaticHelper.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxStaticHelper.go
index 7956658..3f8fec8 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxStaticHelper.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxStaticHelper.go
@@ -20,10 +20,10 @@ package model
 
 import (
     "math"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
-func KnxHelperBytesToF16(io *spi.ReadBuffer) (float32, error) {
+func KnxHelperBytesToF16(io *utils.ReadBuffer) (float32, error) {
     negative, err := io.ReadBit()
     if err != nil {
         return 0.0, err
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
index dee92b2..267f687 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type MACAddress struct {
 // The corresponding interface
 type IMACAddress interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -78,7 +79,7 @@ func (m MACAddress) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func MACAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
+func MACAddressParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Array field (addr)
     // Count array
@@ -96,7 +97,7 @@ func MACAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewMACAddress(addr), nil
 }
 
-func (m MACAddress) Serialize(io spi.WriteBuffer) error {
+func (m MACAddress) Serialize(io utils.WriteBuffer) error {
 
     // Array Field (addr)
     if m.Addr != nil {
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
index c00aabd..613dcb7 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ProjectInstallationIdentifier struct {
 // The corresponding interface
 type IProjectInstallationIdentifier interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -80,7 +81,7 @@ func (m ProjectInstallationIdentifier) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ProjectInstallationIdentifierParse(io *spi.ReadBuffer) (spi.Message, error) {
+func ProjectInstallationIdentifierParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Simple Field (projectNumber)
     projectNumber, _projectNumberErr := io.ReadUint8(8)
@@ -98,7 +99,7 @@ func ProjectInstallationIdentifierParse(io *spi.ReadBuffer) (spi.Message, error)
     return NewProjectInstallationIdentifier(projectNumber, installationNumber), nil
 }
 
-func (m ProjectInstallationIdentifier) Serialize(io spi.WriteBuffer) error {
+func (m ProjectInstallationIdentifier) Serialize(io utils.WriteBuffer) error {
 
     // Simple Field (projectNumber)
     projectNumber := uint8(m.ProjectNumber)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
index 397cd90..21b6c2d 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type RelativeTimestamp struct {
 // The corresponding interface
 type IRelativeTimestamp interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -76,7 +77,7 @@ func (m RelativeTimestamp) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func RelativeTimestampParse(io *spi.ReadBuffer) (spi.Message, error) {
+func RelativeTimestampParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Simple Field (timestamp)
     timestamp, _timestampErr := io.ReadUint16(16)
@@ -88,7 +89,7 @@ func RelativeTimestampParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewRelativeTimestamp(timestamp), nil
 }
 
-func (m RelativeTimestamp) Serialize(io spi.WriteBuffer) error {
+func (m RelativeTimestamp) Serialize(io utils.WriteBuffer) error {
 
     // Simple Field (timestamp)
     timestamp := uint16(m.Timestamp)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
index 882dd97..eb388b4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type RoutingIndication struct {
 // The corresponding interface
 type IRoutingIndication interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -79,13 +80,13 @@ func (m RoutingIndication) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func RoutingIndicationParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func RoutingIndicationParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Create the instance
     return NewRoutingIndication(), nil
 }
 
-func (m RoutingIndication) Serialize(io spi.WriteBuffer) error {
+func (m RoutingIndication) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
index f605a3b..2410926 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type SearchRequest struct {
 // The corresponding interface
 type ISearchRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m SearchRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func SearchRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func SearchRequestParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (hpaiIDiscoveryEndpoint)
     _hpaiIDiscoveryEndpointMessage, _err := HPAIDiscoveryEndpointParse(io)
@@ -102,7 +103,7 @@ func SearchRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error)
     return NewSearchRequest(hpaiIDiscoveryEndpoint), nil
 }
 
-func (m SearchRequest) Serialize(io spi.WriteBuffer) error {
+func (m SearchRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (hpaiIDiscoveryEndpoint)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
index 09430c1..0d9842e 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type SearchResponse struct {
 // The corresponding interface
 type ISearchResponse interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,7 +94,7 @@ func (m SearchResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func SearchResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func SearchResponseParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (hpaiControlEndpoint)
     _hpaiControlEndpointMessage, _err := HPAIControlEndpointParse(io)
@@ -132,7 +133,7 @@ func SearchResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error)
     return NewSearchResponse(hpaiControlEndpoint, dibDeviceInfo, dibSuppSvcFamilies), nil
 }
 
-func (m SearchResponse) Serialize(io spi.WriteBuffer) error {
+func (m SearchResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (hpaiControlEndpoint)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
index 2a48411..accc696 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type ServiceId struct {
 type IServiceId interface {
     spi.Message
     ServiceType() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type ServiceIdInitializer interface {
@@ -82,7 +83,7 @@ func (m ServiceId) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ServiceIdParse(io *spi.ReadBuffer) (spi.Message, error) {
+func ServiceIdParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Discriminator Field (serviceType) (Used as input to a switch field)
     serviceType, _serviceTypeErr := io.ReadUint8(8)
@@ -115,7 +116,7 @@ func ServiceIdParse(io *spi.ReadBuffer) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func ServiceIdSerialize(io spi.WriteBuffer, m ServiceId, i IServiceId, childSerialize func() error) error {
+func ServiceIdSerialize(io utils.WriteBuffer, m ServiceId, i IServiceId, childSerialize func() error) error {
 
     // Discriminator Field (serviceType) (Used as input to a switch field)
     serviceType := uint8(i.ServiceType())
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
index 9cfc20e..6cfccf6 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type Status uint8
 
 type IStatus interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -90,12 +93,12 @@ func (m Status) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func StatusParse(io *spi.ReadBuffer) (Status, error) {
+func StatusParse(io *utils.ReadBuffer) (Status, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e Status) Serialize(io spi.WriteBuffer) error {
+func (e Status) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go
index 8706e63..5d95173 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type TPCI uint8
 
 type ITPCI interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -66,12 +69,12 @@ func (m TPCI) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func TPCIParse(io *spi.ReadBuffer) (TPCI, error) {
+func TPCIParse(io *utils.ReadBuffer) (TPCI, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e TPCI) Serialize(io spi.WriteBuffer) error {
+func (e TPCI) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
index 3b95a08..ad83ed5 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type TunnelingRequest struct {
 // The corresponding interface
 type ITunnelingRequest interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -89,7 +90,7 @@ func (m TunnelingRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func TunnelingRequestParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMessageInitializer, error) {
+func TunnelingRequestParse(io *utils.ReadBuffer, totalLength uint16) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (tunnelingRequestDataBlock)
     _tunnelingRequestDataBlockMessage, _err := TunnelingRequestDataBlockParse(io)
@@ -117,7 +118,7 @@ func TunnelingRequestParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMess
     return NewTunnelingRequest(tunnelingRequestDataBlock, cemi), nil
 }
 
-func (m TunnelingRequest) Serialize(io spi.WriteBuffer) error {
+func (m TunnelingRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (tunnelingRequestDataBlock)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
index fe80f51..5f1ab13 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
@@ -22,6 +22,7 @@ import (
     "errors"
     log "github.com/sirupsen/logrus"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type TunnelingRequestDataBlock struct {
 // The corresponding interface
 type ITunnelingRequestDataBlock interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -87,7 +88,7 @@ func (m TunnelingRequestDataBlock) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func TunnelingRequestDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
+func TunnelingRequestDataBlockParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -125,7 +126,7 @@ func TunnelingRequestDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewTunnelingRequestDataBlock(communicationChannelId, sequenceCounter), nil
 }
 
-func (m TunnelingRequestDataBlock) Serialize(io spi.WriteBuffer) error {
+func (m TunnelingRequestDataBlock) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
index 4a705f9..4df1a75 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
@@ -21,7 +21,8 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-    "reflect"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+	"reflect"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type TunnelingResponse struct {
 // The corresponding interface
 type ITunnelingResponse interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -85,7 +86,7 @@ func (m TunnelingResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func TunnelingResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error) {
+func TunnelingResponseParse(io *utils.ReadBuffer) (KNXNetIPMessageInitializer, error) {
 
     // Simple Field (tunnelingResponseDataBlock)
     _tunnelingResponseDataBlockMessage, _err := TunnelingResponseDataBlockParse(io)
@@ -102,7 +103,7 @@ func TunnelingResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
     return NewTunnelingResponse(tunnelingResponseDataBlock), nil
 }
 
-func (m TunnelingResponse) Serialize(io spi.WriteBuffer) error {
+func (m TunnelingResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (tunnelingResponseDataBlock)
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
index c7321b4..b90ee86 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type TunnelingResponseDataBlock struct {
 // The corresponding interface
 type ITunnelingResponseDataBlock interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -87,7 +88,7 @@ func (m TunnelingResponseDataBlock) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func TunnelingResponseDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
+func TunnelingResponseDataBlockParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     _, _structureLengthErr := io.ReadUint8(8)
@@ -117,7 +118,7 @@ func TunnelingResponseDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewTunnelingResponseDataBlock(communicationChannelId, sequenceCounter, status), nil
 }
 
-func (m TunnelingResponseDataBlock) Serialize(io spi.WriteBuffer) error {
+func (m TunnelingResponseDataBlock) Serialize(io utils.WriteBuffer) error {
 
     // Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     structureLength := uint8(uint8(m.LengthInBytes()))
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
index ae5d20a..1f789aa 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type UnknownMessage struct {
 // The corresponding interface
 type IUnknownMessage interface {
     IKNXNetIPMessage
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,7 +87,7 @@ func (m UnknownMessage) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func UnknownMessageParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMessageInitializer, error) {
+func UnknownMessageParse(io *utils.ReadBuffer, totalLength uint16) (KNXNetIPMessageInitializer, error) {
 
     // Array field (unknownData)
     // Count array
@@ -104,7 +105,7 @@ func UnknownMessageParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMessag
     return NewUnknownMessage(unknownData), nil
 }
 
-func (m UnknownMessage) Serialize(io spi.WriteBuffer) error {
+func (m UnknownMessage) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Array Field (unknownData)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/ModbusMessageCodec.go b/sandbox/plc4go/internal/plc4go/modbus/ModbusMessageCodec.go
index a70254c..1bb1f4e 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/ModbusMessageCodec.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/ModbusMessageCodec.go
@@ -22,8 +22,8 @@ import (
     "errors"
     "fmt"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/modbus/readwrite/model"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/transports"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "time"
 )
 
@@ -62,7 +62,7 @@ func (m *ModbusMessageCodec) Send(message interface{}) error {
     // Cast the message to the correct type of struct
     adu := model.CastModbusTcpADU(message)
     // Serialize the request
-    wb := spi.WriteBufferNew()
+    wb := utils.WriteBufferNew()
     err := adu.Serialize(*wb)
     if err != nil {
         return errors.New("error serializing request " + err.Error())
@@ -92,7 +92,7 @@ func (m *ModbusMessageCodec) Receive() (interface{}, error) {
                 // TODO: Possibly clean up ...
                 return nil, nil
             }
-            rb := spi.ReadBufferNew(data)
+            rb := utils.ReadBufferNew(data)
             adu, err := model.ModbusTcpADUParse(rb, true)
             if err != nil {
                 // TODO: Possibly clean up ...
diff --git a/sandbox/plc4go/internal/plc4go/modbus/ModbusReader.go b/sandbox/plc4go/internal/plc4go/modbus/ModbusReader.go
index 17a5bea..74c0cdb 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/ModbusReader.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/ModbusReader.go
@@ -192,7 +192,7 @@ func toPlc4xResponse(requestAdu modbusModel.ModbusTcpADU, responseAdu modbusMode
     }
 
     // Decode the data according to the information from the request
-    rb := spi.ReadBufferNew(data)
+    rb := utils.ReadBufferNew(data)
     value, err := modbusModel.DataItemParse(rb, field.Datatype, field.Quantity)
     if err != nil {
         return nil, err
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/DataItem.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/DataItem.go
index e60410f..142e711 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/DataItem.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/DataItem.go
@@ -21,11 +21,11 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/model/values"
-    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     api "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go/values"
 )
 
-func DataItemParse(io *spi.ReadBuffer, dataType string, numberOfValues uint16) (api.PlcValue, error) {
+func DataItemParse(io *utils.ReadBuffer, dataType string, numberOfValues uint16) (api.PlcValue, error) {
     switch {
         case dataType == "IEC61131_BOOL" && numberOfValues == 1: // BOOL
 
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
index 4c7ce6a..77a4008 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
     "strconv"
 )
 
@@ -35,7 +36,7 @@ type ModbusConstants struct {
 // The corresponding interface
 type IModbusConstants interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 
@@ -79,7 +80,7 @@ func (m ModbusConstants) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusConstantsParse(io *spi.ReadBuffer) (spi.Message, error) {
+func ModbusConstantsParse(io *utils.ReadBuffer) (spi.Message, error) {
 
     // Const Field (modbusTcpDefaultPort)
     modbusTcpDefaultPort, _modbusTcpDefaultPortErr := io.ReadUint16(16)
@@ -94,7 +95,7 @@ func ModbusConstantsParse(io *spi.ReadBuffer) (spi.Message, error) {
     return NewModbusConstants(), nil
 }
 
-func (m ModbusConstants) Serialize(io spi.WriteBuffer) error {
+func (m ModbusConstants) Serialize(io utils.WriteBuffer) error {
 
     // Const Field (modbusTcpDefaultPort)
     _modbusTcpDefaultPortErr := io.WriteUint16(16, 502)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
deleted file mode 100644
index 572143a..0000000
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-package model
-
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
-
-type ModbusDataType uint8
-
-type IModbusDataType interface {
-    spi.Message
-    DataTypeSize() uint8
-    Serialize(io spi.WriteBuffer) error
-}
-
-const(
-    ModbusDataType_NULL ModbusDataType = 00
-    ModbusDataType_BOOL ModbusDataType = 01
-    ModbusDataType_BYTE ModbusDataType = 10
-    ModbusDataType_WORD ModbusDataType = 11
-    ModbusDataType_DWORD ModbusDataType = 12
-    ModbusDataType_LWORD ModbusDataType = 13
-    ModbusDataType_SINT ModbusDataType = 20
-    ModbusDataType_INT ModbusDataType = 21
-    ModbusDataType_DINT ModbusDataType = 22
-    ModbusDataType_LINT ModbusDataType = 23
-    ModbusDataType_USINT ModbusDataType = 24
-    ModbusDataType_UINT ModbusDataType = 25
-    ModbusDataType_UDINT ModbusDataType = 26
-    ModbusDataType_ULINT ModbusDataType = 27
-    ModbusDataType_REAL ModbusDataType = 30
-    ModbusDataType_LREAL ModbusDataType = 31
-    ModbusDataType_TIME ModbusDataType = 40
-    ModbusDataType_LTIME ModbusDataType = 41
-    ModbusDataType_DATE ModbusDataType = 50
-    ModbusDataType_LDATE ModbusDataType = 51
-    ModbusDataType_TIME_OF_DAY ModbusDataType = 60
-    ModbusDataType_LTIME_OF_DAY ModbusDataType = 61
-    ModbusDataType_DATE_AND_TIME ModbusDataType = 70
-    ModbusDataType_LDATE_AND_TIME ModbusDataType = 71
-    ModbusDataType_CHAR ModbusDataType = 80
-    ModbusDataType_WCHAR ModbusDataType = 81
-    ModbusDataType_STRING ModbusDataType = 82
-    ModbusDataType_WSTRING ModbusDataType = 83
-)
-
-
-func (e ModbusDataType) DataTypeSize() uint8 {
-    switch e  {
-        case 00: { /* '00' */
-            return 0
-        }
-        case 01: { /* '01' */
-            return 1
-        }
-        case 10: { /* '10' */
-            return 1
-        }
-        case 11: { /* '11' */
-            return 2
-        }
-        case 12: { /* '12' */
-            return 4
-        }
-        case 13: { /* '13' */
-            return 8
-        }
-        case 20: { /* '20' */
-            return 1
-        }
-        case 21: { /* '21' */
-            return 2
-        }
-        case 22: { /* '22' */
-            return 4
-        }
-        case 23: { /* '23' */
-            return 8
-        }
-        case 24: { /* '24' */
-            return 1
-        }
-        case 25: { /* '25' */
-            return 2
-        }
-        case 26: { /* '26' */
-            return 4
-        }
-        case 27: { /* '27' */
-            return 8
-        }
-        case 30: { /* '30' */
-            return 4
-        }
-        case 31: { /* '31' */
-            return 8
-        }
-        case 40: { /* '40' */
-            return 8
-        }
-        case 41: { /* '41' */
-            return 8
-        }
-        case 50: { /* '50' */
-            return 8
-        }
-        case 51: { /* '51' */
-            return 8
-        }
-        case 60: { /* '60' */
-            return 8
-        }
-        case 61: { /* '61' */
-            return 8
-        }
-        case 70: { /* '70' */
-            return 8
-        }
-        case 71: { /* '71' */
-            return 8
-        }
-        case 80: { /* '80' */
-            return 1
-        }
-        case 81: { /* '81' */
-            return 2
-        }
-        case 82: { /* '82' */
-            return 1
-        }
-        case 83: { /* '83' */
-            return 2
-        }
-        default: {
-            return 0
-        }
-    }
-}
-func ModbusDataTypeValueOf(value uint8) ModbusDataType {
-    switch value {
-        case 00:
-            return ModbusDataType_NULL
-        case 01:
-            return ModbusDataType_BOOL
-        case 10:
-            return ModbusDataType_BYTE
-        case 11:
-            return ModbusDataType_WORD
-        case 12:
-            return ModbusDataType_DWORD
-        case 13:
-            return ModbusDataType_LWORD
-        case 20:
-            return ModbusDataType_SINT
-        case 21:
-            return ModbusDataType_INT
-        case 22:
-            return ModbusDataType_DINT
-        case 23:
-            return ModbusDataType_LINT
-        case 24:
-            return ModbusDataType_USINT
-        case 25:
-            return ModbusDataType_UINT
-        case 26:
-            return ModbusDataType_UDINT
-        case 27:
-            return ModbusDataType_ULINT
-        case 30:
-            return ModbusDataType_REAL
-        case 31:
-            return ModbusDataType_LREAL
-        case 40:
-            return ModbusDataType_TIME
-        case 41:
-            return ModbusDataType_LTIME
-        case 50:
-            return ModbusDataType_DATE
-        case 51:
-            return ModbusDataType_LDATE
-        case 60:
-            return ModbusDataType_TIME_OF_DAY
-        case 61:
-            return ModbusDataType_LTIME_OF_DAY
-        case 70:
-            return ModbusDataType_DATE_AND_TIME
-        case 71:
-            return ModbusDataType_LDATE_AND_TIME
-        case 80:
-            return ModbusDataType_CHAR
-        case 81:
-            return ModbusDataType_WCHAR
-        case 82:
-            return ModbusDataType_STRING
-        case 83:
-            return ModbusDataType_WSTRING
-    }
-    return 0
-}
-
-func CastModbusDataType(structType interface{}) ModbusDataType {
-    castFunc := func(typ interface{}) ModbusDataType {
-        if sModbusDataType, ok := typ.(ModbusDataType); ok {
-            return sModbusDataType
-        }
-        return 0
-    }
-    return castFunc(structType)
-}
-
-func (m ModbusDataType) LengthInBits() uint16 {
-    return 8
-}
-
-func (m ModbusDataType) LengthInBytes() uint16 {
-    return m.LengthInBits() / 8
-}
-
-func ModbusDataTypeParse(io *spi.ReadBuffer) (ModbusDataType, error) {
-    // TODO: Implement ...
-    return 0, nil
-}
-
-func (e ModbusDataType) Serialize(io spi.WriteBuffer) error {
-    // TODO: Implement ...
-    return nil
-}
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go
index a9cc009..14338e4 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataTypeSizes.go
@@ -18,14 +18,17 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type ModbusDataTypeSizes string
 
 type IModbusDataTypeSizes interface {
     spi.Message
     DataTypeSize() uint8
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -225,12 +228,12 @@ func (m ModbusDataTypeSizes) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusDataTypeSizesParse(io *spi.ReadBuffer) (ModbusDataTypeSizes, error) {
+func ModbusDataTypeSizesParse(io *utils.ReadBuffer) (ModbusDataTypeSizes, error) {
     // TODO: Implement ...
     return "", nil
 }
 
-func (e ModbusDataTypeSizes) Serialize(io spi.WriteBuffer) error {
+func (e ModbusDataTypeSizes) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
index 32c42f7..94fc14d 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusErrorCode.go
@@ -18,13 +18,16 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+import (
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
+)
 
 type ModbusErrorCode uint8
 
 type IModbusErrorCode interface {
     spi.Message
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 const(
@@ -84,12 +87,12 @@ func (m ModbusErrorCode) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusErrorCodeParse(io *spi.ReadBuffer) (ModbusErrorCode, error) {
+func ModbusErrorCodeParse(io *utils.ReadBuffer) (ModbusErrorCode, error) {
     // TODO: Implement ...
     return 0, nil
 }
 
-func (e ModbusErrorCode) Serialize(io spi.WriteBuffer) error {
+func (e ModbusErrorCode) Serialize(io utils.WriteBuffer) error {
     // TODO: Implement ...
     return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
index f77d2fe..c9569cc 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type IModbusPDU interface {
     ErrorFlag() bool
     FunctionFlag() uint8
     Response() bool
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 type ModbusPDUInitializer interface {
@@ -95,7 +96,7 @@ func (m ModbusPDU) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUParse(io *spi.ReadBuffer, response bool) (spi.Message, error) {
+func ModbusPDUParse(io *utils.ReadBuffer, response bool) (spi.Message, error) {
 
     // Discriminator Field (errorFlag) (Used as input to a switch field)
     errorFlag, _errorFlagErr := io.ReadBit()
@@ -200,7 +201,7 @@ func ModbusPDUParse(io *spi.ReadBuffer, response bool) (spi.Message, error) {
     return initializer.initialize(), nil
 }
 
-func ModbusPDUSerialize(io spi.WriteBuffer, m ModbusPDU, i IModbusPDU, childSerialize func() error) error {
+func ModbusPDUSerialize(io utils.WriteBuffer, m ModbusPDU, i IModbusPDU, childSerialize func() error) error {
 
     // Discriminator Field (errorFlag) (Used as input to a switch field)
     errorFlag := bool(i.ErrorFlag())
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
index 5b2e386..eb1dc23 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ModbusPDUDiagnosticRequest struct {
 // The corresponding interface
 type IModbusPDUDiagnosticRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -96,7 +97,7 @@ func (m ModbusPDUDiagnosticRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUDiagnosticRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUDiagnosticRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (subFunction)
     subFunction, _subFunctionErr := io.ReadUint16(16)
@@ -114,7 +115,7 @@ func ModbusPDUDiagnosticRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer,
     return NewModbusPDUDiagnosticRequest(subFunction, data), nil
 }
 
-func (m ModbusPDUDiagnosticRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUDiagnosticRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (subFunction)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go
index 57baded..a7ce9c5 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ModbusPDUDiagnosticResponse struct {
 // The corresponding interface
 type IModbusPDUDiagnosticResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -96,7 +97,7 @@ func (m ModbusPDUDiagnosticResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUDiagnosticResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUDiagnosticResponseParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (subFunction)
     subFunction, _subFunctionErr := io.ReadUint16(16)
@@ -114,7 +115,7 @@ func ModbusPDUDiagnosticResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer,
     return NewModbusPDUDiagnosticResponse(subFunction, data), nil
 }
 
-func (m ModbusPDUDiagnosticResponse) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUDiagnosticResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (subFunction)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
index 0521c4d..c4e5911 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type ModbusPDUError struct {
 // The corresponding interface
 type IModbusPDUError interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -92,7 +93,7 @@ func (m ModbusPDUError) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUErrorParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUErrorParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (exceptionCode)
     exceptionCode, _exceptionCodeErr := io.ReadUint8(8)
@@ -104,7 +105,7 @@ func ModbusPDUErrorParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
     return NewModbusPDUError(exceptionCode), nil
 }
 
-func (m ModbusPDUError) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUError) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (exceptionCode)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go
index 293839b..90b949f 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterRequest.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type ModbusPDUGetComEventCounterRequest struct {
 // The corresponding interface
 type IModbusPDUGetComEventCounterRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -87,13 +88,13 @@ func (m ModbusPDUGetComEventCounterRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUGetComEventCounterRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUGetComEventCounterRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Create the instance
     return NewModbusPDUGetComEventCounterRequest(), nil
 }
 
-func (m ModbusPDUGetComEventCounterRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUGetComEventCounterRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go
index 362c21c..789e87e 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventCounterResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ModbusPDUGetComEventCounterResponse struct {
 // The corresponding interface
 type IModbusPDUGetComEventCounterResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -96,7 +97,7 @@ func (m ModbusPDUGetComEventCounterResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUGetComEventCounterResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUGetComEventCounterResponseParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (status)
     status, _statusErr := io.ReadUint16(16)
@@ -114,7 +115,7 @@ func ModbusPDUGetComEventCounterResponseParse(io *spi.ReadBuffer) (ModbusPDUInit
     return NewModbusPDUGetComEventCounterResponse(status, eventCount), nil
 }
 
-func (m ModbusPDUGetComEventCounterResponse) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUGetComEventCounterResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (status)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
index 938053f..3e72ba3 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type ModbusPDUGetComEventLogRequest struct {
 // The corresponding interface
 type IModbusPDUGetComEventLogRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -87,13 +88,13 @@ func (m ModbusPDUGetComEventLogRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUGetComEventLogRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUGetComEventLogRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Create the instance
     return NewModbusPDUGetComEventLogRequest(), nil
 }
 
-func (m ModbusPDUGetComEventLogRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUGetComEventLogRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
index b387d45..8dd7f7a 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -35,7 +36,7 @@ type ModbusPDUGetComEventLogResponse struct {
 // The corresponding interface
 type IModbusPDUGetComEventLogResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -109,7 +110,7 @@ func (m ModbusPDUGetComEventLogResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUGetComEventLogResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUGetComEventLogResponseParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     byteCount, _byteCountErr := io.ReadUint8(8)
@@ -151,7 +152,7 @@ func ModbusPDUGetComEventLogResponseParse(io *spi.ReadBuffer) (ModbusPDUInitiali
     return NewModbusPDUGetComEventLogResponse(status, eventCount, messageCount, events), nil
 }
 
-func (m ModbusPDUGetComEventLogResponse) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUGetComEventLogResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
index 5528155..ec7f85f 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type ModbusPDUMaskWriteHoldingRegisterRequest struct {
 // The corresponding interface
 type IModbusPDUMaskWriteHoldingRegisterRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -100,7 +101,7 @@ func (m ModbusPDUMaskWriteHoldingRegisterRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUMaskWriteHoldingRegisterRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUMaskWriteHoldingRegisterRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (referenceAddress)
     referenceAddress, _referenceAddressErr := io.ReadUint16(16)
@@ -124,7 +125,7 @@ func ModbusPDUMaskWriteHoldingRegisterRequestParse(io *spi.ReadBuffer) (ModbusPD
     return NewModbusPDUMaskWriteHoldingRegisterRequest(referenceAddress, andMask, orMask), nil
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (referenceAddress)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
index 8a79cc2..292cc78 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -34,7 +35,7 @@ type ModbusPDUMaskWriteHoldingRegisterResponse struct {
 // The corresponding interface
 type IModbusPDUMaskWriteHoldingRegisterResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -100,7 +101,7 @@ func (m ModbusPDUMaskWriteHoldingRegisterResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUMaskWriteHoldingRegisterResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUMaskWriteHoldingRegisterResponseParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (referenceAddress)
     referenceAddress, _referenceAddressErr := io.ReadUint16(16)
@@ -124,7 +125,7 @@ func ModbusPDUMaskWriteHoldingRegisterResponseParse(io *spi.ReadBuffer) (ModbusP
     return NewModbusPDUMaskWriteHoldingRegisterResponse(referenceAddress, andMask, orMask), nil
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterResponse) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (referenceAddress)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
index 5cf278b..869e3e1 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ModbusPDUReadCoilsRequest struct {
 // The corresponding interface
 type IModbusPDUReadCoilsRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -96,7 +97,7 @@ func (m ModbusPDUReadCoilsRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUReadCoilsRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUReadCoilsRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (startingAddress)
     startingAddress, _startingAddressErr := io.ReadUint16(16)
@@ -114,7 +115,7 @@ func ModbusPDUReadCoilsRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, e
     return NewModbusPDUReadCoilsRequest(startingAddress, quantity), nil
 }
 
-func (m ModbusPDUReadCoilsRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUReadCoilsRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (startingAddress)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go
index 4bc0a14..1743b36 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type ModbusPDUReadCoilsResponse struct {
 // The corresponding interface
 type IModbusPDUReadCoilsResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,7 +98,7 @@ func (m ModbusPDUReadCoilsResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUReadCoilsResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUReadCoilsResponseParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     byteCount, _byteCountErr := io.ReadUint8(8)
@@ -121,7 +122,7 @@ func ModbusPDUReadCoilsResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer,
     return NewModbusPDUReadCoilsResponse(value), nil
 }
 
-func (m ModbusPDUReadCoilsResponse) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUReadCoilsResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
index 01f4197..35c005b 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationRequest.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type ModbusPDUReadDeviceIdentificationRequest struct {
 // The corresponding interface
 type IModbusPDUReadDeviceIdentificationRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -87,13 +88,13 @@ func (m ModbusPDUReadDeviceIdentificationRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUReadDeviceIdentificationRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUReadDeviceIdentificationRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Create the instance
     return NewModbusPDUReadDeviceIdentificationRequest(), nil
 }
 
-func (m ModbusPDUReadDeviceIdentificationRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUReadDeviceIdentificationRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
index 752b90e..64852f6 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDeviceIdentificationResponse.go
@@ -20,6 +20,7 @@ package model
 
 import (
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -30,7 +31,7 @@ type ModbusPDUReadDeviceIdentificationResponse struct {
 // The corresponding interface
 type IModbusPDUReadDeviceIdentificationResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -87,13 +88,13 @@ func (m ModbusPDUReadDeviceIdentificationResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUReadDeviceIdentificationResponseParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUReadDeviceIdentificationResponseParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Create the instance
     return NewModbusPDUReadDeviceIdentificationResponse(), nil
 }
 
-func (m ModbusPDUReadDeviceIdentificationResponse) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUReadDeviceIdentificationResponse) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
         return nil
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go
index 7367b62..f7e4249 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsRequest.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -33,7 +34,7 @@ type ModbusPDUReadDiscreteInputsRequest struct {
 // The corresponding interface
 type IModbusPDUReadDiscreteInputsRequest interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -96,7 +97,7 @@ func (m ModbusPDUReadDiscreteInputsRequest) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
 }
 
-func ModbusPDUReadDiscreteInputsRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
+func ModbusPDUReadDiscreteInputsRequestParse(io *utils.ReadBuffer) (ModbusPDUInitializer, error) {
 
     // Simple Field (startingAddress)
     startingAddress, _startingAddressErr := io.ReadUint16(16)
@@ -114,7 +115,7 @@ func ModbusPDUReadDiscreteInputsRequestParse(io *spi.ReadBuffer) (ModbusPDUIniti
     return NewModbusPDUReadDiscreteInputsRequest(startingAddress, quantity), nil
 }
 
-func (m ModbusPDUReadDiscreteInputsRequest) Serialize(io spi.WriteBuffer) error {
+func (m ModbusPDUReadDiscreteInputsRequest) Serialize(io utils.WriteBuffer) error {
     ser := func() error {
 
     // Simple Field (startingAddress)
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go
index a7a78ae..39d8039 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadDiscreteInputsResponse.go
@@ -21,6 +21,7 @@ package model
 import (
     "errors"
     "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/utils"
 )
 
 // The data-structure of this message
@@ -32,7 +33,7 @@ type ModbusPDUReadDiscreteInputsResponse struct {
 // The corresponding interface
 type IModbusPDUReadDiscreteInputsResponse interface {
     IModbusPDU
-    Serialize(io spi.WriteBuffer) error
+    Serialize(io utils.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,7 +98,7 @@ func (m ModbusPDUReadDiscreteInputsResponse) LengthInBytes() uint16 {
     return m.LengthInBits() / 8
... 3491 lines suppressed ...