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

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

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 ...