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/22 08:32:38 UTC

[plc4x] branch feature/plc4go updated: - Major work on the GO drivers - Refactoring of some of the PLCValue handling

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


The following commit(s) were added to refs/heads/feature/plc4go by this push:
     new 4c2c20a  - Major work on the GO drivers - Refactoring of some of the PLCValue handling
4c2c20a is described below

commit 4c2c20ac8f64888a5f8e4c6ac2ed992b262e87d2
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Oct 22 10:32:10 2020 +0200

    - Major work on the GO drivers
    - Refactoring of some of the PLCValue handling
---
 .../BaseFreemarkerLanguageTemplateHelper.java      |    9 +
 .../apache/plc4x/language/go/GoLanguageOutput.java |    5 +-
 .../language/go/GoLanguageTemplateHelper.java      |   11 +-
 .../resources/templates/go/data-io-template.ftlh   |  350 ++---
 .../resources/templates/go/model-template.ftlh     |    3 +
 .../resources/templates/java/data-io-template.ftlh |    2 +-
 .../api/value/{PlcString.java => PlcSTRING.java}   |    4 +-
 .../org/apache/plc4x/java/api/value/PlcValues.java |    9 +-
 .../attic/protocol/util/LittleEndianDecoder.java   |    8 +-
 .../knxnetip/protocol/KnxNetIpProtocolLogic.java   |   16 +-
 .../java/modbus/protocol/ModbusProtocolLogic.java  |   78 +-
 .../opcua/connection/OpcuaTcpPlcConnection.java    |    2 +-
 .../java/opcua/protocol/OpcuaPlcFieldHandler.java  |    3 +-
 .../simulated/field/SimulatedFieldHandler.java     |    4 +-
 .../examples/helloplc4x/write/HelloPlc4xWrite.java |    1 -
 .../spi/connection/DefaultPlcFieldHandler.java     |   35 +-
 .../java/spi/optimizer/SingleFieldOptimizer.java   |    3 +
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |    4 +-
 .../plc4x/java/opm/PlcEntityManagerTest.java       |   12 +-
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |    6 +-
 .../ads/src/main/resources/protocols/ads/ads.mspec |    2 +-
 .../resources/protocols/knxnetip/knxnetip.mspec    |    4 +-
 .../main/resources/protocols/modbus/modbus.mspec   |   19 +-
 .../s7/src/main/resources/protocols/s7/s7.mspec    |    8 +-
 .../java/examples/helloinflux/HelloInflux.java     |    2 +-
 .../generated-sources/modbus/include/modbus_pdu.h  |   29 +-
 .../generated-sources/modbus/src/modbus_pdu.c      |  123 +-
 sandbox/plc4c/generated-sources/s7/src/data_item.c |    8 +-
 sandbox/plc4go/cmd/main/drivers/bacnetip_test.go   |    4 +-
 sandbox/plc4go/cmd/main/drivers/knxnetip_test.go   |    4 +-
 sandbox/plc4go/cmd/main/drivers/modbus_test.go     |   28 +-
 sandbox/plc4go/cmd/main/drivers/s7_test.go         |    4 +-
 .../examples/read/hello_world_plc4go_read.go       |   24 +-
 .../examples/write/hello_world_plc4go_write.go     |   26 +-
 sandbox/plc4go/go.mod                              |    2 +-
 .../internal/plc4go/bacnetip/BacnetIpDriver.go     |    2 +-
 .../plc4go/bacnetip/readwrite/model/APDU.go        |  149 +--
 .../plc4go/bacnetip/readwrite/model/APDUAbort.go   |  213 ++--
 .../bacnetip/readwrite/model/APDUComplexAck.go     |  361 +++---
 .../readwrite/model/APDUConfirmedRequest.go        |  457 +++----
 .../plc4go/bacnetip/readwrite/model/APDUError.go   |  193 +--
 .../plc4go/bacnetip/readwrite/model/APDUReject.go  |  181 +--
 .../bacnetip/readwrite/model/APDUSegmentAck.go     |  277 ++--
 .../bacnetip/readwrite/model/APDUSimpleAck.go      |  181 +--
 .../readwrite/model/APDUUnconfirmedRequest.go      |  161 +--
 .../bacnetip/readwrite/model/ApplicationTag.go     |   61 +-
 .../bacnetip/readwrite/model/BACnetAddress.go      |  141 ++-
 .../readwrite/model/BACnetConfirmedServiceACK.go   |  173 +--
 .../BACnetConfirmedServiceACKAtomicReadFile.go     |   63 +-
 .../BACnetConfirmedServiceACKAtomicWriteFile.go    |   63 +-
 ...tConfirmedServiceACKConfirmedPrivateTransfer.go |   63 +-
 .../model/BACnetConfirmedServiceACKCreateObject.go |   63 +-
 .../BACnetConfirmedServiceACKGetAlarmSummary.go    |   63 +-
 ...ACnetConfirmedServiceACKGetEnrollmentSummary.go |   63 +-
 ...BACnetConfirmedServiceACKGetEventInformation.go |   63 +-
 .../model/BACnetConfirmedServiceACKReadProperty.go |   63 +-
 ...ACnetConfirmedServiceACKReadPropertyMultiple.go |   63 +-
 .../model/BACnetConfirmedServiceACKReadRange.go    |   63 +-
 ...BACnetConfirmedServiceACKRemovedAuthenticate.go |   63 +-
 ...rmedServiceACKRemovedReadPropertyConditional.go |   63 +-
 .../model/BACnetConfirmedServiceACKVTData.go       |   63 +-
 .../model/BACnetConfirmedServiceACKVTOpen.go       |   63 +-
 .../model/BACnetConfirmedServiceRequest.go         |  265 ++--
 ...ACnetConfirmedServiceRequestAcknowledgeAlarm.go |   63 +-
 .../BACnetConfirmedServiceRequestAddListElement.go |   63 +-
 .../BACnetConfirmedServiceRequestAtomicReadFile.go |   63 +-
 ...BACnetConfirmedServiceRequestAtomicWriteFile.go |   63 +-
 ...firmedServiceRequestConfirmedCOVNotification.go |  591 ++++-----
 ...rviceRequestConfirmedCOVNotificationMultiple.go |   63 +-
 ...rmedServiceRequestConfirmedEventNotification.go |   63 +-
 ...firmedServiceRequestConfirmedPrivateTransfer.go |   63 +-
 ...tConfirmedServiceRequestConfirmedTextMessage.go |   63 +-
 .../BACnetConfirmedServiceRequestCreateObject.go   |   63 +-
 .../BACnetConfirmedServiceRequestDeleteObject.go   |   63 +-
 ...rmedServiceRequestDeviceCommunicationControl.go |   63 +-
 ...tConfirmedServiceRequestGetEnrollmentSummary.go |   63 +-
 ...etConfirmedServiceRequestGetEventInformation.go |   63 +-
 ...etConfirmedServiceRequestLifeSafetyOperation.go |   63 +-
 .../BACnetConfirmedServiceRequestReadProperty.go   |  287 ++---
 ...tConfirmedServiceRequestReadPropertyMultiple.go |   63 +-
 .../BACnetConfirmedServiceRequestReadRange.go      |   63 +-
 ...netConfirmedServiceRequestReinitializeDevice.go |   63 +-
 ...CnetConfirmedServiceRequestRemoveListElement.go |   63 +-
 ...etConfirmedServiceRequestRemovedAuthenticate.go |   63 +-
 ...ServiceRequestRemovedReadPropertyConditional.go |   63 +-
 ...CnetConfirmedServiceRequestRemovedRequestKey.go |   63 +-
 .../BACnetConfirmedServiceRequestSubscribeCOV.go   |  453 +++----
 ...tConfirmedServiceRequestSubscribeCOVProperty.go |   63 +-
 ...edServiceRequestSubscribeCOVPropertyMultiple.go |   63 +-
 .../model/BACnetConfirmedServiceRequestVTClose.go  |   63 +-
 .../model/BACnetConfirmedServiceRequestVTData.go   |   63 +-
 .../model/BACnetConfirmedServiceRequestVTOpen.go   |   63 +-
 .../BACnetConfirmedServiceRequestWriteProperty.go  |  467 +++----
 ...ConfirmedServiceRequestWritePropertyMultiple.go |   63 +-
 .../plc4go/bacnetip/readwrite/model/BACnetError.go |  173 +--
 .../readwrite/model/BACnetErrorAtomicReadFile.go   |   63 +-
 .../readwrite/model/BACnetErrorAtomicWriteFile.go  |   63 +-
 .../model/BACnetErrorConfirmedPrivateTransfer.go   |   63 +-
 .../readwrite/model/BACnetErrorCreateObject.go     |   63 +-
 .../readwrite/model/BACnetErrorGetAlarmSummary.go  |   63 +-
 .../model/BACnetErrorGetEnrollmentSummary.go       |   63 +-
 .../model/BACnetErrorGetEventInformation.go        |   63 +-
 .../readwrite/model/BACnetErrorReadProperty.go     |  309 ++---
 .../model/BACnetErrorReadPropertyMultiple.go       |   63 +-
 .../readwrite/model/BACnetErrorReadRange.go        |   63 +-
 .../model/BACnetErrorRemovedAuthenticate.go        |   63 +-
 .../BACnetErrorRemovedReadPropertyConditional.go   |   63 +-
 .../bacnetip/readwrite/model/BACnetErrorVTData.go  |   63 +-
 .../bacnetip/readwrite/model/BACnetErrorVTOpen.go  |   63 +-
 .../bacnetip/readwrite/model/BACnetNetworkType.go  |   57 +-
 .../bacnetip/readwrite/model/BACnetNodeType.go     |   79 +-
 .../bacnetip/readwrite/model/BACnetNotifyType.go   |   41 +-
 .../bacnetip/readwrite/model/BACnetObjectType.go   |  153 +--
 .../bacnetip/readwrite/model/BACnetServiceAck.go   |  173 +--
 .../model/BACnetServiceAckAtomicReadFile.go        |   63 +-
 .../model/BACnetServiceAckAtomicWriteFile.go       |   63 +-
 .../BACnetServiceAckConfirmedPrivateTransfer.go    |   63 +-
 .../model/BACnetServiceAckCreateObject.go          |   63 +-
 .../model/BACnetServiceAckGetAlarmSummary.go       |   63 +-
 .../model/BACnetServiceAckGetEnrollmentSummary.go  |   63 +-
 .../model/BACnetServiceAckGetEventInformation.go   |   63 +-
 .../model/BACnetServiceAckReadProperty.go          |  399 +++---
 .../model/BACnetServiceAckReadPropertyMultiple.go  |   63 +-
 .../readwrite/model/BACnetServiceAckReadRange.go   |   63 +-
 .../model/BACnetServiceAckRemovedAuthenticate.go   |   63 +-
 ...CnetServiceAckRemovedReadPropertyConditional.go |   63 +-
 .../readwrite/model/BACnetServiceAckVTData.go      |   63 +-
 .../readwrite/model/BACnetServiceAckVTOpen.go      |   63 +-
 .../plc4go/bacnetip/readwrite/model/BACnetTag.go   |  345 ++---
 .../model/BACnetTagApplicationBitString.go         |  163 +--
 .../readwrite/model/BACnetTagApplicationBoolean.go |   71 +-
 .../model/BACnetTagApplicationCharacterString.go   |   71 +-
 .../readwrite/model/BACnetTagApplicationDate.go    |   71 +-
 .../readwrite/model/BACnetTagApplicationDouble.go  |  105 +-
 .../model/BACnetTagApplicationEnumerated.go        |  131 +-
 .../readwrite/model/BACnetTagApplicationNull.go    |   71 +-
 .../model/BACnetTagApplicationObjectIdentifier.go  |   71 +-
 .../model/BACnetTagApplicationOctetString.go       |   71 +-
 .../readwrite/model/BACnetTagApplicationReal.go    |  105 +-
 .../model/BACnetTagApplicationSignedInteger.go     |  131 +-
 .../readwrite/model/BACnetTagApplicationTime.go    |   71 +-
 .../model/BACnetTagApplicationUnsignedInteger.go   |  131 +-
 .../bacnetip/readwrite/model/BACnetTagContext.go   |  131 +-
 .../readwrite/model/BACnetTagWithContent.go        |  425 ++++---
 .../model/BACnetUnconfirmedServiceRequest.go       |  165 +--
 .../model/BACnetUnconfirmedServiceRequestIAm.go    |  419 +++---
 .../model/BACnetUnconfirmedServiceRequestIHave.go  |   63 +-
 ...UnconfirmedServiceRequestTimeSynchronization.go |   63 +-
 ...onfirmedServiceRequestUTCTimeSynchronization.go |   63 +-
 ...rmedServiceRequestUnconfirmedCOVNotification.go |   63 +-
 ...iceRequestUnconfirmedCOVNotificationMultiple.go |   63 +-
 ...edServiceRequestUnconfirmedEventNotification.go |   63 +-
 ...rmedServiceRequestUnconfirmedPrivateTransfer.go |  325 ++---
 ...onfirmedServiceRequestUnconfirmedTextMessage.go |   63 +-
 .../model/BACnetUnconfirmedServiceRequestWhoHas.go |  353 +++---
 .../model/BACnetUnconfirmedServiceRequestWhoIs.go  |  309 ++---
 .../BACnetUnconfirmedServiceRequestWriteGroup.go   |   63 +-
 .../plc4go/bacnetip/readwrite/model/BVLC.go        |  239 ++--
 .../model/BVLCDeleteForeignDeviceTableEntry.go     |   63 +-
 .../model/BVLCDistributeBroadcastToNetwork.go      |   63 +-
 .../bacnetip/readwrite/model/BVLCForwardedNPDU.go  |  197 +--
 .../readwrite/model/BVLCOriginalBroadcastNPDU.go   |  111 +-
 .../readwrite/model/BVLCOriginalUnicastNPDU.go     |  111 +-
 .../model/BVLCReadBroadcastDistributionTable.go    |   63 +-
 .../model/BVLCReadBroadcastDistributionTableAck.go |   63 +-
 .../readwrite/model/BVLCReadForeignDeviceTable.go  |   63 +-
 .../model/BVLCReadForeignDeviceTableAck.go         |   63 +-
 .../readwrite/model/BVLCRegisterForeignDevice.go   |   63 +-
 .../plc4go/bacnetip/readwrite/model/BVLCResult.go  |   63 +-
 .../bacnetip/readwrite/model/BVLCSecureBVLL.go     |   63 +-
 .../model/BVLCWideBroadcastDistributionTable.go    |   63 +-
 .../plc4go/bacnetip/readwrite/model/NLM.go         |  181 +--
 .../readwrite/model/NLMIAmRouterToNetwork.go       |  125 +-
 .../readwrite/model/NLMWhoIsRouterToNetwork.go     |  125 +-
 .../plc4go/bacnetip/readwrite/model/NPDU.go        |  835 ++++++------
 .../internal/plc4go/knxnetip/KnxNetIpDriver.go     |    2 +-
 .../plc4go/knxnetip/readwrite/model/APCI.go        |   67 +-
 .../plc4go/knxnetip/readwrite/model/CEMI.go        |  161 +--
 .../readwrite/model/CEMIAdditionalInformation.go   |  125 +-
 .../CEMIAdditionalInformationBusmonitorInfo.go     |  295 ++---
 .../CEMIAdditionalInformationRelativeTimestamp.go  |  147 +--
 .../knxnetip/readwrite/model/CEMIBusmonInd.go      |  213 ++--
 .../plc4go/knxnetip/readwrite/model/CEMIDataCon.go |  213 ++--
 .../knxnetip/readwrite/model/CEMIDataFrame.go      |  687 +++++-----
 .../plc4go/knxnetip/readwrite/model/CEMIDataInd.go |  213 ++--
 .../plc4go/knxnetip/readwrite/model/CEMIDataReq.go |  213 ++--
 .../plc4go/knxnetip/readwrite/model/CEMIFrame.go   |  337 ++---
 .../knxnetip/readwrite/model/CEMIFrameAck.go       |   75 +-
 .../knxnetip/readwrite/model/CEMIFrameData.go      |  487 +++----
 .../knxnetip/readwrite/model/CEMIFrameDataExt.go   |  519 ++++----
 .../readwrite/model/CEMIFramePollingData.go        |   75 +-
 .../readwrite/model/CEMIFramePollingDataExt.go     |   75 +-
 .../knxnetip/readwrite/model/CEMIMPropReadCon.go   |  259 ++--
 .../knxnetip/readwrite/model/CEMIMPropReadReq.go   |  227 ++--
 .../knxnetip/readwrite/model/CEMIPollDataCon.go    |   63 +-
 .../knxnetip/readwrite/model/CEMIPollDataReq.go    |   63 +-
 .../knxnetip/readwrite/model/CEMIPriority.go       |   43 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawCon.go  |   63 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawInd.go  |   63 +-
 .../plc4go/knxnetip/readwrite/model/CEMIRawReq.go  |   63 +-
 .../knxnetip/readwrite/model/ConnectionRequest.go  |  195 +--
 .../model/ConnectionRequestInformation.go          |  159 +--
 ...ConnectionRequestInformationDeviceManagement.go |   63 +-
 ...ConnectionRequestInformationTunnelConnection.go |  149 +--
 .../knxnetip/readwrite/model/ConnectionResponse.go |  253 ++--
 .../readwrite/model/ConnectionResponseDataBlock.go |  159 +--
 .../ConnectionResponseDataBlockDeviceManagement.go |   63 +-
 .../ConnectionResponseDataBlockTunnelConnection.go |  111 +-
 .../readwrite/model/ConnectionStateRequest.go      |  193 +--
 .../readwrite/model/ConnectionStateResponse.go     |  127 +-
 .../knxnetip/readwrite/model/DIBDeviceInfo.go      |  469 +++----
 .../knxnetip/readwrite/model/DIBSuppSvcFamilies.go |  187 +--
 .../knxnetip/readwrite/model/DescriptionRequest.go |  111 +-
 .../readwrite/model/DescriptionResponse.go         |  153 +--
 .../readwrite/model/DeviceConfigurationAck.go      |  111 +-
 .../model/DeviceConfigurationAckDataBlock.go       |  181 +--
 .../readwrite/model/DeviceConfigurationRequest.go  |  153 +--
 .../model/DeviceConfigurationRequestDataBlock.go   |  199 +--
 .../knxnetip/readwrite/model/DeviceStatus.go       |  137 +-
 .../knxnetip/readwrite/model/DisconnectRequest.go  |  193 +--
 .../knxnetip/readwrite/model/DisconnectResponse.go |  127 +-
 .../readwrite/model/HPAIControlEndpoint.go         |  193 +--
 .../knxnetip/readwrite/model/HPAIDataEndpoint.go   |  193 +--
 .../readwrite/model/HPAIDiscoveryEndpoint.go       |  193 +--
 .../knxnetip/readwrite/model/HostProtocolCode.go   |   39 +-
 .../plc4go/knxnetip/readwrite/model/IPAddress.go   |  105 +-
 .../plc4go/knxnetip/readwrite/model/KNXAddress.go  |  151 +--
 .../knxnetip/readwrite/model/KNXGroupAddress.go    |  101 +-
 .../readwrite/model/KNXGroupAddress2Level.go       |  127 +-
 .../readwrite/model/KNXGroupAddress3Level.go       |  163 +--
 .../readwrite/model/KNXGroupAddressFreeLevel.go    |   97 +-
 .../knxnetip/readwrite/model/KNXNetIPMessage.go    |  281 ++--
 .../plc4go/knxnetip/readwrite/model/KnxLayer.go    |   41 +-
 .../knxnetip/readwrite/model/KnxNetIpCore.go       |   97 +-
 .../readwrite/model/KnxNetIpDeviceManagement.go    |   97 +-
 .../knxnetip/readwrite/model/KnxNetIpTunneling.go  |   97 +-
 .../knxnetip/readwrite/model/KnxNetObjectServer.go |   97 +-
 .../model/KnxNetRemoteConfigurationAndDiagnosis.go |   97 +-
 .../readwrite/model/KnxNetRemoteLogging.go         |   97 +-
 .../plc4go/knxnetip/readwrite/model/MACAddress.go  |  105 +-
 .../model/ProjectInstallationIdentifier.go         |  115 +-
 .../knxnetip/readwrite/model/RelativeTimestamp.go  |   83 +-
 .../knxnetip/readwrite/model/RoutingIndication.go  |   63 +-
 .../knxnetip/readwrite/model/SearchRequest.go      |  111 +-
 .../knxnetip/readwrite/model/SearchResponse.go     |  195 +--
 .../plc4go/knxnetip/readwrite/model/ServiceId.go   |  141 ++-
 .../plc4go/knxnetip/readwrite/model/Status.go      |   59 +-
 .../plc4go/knxnetip/readwrite/model/TPCI.go        |   43 +-
 .../knxnetip/readwrite/model/TunnelingRequest.go   |  153 +--
 .../readwrite/model/TunnelingRequestDataBlock.go   |  199 +--
 .../knxnetip/readwrite/model/TunnelingResponse.go  |  111 +-
 .../readwrite/model/TunnelingResponseDataBlock.go  |  181 +--
 .../knxnetip/readwrite/model/UnknownMessage.go     |  117 +-
 .../internal/plc4go/modbus/ModbusConnection.go     |   45 +-
 .../plc4go/internal/plc4go/modbus/ModbusDriver.go  |   75 +-
 .../plc4go/internal/plc4go/modbus/ModbusField.go   |   38 +-
 .../internal/plc4go/modbus/ModbusFieldHandler.go   |   39 +-
 .../internal/plc4go/modbus/ModbusMessageCodec.go   |  156 +++
 .../plc4go/internal/plc4go/modbus/ModbusReader.go  |  161 ++-
 .../internal/plc4go/modbus/ModbusValueHandler.go   |    2 +-
 .../plc4go/internal/plc4go/modbus/ModbusWriter.go  |    4 +-
 .../plc4go/modbus/readwrite/model/DataItem.go      |  256 ++++
 .../modbus/readwrite/model/ModbusConstants.go      |   89 +-
 .../modbus/readwrite/model/ModbusDataType.go       |  300 ++---
 .../modbus/readwrite/model/ModbusErrorCode.go      |   70 +
 .../plc4go/modbus/readwrite/model/ModbusPDU.go     |  309 ++---
 .../readwrite/model/ModbusPDUDiagnosticRequest.go  |  133 +-
 .../readwrite/model/ModbusPDUDiagnosticResponse.go |  137 ++
 .../modbus/readwrite/model/ModbusPDUError.go       |  101 +-
 .../model/ModbusPDUGetComEventCounterRequest.go    |  102 ++
 .../model/ModbusPDUGetComEventCounterResponse.go   |  137 ++
 .../model/ModbusPDUGetComEventLogRequest.go        |   67 +-
 .../model/ModbusPDUGetComEventLogResponse.go       |  251 ++--
 .../ModbusPDUMaskWriteHoldingRegisterRequest.go    |  167 +--
 .../ModbusPDUMaskWriteHoldingRegisterResponse.go   |  167 +--
 .../readwrite/model/ModbusPDUReadCoilsRequest.go   |  131 +-
 .../readwrite/model/ModbusPDUReadCoilsResponse.go  |  155 +--
 .../ModbusPDUReadDeviceIdentificationRequest.go    |   67 +-
 .../ModbusPDUReadDeviceIdentificationResponse.go   |   67 +-
 .../model/ModbusPDUReadDiscreteInputsRequest.go    |  131 +-
 .../model/ModbusPDUReadDiscreteInputsResponse.go   |  155 +--
 .../model/ModbusPDUReadExceptionStatusRequest.go   |   67 +-
 .../model/ModbusPDUReadExceptionStatusResponse.go  |  101 +-
 .../model/ModbusPDUReadFifoQueueRequest.go         |  101 +-
 .../model/ModbusPDUReadFifoQueueResponse.go        |  185 +--
 .../model/ModbusPDUReadFileRecordRequest.go        |  187 +--
 .../model/ModbusPDUReadFileRecordRequestItem.go    |  183 +--
 .../model/ModbusPDUReadFileRecordResponse.go       |  187 +--
 .../model/ModbusPDUReadFileRecordResponseItem.go   |  173 +--
 .../model/ModbusPDUReadHoldingRegistersRequest.go  |  131 +-
 .../model/ModbusPDUReadHoldingRegistersResponse.go |  155 +--
 .../model/ModbusPDUReadInputRegistersRequest.go    |  131 +-
 .../model/ModbusPDUReadInputRegistersResponse.go   |  155 +--
 ...sPDUReadWriteMultipleHoldingRegistersRequest.go |  283 +++--
 ...PDUReadWriteMultipleHoldingRegistersResponse.go |  155 +--
 .../model/ModbusPDUReportServerIdRequest.go        |   67 +-
 .../model/ModbusPDUReportServerIdResponse.go       |  155 +--
 .../model/ModbusPDUWriteFileRecordRequest.go       |  187 +--
 .../model/ModbusPDUWriteFileRecordRequestItem.go   |  237 ++--
 .../model/ModbusPDUWriteFileRecordResponse.go      |  187 +--
 .../model/ModbusPDUWriteFileRecordResponseItem.go  |  237 ++--
 .../model/ModbusPDUWriteMultipleCoilsRequest.go    |  219 ++--
 .../model/ModbusPDUWriteMultipleCoilsResponse.go   |  131 +-
 ...odbusPDUWriteMultipleHoldingRegistersRequest.go |  219 ++--
 ...dbusPDUWriteMultipleHoldingRegistersResponse.go |  131 +-
 .../model/ModbusPDUWriteSingleCoilRequest.go       |  131 +-
 .../model/ModbusPDUWriteSingleCoilResponse.go      |  131 +-
 .../model/ModbusPDUWriteSingleRegisterRequest.go   |  131 +-
 .../model/ModbusPDUWriteSingleRegisterResponse.go  |  131 +-
 .../modbus/readwrite/model/ModbusSerialADU.go      |  245 ++--
 .../plc4go/modbus/readwrite/model/ModbusTcpADU.go  |  229 ++--
 .../internal/plc4go/model/DefaultPlcReadRequest.go |   19 +-
 .../plc4go/model/DefaultPlcReadResponse.go}        |   21 +-
 .../plc4go/model/DefaultPlcWriteRequest.go         |    6 +-
 .../plc4go/internal/plc4go/model/values/PlcList.go |   12 +-
 .../internal/plc4go/model/values/PlcStruct.go      |    4 +-
 .../plc4go/model/values/PlcValueAdapter.go         |    2 +-
 .../internal/plc4go/model/values/iec61131/BOOL.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/BYTE.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/CHAR.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/DATE.go  |    2 +-
 .../plc4go/model/values/iec61131/DATE_AND_TIME.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/DINT.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/DWORD.go |    2 +-
 .../model/values/iec61131/IEC61131ValueHandler.go  |    8 +-
 .../internal/plc4go/model/values/iec61131/INT.go   |    2 +-
 .../internal/plc4go/model/values/iec61131/LINT.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/LREAL.go |    2 +-
 .../internal/plc4go/model/values/iec61131/LTIME.go |    2 +-
 .../internal/plc4go/model/values/iec61131/LWORD.go |    2 +-
 .../internal/plc4go/model/values/iec61131/NULL.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/REAL.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/SINT.go  |    2 +-
 .../plc4go/model/values/iec61131/STRING.go         |    8 +-
 .../internal/plc4go/model/values/iec61131/TIME.go  |    2 +-
 .../plc4go/model/values/iec61131/TIME_OF_DAY.go    |    2 +-
 .../internal/plc4go/model/values/iec61131/UDINT.go |    2 +-
 .../internal/plc4go/model/values/iec61131/UINT.go  |    2 +-
 .../internal/plc4go/model/values/iec61131/ULINT.go |    2 +-
 .../internal/plc4go/model/values/iec61131/USINT.go |    2 +-
 .../internal/plc4go/model/values/iec61131/WCHAR.go |    2 +-
 .../internal/plc4go/model/values/iec61131/WORD.go  |    2 +-
 .../plc4go/model/values/iec61131/WSTRING.go        |    2 +-
 sandbox/plc4go/internal/plc4go/s7/S7Driver.go      |    2 +-
 .../plc4go/s7/readwrite/model/COTPPacket.go        |  319 ++---
 .../readwrite/model/COTPPacketConnectionRequest.go |  167 +--
 .../model/COTPPacketConnectionResponse.go          |  167 +--
 .../plc4go/s7/readwrite/model/COTPPacketData.go    |  131 +-
 .../readwrite/model/COTPPacketDisconnectRequest.go |  167 +--
 .../model/COTPPacketDisconnectResponse.go          |  131 +-
 .../s7/readwrite/model/COTPPacketTpduError.go      |  131 +-
 .../plc4go/s7/readwrite/model/COTPParameter.go     |  171 +--
 .../s7/readwrite/model/COTPParameterCalledTsap.go  |   97 +-
 .../s7/readwrite/model/COTPParameterCallingTsap.go |   97 +-
 .../s7/readwrite/model/COTPParameterChecksum.go    |   97 +-
 ...COTPParameterDisconnectAdditionalInformation.go |  117 +-
 .../s7/readwrite/model/COTPParameterTpduSize.go    |   97 +-
 .../plc4go/s7/readwrite/model/COTPProtocolClass.go |   45 +-
 .../plc4go/s7/readwrite/model/COTPTpduSize.go      |  111 +-
 .../internal/plc4go/s7/readwrite/model/DataItem.go |  163 +++
 .../s7/readwrite/model/DataTransportErrorCode.go   |   47 +-
 .../plc4go/s7/readwrite/model/DataTransportSize.go |  111 +-
 .../plc4go/s7/readwrite/model/DeviceGroup.go       |   41 +-
 .../plc4go/s7/readwrite/model/MemoryArea.go        |  129 +-
 .../plc4go/s7/readwrite/model/S7Address.go         |  121 +-
 .../plc4go/s7/readwrite/model/S7AddressAny.go      |  309 ++---
 .../plc4go/s7/readwrite/model/S7Message.go         |  437 +++----
 .../plc4go/s7/readwrite/model/S7MessageRequest.go  |   69 +-
 .../plc4go/s7/readwrite/model/S7MessageResponse.go |  133 +-
 .../s7/readwrite/model/S7MessageResponseData.go    |  133 +-
 .../plc4go/s7/readwrite/model/S7MessageUserData.go |   69 +-
 .../plc4go/s7/readwrite/model/S7Parameter.go       |  145 ++-
 .../readwrite/model/S7ParameterReadVarRequest.go   |  169 +--
 .../readwrite/model/S7ParameterReadVarResponse.go  |   99 +-
 .../model/S7ParameterSetupCommunication.go         |  215 ++--
 .../s7/readwrite/model/S7ParameterUserData.go      |  169 +--
 .../s7/readwrite/model/S7ParameterUserDataItem.go  |  121 +-
 .../model/S7ParameterUserDataItemCPUFunctions.go   |  413 +++---
 .../readwrite/model/S7ParameterWriteVarRequest.go  |  169 +--
 .../readwrite/model/S7ParameterWriteVarResponse.go |   99 +-
 .../plc4go/s7/readwrite/model/S7Payload.go         |  109 +-
 .../s7/readwrite/model/S7PayloadReadVarResponse.go |  147 +--
 .../plc4go/s7/readwrite/model/S7PayloadUserData.go |  139 +-
 .../s7/readwrite/model/S7PayloadUserDataItem.go    |  269 ++--
 ...PayloadUserDataItemCpuFunctionReadSzlRequest.go |   71 +-
 ...ayloadUserDataItemCpuFunctionReadSzlResponse.go |  211 ++--
 .../s7/readwrite/model/S7PayloadWriteVarRequest.go |  147 +--
 .../readwrite/model/S7PayloadWriteVarResponse.go   |  139 +-
 .../s7/readwrite/model/S7VarPayloadDataItem.go     |  263 ++--
 .../s7/readwrite/model/S7VarPayloadStatusItem.go   |   83 +-
 .../readwrite/model/S7VarRequestParameterItem.go   |  121 +-
 .../model/S7VarRequestParameterItemAddress.go      |  141 ++-
 .../plc4go/s7/readwrite/model/SzlDataTreeItem.go   |  237 ++--
 .../internal/plc4go/s7/readwrite/model/SzlId.go    |  151 +--
 .../s7/readwrite/model/SzlModuleTypeClass.go       |   43 +-
 .../plc4go/s7/readwrite/model/SzlSublist.go        |   73 +-
 .../plc4go/s7/readwrite/model/TPKTPacket.go        |  215 ++--
 .../plc4go/s7/readwrite/model/TransportSize.go     | 1335 +++++++++-----------
 .../plc4go/spi/{PlcReader.go => MessageCodec.go}   |   11 +-
 .../plc4go/internal/plc4go/spi/PlcFieldHandler.go  |    2 +-
 sandbox/plc4go/internal/plc4go/spi/PlcReader.go    |    2 +-
 .../plc4go/internal/plc4go/spi/PlcValueHandler.go  |    2 +-
 sandbox/plc4go/internal/plc4go/spi/PlcWriter.go    |    2 +-
 .../iec61131/CHAR.go => transports/Transport.go}   |   26 +-
 .../NULL.go => transports/TransportInstance.go}    |   18 +-
 .../internal/plc4go/transports/tcp/TcpTransport.go |  200 +++
 .../values/iec61131/CHAR.go => utils/Regexp.go}    |   33 +-
 sandbox/plc4go/pkg/plc4go/connection.go            |    2 +-
 sandbox/plc4go/pkg/plc4go/driver.go                |   12 +-
 sandbox/plc4go/pkg/plc4go/driverManager.go         |  168 ++-
 .../plc4go/pkg/plc4go/model/plc_read_request.go    |    2 +
 .../plc4go/pkg/plc4go/model/plc_read_response.go   |    6 +
 sandbox/plc4go/pom.xml                             |    2 +-
 .../plc4x/java/bacnetip/ede/model/Datapoint.java   |    8 +-
 .../bacnetip/protocol/BacNetIpProtocolLogic.java   |    2 +-
 415 files changed, 25388 insertions(+), 23060 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 04675aa..dca2e60 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
@@ -287,18 +287,27 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
      **********************************************************************************/
 
     public boolean hasFieldOfType(String fieldTypeName) {
+        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
         return ((ComplexTypeDefinition) getThisTypeDefinition()).getFields().stream().anyMatch(field -> field.getTypeName().equals(fieldTypeName));
     }
+        return false;
+    }
 
     public Field getFieldForNameFromCurrentOrParent(String fieldName) {
+        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
         return ((ComplexTypeDefinition) getThisTypeDefinition()).getAllPropertyFields()
             .stream().filter(propertyField -> propertyField.getName().equals(fieldName)).findFirst().orElse(null);
     }
+        return null;
+    }
 
     public Field getFieldForNameFromCurrent(String fieldName) {
+        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
         return ((ComplexTypeDefinition) getThisTypeDefinition()).getPropertyFields()
             .stream().filter(propertyField -> propertyField.getName().equals(fieldName)).findFirst().orElse(null);
     }
+        return null;
+    }
 
     public boolean isAbstractField(Field field) {
         return field instanceof AbstractField;
diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java
index 1b75367..b16b36e 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageOutput.java
@@ -60,9 +60,8 @@ public class GoLanguageOutput extends FreemarkerLanguageOutput {
 
     @Override
     protected List<Template> getDataIoTemplates(Configuration freemarkerConfiguration) throws IOException {
-        /*return Collections.singletonList(
-            freemarkerConfiguration.getTemplate("templates/go/data-io-template.ftlh"));*/
-        return Collections.emptyList();
+        return Collections.singletonList(
+            freemarkerConfiguration.getTemplate("templates/go/data-io-template.ftlh"));
     }
 
     @Override
diff --git a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
index 60f9612..1f5e873 100644
--- a/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
+++ b/build-utils/language-go/src/main/java/org/apache/plc4x/language/go/GoLanguageTemplateHelper.java
@@ -234,8 +234,7 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
             }
             case STRING: {
                 StringTypeReference stringTypeReference = (StringTypeReference) simpleTypeReference;
-                return "io.ReadString(" + stringTypeReference.getSizeInBits() + ", \"" +
-                    stringTypeReference.getEncoding() + "\")";
+                return "io.ReadString(" + stringTypeReference.getSizeInBits() + ")";
             }
         }
         return "Hurz";
@@ -859,9 +858,11 @@ public class GoLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelp
     }
 
     public boolean requiresStartPosAndCurPos() {
-        for (Field curField : ((ComplexTypeDefinition) getThisTypeDefinition()).getFields()) {
-            if(requiresVariable(curField, "curPos")) {
-                return true;
+        if(getThisTypeDefinition() instanceof ComplexTypeDefinition) {
+            for (Field curField : ((ComplexTypeDefinition) getThisTypeDefinition()).getFields()) {
+                if (requiresVariable(curField, "curPos")) {
+                    return true;
+                }
             }
         }
         return false;
diff --git a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
index 2d1fece..6570889 100644
--- a/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/data-io-template.ftlh
@@ -41,272 +41,98 @@
 <#-- @ftlvariable name="virtualField" type="org.apache.plc4x.plugins.codegenerator.types.fields.VirtualField" -->
 <#-- @ftlvariable name="simpleTypeReference" type="org.apache.plc4x.plugins.codegenerator.types.references.SimpleTypeReference" -->
 <#-- @ftlvariable name="complexTypeReference" type="org.apache.plc4x.plugins.codegenerator.types.references.ComplexTypeReference" -->
-${helper.packageName(protocolName, languageName, outputFlavor)?replace(".", "/")}/io/${type.name}IO.java
-/*
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT 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 ${helper.packageName(protocolName, languageName, outputFlavor)}.io;
-
-import static org.apache.plc4x.java.spi.generation.StaticHelper.*;
-
-import org.apache.plc4x.java.api.model.PlcField;
-import org.apache.plc4x.java.api.value.*;
-import org.apache.plc4x.java.spi.generation.EvaluationHelper;
-import org.apache.plc4x.java.spi.generation.ParseException;
-import org.apache.plc4x.java.spi.generation.ReadBuffer;
-import org.apache.plc4x.java.spi.generation.WriteBuffer;
-import ${helper.packageName(protocolName, languageName, outputFlavor)}.*;
-import ${helper.packageName(protocolName, languageName, outputFlavor)}.types.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.math.BigInteger;
-import java.time.*;
-import java.util.*;
-import java.util.function.Supplier;
-
-public class ${type.name}IO {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(${type.name}IO.class);
-
-    public static PlcValue staticParse(ReadBuffer io<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${helper.getLanguageTypeNameForTypeReference(parserArgument.type, false)} ${parserArgument.name}<#sep>, </#sep></#list></#if>) throws ParseException {
-        <#list type.switchField.cases as case><#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue>EvaluationHelper.equals(${helper.toTypedParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)}, ${discriminatorValue})<#sep> && </#sep></#list>) </#if>{ // ${case.name}
-            <#assign skipReturn=false>
-            <#list case.fields as field>
-                <#switch field.typeName>
-                    <#case "array">
-
-            // Array field (${field.name})
-            <#-- Only update curPos if the length expression uses it -->
-                        <#if field.loopExpression.contains("curPos")>
-            curPos = io.getPos() - startPos;
-                        </#if>
-            <#-- If this is a count array, we can directly initialize an array with the given size -->
-                        <#if helper.isCountArrayField(field)>
-            // Count array
-            if(${helper.toTypedParseExpression(field, field.loopExpression, type.parserArguments)} > Integer.MAX_VALUE) {
-                throw new ParseException("Array count of " + (${helper.toTypedParseExpression(field, field.loopExpression, type.parserArguments)}) + " exceeds the maximum allowed count of " + Integer.MAX_VALUE);
-            }
-            List<Plc${case.name}> ${field.name};
-            {
-                int itemCount = (int) ${helper.toTypedParseExpression(field, field.loopExpression, type.parserArguments)};
-                ${field.name} = new LinkedList<>();
-                for(int curItem = 0; curItem < itemCount; curItem++) {
-                    ${field.name}.add(new Plc${case.name}((${helper.getNonPrimitiveLanguageTypeNameForField(field)}) <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)})<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toTypedParseExpression(field, parserArgument, [...]
-                }
-            }
-            <#-- In all other cases do we have to work with a list, that is later converted to an array -->
-                        <#else>
-            <#-- For a length array, we read data till the read position of the buffer reaches a given position -->
-                            <#if helper.isLengthArrayField(field)>
-            // Length array
-            int _${field.name}Length = ${helper.toTypedParseExpression(field, field.loopExpression, type.parserArguments)};
-            List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
-            int ${field.name}EndPos = io.getPos() + _${field.name}Length;
-            while(io.getPos() < ${field.name}EndPos) {
-                _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toTypedParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
-                <#-- After parsing, update the current position, but only if it's needed -->
-                                <#if field.loopExpression.contains("curPos")>
-                curPos = io.getPos() - startPos;
-                                </#if>
-            }
-            <#-- A terminated array keeps on reading data as long as the termination expression evaluates to false -->
-                            <#elseif helper.isTerminatedArrayField(field)>
-            // Terminated array
-            List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> _${field.name}List = new LinkedList<>();
-            while(!((boolean) (${helper.toTypedParseExpression(field, field.loopExpression, type.parserArguments)}))) {
-                _${field.name}List.add(<#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toTypedParseExpression(field, parserArgument, type.parserArguments)})<#sep>, </#sep></#list></#if>)</#if>);
-
-                <#-- After parsing, update the current position, but only if it's needed -->
-                                <#if field.loopExpression.contains("curPos")>
-                curPos = io.getPos() - startPos;
-                                </#if>
-            }
-                            </#if>
-            <#--
-                Convert the list into an array. However if the array is of a primitive
-                type we have to iterate over it's elements and explicitly cast them.
-                Otherwise a simple toArray call is fine.
-            -->
-                            <#if helper.isSimpleTypeReference(field.type)>
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[] ${field.name} = new ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[_${field.name}List.size()];
-            for(int i = 0; i < _${field.name}List.size(); i++) {
-                ${field.name}[i] = (${helper.getNonPrimitiveLanguageTypeNameForField(field)}) _${field.name}List.get(i);
-            }
-                            <#else>
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[] ${field.name} = _${field.name}List.toArray(new ${helper.getNonPrimitiveLanguageTypeNameForField(field)}[0]);
-                            </#if>
-                        </#if>
-                    <#break>
-                    <#case "const">
-
-            // Const Field (${field.name})
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)} ${field.name} = ${helper.getReadBufferReadMethodCall(field.type)};
-            if(${field.name} != ${type.name}.${field.name?upper_case}) {
-                throw new ParseException("Expected constant value " + ${type.name}.${field.name?upper_case} + " but got " + ${field.name});
-            }
-                    <#break>
-                    <#case "enum">
-
-            // Enum field (${field.name})
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)} ${field.name} = ${helper.getNonPrimitiveLanguageTypeNameForField(field)}.valueOf(${helper.getReadBufferReadMethodCall(helper.getEnumBaseTypeReference(field.type))});
-                    <#break>
-                    <#case "manual">
-
-            // Manual Field (${field.name})
-            ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toTypedParseExpression(field, field.parseExpression, type.parserArguments)});
-                        <#-- If a manual field is detected, the value returned by this is instantly treated as the value -->
-                        <#switch case.name>
-                            <#case "Time">
-            return new PlcTime(${field.name});
-                            <#break>
-                            <#case "Date">
-            return new PlcDate(${field.name});
-                            <#break>
-                            <#case "DateTime">
-            return new PlcDateTime(${field.name});
-                            <#break>
-                            <#case "Struct">
-            return new PlcStruct(${field.name});
-                            <#break>
-                            <#case "String">
-            return new PlcString(${field.name});
-                            <#break>
-                            <#default>
-            return new Plc${case.name}(${field.name});
-                        </#switch>
-                        <#-- As we returned early, skip outputting a return at the end -->
-                        <#assign skipReturn=true>
-                    <#break>
-                    <#case "reserved">
-
-            // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-            {
-                ${helper.getLanguageTypeNameForField(field)} reserved = ${helper.getReadBufferReadMethodCall(field.type)};
-                if(reserved != ${helper.getReservedValue(field)}) {
-                    LOGGER.info("Expected constant value " + ${field.referenceValue} + " but got " + reserved + " for reserved field.");
-                }
-            }
-                    <#break>
-                    <#case "simple">
+${helper.fileName(protocolName, languageName, outputFlavor)?replace(".", "/")}/model/${type.name}.go
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT 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 (
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/model/values"
+    "plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/model/values/iec61131"
+    "plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    api "plc4x.apache.org/plc4go-modbus-driver/0.8.0/pkg/plc4go/values"
+)
+
+func ${type.name}Parse(io *spi.ReadBuffer<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type)>I</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) (api.PlcValue, error) {
+    switch {
+    <#list type.switchField.cases as case>
+        case <#if case.discriminatorValues?has_content><#list case.discriminatorValues as discriminatorValue>${helper.toParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)} == ${discriminatorValue}<#sep> && </#sep></#list></#if>: // ${case.name}
+        <#if case.name == "Struct">
+            _map := map[string]interface{}{}
+        </#if>
+        <#list case.fields as field>
+            <#switch field.typeName>
+                <#case "array">
+                    <#assign arrayField = field>
+
+            // Array Field (${field.name})
+            var ${field.name} []api.PlcValue
+                    <#break>
+                <#case "reserved">
+                    <#assign reservedField = field>
+
+                    <#break>
+                <#case "simple">
+                    <#assign simpleField = field>
 
             // Simple Field (${field.name})
-            ${helper.getNonPrimitiveLanguageTypeNameForField(field)} ${field.name} = <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toTypedParseExpression(field, parserArgument, type.parserArguments)})<#sep>, < [...]
-                    <#break>
-                </#switch>
-            </#list>
+            <#if case.name == "Struct" || field.name == "value">${field.name}<#else>_</#if>, _${field.name}Err := <#if helper.isSimpleTypeReference(field.type)>${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name}IO.staticParse(io<#if field.params?has_content>, <#list field.params as parserArgument>(${helper.getLanguageTypeNameForTypeReference(helper.getArgumentType(field.type, parserArgument?index), true)}) (${helper.toParseExpression(field, parserArgument, type.par [...]
+            if _${field.name}Err != nil {
+                return nil, errors.New("Error parsing '${field.name}' field " + _${field.name}Err.Error())
+            }
             <#if case.name == "Struct">
-            Map<String, PlcValue> _map = new HashMap<>();
-                <#list case.fields as field>
-            _map.put("${field.name}", PlcValues.of(${field.name}));
-                </#list>
-            </#if>
-            <#if !skipReturn>
-                <#switch case.name>
-                    <#case "Time">
-            return new PlcTime(LocalTime.of((int) hours, (int) minutes, (int) seconds));
-                    <#break>
-                    <#case "Date">
-            return new PlcDate(LocalDate.of((int) year, (int) month, (int) day));
-                    <#break>
-                    <#case "DateTime">
-            return new PlcDateTime(LocalDateTime.of((int) year, (int) month, (int) day, (int) hours, (int) minutes, (int) seconds));
-                    <#break>
-                    <#case "Struct">
-            return new PlcStruct(_map);
-                    <#break>
-                    <#case "List">
-            return new PlcList(value);
-                    <#break>
-            <#-- Disable this for now as Strings will only be parsed as manual fields -->
-                    <#case "String">
-            //return new PlcString(_map);
-                    <#break>
-                    <#default>
-                    <#if helper.isCountArrayField(case.fields[0])>
-            return new PlcList(value);
-                    <#else>
-            return new Plc${case.name}(value);
-                    </#if>
-                </#switch>
+            _map["${case.name}"] = ${field.name}
             </#if>
-        }<#sep> else </#sep></#list>
-        return null;
-    }
-
-<#if outputFlavor != "passive">
-    public static WriteBuffer staticSerialize(PlcValue _value<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${helper.getLanguageTypeNameForTypeReference(parserArgument.type, false)} ${parserArgument.name}<#sep>, </#sep></#list></#if>) throws ParseException {
-        return staticSerialize(_value<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>, false);
-    }
-
-    public static WriteBuffer staticSerialize(PlcValue _value<#if type.parserArguments?has_content>, <#list type.parserArguments as parserArgument>${helper.getLanguageTypeNameForTypeReference(parserArgument.type, false)} ${parserArgument.name}<#sep>, </#sep></#list></#if>, boolean littleEndian) throws ParseException {
-        <#list type.switchField.cases as case><#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue>EvaluationHelper.equals(${helper.toTypedParseExpression(null, type.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments)}, ${discriminatorValue})<#sep> && </#sep></#list>) </#if>{ // ${case.name}
-            WriteBuffer io = new WriteBuffer(${helper.getSizeInBits(case, type.parserArguments)} / 8, littleEndian);
-
-            <#list case.fields as field>
-                <#switch field.typeName>
-                    <#case "array">
-                    <#break>
-                    <#case "const">
-            // Const Field (${field.name})
-            ${helper.getWriteBufferWriteMethodCall(field.type, field.referenceValue)};
-                    <#break>
-                    <#case "enum">
-            // Enum field (${field.name})
-            ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${field.name?cap_first}();
-            ${helper.getWriteBufferWriteMethodCall(helper.getEnumBaseTypeReference(field.type), "(" + field.name + ".getValue())")};
-                    <#break>
-                    <#case "manual">
-            // Manual Field (${field.name})
-            ${helper.toTypedSerializationExpression(field, field.serializeExpression, type.parserArguments)};
-                    <#break>
-                    <#case "reserved">
-            // Reserved Field
-            ${helper.getWriteBufferWriteMethodCall(field.type, helper.getReservedValue(field))};
-                    <#break>
-                    <#case "simple">
-            // Simple Field (${field.name})
-                        <#if case.name == "Struct">
-            ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) _value.getStruct().get("${field.name}").get${helper.getLanguageTypeNameForField(field)?cap_first}();
-                        <#else>
-                            <#if field.name == "value">
-            ${helper.getLanguageTypeNameForField(field)} ${field.name} = (${helper.getLanguageTypeNameForField(field)}) _value.get${helper.getLanguageTypeNameForField(field)?cap_first}();
-                            <#else>
-                                <#-- Just for now -->
-            ${helper.getLanguageTypeNameForField(field)} ${field.name} = ${helper.getNullValueForTypeReference(field.type)};
-                            </#if>
-                        </#if>
-                        <#if helper.isSimpleTypeReference(field.type)>
-            ${helper.getWriteBufferWriteMethodCall(field.type, "(" + field.name + ")")};
-                        <#else>
-            ${field.type.name}IO.staticSerialize(io, ${field.name});
-                        </#if>
-                    <#break>
-                </#switch>
-            </#list>
-            return io;
-        }<#sep> else </#sep></#list>
-        return null;
+                <#break>
+            </#switch>
+        </#list>
+        <#switch case.name>
+            <#case "Time">
+            //return new PlcTime(LocalTime.of((int) hours, (int) minutes, (int) seconds))
+                <#break>
+            <#case "Date">
+            //return new PlcDate(LocalDate.of((int) year, (int) month, (int) day))
+                <#break>
+            <#case "DateTime">
+            //return new PlcDateTime(LocalDateTime.of((int) year, (int) month, (int) day, (int) hours, (int) minutes, (int) seconds))
+                <#break>
+            <#case "Struct">
+            return values.NewPlcStruct(_map), nil
+                <#break>
+            <#case "List">
+            return values.NewPlcList(value), nil
+                <#break>
+            <#-- Disable this for now as Strings will only be parsed as manual fields -
+            <#case "STRING">
+            return values.NewPlcSTRING(value), nil
+                <#break-->
+            <#default>
+                <#if helper.isCountArrayField(case.fields[0])>
+            return values.NewPlcList(value), nil
+                <#else>
+            return iec61131.NewPlc${case.name}(value), nil
+                </#if>
+        </#switch>
+    </#list>
     }
-</#if>
-
+    return nil, errors.New("unsupported type")
 }
+
 </#outputformat>
diff --git a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
index 9798874..1316a6b 100644
--- a/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/model-template.ftlh
@@ -167,6 +167,9 @@ func Cast${type.name}(structType interface{}) ${type.name} {
         if s${type.name}, ok := typ.(${type.name}); ok {
             return s${type.name}
         }
+        if s${type.name}, ok := typ.(*${type.name}); ok {
+            return *s${type.name}
+        }
         return ${type.name}{}
     }
     return castFunc(structType)
diff --git a/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
index 568fed9..6ed691d 100644
--- a/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/data-io-template.ftlh
@@ -237,7 +237,7 @@ public class ${type.name}IO {
             return new PlcList(value);
                     <#break>
             <#-- Disable this for now as Strings will only be parsed as manual fields -->
-                    <#case "String">
+                    <#case "STRING">
             //return new PlcString(_map);
                     <#break>
                     <#default>
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcString.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcSTRING.java
similarity index 97%
rename from plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcString.java
rename to plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcSTRING.java
index aeb0fc5..615825d 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcString.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcSTRING.java
@@ -28,12 +28,12 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "className")
-public class PlcString extends PlcSimpleValue<String> {
+public class PlcSTRING extends PlcSimpleValue<String> {
 
     static int maxLength = 254;
 
     @JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
-    public PlcString(@JsonProperty("value") String value) {
+    public PlcSTRING(@JsonProperty("value") String value) {
         super(value, true);
         if (value.length() > maxLength) {
             throw new IllegalArgumentException(
diff --git a/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValues.java b/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValues.java
index 414eb62..f01027a 100644
--- a/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValues.java
+++ b/plc4j/api/src/main/java/org/apache/plc4x/java/api/value/PlcValues.java
@@ -32,7 +32,6 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.Arrays;
 import java.util.LinkedList;
-import java.util.stream.Collectors;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -346,17 +345,17 @@ public class PlcValues {
     }
 
     public static PlcValue of(String s) {
-        return new PlcString(s);
+        return new PlcSTRING(s);
     }
 
     public static PlcValue of(String[] s) {
         if(s != null) {
             if(s.length == 1) {
-                return new PlcString(s[0]);
+                return new PlcSTRING(s[0]);
             } else if(s.length > 1) {
-                List<PlcString> plcValues = new LinkedList<>();
+                List<PlcSTRING> plcValues = new LinkedList<>();
                 for (int j = 0; j < s.length; j++) {
-                    plcValues.add(new PlcString(s[j]));
+                    plcValues.add(new PlcSTRING(s[j]));
                 }
                 return new PlcList(plcValues);
             }
diff --git a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/amsads/attic/protocol/util/LittleEndianDecoder.java b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/amsads/attic/protocol/util/LittleEndianDecoder.java
index 49d86e4..6b53d39 100644
--- a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/amsads/attic/protocol/util/LittleEndianDecoder.java
+++ b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/amsads/attic/protocol/util/LittleEndianDecoder.java
@@ -21,19 +21,13 @@ package org.apache.plc4x.java.amsads.attic.protocol.util;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.NotImplementedException;
 import org.apache.plc4x.java.ads.readwrite.types.AdsDataType;
 import org.apache.plc4x.java.api.exceptions.PlcUnsupportedDataTypeException;
 import org.apache.plc4x.java.api.value.*;
 
 import java.io.ByteArrayOutputStream;
 import java.math.BigInteger;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneOffset;
 import java.util.LinkedList;
-import java.util.concurrent.TimeUnit;
 
 // TODO: we might user ByteBuffer.wrap(buffer).order(ByteOrder.LITTLE_ENDIAN).putInt(port).asArray() etc
 public class LittleEndianDecoder {
@@ -411,7 +405,7 @@ public class LittleEndianDecoder {
                     values.offer(new String(os.toByteArray()));
                 }
                 if(values.size() == 1) {
-                    return new PlcString(values.get(0));
+                    return new PlcSTRING(values.get(0));
                 } else {
                     return new PlcList(values);
                 }
diff --git a/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/protocol/KnxNetIpProtocolLogic.java b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/protocol/KnxNetIpProtocolLogic.java
index 4384047..fdbbcbf 100644
--- a/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/protocol/KnxNetIpProtocolLogic.java
+++ b/plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/protocol/KnxNetIpProtocolLogic.java
@@ -461,23 +461,23 @@ public class KnxNetIpProtocolLogic extends Plc4xProtocolBase<KNXNetIPMessage> im
 
                 // Assemble the plc4x return data-structure.
                 Map<String, PlcValue> dataPointMap = new HashMap<>();
-                dataPointMap.put("sourceAddress", new PlcString(toString(sourceAddress)));
-                dataPointMap.put("targetAddress", new PlcString(groupAddress.getGroupAddress()));
+                dataPointMap.put("sourceAddress", new PlcSTRING(toString(sourceAddress)));
+                dataPointMap.put("targetAddress", new PlcSTRING(groupAddress.getGroupAddress()));
                 if (groupAddress.getFunction() != null) {
-                    dataPointMap.put("location", new PlcString(groupAddress.getFunction().getSpaceName()));
-                    dataPointMap.put("function", new PlcString(groupAddress.getFunction().getName()));
+                    dataPointMap.put("location", new PlcSTRING(groupAddress.getFunction().getSpaceName()));
+                    dataPointMap.put("function", new PlcSTRING(groupAddress.getFunction().getName()));
                 } else {
                     dataPointMap.put("location", null);
                     dataPointMap.put("function", null);
                 }
                 if(areaName != null) {
-                    dataPointMap.put("area", new PlcString(areaName));
+                    dataPointMap.put("area", new PlcSTRING(areaName));
                 }
                 if(lineName != null) {
-                    dataPointMap.put("line", new PlcString(lineName));
+                    dataPointMap.put("line", new PlcSTRING(lineName));
                 }
-                dataPointMap.put("description", new PlcString(groupAddress.getName()));
-                dataPointMap.put("unitOfMeasurement", new PlcString(groupAddress.getType().getName()));
+                dataPointMap.put("description", new PlcSTRING(groupAddress.getName()));
+                dataPointMap.put("unitOfMeasurement", new PlcSTRING(groupAddress.getType().getName()));
                 dataPointMap.put("value", value);
                 final PlcStruct dataPoint = new PlcStruct(dataPointMap);
 
diff --git a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
index 0506a2e..c07b649 100644
--- a/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
+++ b/plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/protocol/ModbusProtocolLogic.java
@@ -245,25 +245,29 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
             return new ModbusPDUReadHoldingRegistersRequest(holdingRegister.getAddress(), holdingRegister.getLengthWords());
         } else if(field instanceof ModbusExtendedRegister) {
             ModbusExtendedRegister extendedRegister = (ModbusExtendedRegister) field;
-            int group1_address = extendedRegister.getAddress() % 10000;
-            int group2_address = 0;
-            int group1_quantity, group2_quantity;
-            short group1_file_number = (short) (Math.floor(extendedRegister.getAddress() / 10000) + 1);
-            short group2_file_number;
+            int group1Address = extendedRegister.getAddress() % 10000;
+            int group2Address = 0;
+            int group1Quantity;
+            int group2Quantity;
+            short group1FileNumber = (short) (Math.floor(extendedRegister.getAddress() / 10000) + 1);
+            short group2FileNumber;
             ModbusPDUReadFileRecordRequestItem[] itemArray;
 
-            if ((group1_address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
-              //If request doesn't span file records, use a single group
-              group1_quantity = extendedRegister.getLengthWords();
-              ModbusPDUReadFileRecordRequestItem group1 = new ModbusPDUReadFileRecordRequestItem((short) 6, group1_file_number, group1_address, group1_quantity);
+            if ((group1Address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
+              // If request doesn't span file records, use a single group
+              group1Quantity = extendedRegister.getLengthWords();
+              ModbusPDUReadFileRecordRequestItem group1 =
+                  new ModbusPDUReadFileRecordRequestItem((short) 6, group1FileNumber, group1Address, group1Quantity);
               itemArray = new ModbusPDUReadFileRecordRequestItem[] {group1};
             } else {
-              //If it doesn't span a file record. e.g. 609998[10] request 2 words in first group and 8 in second.
-              group1_quantity = FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH - group1_address;
-              group2_quantity = extendedRegister.getLengthWords() - group1_quantity;
-              group2_file_number = (short) (group1_file_number + 1);
-              ModbusPDUReadFileRecordRequestItem group1 = new ModbusPDUReadFileRecordRequestItem((short) 6, group1_file_number, group1_address, group1_quantity);
-              ModbusPDUReadFileRecordRequestItem group2 = new ModbusPDUReadFileRecordRequestItem((short) 6, group2_file_number, group2_address, group2_quantity);
+              // If it doesn't span a file record. e.g. 609998[10] request 2 words in first group and 8 in second.
+              group1Quantity = FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH - group1Address;
+              group2Quantity = extendedRegister.getLengthWords() - group1Quantity;
+              group2FileNumber = (short) (group1FileNumber + 1);
+              ModbusPDUReadFileRecordRequestItem group1 =
+                  new ModbusPDUReadFileRecordRequestItem((short) 6, group1FileNumber, group1Address, group1Quantity);
+              ModbusPDUReadFileRecordRequestItem group2 =
+                  new ModbusPDUReadFileRecordRequestItem((short) 6, group2FileNumber, group2Address, group2Quantity);
               itemArray = new ModbusPDUReadFileRecordRequestItem[] {group1, group2};
             }
             return new ModbusPDUReadFileRecordRequest(itemArray);
@@ -274,7 +278,8 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
     private ModbusPDU getWriteRequestPdu(PlcField field, PlcValue plcValue) {
         if(field instanceof ModbusFieldCoil) {
             ModbusFieldCoil coil = (ModbusFieldCoil) field;
-            ModbusPDUWriteMultipleCoilsRequest request = new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getQuantity(),
+            ModbusPDUWriteMultipleCoilsRequest request =
+                new ModbusPDUWriteMultipleCoilsRequest(coil.getAddress(), coil.getQuantity(),
                 fromPlcValue(field, plcValue));
             if (request.getQuantity() == coil.getQuantity()) {
                 return request;
@@ -284,7 +289,8 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
             }
         } else if(field instanceof ModbusFieldHoldingRegister) {
             ModbusFieldHoldingRegister holdingRegister = (ModbusFieldHoldingRegister) field;
-            ModbusPDUWriteMultipleHoldingRegistersRequest request = new ModbusPDUWriteMultipleHoldingRegistersRequest(holdingRegister.getAddress(),
+            ModbusPDUWriteMultipleHoldingRegistersRequest request =
+                new ModbusPDUWriteMultipleHoldingRegistersRequest(holdingRegister.getAddress(),
                 holdingRegister.getLengthWords(), fromPlcValue(field, plcValue));
             if (request.getValue().length == holdingRegister.getLengthWords()*2) {
                 return request;
@@ -294,29 +300,35 @@ public class ModbusProtocolLogic extends Plc4xProtocolBase<ModbusTcpADU> impleme
             }
         } else if(field instanceof ModbusExtendedRegister) {
             ModbusExtendedRegister extendedRegister = (ModbusExtendedRegister) field;
-            int group1_address = extendedRegister.getAddress() % FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH;
-            int group2_address = 0;
-            int group1_quantity, group2_quantity;
+            int group1Address = extendedRegister.getAddress() % FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH;
+            int group2Address = 0;
+            int group1Quantity;
+            int group2Quantity;
             byte[] plcValue1, plcValue2;
-            short group1_file_number = (short) (Math.floor(extendedRegister.getAddress() / FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) + 1);
-            short group2_file_number;
+            short group1FileNumber = (short)
+                (Math.floor(extendedRegister.getAddress() / FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) + 1);
+            short group2FileNumber;
             ModbusPDUWriteFileRecordRequestItem[] itemArray;
 
-            if ((group1_address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
+            if ((group1Address + extendedRegister.getLengthWords()) <= FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH) {
               //If request doesn't span file records, use a single group
-              group1_quantity = extendedRegister.getLengthWords();
-              ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem((short) 6, group1_file_number, group1_address, fromPlcValue(field, plcValue));
+              group1Quantity = extendedRegister.getLengthWords();
+              ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem(
+                  (short) 6, group1FileNumber, group1Address, fromPlcValue(field, plcValue));
               itemArray = new ModbusPDUWriteFileRecordRequestItem[] {group1};
             } else {
               //If it doesn span a file record. e.g. 609998[10] request 2 words in first group and 8 in second.
-              group1_quantity = FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH - group1_address;
-              group2_quantity = extendedRegister.getLengthWords() - group1_quantity;
-              group2_file_number = (short) (group1_file_number + 1);
-
-              plcValue1 = ArrayUtils.subarray(fromPlcValue(field, plcValue), 0, group1_quantity);
-              plcValue2 = ArrayUtils.subarray(fromPlcValue(field, plcValue), group1_quantity, fromPlcValue(field, plcValue).length);
-              ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem((short) 6, group1_file_number, group1_address, plcValue1);
-              ModbusPDUWriteFileRecordRequestItem group2 = new ModbusPDUWriteFileRecordRequestItem((short) 6, group2_file_number, group2_address, plcValue2);
+              group1Quantity = FC_EXTENDED_REGISTERS_FILE_RECORD_LENGTH - group1Address;
+              group2Quantity = extendedRegister.getLengthWords() - group1Quantity;
+              group2FileNumber = (short) (group1FileNumber + 1);
+
+              plcValue1 = ArrayUtils.subarray(fromPlcValue(field, plcValue), 0, group1Quantity);
+              plcValue2 = ArrayUtils.subarray(
+                  fromPlcValue(field, plcValue), group1Quantity, fromPlcValue(field, plcValue).length);
+              ModbusPDUWriteFileRecordRequestItem group1 = new ModbusPDUWriteFileRecordRequestItem(
+                  (short) 6, group1FileNumber, group1Address, plcValue1);
+              ModbusPDUWriteFileRecordRequestItem group2 = new ModbusPDUWriteFileRecordRequestItem(
+                  (short) 6, group2FileNumber, group2Address, plcValue2);
               itemArray = new ModbusPDUWriteFileRecordRequestItem[] {group1, group2};
             }
             return new ModbusPDUWriteFileRecordRequest(itemArray);
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
index d2f52c7..8815cdd 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
@@ -152,7 +152,7 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
         } else if (typeNode.equals(Identifiers.SByte)) {
             return new PlcSINT((Byte) objValue);
         } else {
-            return new PlcString(objValue.toString());
+            return new PlcSTRING(objValue.toString());
         }
 
     }
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java
index a2a5b7c..91b6cdd 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaPlcFieldHandler.java
@@ -24,7 +24,6 @@ import org.apache.plc4x.java.api.model.PlcField;
 import org.apache.plc4x.java.api.value.*;
 import org.apache.plc4x.java.spi.connection.DefaultPlcFieldHandler;
 
-import java.math.BigInteger;
 import java.util.ArrayList;
 
 /**
@@ -47,7 +46,7 @@ public class OpcuaPlcFieldHandler extends DefaultPlcFieldHandler {
             resultSet.add(item.toString());
         }
         if(resultSet.size() == 1) {
-            return new PlcString(resultSet.get(0));
+            return new PlcSTRING(resultSet.get(0));
         } else {
             return new PlcList(resultSet);
         }
diff --git a/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/field/SimulatedFieldHandler.java b/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/field/SimulatedFieldHandler.java
index 691b389..86545a4 100644
--- a/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/field/SimulatedFieldHandler.java
+++ b/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/field/SimulatedFieldHandler.java
@@ -25,8 +25,6 @@ import org.apache.plc4x.java.api.model.PlcField;
 import org.apache.plc4x.java.api.value.*;
 import org.apache.plc4x.java.spi.connection.DefaultPlcFieldHandler;
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -47,7 +45,7 @@ public class SimulatedFieldHandler extends DefaultPlcFieldHandler {
         SimulatedField testField = (SimulatedField) field;
         if (testField.getDataType() == String.class) {
             if(values.length == 1) {
-                return new PlcString((String) values[0]);
+                return new PlcSTRING((String) values[0]);
             } else {
                 return new PlcList(Arrays.asList(values));
             }
diff --git a/plc4j/examples/hello-world-plc4x-write/src/main/java/org/apache/plc4x/java/examples/helloplc4x/write/HelloPlc4xWrite.java b/plc4j/examples/hello-world-plc4x-write/src/main/java/org/apache/plc4x/java/examples/helloplc4x/write/HelloPlc4xWrite.java
index 3617000..57a093c 100644
--- a/plc4j/examples/hello-world-plc4x-write/src/main/java/org/apache/plc4x/java/examples/helloplc4x/write/HelloPlc4xWrite.java
+++ b/plc4j/examples/hello-world-plc4x-write/src/main/java/org/apache/plc4x/java/examples/helloplc4x/write/HelloPlc4xWrite.java
@@ -21,7 +21,6 @@ package org.apache.plc4x.java.examples.helloplc4x.write;
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.messages.*;
-import org.apache.plc4x.java.api.value.PlcString;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultPlcFieldHandler.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultPlcFieldHandler.java
index 485e0bb..8beae1f 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultPlcFieldHandler.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/connection/DefaultPlcFieldHandler.java
@@ -26,7 +26,6 @@ import org.apache.plc4x.java.api.value.*;
 import java.math.BigInteger;
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -278,7 +277,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     Byte byteValue = (Byte) values[i];
                     stringBytes[(2*i)+0] = (byte) (byteValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_8));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_8));
             case "WSTRING":
             case "STRING16":
                 stringBytes = new byte[values.length];
@@ -287,7 +286,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     Byte byteValue = (Byte) values[i];
                     stringBytes[(2*i)+0] = (byte) (byteValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_8));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_8));
             default:
                 if(values.length == 1) {
                     return new PlcSINT((Byte) values[0]);
@@ -499,7 +498,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     stringBytes[(2*i)+0] = (byte) (shortValue >> 8);
                     stringBytes[(2*i)+1] = (byte) (shortValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_8));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_8));
             case "WSTRING":
             case "STRING16":
                 stringBytes = new byte[2 * values.length];
@@ -509,7 +508,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     stringBytes[(2*i)+0] = (byte) (shortValue >> 8);
                     stringBytes[(2*i)+1] = (byte) (shortValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_16));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_16));
             default:
                 if(values.length == 1) {
                     return new PlcINT((Short) values[0]);
@@ -724,7 +723,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     stringBytes[(4*i)+2] = (byte) ((integerValue >> 8) & 0xFF);
                     stringBytes[(4*i)+3] = (byte) (integerValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_8));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_8));
             case "WSTRING":
             case "STRING16":
                     stringBytes = new byte[4 * values.length];
@@ -736,7 +735,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                         stringBytes[(4*i)+2] = (byte) ((integerValue >> 8) & 0xFF);
                         stringBytes[(4*i)+3] = (byte) (integerValue & 0xFF);
                     }
-                    return new PlcString(new String(stringBytes, StandardCharsets.UTF_16));
+                    return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_16));
             default:
                 if(values.length == 1) {
                     return new PlcDINT((Integer) values[0]);
@@ -954,7 +953,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     stringBytes[(4*i)+6] = (byte) ((longValue >> 8) & 0xFF);
                     stringBytes[(4*i)+7] = (byte) (longValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_8));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_8));
             case "WSTRING":
             case "STRING16":
                 stringBytes = new byte[8 * values.length];
@@ -970,7 +969,7 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                     stringBytes[(4*i)+6] = (byte) ((longValue >> 8) & 0xFF);
                     stringBytes[(4*i)+7] = (byte) (longValue & 0xFF);
                 }
-                return new PlcString(new String(stringBytes, StandardCharsets.UTF_16));
+                return new PlcSTRING(new String(stringBytes, StandardCharsets.UTF_16));
             default:
                 if(values.length == 1) {
                     return new PlcLINT((Long) values[0]);
@@ -2008,32 +2007,32 @@ public abstract class DefaultPlcFieldHandler implements PlcFieldHandler {
                 }
             case "STRING":
                 if(values.length == 1) {
-                    return new PlcString((String) values[0]);
+                    return new PlcSTRING((String) values[0]);
                 } else {
-                    List<PlcString> plcStringValues = new LinkedList<>();
+                    List<PlcSTRING> plcStringValues = new LinkedList<>();
                     for (int i = 0; i < values.length; i++) {
-                        plcStringValues.add(new PlcString((String) values[i]));
+                        plcStringValues.add(new PlcSTRING((String) values[i]));
                     }
                     return new PlcList(plcStringValues);
                 }
             case "WSTRING":
             case "STRING16":
                 if(values.length == 1) {
-                    return new PlcString((String) values[0]);
+                    return new PlcSTRING((String) values[0]);
                 } else {
-                    List<PlcString> plcStringValues = new LinkedList<>();
+                    List<PlcSTRING> plcStringValues = new LinkedList<>();
                     for (int i = 0; i < values.length; i++) {
-                        plcStringValues.add(new PlcString((String) values[i]));
+                        plcStringValues.add(new PlcSTRING((String) values[i]));
                     }
                     return new PlcList(plcStringValues);
                 }
             default:
                 if(values.length == 1) {
-                    return new PlcString((String) values[0]);
+                    return new PlcSTRING((String) values[0]);
                 } else {
-                    List<PlcString> plcStringValues = new LinkedList<>();
+                    List<PlcSTRING> plcStringValues = new LinkedList<>();
                     for (int i = 0; i < values.length; i++) {
-                        plcStringValues.add(new PlcString((String) values[i]));
+                        plcStringValues.add(new PlcSTRING((String) values[i]));
                     }
                     return new PlcList(plcStringValues);
                 }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/SingleFieldOptimizer.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/SingleFieldOptimizer.java
index 5a695e3..a1fc1fa 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/SingleFieldOptimizer.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/optimizer/SingleFieldOptimizer.java
@@ -33,6 +33,9 @@ import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 
+/**
+ * Optimizer variant which automatically splits a multi-item request up into multiple single item requests.
+ */
 public class SingleFieldOptimizer extends BaseOptimizer {
 
     @Override
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
index 4cae461..24725b4 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
@@ -21,7 +21,7 @@ package org.apache.plc4x.java.opm;
 
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.api.value.PlcString;
+import org.apache.plc4x.java.api.value.PlcSTRING;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
 import org.apache.plc4x.java.spi.messages.utils.ResponseItem;
@@ -57,7 +57,7 @@ public class ConnectedEntityTest {
         driverManager = new PlcDriverManager();
         connection = (MockConnection) driverManager.getConnection("mock:cached");
         when(mockDevice.read(any()))
-            .thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcString("hallo")));
+            .thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcSTRING("hallo")));
         connection.setDevice(mockDevice);
         entityManager = new PlcEntityManager(driverManager);
     }
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
index 504d1e2..bf7be56 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
@@ -24,7 +24,7 @@ import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcInvalidFieldException;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.api.value.PlcString;
+import org.apache.plc4x.java.api.value.PlcSTRING;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
 import org.apache.plc4x.java.spi.messages.utils.ResponseItem;
@@ -91,7 +91,7 @@ public class PlcEntityManagerTest implements WithAssertions {
             when(mockDevice.read(any())).thenAnswer(invocation -> {
                 // Sleep for 3s
                 Thread.sleep(3_000);
-                return Pair.of(PlcResponseCode.OK, new PlcString("Hallo"));
+                return Pair.of(PlcResponseCode.OK, new PlcSTRING("Hallo"));
             });
             connection.setDevice(mockDevice);
 
@@ -120,7 +120,7 @@ public class PlcEntityManagerTest implements WithAssertions {
             PlcDriverManager driverManager = new PlcDriverManager();
             MockConnection connection = (MockConnection) driverManager.getConnection("mock:test");
             MockDevice mockDevice = Mockito.mock(MockDevice.class);
-            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcString("value")));
+            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcSTRING("value")));
             connection.setDevice(mockDevice);
 
             PlcEntityManager entityManager = new PlcEntityManager(driverManager, registry);
@@ -170,7 +170,7 @@ public class PlcEntityManagerTest implements WithAssertions {
             MockConnection connection = (MockConnection) driverManager.getConnection("mock:test");
             MockDevice mockDevice = Mockito.mock(MockDevice.class);
             when(mockDevice.write(anyString(), any())).thenReturn(PlcResponseCode.OK);
-            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcString("value")));
+            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcSTRING("value")));
             connection.setDevice(mockDevice);
 
             PlcEntityManager entityManager = new PlcEntityManager(driverManager, registry);
@@ -199,7 +199,7 @@ public class PlcEntityManagerTest implements WithAssertions {
             PlcDriverManager driverManager = new PlcDriverManager();
             MockConnection connection = (MockConnection) driverManager.getConnection("mock:test");
             MockDevice mockDevice = Mockito.mock(MockDevice.class);
-            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcString("value")));
+            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcSTRING("value")));
             connection.setDevice(mockDevice);
 
             PlcEntityManager entityManager = new PlcEntityManager(driverManager);
@@ -232,7 +232,7 @@ public class PlcEntityManagerTest implements WithAssertions {
             PlcDriverManager driverManager = new PlcDriverManager();
             MockConnection connection = (MockConnection) driverManager.getConnection("mock:test");
             MockDevice mockDevice = Mockito.mock(MockDevice.class);
-            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcString("value")));
+            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcSTRING("value")));
             connection.setDevice(mockDevice);
 
             PlcEntityManager entityManager = new PlcEntityManager(driverManager, registry);
diff --git a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
index d0d7e4b..c0390b0 100644
--- a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
+++ b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
@@ -22,7 +22,7 @@ package org.apache.plc4x.java.scraper;
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.api.value.PlcString;
+import org.apache.plc4x.java.api.value.PlcSTRING;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
 import org.apache.plc4x.java.spi.messages.utils.ResponseItem;
@@ -54,7 +54,7 @@ public class ScraperTaskTest implements WithAssertions {
         PlcDriverManager driverManager = new PlcDriverManager();
         MockConnection connection = (MockConnection) driverManager.getConnection("mock:scraper");
         connection.setDevice(mockDevice);
-        when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcString("hallo")));
+        when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.OK, new PlcSTRING("hallo")));
 
         ScraperTask scraperTask = new ScraperTaskImpl(driverManager, "job1", "m1", "mock:scraper", Collections.singletonMap("a", "b"),
             1_000, ForkJoinPool.commonPool(), (j,a,m) -> {});
@@ -71,7 +71,7 @@ public class ScraperTaskTest implements WithAssertions {
             PlcDriverManager driverManager = new PlcDriverManager();
             MockConnection connection = (MockConnection) driverManager.getConnection("mock:scraper");
             connection.setDevice(mockDevice);
-            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.NOT_FOUND, new PlcString("hallo")));
+            when(mockDevice.read(any())).thenReturn(new ResponseItem<>(PlcResponseCode.NOT_FOUND, new PlcSTRING("hallo")));
 
             ScraperTask scraperTask = new ScraperTaskImpl(driverManager, "job1", "m1",
                 "mock:scraper", Collections.singletonMap("a", "b"), 1_000, ForkJoinPool.commonPool(), (j,a,m) -> {});
diff --git a/protocols/ads/src/main/resources/protocols/ads/ads.mspec b/protocols/ads/src/main/resources/protocols/ads/ads.mspec
index 3f28e00..6d6b72e 100644
--- a/protocols/ads/src/main/resources/protocols/ads/ads.mspec
+++ b/protocols/ads/src/main/resources/protocols/ads/ads.mspec
@@ -504,7 +504,7 @@
         // -----------------------------------------
         // Characters & Strings
         // -----------------------------------------
-        ['AdsDataType.STRING' String
+        ['AdsDataType.STRING' STRING
 //            [manual string 'UTF-8' 'value' 'STATIC_CALL("org.apache.plc4x.java.ads.utils.StaticHelper.parseAmsString", io, _type.encoding)' 'STATIC_CALL("org.apache.plc4x.java.ads.utils.StaticHelper.serializeAmsString", io, _value, _type.encoding)' '_value.length + 2']
         ]
     ]
diff --git a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
index f55fffc..d738775 100644
--- a/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
+++ b/protocols/knxnetip/src/main/resources/protocols/knxnetip/knxnetip.mspec
@@ -469,11 +469,11 @@
             [reserved uint  8    '0x0']
             [simple   float 8.23 'value']
         ]
-        ['4' String
+        ['4' STRING
             [reserved uint   8 '0x0']
             [simple   string 8 'UTF-8' 'value']
         ]
-        ['16' String
+        ['16' STRING
             [reserved uint   8   '0x0']
             [simple   string 112 'UTF-8' 'value']
         ]
diff --git a/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec b/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
index 4e72019..32df2d2 100644
--- a/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
+++ b/protocols/modbus/src/main/resources/protocols/modbus/modbus.mspec
@@ -201,10 +201,12 @@
         ]
 
         ['false','0x08','false'     ModbusPDUDiagnosticRequest
-            // TODO: Implement the sub-request discriminated type
+            [simple     uint 16     'subFunction']
+            [simple     uint 16     'data']
         ]
         ['false','0x08','true'      ModbusPDUDiagnosticResponse
-            // TODO: Implement the sub-request discriminated type
+            [simple     uint 16     'subFunction']
+            [simple     uint 16     'data']
         ]
 
         ['false','0x0B','false'     ModbusPDUGetComEventCounterRequest
@@ -406,3 +408,16 @@
     ['82' STRING ['1']]
     ['83' WSTRING ['2']]
 ]
+
+[enum uint 8 'ModbusErrorCode'
+    ['1'    ILLEGAL_FUNCTION]
+    ['2'    ILLEGAL_DATA_ADDRESS]
+    ['3'    ILLEGAL_DATA_VALUE]
+    ['4'    SLAVE_DEVICE_FAILURE]
+    ['5'    ACKNOWLEDGE]
+    ['6'    SLAVE_DEVICE_BUSY]
+    ['7'    NEGATIVE_ACKNOWLEDGE]
+    ['8'    MEMORY_PARITY_ERROR]
+    ['10'   GATEWAY_PATH_UNAVAILABLE]
+    ['11'   GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND]
+]
diff --git a/protocols/s7/src/main/resources/protocols/s7/s7.mspec b/protocols/s7/src/main/resources/protocols/s7/s7.mspec
index aea6ac5..9aa9298 100644
--- a/protocols/s7/src/main/resources/protocols/s7/s7.mspec
+++ b/protocols/s7/src/main/resources/protocols/s7/s7.mspec
@@ -333,14 +333,14 @@
         // -----------------------------------------
         // Characters & Strings
         // -----------------------------------------
-        ['41' String
+        ['41' STRING
         ]
-        ['42' String
+        ['42' STRING
         ]
-        ['43' String
+        ['43' STRING
             [manual string 'UTF-8' 'value' 'STATIC_CALL("org.apache.plc4x.java.s7.utils.StaticHelper.parseS7String", io, stringLength, _type.encoding)' 'STATIC_CALL("org.apache.plc4x.java.s7.utils.StaticHelper.serializeS7String", io, _value, stringLength, _type.encoding)' '_value.length + 2']
         ]
-        ['44' String
+        ['44' STRING
             [manual string 'UTF-16' 'value''STATIC_CALL("org.apache.plc4x.java.s7.utils.StaticHelper.parseS7String", io, stringLength, _type.encoding)' 'STATIC_CALL("org.apache.plc4x.java.s7.utils.StaticHelper.serializeS7String", io, _value, stringLength, _type.encoding)' '(_value.length * 2) + 2']
         ]
 
diff --git a/sandbox/hello-influx-data-collection/src/main/java/org/apache/plc4x/java/examples/helloinflux/HelloInflux.java b/sandbox/hello-influx-data-collection/src/main/java/org/apache/plc4x/java/examples/helloinflux/HelloInflux.java
index cecd2c4..a0c7946 100644
--- a/sandbox/hello-influx-data-collection/src/main/java/org/apache/plc4x/java/examples/helloinflux/HelloInflux.java
+++ b/sandbox/hello-influx-data-collection/src/main/java/org/apache/plc4x/java/examples/helloinflux/HelloInflux.java
@@ -121,7 +121,7 @@ public class HelloInflux {
                 point.addField(contextName, plcValue.getFloat());
             } else if (plcValue instanceof PlcLREAL) {
                 point.addField(contextName, plcValue.getDouble());
-            } else if (plcValue instanceof PlcString) {
+            } else if (plcValue instanceof PlcSTRING) {
                 point.addField(contextName, plcValue.getString());
             } else if (plcValue instanceof PlcStruct) {
                 PlcStruct structValue = (PlcStruct) plcValue;
diff --git a/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h b/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
index 4ab70e6..1ba9881 100644
--- a/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
+++ b/sandbox/plc4c/generated-sources/modbus/include/modbus_pdu.h
@@ -75,12 +75,15 @@ enum plc4c_modbus_read_write_modbus_pdu_type {
   plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_exception_status_request = 27,
   plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_exception_status_response = 28,
   plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_request = 29,
-  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request = 30,
-  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response = 31,
-  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_report_server_id_request = 32,
-  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_report_server_id_response = 33,
-  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_device_identification_request = 34,
-  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_device_identification_response = 35};
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_response = 30,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request = 31,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response = 32,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request = 33,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response = 34,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_report_server_id_request = 35,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_report_server_id_response = 36,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_device_identification_request = 37,
+  plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_device_identification_response = 38};
 typedef enum plc4c_modbus_read_write_modbus_pdu_type plc4c_modbus_read_write_modbus_pdu_type;
 
 // Function to get the discriminator values for a given type.
@@ -200,8 +203,18 @@ struct plc4c_modbus_read_write_modbus_pdu {
       uint8_t modbus_pdu_read_exception_status_response_value;
     };
     struct { /* ModbusPDUDiagnosticRequest */
-      uint16_t modbus_pdu_diagnostic_request_status;
-      uint16_t modbus_pdu_diagnostic_request_event_count;
+      uint16_t modbus_pdu_diagnostic_request_sub_function;
+      uint16_t modbus_pdu_diagnostic_request_data;
+    };
+    struct { /* ModbusPDUDiagnosticResponse */
+      uint16_t modbus_pdu_diagnostic_response_sub_function;
+      uint16_t modbus_pdu_diagnostic_response_data;
+    };
+    struct { /* ModbusPDUGetComEventCounterRequest */
+    };
+    struct { /* ModbusPDUGetComEventCounterResponse */
+      uint16_t modbus_pdu_get_com_event_counter_response_status;
+      uint16_t modbus_pdu_get_com_event_counter_response_event_count;
     };
     struct { /* ModbusPDUGetComEventLogRequest */
     };
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
index 8478c70..c6daca6 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -85,6 +85,12 @@ const plc4c_modbus_read_write_modbus_pdu_discriminator plc4c_modbus_read_write_m
    .errorFlag = false, .functionFlag = 0x07, .response = true},
   {/* plc4c_modbus_read_write_modbus_pdu_diagnostic_request */
    .errorFlag = false, .functionFlag = 0x08, .response = false},
+  {/* plc4c_modbus_read_write_modbus_pdu_diagnostic_response */
+   .errorFlag = false, .functionFlag = 0x08, .response = true},
+  {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request */
+   .errorFlag = false, .functionFlag = 0x0B, .response = false},
+  {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response */
+   .errorFlag = false, .functionFlag = 0x0B, .response = true},
   {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request */
    .errorFlag = false, .functionFlag = 0x0C, .response = false},
   {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response */
@@ -996,13 +1002,60 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
   if((errorFlag == false) && (functionFlag == 0x08) && (response == false)) { /* ModbusPDUDiagnosticRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_request;
                     
+    // Simple Field (subFunction)
+    uint16_t subFunction = 0;
+    _res = plc4c_spi_read_unsigned_short(io, 16, (uint16_t*) &subFunction);
+    if(_res != OK) {
+      return _res;
+    }
+    (*_message)->modbus_pdu_diagnostic_request_sub_function = subFunction;
+
+
+                    
+    // Simple Field (data)
+    uint16_t data = 0;
+    _res = plc4c_spi_read_unsigned_short(io, 16, (uint16_t*) &data);
+    if(_res != OK) {
+      return _res;
+    }
+    (*_message)->modbus_pdu_diagnostic_request_data = data;
+
+  } else 
+  if((errorFlag == false) && (functionFlag == 0x08) && (response == true)) { /* ModbusPDUDiagnosticResponse */
+    (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_response;
+                    
+    // Simple Field (subFunction)
+    uint16_t subFunction = 0;
+    _res = plc4c_spi_read_unsigned_short(io, 16, (uint16_t*) &subFunction);
+    if(_res != OK) {
+      return _res;
+    }
+    (*_message)->modbus_pdu_diagnostic_response_sub_function = subFunction;
+
+
+                    
+    // Simple Field (data)
+    uint16_t data = 0;
+    _res = plc4c_spi_read_unsigned_short(io, 16, (uint16_t*) &data);
+    if(_res != OK) {
+      return _res;
+    }
+    (*_message)->modbus_pdu_diagnostic_response_data = data;
+
+  } else 
+  if((errorFlag == false) && (functionFlag == 0x0B) && (response == false)) { /* ModbusPDUGetComEventCounterRequest */
+    (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request;
+  } else 
+  if((errorFlag == false) && (functionFlag == 0x0B) && (response == true)) { /* ModbusPDUGetComEventCounterResponse */
+    (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response;
+                    
     // Simple Field (status)
     uint16_t status = 0;
     _res = plc4c_spi_read_unsigned_short(io, 16, (uint16_t*) &status);
     if(_res != OK) {
       return _res;
     }
-    (*_message)->modbus_pdu_diagnostic_request_status = status;
+    (*_message)->modbus_pdu_get_com_event_counter_response_status = status;
 
 
                     
@@ -1012,7 +1065,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     if(_res != OK) {
       return _res;
     }
-    (*_message)->modbus_pdu_diagnostic_request_event_count = eventCount;
+    (*_message)->modbus_pdu_get_com_event_counter_response_event_count = eventCount;
 
   } else 
   if((errorFlag == false) && (functionFlag == 0x0C) && (response == false)) { /* ModbusPDUGetComEventLogRequest */
@@ -1706,14 +1759,50 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_serialize(plc4c_spi_write_b
     }
     case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_request: {
 
+      // Simple Field (subFunction)
+      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_diagnostic_request_sub_function);
+      if(_res != OK) {
+        return _res;
+      }
+
+      // Simple Field (data)
+      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_diagnostic_request_data);
+      if(_res != OK) {
+        return _res;
+      }
+
+      break;
+    }
+    case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_response: {
+
+      // Simple Field (subFunction)
+      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_diagnostic_response_sub_function);
+      if(_res != OK) {
+        return _res;
+      }
+
+      // Simple Field (data)
+      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_diagnostic_response_data);
+      if(_res != OK) {
+        return _res;
+      }
+
+      break;
+    }
+    case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request: {
+
+      break;
+    }
+    case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response: {
+
       // Simple Field (status)
-      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_diagnostic_request_status);
+      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_get_com_event_counter_response_status);
       if(_res != OK) {
         return _res;
       }
 
       // Simple Field (eventCount)
-      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_diagnostic_request_event_count);
+      _res = plc4c_spi_write_unsigned_short(io, 16, _message->modbus_pdu_get_com_event_counter_response_event_count);
       if(_res != OK) {
         return _res;
       }
@@ -2184,6 +2273,32 @@ uint16_t plc4c_modbus_read_write_modbus_pdu_length_in_bits(plc4c_modbus_read_wri
     }
     case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_request: {
 
+      // Simple field (subFunction)
+      lengthInBits += 16;
+
+
+      // Simple field (data)
+      lengthInBits += 16;
+
+      break;
+    }
+    case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_response: {
+
+      // Simple field (subFunction)
+      lengthInBits += 16;
+
+
+      // Simple field (data)
+      lengthInBits += 16;
+
+      break;
+    }
+    case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request: {
+
+      break;
+    }
+    case plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response: {
+
       // Simple field (status)
       lengthInBits += 16;
 
diff --git a/sandbox/plc4c/generated-sources/s7/src/data_item.c b/sandbox/plc4c/generated-sources/s7/src/data_item.c
index 68bd07c..ae82761 100644
--- a/sandbox/plc4c/generated-sources/s7/src/data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/data_item.c
@@ -190,16 +190,16 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* io,
                 *data_item = plc4c_data_create_double_data(value);
 
         } else 
-        if(dataProtocolId == 41) { /* String */
+        if(dataProtocolId == 41) { /* STRING */
         } else 
-        if(dataProtocolId == 42) { /* String */
+        if(dataProtocolId == 42) { /* STRING */
         } else 
-        if(dataProtocolId == 43) { /* String */
+        if(dataProtocolId == 43) { /* STRING */
 
                     // Manual Field (value)
                     char* value = (char*) (plc4c_s7_read_write_parse_s7_string(io, stringLength, "UTF-8"));
         } else 
-        if(dataProtocolId == 44) { /* String */
+        if(dataProtocolId == 44) { /* STRING */
 
                     // Manual Field (value)
                     char* value = (char*) (plc4c_s7_read_write_parse_s7_string(io, stringLength, "UTF-16"));
diff --git a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
index bddd4ff..4b3b0ab 100644
--- a/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
@@ -20,8 +20,8 @@ package drivers
 
 import (
 	"encoding/hex"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/bacnetip/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/bacnetip/readwrite/model"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 	"testing"
 )
 
diff --git a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
index a5b729f..beef415 100644
--- a/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
@@ -20,8 +20,8 @@ package drivers
 
 import (
 	"encoding/hex"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/knxnetip/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/knxnetip/readwrite/model"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 	"testing"
 )
 
diff --git a/sandbox/plc4go/cmd/main/drivers/modbus_test.go b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
index 830af7c..097c059 100644
--- a/sandbox/plc4go/cmd/main/drivers/modbus_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
@@ -19,18 +19,19 @@
 package drivers
 
 import (
-	"encoding/hex"
-	"encoding/json"
-	"fmt"
-	"net"
-	"os"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/modbus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/modbus/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/testutils"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/pkg/plc4go"
-	"strings"
-	"testing"
+    "encoding/hex"
+    "encoding/json"
+    "fmt"
+    "net"
+    "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/pkg/plc4go"
+    "strings"
+    "testing"
 )
 
 func TestModbus(t *testing.T) {
@@ -127,9 +128,10 @@ func Connection(t *testing.T) {
 func TestPlc4goDriver(t *testing.T) {
 	driverManager := plc4go.NewPlcDriverManager()
 	driverManager.RegisterDriver(modbus.NewModbusDriver())
+	driverManager.RegisterTransport(tcp.NewTcpTransport())
 
 	// Get a connection to a remote PLC
-	crc := driverManager.GetConnectedConnection("modbus:tcp://192.168.23.30")
+	crc := driverManager.GetConnection("modbus://192.168.23.30")
 
 	// Wait for the driver to connect (or not)
 	connectionResult := <-crc
diff --git a/sandbox/plc4go/cmd/main/drivers/s7_test.go b/sandbox/plc4go/cmd/main/drivers/s7_test.go
index 0129a58..7c2ae18 100644
--- a/sandbox/plc4go/cmd/main/drivers/s7_test.go
+++ b/sandbox/plc4go/cmd/main/drivers/s7_test.go
@@ -20,8 +20,8 @@ package drivers
 
 import (
 	"encoding/hex"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/s7/readwrite/model"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/s7/readwrite/model"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 	"testing"
 )
 
diff --git a/sandbox/plc4go/examples/read/hello_world_plc4go_read.go b/sandbox/plc4go/examples/read/hello_world_plc4go_read.go
index 6fb6e16..c371359 100644
--- a/sandbox/plc4go/examples/read/hello_world_plc4go_read.go
+++ b/sandbox/plc4go/examples/read/hello_world_plc4go_read.go
@@ -1,14 +1,32 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT 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 read
 
 import (
 	"encoding/json"
 	"fmt"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/pkg/plc4go"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go"
 )
 
 func main() int {
 	// Get a connection to a remote PLC
-	crc := plc4go.NewPlcDriverManager().GetConnectedConnection("modbus:tcp://192.168.23.30")
+	crc := plc4go.NewPlcDriverManager().GetConnection("modbus:tcp://192.168.23.30")
 
 	// Wait for the driver to connect (or not)
 	connectionResult := <-crc
@@ -23,7 +41,7 @@ func main() int {
 
 	// Prepare a read-request
 	rrb := connection.ReadRequestBuilder()
-	rrb.AddField("field", "holding-register:1:REAL[2]")
+	rrb.AddItem("field", "holding-register:1:REAL[2]")
 	readRequest, err := rrb.Build()
 	if err != nil {
 		_ = fmt.Errorf("error preparing read-request: %s", connectionResult.Err.Error())
diff --git a/sandbox/plc4go/examples/write/hello_world_plc4go_write.go b/sandbox/plc4go/examples/write/hello_world_plc4go_write.go
index 92166db..a570054 100644
--- a/sandbox/plc4go/examples/write/hello_world_plc4go_write.go
+++ b/sandbox/plc4go/examples/write/hello_world_plc4go_write.go
@@ -1,14 +1,32 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT 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 write
 
 import (
 	"encoding/json"
 	"fmt"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/pkg/plc4go"
+	"plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go"
 )
 
 func main() int {
 	// Get a connection to a remote PLC
-	crc := plc4go.NewPlcDriverManager().GetConnectedConnection("s7://192.168.23.30")
+	crc := plc4go.NewPlcDriverManager().GetConnection("s7://192.168.23.30")
 
 	// Wait for the driver to connect (or not)
 	connectionResult := <-crc
@@ -23,8 +41,8 @@ func main() int {
 
 	// Prepare a write-request
 	wrb := connection.WriteRequestBuilder()
-	wrb.AddField("output-field", "%Q0.0:BOOL", true)
-	wrb.AddField("input-field", "%I0.0:USINT", 42)
+	wrb.AddItem("output-field", "%Q0.0:BOOL", true)
+	wrb.AddItem("input-field", "%I0.0:USINT", 42)
 	writeRequest, err := wrb.Build()
 	if err != nil {
 		_ = fmt.Errorf("error preparing read-request: %s", connectionResult.Err.Error())
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/go.mod
index 56d5086..417cc48 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/go.mod
@@ -16,7 +16,7 @@
 // specific language governing permissions and limitations
 // under the License.
 //
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+module plc4x.apache.org/plc4go-modbus-driver/v0
 
 go 1.15
 
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go b/sandbox/plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go
index b58f726..9a76fe1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go
@@ -18,7 +18,7 @@
 //
 package bacnetip
 
-import "plc4x.apache.org/plc4go-modbus-driver/0.8.0/pkg/plc4go"
+import "plc4x.apache.org/plc4go-modbus-driver/v0/pkg/plc4go"
 
 func NewBacnetIpDriver() plc4go.PlcDriver {
 	return nil
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 4a4d507..4cc7b94 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -19,115 +19,120 @@
 package model
 
 import (
-	"errors"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type APDU struct {
+
 }
 
 // The corresponding interface
 type IAPDU interface {
-	spi.Message
-	ApduType() uint8
-	Serialize(io spi.WriteBuffer) error
+    spi.Message
+    ApduType() uint8
+    Serialize(io spi.WriteBuffer) error
 }
 
 type APDUInitializer interface {
-	initialize() spi.Message
+    initialize() spi.Message
 }
 
 func APDUApduType(m IAPDU) uint8 {
-	return m.ApduType()
+    return m.ApduType()
 }
 
+
 func CastIAPDU(structType interface{}) IAPDU {
-	castFunc := func(typ interface{}) IAPDU {
-		if iAPDU, ok := typ.(IAPDU); ok {
-			return iAPDU
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDU {
+        if iAPDU, ok := typ.(IAPDU); ok {
+            return iAPDU
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDU(structType interface{}) APDU {
-	castFunc := func(typ interface{}) APDU {
-		if sAPDU, ok := typ.(APDU); ok {
-			return sAPDU
-		}
-		return APDU{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDU {
+        if sAPDU, ok := typ.(APDU); ok {
+            return sAPDU
+        }
+        if sAPDU, ok := typ.(*APDU); ok {
+            return *sAPDU
+        }
+        return APDU{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDU) LengthInBits() uint16 {
-	var lengthInBits uint16 = 0
+    var lengthInBits uint16 = 0
 
-	// Discriminator Field (apduType)
-	lengthInBits += 4
+    // Discriminator Field (apduType)
+    lengthInBits += 4
 
-	// Length of sub-type elements will be added by sub-type...
+    // Length of sub-type elements will be added by sub-type...
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDU) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
 
-	// Discriminator Field (apduType) (Used as input to a switch field)
-	apduType, _apduTypeErr := io.ReadUint8(4)
-	if _apduTypeErr != nil {
-		return nil, errors.New("Error parsing 'apduType' field " + _apduTypeErr.Error())
-	}
-
-	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-	var initializer APDUInitializer
-	var typeSwitchError error
-	switch {
-	case apduType == 0x0:
-		initializer, typeSwitchError = APDUConfirmedRequestParse(io, apduLength)
-	case apduType == 0x1:
-		initializer, typeSwitchError = APDUUnconfirmedRequestParse(io, apduLength)
-	case apduType == 0x2:
-		initializer, typeSwitchError = APDUSimpleAckParse(io)
-	case apduType == 0x3:
-		initializer, typeSwitchError = APDUComplexAckParse(io)
-	case apduType == 0x4:
-		initializer, typeSwitchError = APDUSegmentAckParse(io)
-	case apduType == 0x5:
-		initializer, typeSwitchError = APDUErrorParse(io)
-	case apduType == 0x6:
-		initializer, typeSwitchError = APDURejectParse(io)
-	case apduType == 0x7:
-		initializer, typeSwitchError = APDUAbortParse(io)
-	}
-	if typeSwitchError != nil {
-		return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
-	}
-
-	// Create the instance
-	return initializer.initialize(), nil
+    // Discriminator Field (apduType) (Used as input to a switch field)
+    apduType, _apduTypeErr := io.ReadUint8(4)
+    if _apduTypeErr != nil {
+        return nil, errors.New("Error parsing 'apduType' field " + _apduTypeErr.Error())
+    }
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    var initializer APDUInitializer
+    var typeSwitchError error
+    switch {
+    case apduType == 0x0:
+        initializer, typeSwitchError = APDUConfirmedRequestParse(io, apduLength)
+    case apduType == 0x1:
+        initializer, typeSwitchError = APDUUnconfirmedRequestParse(io, apduLength)
+    case apduType == 0x2:
+        initializer, typeSwitchError = APDUSimpleAckParse(io)
+    case apduType == 0x3:
+        initializer, typeSwitchError = APDUComplexAckParse(io)
+    case apduType == 0x4:
+        initializer, typeSwitchError = APDUSegmentAckParse(io)
+    case apduType == 0x5:
+        initializer, typeSwitchError = APDUErrorParse(io)
+    case apduType == 0x6:
+        initializer, typeSwitchError = APDURejectParse(io)
+    case apduType == 0x7:
+        initializer, typeSwitchError = APDUAbortParse(io)
+    }
+    if typeSwitchError != nil {
+        return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+    }
+
+    // Create the instance
+    return initializer.initialize(), nil
 }
 
 func APDUSerialize(io spi.WriteBuffer, m APDU, i IAPDU, childSerialize func() error) error {
 
-	// Discriminator Field (apduType) (Used as input to a switch field)
-	apduType := uint8(i.ApduType())
-	_apduTypeErr := io.WriteUint8(4, apduType)
-	if _apduTypeErr != nil {
-		return errors.New("Error serializing 'apduType' field " + _apduTypeErr.Error())
-	}
+    // Discriminator Field (apduType) (Used as input to a switch field)
+    apduType := uint8(i.ApduType())
+    _apduTypeErr := io.WriteUint8(4, (apduType))
+    if _apduTypeErr != nil {
+        return errors.New("Error serializing 'apduType' field " + _apduTypeErr.Error())
+    }
 
-	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	_typeSwitchErr := childSerialize()
-	if _typeSwitchErr != nil {
-		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
-	}
+    // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+    _typeSwitchErr := childSerialize()
+    if _typeSwitchErr != nil {
+        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+    }
 
-	return nil
+    return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
index f2bfb1d..a210794 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -19,151 +19,154 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type APDUAbort struct {
-	Server           bool
-	OriginalInvokeId uint8
-	AbortReason      uint8
-	APDU
+    Server bool
+    OriginalInvokeId uint8
+    AbortReason uint8
+    APDU
 }
 
 // The corresponding interface
 type IAPDUAbort interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUAbort) ApduType() uint8 {
-	return 0x7
+    return 0x7
 }
 
 func (m APDUAbort) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUAbort(server bool, originalInvokeId uint8, abortReason uint8) APDUInitializer {
-	return &APDUAbort{Server: server, OriginalInvokeId: originalInvokeId, AbortReason: abortReason}
+    return &APDUAbort{Server: server, OriginalInvokeId: originalInvokeId, AbortReason: abortReason}
 }
 
 func CastIAPDUAbort(structType interface{}) IAPDUAbort {
-	castFunc := func(typ interface{}) IAPDUAbort {
-		if iAPDUAbort, ok := typ.(IAPDUAbort); ok {
-			return iAPDUAbort
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUAbort {
+        if iAPDUAbort, ok := typ.(IAPDUAbort); ok {
+            return iAPDUAbort
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUAbort(structType interface{}) APDUAbort {
-	castFunc := func(typ interface{}) APDUAbort {
-		if sAPDUAbort, ok := typ.(APDUAbort); ok {
-			return sAPDUAbort
-		}
-		return APDUAbort{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUAbort {
+        if sAPDUAbort, ok := typ.(APDUAbort); ok {
+            return sAPDUAbort
+        }
+        if sAPDUAbort, ok := typ.(*APDUAbort); ok {
+            return *sAPDUAbort
+        }
+        return APDUAbort{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUAbort) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Reserved Field (reserved)
-	lengthInBits += 3
+    // Reserved Field (reserved)
+    lengthInBits += 3
 
-	// Simple field (server)
-	lengthInBits += 1
+    // Simple field (server)
+    lengthInBits += 1
 
-	// Simple field (originalInvokeId)
-	lengthInBits += 8
+    // Simple field (originalInvokeId)
+    lengthInBits += 8
 
-	// Simple field (abortReason)
-	lengthInBits += 8
+    // Simple field (abortReason)
+    lengthInBits += 8
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUAbort) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUAbortParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(3)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0x00) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (server)
-	server, _serverErr := io.ReadBit()
-	if _serverErr != nil {
-		return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
-	}
-
-	// Simple Field (originalInvokeId)
-	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-	if _originalInvokeIdErr != nil {
-		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-	}
-
-	// Simple Field (abortReason)
-	abortReason, _abortReasonErr := io.ReadUint8(8)
-	if _abortReasonErr != nil {
-		return nil, errors.New("Error parsing 'abortReason' field " + _abortReasonErr.Error())
-	}
-
-	// Create the instance
-	return NewAPDUAbort(server, originalInvokeId, abortReason), nil
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(3)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0x00) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0x00),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (server)
+    server, _serverErr := io.ReadBit()
+    if _serverErr != nil {
+        return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+    if _originalInvokeIdErr != nil {
+        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (abortReason)
+    abortReason, _abortReasonErr := io.ReadUint8(8)
+    if _abortReasonErr != nil {
+        return nil, errors.New("Error parsing 'abortReason' field " + _abortReasonErr.Error())
+    }
+
+    // Create the instance
+    return NewAPDUAbort(server, originalInvokeId, abortReason), nil
 }
 
 func (m APDUAbort) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(3, uint8(0x00))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (server)
-		server := bool(m.Server)
-		_serverErr := io.WriteBit((bool)(server))
-		if _serverErr != nil {
-			return errors.New("Error serializing 'server' field " + _serverErr.Error())
-		}
-
-		// Simple Field (originalInvokeId)
-		originalInvokeId := uint8(m.OriginalInvokeId)
-		_originalInvokeIdErr := io.WriteUint8(8, originalInvokeId)
-		if _originalInvokeIdErr != nil {
-			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-		}
-
-		// Simple Field (abortReason)
-		abortReason := uint8(m.AbortReason)
-		_abortReasonErr := io.WriteUint8(8, abortReason)
-		if _abortReasonErr != nil {
-			return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(3, uint8(0x00))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (server)
+    server := bool(m.Server)
+    _serverErr := io.WriteBit((bool) (server))
+    if _serverErr != nil {
+        return errors.New("Error serializing 'server' field " + _serverErr.Error())
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId := uint8(m.OriginalInvokeId)
+    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+    if _originalInvokeIdErr != nil {
+        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (abortReason)
+    abortReason := uint8(m.AbortReason)
+    _abortReasonErr := io.WriteUint8(8, (abortReason))
+    if _abortReasonErr != nil {
+        return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
index caa0027..3e9d4c4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -19,228 +19,231 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"reflect"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "reflect"
 )
 
 // The data-structure of this message
 type APDUComplexAck struct {
-	SegmentedMessage   bool
-	MoreFollows        bool
-	OriginalInvokeId   uint8
-	SequenceNumber     *uint8
-	ProposedWindowSize *uint8
-	ServiceAck         IBACnetServiceAck
-	APDU
+    SegmentedMessage bool
+    MoreFollows bool
+    OriginalInvokeId uint8
+    SequenceNumber *uint8
+    ProposedWindowSize *uint8
+    ServiceAck IBACnetServiceAck
+    APDU
 }
 
 // The corresponding interface
 type IAPDUComplexAck interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUComplexAck) ApduType() uint8 {
-	return 0x3
+    return 0x3
 }
 
 func (m APDUComplexAck) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUComplexAck(segmentedMessage bool, moreFollows bool, originalInvokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceAck IBACnetServiceAck) APDUInitializer {
-	return &APDUComplexAck{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceAck: serviceAck}
+    return &APDUComplexAck{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceAck: serviceAck}
 }
 
 func CastIAPDUComplexAck(structType interface{}) IAPDUComplexAck {
-	castFunc := func(typ interface{}) IAPDUComplexAck {
-		if iAPDUComplexAck, ok := typ.(IAPDUComplexAck); ok {
-			return iAPDUComplexAck
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUComplexAck {
+        if iAPDUComplexAck, ok := typ.(IAPDUComplexAck); ok {
+            return iAPDUComplexAck
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUComplexAck(structType interface{}) APDUComplexAck {
-	castFunc := func(typ interface{}) APDUComplexAck {
-		if sAPDUComplexAck, ok := typ.(APDUComplexAck); ok {
-			return sAPDUComplexAck
-		}
-		return APDUComplexAck{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUComplexAck {
+        if sAPDUComplexAck, ok := typ.(APDUComplexAck); ok {
+            return sAPDUComplexAck
+        }
+        if sAPDUComplexAck, ok := typ.(*APDUComplexAck); ok {
+            return *sAPDUComplexAck
+        }
+        return APDUComplexAck{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUComplexAck) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Simple field (segmentedMessage)
-	lengthInBits += 1
+    // Simple field (segmentedMessage)
+    lengthInBits += 1
 
-	// Simple field (moreFollows)
-	lengthInBits += 1
+    // Simple field (moreFollows)
+    lengthInBits += 1
 
-	// Reserved Field (reserved)
-	lengthInBits += 2
+    // Reserved Field (reserved)
+    lengthInBits += 2
 
-	// Simple field (originalInvokeId)
-	lengthInBits += 8
+    // Simple field (originalInvokeId)
+    lengthInBits += 8
 
-	// Optional Field (sequenceNumber)
-	if m.SequenceNumber != nil {
-		lengthInBits += 8
-	}
+    // Optional Field (sequenceNumber)
+    if m.SequenceNumber != nil {
+        lengthInBits += 8
+    }
 
-	// Optional Field (proposedWindowSize)
-	if m.ProposedWindowSize != nil {
-		lengthInBits += 8
-	}
+    // Optional Field (proposedWindowSize)
+    if m.ProposedWindowSize != nil {
+        lengthInBits += 8
+    }
 
-	// Simple field (serviceAck)
-	lengthInBits += m.ServiceAck.LengthInBits()
+    // Simple field (serviceAck)
+    lengthInBits += m.ServiceAck.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUComplexAck) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUComplexAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 
-	// Simple Field (segmentedMessage)
-	segmentedMessage, _segmentedMessageErr := io.ReadBit()
-	if _segmentedMessageErr != nil {
-		return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-	}
-
-	// Simple Field (moreFollows)
-	moreFollows, _moreFollowsErr := io.ReadBit()
-	if _moreFollowsErr != nil {
-		return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
-	}
-
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(2)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (originalInvokeId)
-	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-	if _originalInvokeIdErr != nil {
-		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-	}
-
-	// Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
-	var sequenceNumber *uint8 = nil
-	if segmentedMessage {
-		_val, _err := io.ReadUint8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
-		}
-
-		sequenceNumber = &_val
-	}
-
-	// Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
-	var proposedWindowSize *uint8 = nil
-	if segmentedMessage {
-		_val, _err := io.ReadUint8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
-		}
-
-		proposedWindowSize = &_val
-	}
-
-	// Simple Field (serviceAck)
-	_serviceAckMessage, _err := BACnetServiceAckParse(io)
-	if _err != nil {
-		return nil, errors.New("Error parsing simple field 'serviceAck'. " + _err.Error())
-	}
-	var serviceAck IBACnetServiceAck
-	serviceAck, _serviceAckOk := _serviceAckMessage.(IBACnetServiceAck)
-	if !_serviceAckOk {
-		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceAckMessage).Name() + " to IBACnetServiceAck")
-	}
-
-	// Create the instance
-	return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
+    // Simple Field (segmentedMessage)
+    segmentedMessage, _segmentedMessageErr := io.ReadBit()
+    if _segmentedMessageErr != nil {
+        return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+    }
+
+    // Simple Field (moreFollows)
+    moreFollows, _moreFollowsErr := io.ReadBit()
+    if _moreFollowsErr != nil {
+        return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
+    }
+
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(2)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+    if _originalInvokeIdErr != nil {
+        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
+    var sequenceNumber *uint8 = nil
+    if segmentedMessage {
+        _val, _err := io.ReadUint8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
+        }
+
+        sequenceNumber = &_val
+    }
+
+    // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
+    var proposedWindowSize *uint8 = nil
+    if segmentedMessage {
+        _val, _err := io.ReadUint8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
+        }
+
+        proposedWindowSize = &_val
+    }
+
+    // Simple Field (serviceAck)
+    _serviceAckMessage, _err := BACnetServiceAckParse(io)
+    if _err != nil {
+        return nil, errors.New("Error parsing simple field 'serviceAck'. " + _err.Error())
+    }
+    var serviceAck IBACnetServiceAck
+    serviceAck, _serviceAckOk := _serviceAckMessage.(IBACnetServiceAck)
+    if !_serviceAckOk {
+        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceAckMessage).Name() + " to IBACnetServiceAck")
+    }
+
+    // Create the instance
+    return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
 }
 
 func (m APDUComplexAck) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Simple Field (segmentedMessage)
-		segmentedMessage := bool(m.SegmentedMessage)
-		_segmentedMessageErr := io.WriteBit((bool)(segmentedMessage))
-		if _segmentedMessageErr != nil {
-			return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-		}
-
-		// Simple Field (moreFollows)
-		moreFollows := bool(m.MoreFollows)
-		_moreFollowsErr := io.WriteBit((bool)(moreFollows))
-		if _moreFollowsErr != nil {
-			return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
-		}
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(2, uint8(0))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (originalInvokeId)
-		originalInvokeId := uint8(m.OriginalInvokeId)
-		_originalInvokeIdErr := io.WriteUint8(8, originalInvokeId)
-		if _originalInvokeIdErr != nil {
-			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-		}
-
-		// Optional Field (sequenceNumber) (Can be skipped, if the value is null)
-		var sequenceNumber *uint8 = nil
-		if m.SequenceNumber != nil {
-			sequenceNumber = m.SequenceNumber
-			_sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
-			if _sequenceNumberErr != nil {
-				return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-			}
-		}
-
-		// Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
-		var proposedWindowSize *uint8 = nil
-		if m.ProposedWindowSize != nil {
-			proposedWindowSize = m.ProposedWindowSize
-			_proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
-			if _proposedWindowSizeErr != nil {
-				return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-			}
-		}
-
-		// Simple Field (serviceAck)
-		serviceAck := CastIBACnetServiceAck(m.ServiceAck)
-		_serviceAckErr := serviceAck.Serialize(io)
-		if _serviceAckErr != nil {
-			return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Simple Field (segmentedMessage)
+    segmentedMessage := bool(m.SegmentedMessage)
+    _segmentedMessageErr := io.WriteBit((bool) (segmentedMessage))
+    if _segmentedMessageErr != nil {
+        return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+    }
+
+    // Simple Field (moreFollows)
+    moreFollows := bool(m.MoreFollows)
+    _moreFollowsErr := io.WriteBit((bool) (moreFollows))
+    if _moreFollowsErr != nil {
+        return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+    }
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(2, uint8(0))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId := uint8(m.OriginalInvokeId)
+    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+    if _originalInvokeIdErr != nil {
+        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
+    var sequenceNumber *uint8 = nil
+    if m.SequenceNumber != nil {
+        sequenceNumber = m.SequenceNumber
+        _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
+        if _sequenceNumberErr != nil {
+            return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+        }
+    }
+
+    // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
+    var proposedWindowSize *uint8 = nil
+    if m.ProposedWindowSize != nil {
+        proposedWindowSize = m.ProposedWindowSize
+        _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
+        if _proposedWindowSizeErr != nil {
+            return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+        }
+    }
+
+    // Simple Field (serviceAck)
+    serviceAck := CastIBACnetServiceAck(m.ServiceAck)
+    _serviceAckErr := serviceAck.Serialize(io)
+    if _serviceAckErr != nil {
+        return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
index c2b0e04..824a786 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -19,279 +19,282 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"reflect"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "reflect"
 )
 
 // The data-structure of this message
 type APDUConfirmedRequest struct {
-	SegmentedMessage          bool
-	MoreFollows               bool
-	SegmentedResponseAccepted bool
-	MaxSegmentsAccepted       uint8
-	MaxApduLengthAccepted     uint8
-	InvokeId                  uint8
-	SequenceNumber            *uint8
-	ProposedWindowSize        *uint8
-	ServiceRequest            IBACnetConfirmedServiceRequest
-	APDU
+    SegmentedMessage bool
+    MoreFollows bool
+    SegmentedResponseAccepted bool
+    MaxSegmentsAccepted uint8
+    MaxApduLengthAccepted uint8
+    InvokeId uint8
+    SequenceNumber *uint8
+    ProposedWindowSize *uint8
+    ServiceRequest IBACnetConfirmedServiceRequest
+    APDU
 }
 
 // The corresponding interface
 type IAPDUConfirmedRequest interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUConfirmedRequest) ApduType() uint8 {
-	return 0x0
+    return 0x0
 }
 
 func (m APDUConfirmedRequest) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUConfirmedRequest(segmentedMessage bool, moreFollows bool, segmentedResponseAccepted bool, maxSegmentsAccepted uint8, maxApduLengthAccepted uint8, invokeId uint8, sequenceNumber *uint8, proposedWindowSize *uint8, serviceRequest IBACnetConfirmedServiceRequest) APDUInitializer {
-	return &APDUConfirmedRequest{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, SegmentedResponseAccepted: segmentedResponseAccepted, MaxSegmentsAccepted: maxSegmentsAccepted, MaxApduLengthAccepted: maxApduLengthAccepted, InvokeId: invokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceRequest: serviceRequest}
+    return &APDUConfirmedRequest{SegmentedMessage: segmentedMessage, MoreFollows: moreFollows, SegmentedResponseAccepted: segmentedResponseAccepted, MaxSegmentsAccepted: maxSegmentsAccepted, MaxApduLengthAccepted: maxApduLengthAccepted, InvokeId: invokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize, ServiceRequest: serviceRequest}
 }
 
 func CastIAPDUConfirmedRequest(structType interface{}) IAPDUConfirmedRequest {
-	castFunc := func(typ interface{}) IAPDUConfirmedRequest {
-		if iAPDUConfirmedRequest, ok := typ.(IAPDUConfirmedRequest); ok {
-			return iAPDUConfirmedRequest
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUConfirmedRequest {
+        if iAPDUConfirmedRequest, ok := typ.(IAPDUConfirmedRequest); ok {
+            return iAPDUConfirmedRequest
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUConfirmedRequest(structType interface{}) APDUConfirmedRequest {
-	castFunc := func(typ interface{}) APDUConfirmedRequest {
-		if sAPDUConfirmedRequest, ok := typ.(APDUConfirmedRequest); ok {
-			return sAPDUConfirmedRequest
-		}
-		return APDUConfirmedRequest{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUConfirmedRequest {
+        if sAPDUConfirmedRequest, ok := typ.(APDUConfirmedRequest); ok {
+            return sAPDUConfirmedRequest
+        }
+        if sAPDUConfirmedRequest, ok := typ.(*APDUConfirmedRequest); ok {
+            return *sAPDUConfirmedRequest
+        }
+        return APDUConfirmedRequest{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUConfirmedRequest) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Simple field (segmentedMessage)
-	lengthInBits += 1
+    // Simple field (segmentedMessage)
+    lengthInBits += 1
 
-	// Simple field (moreFollows)
-	lengthInBits += 1
+    // Simple field (moreFollows)
+    lengthInBits += 1
 
-	// Simple field (segmentedResponseAccepted)
-	lengthInBits += 1
+    // Simple field (segmentedResponseAccepted)
+    lengthInBits += 1
 
-	// Reserved Field (reserved)
-	lengthInBits += 2
+    // Reserved Field (reserved)
+    lengthInBits += 2
 
-	// Simple field (maxSegmentsAccepted)
-	lengthInBits += 3
+    // Simple field (maxSegmentsAccepted)
+    lengthInBits += 3
 
-	// Simple field (maxApduLengthAccepted)
-	lengthInBits += 4
+    // Simple field (maxApduLengthAccepted)
+    lengthInBits += 4
 
-	// Simple field (invokeId)
-	lengthInBits += 8
+    // Simple field (invokeId)
+    lengthInBits += 8
 
-	// Optional Field (sequenceNumber)
-	if m.SequenceNumber != nil {
-		lengthInBits += 8
-	}
+    // Optional Field (sequenceNumber)
+    if m.SequenceNumber != nil {
+        lengthInBits += 8
+    }
 
-	// Optional Field (proposedWindowSize)
-	if m.ProposedWindowSize != nil {
-		lengthInBits += 8
-	}
+    // Optional Field (proposedWindowSize)
+    if m.ProposedWindowSize != nil {
+        lengthInBits += 8
+    }
 
-	// Simple field (serviceRequest)
-	lengthInBits += m.ServiceRequest.LengthInBits()
+    // Simple field (serviceRequest)
+    lengthInBits += m.ServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUConfirmedRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUConfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
 
-	// Simple Field (segmentedMessage)
-	segmentedMessage, _segmentedMessageErr := io.ReadBit()
-	if _segmentedMessageErr != nil {
-		return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-	}
-
-	// Simple Field (moreFollows)
-	moreFollows, _moreFollowsErr := io.ReadBit()
-	if _moreFollowsErr != nil {
-		return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
-	}
-
-	// Simple Field (segmentedResponseAccepted)
-	segmentedResponseAccepted, _segmentedResponseAcceptedErr := io.ReadBit()
-	if _segmentedResponseAcceptedErr != nil {
-		return nil, errors.New("Error parsing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
-	}
-
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(2)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (maxSegmentsAccepted)
-	maxSegmentsAccepted, _maxSegmentsAcceptedErr := io.ReadUint8(3)
-	if _maxSegmentsAcceptedErr != nil {
-		return nil, errors.New("Error parsing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
-	}
-
-	// Simple Field (maxApduLengthAccepted)
-	maxApduLengthAccepted, _maxApduLengthAcceptedErr := io.ReadUint8(4)
-	if _maxApduLengthAcceptedErr != nil {
-		return nil, errors.New("Error parsing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
-	}
-
-	// Simple Field (invokeId)
-	invokeId, _invokeIdErr := io.ReadUint8(8)
-	if _invokeIdErr != nil {
-		return nil, errors.New("Error parsing 'invokeId' field " + _invokeIdErr.Error())
-	}
-
-	// Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
-	var sequenceNumber *uint8 = nil
-	if segmentedMessage {
-		_val, _err := io.ReadUint8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
-		}
-
-		sequenceNumber = &_val
-	}
-
-	// Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
-	var proposedWindowSize *uint8 = nil
-	if segmentedMessage {
-		_val, _err := io.ReadUint8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
-		}
-
-		proposedWindowSize = &_val
-	}
-
-	// 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))))))))
-	if _err != nil {
-		return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
-	}
-	var serviceRequest IBACnetConfirmedServiceRequest
-	serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetConfirmedServiceRequest)
-	if !_serviceRequestOk {
-		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetConfirmedServiceRequest")
-	}
-
-	// Create the instance
-	return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
+    // Simple Field (segmentedMessage)
+    segmentedMessage, _segmentedMessageErr := io.ReadBit()
+    if _segmentedMessageErr != nil {
+        return nil, errors.New("Error parsing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+    }
+
+    // Simple Field (moreFollows)
+    moreFollows, _moreFollowsErr := io.ReadBit()
+    if _moreFollowsErr != nil {
+        return nil, errors.New("Error parsing 'moreFollows' field " + _moreFollowsErr.Error())
+    }
+
+    // Simple Field (segmentedResponseAccepted)
+    segmentedResponseAccepted, _segmentedResponseAcceptedErr := io.ReadBit()
+    if _segmentedResponseAcceptedErr != nil {
+        return nil, errors.New("Error parsing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+    }
+
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(2)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (maxSegmentsAccepted)
+    maxSegmentsAccepted, _maxSegmentsAcceptedErr := io.ReadUint8(3)
+    if _maxSegmentsAcceptedErr != nil {
+        return nil, errors.New("Error parsing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
+    }
+
+    // Simple Field (maxApduLengthAccepted)
+    maxApduLengthAccepted, _maxApduLengthAcceptedErr := io.ReadUint8(4)
+    if _maxApduLengthAcceptedErr != nil {
+        return nil, errors.New("Error parsing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
+    }
+
+    // Simple Field (invokeId)
+    invokeId, _invokeIdErr := io.ReadUint8(8)
+    if _invokeIdErr != nil {
+        return nil, errors.New("Error parsing 'invokeId' field " + _invokeIdErr.Error())
+    }
+
+    // Optional Field (sequenceNumber) (Can be skipped, if a given expression evaluates to false)
+    var sequenceNumber *uint8 = nil
+    if segmentedMessage {
+        _val, _err := io.ReadUint8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'sequenceNumber' field " + _err.Error())
+        }
+
+        sequenceNumber = &_val
+    }
+
+    // Optional Field (proposedWindowSize) (Can be skipped, if a given expression evaluates to false)
+    var proposedWindowSize *uint8 = nil
+    if segmentedMessage {
+        _val, _err := io.ReadUint8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'proposedWindowSize' field " + _err.Error())
+        }
+
+        proposedWindowSize = &_val
+    }
+
+    // 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))))))))
+    if _err != nil {
+        return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
+    }
+    var serviceRequest IBACnetConfirmedServiceRequest
+    serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetConfirmedServiceRequest)
+    if !_serviceRequestOk {
+        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetConfirmedServiceRequest")
+    }
+
+    // Create the instance
+    return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
 }
 
 func (m APDUConfirmedRequest) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Simple Field (segmentedMessage)
-		segmentedMessage := bool(m.SegmentedMessage)
-		_segmentedMessageErr := io.WriteBit((bool)(segmentedMessage))
-		if _segmentedMessageErr != nil {
-			return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
-		}
-
-		// Simple Field (moreFollows)
-		moreFollows := bool(m.MoreFollows)
-		_moreFollowsErr := io.WriteBit((bool)(moreFollows))
-		if _moreFollowsErr != nil {
-			return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
-		}
-
-		// Simple Field (segmentedResponseAccepted)
-		segmentedResponseAccepted := bool(m.SegmentedResponseAccepted)
-		_segmentedResponseAcceptedErr := io.WriteBit((bool)(segmentedResponseAccepted))
-		if _segmentedResponseAcceptedErr != nil {
-			return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
-		}
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(2, uint8(0))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (maxSegmentsAccepted)
-		maxSegmentsAccepted := uint8(m.MaxSegmentsAccepted)
-		_maxSegmentsAcceptedErr := io.WriteUint8(3, maxSegmentsAccepted)
-		if _maxSegmentsAcceptedErr != nil {
-			return errors.New("Error serializing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
-		}
-
-		// Simple Field (maxApduLengthAccepted)
-		maxApduLengthAccepted := uint8(m.MaxApduLengthAccepted)
-		_maxApduLengthAcceptedErr := io.WriteUint8(4, maxApduLengthAccepted)
-		if _maxApduLengthAcceptedErr != nil {
-			return errors.New("Error serializing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
-		}
-
-		// Simple Field (invokeId)
-		invokeId := uint8(m.InvokeId)
-		_invokeIdErr := io.WriteUint8(8, invokeId)
-		if _invokeIdErr != nil {
-			return errors.New("Error serializing 'invokeId' field " + _invokeIdErr.Error())
-		}
-
-		// Optional Field (sequenceNumber) (Can be skipped, if the value is null)
-		var sequenceNumber *uint8 = nil
-		if m.SequenceNumber != nil {
-			sequenceNumber = m.SequenceNumber
-			_sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
-			if _sequenceNumberErr != nil {
-				return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-			}
-		}
-
-		// Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
-		var proposedWindowSize *uint8 = nil
-		if m.ProposedWindowSize != nil {
-			proposedWindowSize = m.ProposedWindowSize
-			_proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
-			if _proposedWindowSizeErr != nil {
-				return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-			}
-		}
-
-		// Simple Field (serviceRequest)
-		serviceRequest := CastIBACnetConfirmedServiceRequest(m.ServiceRequest)
-		_serviceRequestErr := serviceRequest.Serialize(io)
-		if _serviceRequestErr != nil {
-			return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Simple Field (segmentedMessage)
+    segmentedMessage := bool(m.SegmentedMessage)
+    _segmentedMessageErr := io.WriteBit((bool) (segmentedMessage))
+    if _segmentedMessageErr != nil {
+        return errors.New("Error serializing 'segmentedMessage' field " + _segmentedMessageErr.Error())
+    }
+
+    // Simple Field (moreFollows)
+    moreFollows := bool(m.MoreFollows)
+    _moreFollowsErr := io.WriteBit((bool) (moreFollows))
+    if _moreFollowsErr != nil {
+        return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+    }
+
+    // Simple Field (segmentedResponseAccepted)
+    segmentedResponseAccepted := bool(m.SegmentedResponseAccepted)
+    _segmentedResponseAcceptedErr := io.WriteBit((bool) (segmentedResponseAccepted))
+    if _segmentedResponseAcceptedErr != nil {
+        return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+    }
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(2, uint8(0))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (maxSegmentsAccepted)
+    maxSegmentsAccepted := uint8(m.MaxSegmentsAccepted)
+    _maxSegmentsAcceptedErr := io.WriteUint8(3, (maxSegmentsAccepted))
+    if _maxSegmentsAcceptedErr != nil {
+        return errors.New("Error serializing 'maxSegmentsAccepted' field " + _maxSegmentsAcceptedErr.Error())
+    }
+
+    // Simple Field (maxApduLengthAccepted)
+    maxApduLengthAccepted := uint8(m.MaxApduLengthAccepted)
+    _maxApduLengthAcceptedErr := io.WriteUint8(4, (maxApduLengthAccepted))
+    if _maxApduLengthAcceptedErr != nil {
+        return errors.New("Error serializing 'maxApduLengthAccepted' field " + _maxApduLengthAcceptedErr.Error())
+    }
+
+    // Simple Field (invokeId)
+    invokeId := uint8(m.InvokeId)
+    _invokeIdErr := io.WriteUint8(8, (invokeId))
+    if _invokeIdErr != nil {
+        return errors.New("Error serializing 'invokeId' field " + _invokeIdErr.Error())
+    }
+
+    // Optional Field (sequenceNumber) (Can be skipped, if the value is null)
+    var sequenceNumber *uint8 = nil
+    if m.SequenceNumber != nil {
+        sequenceNumber = m.SequenceNumber
+        _sequenceNumberErr := io.WriteUint8(8, *(sequenceNumber))
+        if _sequenceNumberErr != nil {
+            return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+        }
+    }
+
+    // Optional Field (proposedWindowSize) (Can be skipped, if the value is null)
+    var proposedWindowSize *uint8 = nil
+    if m.ProposedWindowSize != nil {
+        proposedWindowSize = m.ProposedWindowSize
+        _proposedWindowSizeErr := io.WriteUint8(8, *(proposedWindowSize))
+        if _proposedWindowSizeErr != nil {
+            return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+        }
+    }
+
+    // Simple Field (serviceRequest)
+    serviceRequest := CastIBACnetConfirmedServiceRequest(m.ServiceRequest)
+    _serviceRequestErr := serviceRequest.Serialize(io)
+    if _serviceRequestErr != nil {
+        return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
index 806c480..e35cf4d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
@@ -19,140 +19,143 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"reflect"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "reflect"
 )
 
 // The data-structure of this message
 type APDUError struct {
-	OriginalInvokeId uint8
-	Error            IBACnetError
-	APDU
+    OriginalInvokeId uint8
+    Error IBACnetError
+    APDU
 }
 
 // The corresponding interface
 type IAPDUError interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUError) ApduType() uint8 {
-	return 0x5
+    return 0x5
 }
 
 func (m APDUError) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUError(originalInvokeId uint8, error IBACnetError) APDUInitializer {
-	return &APDUError{OriginalInvokeId: originalInvokeId, Error: error}
+    return &APDUError{OriginalInvokeId: originalInvokeId, Error: error}
 }
 
 func CastIAPDUError(structType interface{}) IAPDUError {
-	castFunc := func(typ interface{}) IAPDUError {
-		if iAPDUError, ok := typ.(IAPDUError); ok {
-			return iAPDUError
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUError {
+        if iAPDUError, ok := typ.(IAPDUError); ok {
+            return iAPDUError
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUError(structType interface{}) APDUError {
-	castFunc := func(typ interface{}) APDUError {
-		if sAPDUError, ok := typ.(APDUError); ok {
-			return sAPDUError
-		}
-		return APDUError{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUError {
+        if sAPDUError, ok := typ.(APDUError); ok {
+            return sAPDUError
+        }
+        if sAPDUError, ok := typ.(*APDUError); ok {
+            return *sAPDUError
+        }
+        return APDUError{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUError) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Reserved Field (reserved)
-	lengthInBits += 4
+    // Reserved Field (reserved)
+    lengthInBits += 4
 
-	// Simple field (originalInvokeId)
-	lengthInBits += 8
+    // Simple field (originalInvokeId)
+    lengthInBits += 8
 
-	// Simple field (error)
-	lengthInBits += m.Error.LengthInBits()
+    // Simple field (error)
+    lengthInBits += m.Error.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUError) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUErrorParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(4)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0x00) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (originalInvokeId)
-	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-	if _originalInvokeIdErr != nil {
-		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-	}
-
-	// Simple Field (error)
-	_errorMessage, _err := BACnetErrorParse(io)
-	if _err != nil {
-		return nil, errors.New("Error parsing simple field 'error'. " + _err.Error())
-	}
-	var error IBACnetError
-	error, _errorOk := _errorMessage.(IBACnetError)
-	if !_errorOk {
-		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_errorMessage).Name() + " to IBACnetError")
-	}
-
-	// Create the instance
-	return NewAPDUError(originalInvokeId, error), nil
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(4)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0x00) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0x00),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+    if _originalInvokeIdErr != nil {
+        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (error)
+    _errorMessage, _err := BACnetErrorParse(io)
+    if _err != nil {
+        return nil, errors.New("Error parsing simple field 'error'. " + _err.Error())
+    }
+    var error IBACnetError
+    error, _errorOk := _errorMessage.(IBACnetError)
+    if !_errorOk {
+        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_errorMessage).Name() + " to IBACnetError")
+    }
+
+    // Create the instance
+    return NewAPDUError(originalInvokeId, error), nil
 }
 
 func (m APDUError) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(4, uint8(0x00))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (originalInvokeId)
-		originalInvokeId := uint8(m.OriginalInvokeId)
-		_originalInvokeIdErr := io.WriteUint8(8, originalInvokeId)
-		if _originalInvokeIdErr != nil {
-			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-		}
-
-		// Simple Field (error)
-		error := CastIBACnetError(m.Error)
-		_errorErr := error.Serialize(io)
-		if _errorErr != nil {
-			return errors.New("Error serializing 'error' field " + _errorErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(4, uint8(0x00))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId := uint8(m.OriginalInvokeId)
+    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+    if _originalInvokeIdErr != nil {
+        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (error)
+    error := CastIBACnetError(m.Error)
+    _errorErr := error.Serialize(io)
+    if _errorErr != nil {
+        return errors.New("Error serializing 'error' field " + _errorErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
index 8b8d6f0..a3858e1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
@@ -19,134 +19,137 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type APDUReject struct {
-	OriginalInvokeId uint8
-	RejectReason     uint8
-	APDU
+    OriginalInvokeId uint8
+    RejectReason uint8
+    APDU
 }
 
 // The corresponding interface
 type IAPDUReject interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUReject) ApduType() uint8 {
-	return 0x6
+    return 0x6
 }
 
 func (m APDUReject) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUReject(originalInvokeId uint8, rejectReason uint8) APDUInitializer {
-	return &APDUReject{OriginalInvokeId: originalInvokeId, RejectReason: rejectReason}
+    return &APDUReject{OriginalInvokeId: originalInvokeId, RejectReason: rejectReason}
 }
 
 func CastIAPDUReject(structType interface{}) IAPDUReject {
-	castFunc := func(typ interface{}) IAPDUReject {
-		if iAPDUReject, ok := typ.(IAPDUReject); ok {
-			return iAPDUReject
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUReject {
+        if iAPDUReject, ok := typ.(IAPDUReject); ok {
+            return iAPDUReject
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUReject(structType interface{}) APDUReject {
-	castFunc := func(typ interface{}) APDUReject {
-		if sAPDUReject, ok := typ.(APDUReject); ok {
-			return sAPDUReject
-		}
-		return APDUReject{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUReject {
+        if sAPDUReject, ok := typ.(APDUReject); ok {
+            return sAPDUReject
+        }
+        if sAPDUReject, ok := typ.(*APDUReject); ok {
+            return *sAPDUReject
+        }
+        return APDUReject{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUReject) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Reserved Field (reserved)
-	lengthInBits += 4
+    // Reserved Field (reserved)
+    lengthInBits += 4
 
-	// Simple field (originalInvokeId)
-	lengthInBits += 8
+    // Simple field (originalInvokeId)
+    lengthInBits += 8
 
-	// Simple field (rejectReason)
-	lengthInBits += 8
+    // Simple field (rejectReason)
+    lengthInBits += 8
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUReject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDURejectParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(4)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0x00) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (originalInvokeId)
-	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-	if _originalInvokeIdErr != nil {
-		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-	}
-
-	// Simple Field (rejectReason)
-	rejectReason, _rejectReasonErr := io.ReadUint8(8)
-	if _rejectReasonErr != nil {
-		return nil, errors.New("Error parsing 'rejectReason' field " + _rejectReasonErr.Error())
-	}
-
-	// Create the instance
-	return NewAPDUReject(originalInvokeId, rejectReason), nil
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(4)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0x00) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0x00),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+    if _originalInvokeIdErr != nil {
+        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (rejectReason)
+    rejectReason, _rejectReasonErr := io.ReadUint8(8)
+    if _rejectReasonErr != nil {
+        return nil, errors.New("Error parsing 'rejectReason' field " + _rejectReasonErr.Error())
+    }
+
+    // Create the instance
+    return NewAPDUReject(originalInvokeId, rejectReason), nil
 }
 
 func (m APDUReject) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(4, uint8(0x00))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (originalInvokeId)
-		originalInvokeId := uint8(m.OriginalInvokeId)
-		_originalInvokeIdErr := io.WriteUint8(8, originalInvokeId)
-		if _originalInvokeIdErr != nil {
-			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-		}
-
-		// Simple Field (rejectReason)
-		rejectReason := uint8(m.RejectReason)
-		_rejectReasonErr := io.WriteUint8(8, rejectReason)
-		if _rejectReasonErr != nil {
-			return errors.New("Error serializing 'rejectReason' field " + _rejectReasonErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(4, uint8(0x00))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId := uint8(m.OriginalInvokeId)
+    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+    if _originalInvokeIdErr != nil {
+        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (rejectReason)
+    rejectReason := uint8(m.RejectReason)
+    _rejectReasonErr := io.WriteUint8(8, (rejectReason))
+    if _rejectReasonErr != nil {
+        return errors.New("Error serializing 'rejectReason' field " + _rejectReasonErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
index 5650873..0fe5e7f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -19,185 +19,188 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type APDUSegmentAck struct {
-	NegativeAck        bool
-	Server             bool
-	OriginalInvokeId   uint8
-	SequenceNumber     uint8
-	ProposedWindowSize uint8
-	APDU
+    NegativeAck bool
+    Server bool
+    OriginalInvokeId uint8
+    SequenceNumber uint8
+    ProposedWindowSize uint8
+    APDU
 }
 
 // The corresponding interface
 type IAPDUSegmentAck interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUSegmentAck) ApduType() uint8 {
-	return 0x4
+    return 0x4
 }
 
 func (m APDUSegmentAck) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUSegmentAck(negativeAck bool, server bool, originalInvokeId uint8, sequenceNumber uint8, proposedWindowSize uint8) APDUInitializer {
-	return &APDUSegmentAck{NegativeAck: negativeAck, Server: server, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize}
+    return &APDUSegmentAck{NegativeAck: negativeAck, Server: server, OriginalInvokeId: originalInvokeId, SequenceNumber: sequenceNumber, ProposedWindowSize: proposedWindowSize}
 }
 
 func CastIAPDUSegmentAck(structType interface{}) IAPDUSegmentAck {
-	castFunc := func(typ interface{}) IAPDUSegmentAck {
-		if iAPDUSegmentAck, ok := typ.(IAPDUSegmentAck); ok {
-			return iAPDUSegmentAck
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUSegmentAck {
+        if iAPDUSegmentAck, ok := typ.(IAPDUSegmentAck); ok {
+            return iAPDUSegmentAck
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUSegmentAck(structType interface{}) APDUSegmentAck {
-	castFunc := func(typ interface{}) APDUSegmentAck {
-		if sAPDUSegmentAck, ok := typ.(APDUSegmentAck); ok {
-			return sAPDUSegmentAck
-		}
-		return APDUSegmentAck{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUSegmentAck {
+        if sAPDUSegmentAck, ok := typ.(APDUSegmentAck); ok {
+            return sAPDUSegmentAck
+        }
+        if sAPDUSegmentAck, ok := typ.(*APDUSegmentAck); ok {
+            return *sAPDUSegmentAck
+        }
+        return APDUSegmentAck{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUSegmentAck) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Reserved Field (reserved)
-	lengthInBits += 2
+    // Reserved Field (reserved)
+    lengthInBits += 2
 
-	// Simple field (negativeAck)
-	lengthInBits += 1
+    // Simple field (negativeAck)
+    lengthInBits += 1
 
-	// Simple field (server)
-	lengthInBits += 1
+    // Simple field (server)
+    lengthInBits += 1
 
-	// Simple field (originalInvokeId)
-	lengthInBits += 8
+    // Simple field (originalInvokeId)
+    lengthInBits += 8
 
-	// Simple field (sequenceNumber)
-	lengthInBits += 8
+    // Simple field (sequenceNumber)
+    lengthInBits += 8
 
-	// Simple field (proposedWindowSize)
-	lengthInBits += 8
+    // Simple field (proposedWindowSize)
+    lengthInBits += 8
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUSegmentAck) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUSegmentAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(2)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0x00) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0x00),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (negativeAck)
-	negativeAck, _negativeAckErr := io.ReadBit()
-	if _negativeAckErr != nil {
-		return nil, errors.New("Error parsing 'negativeAck' field " + _negativeAckErr.Error())
-	}
-
-	// Simple Field (server)
-	server, _serverErr := io.ReadBit()
-	if _serverErr != nil {
-		return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
-	}
-
-	// Simple Field (originalInvokeId)
-	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-	if _originalInvokeIdErr != nil {
-		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-	}
-
-	// Simple Field (sequenceNumber)
-	sequenceNumber, _sequenceNumberErr := io.ReadUint8(8)
-	if _sequenceNumberErr != nil {
-		return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-	}
-
-	// Simple Field (proposedWindowSize)
-	proposedWindowSize, _proposedWindowSizeErr := io.ReadUint8(8)
-	if _proposedWindowSizeErr != nil {
-		return nil, errors.New("Error parsing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-	}
-
-	// Create the instance
-	return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(2)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0x00) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0x00),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (negativeAck)
+    negativeAck, _negativeAckErr := io.ReadBit()
+    if _negativeAckErr != nil {
+        return nil, errors.New("Error parsing 'negativeAck' field " + _negativeAckErr.Error())
+    }
+
+    // Simple Field (server)
+    server, _serverErr := io.ReadBit()
+    if _serverErr != nil {
+        return nil, errors.New("Error parsing 'server' field " + _serverErr.Error())
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+    if _originalInvokeIdErr != nil {
+        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (sequenceNumber)
+    sequenceNumber, _sequenceNumberErr := io.ReadUint8(8)
+    if _sequenceNumberErr != nil {
+        return nil, errors.New("Error parsing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+    }
+
+    // Simple Field (proposedWindowSize)
+    proposedWindowSize, _proposedWindowSizeErr := io.ReadUint8(8)
+    if _proposedWindowSizeErr != nil {
+        return nil, errors.New("Error parsing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+    }
+
+    // Create the instance
+    return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
 }
 
 func (m APDUSegmentAck) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(2, uint8(0x00))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (negativeAck)
-		negativeAck := bool(m.NegativeAck)
-		_negativeAckErr := io.WriteBit((bool)(negativeAck))
-		if _negativeAckErr != nil {
-			return errors.New("Error serializing 'negativeAck' field " + _negativeAckErr.Error())
-		}
-
-		// Simple Field (server)
-		server := bool(m.Server)
-		_serverErr := io.WriteBit((bool)(server))
-		if _serverErr != nil {
-			return errors.New("Error serializing 'server' field " + _serverErr.Error())
-		}
-
-		// Simple Field (originalInvokeId)
-		originalInvokeId := uint8(m.OriginalInvokeId)
-		_originalInvokeIdErr := io.WriteUint8(8, originalInvokeId)
-		if _originalInvokeIdErr != nil {
-			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-		}
-
-		// Simple Field (sequenceNumber)
-		sequenceNumber := uint8(m.SequenceNumber)
-		_sequenceNumberErr := io.WriteUint8(8, sequenceNumber)
-		if _sequenceNumberErr != nil {
-			return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
-		}
-
-		// Simple Field (proposedWindowSize)
-		proposedWindowSize := uint8(m.ProposedWindowSize)
-		_proposedWindowSizeErr := io.WriteUint8(8, proposedWindowSize)
-		if _proposedWindowSizeErr != nil {
-			return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(2, uint8(0x00))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (negativeAck)
+    negativeAck := bool(m.NegativeAck)
+    _negativeAckErr := io.WriteBit((bool) (negativeAck))
+    if _negativeAckErr != nil {
+        return errors.New("Error serializing 'negativeAck' field " + _negativeAckErr.Error())
+    }
+
+    // Simple Field (server)
+    server := bool(m.Server)
+    _serverErr := io.WriteBit((bool) (server))
+    if _serverErr != nil {
+        return errors.New("Error serializing 'server' field " + _serverErr.Error())
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId := uint8(m.OriginalInvokeId)
+    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+    if _originalInvokeIdErr != nil {
+        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (sequenceNumber)
+    sequenceNumber := uint8(m.SequenceNumber)
+    _sequenceNumberErr := io.WriteUint8(8, (sequenceNumber))
+    if _sequenceNumberErr != nil {
+        return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+    }
+
+    // Simple Field (proposedWindowSize)
+    proposedWindowSize := uint8(m.ProposedWindowSize)
+    _proposedWindowSizeErr := io.WriteUint8(8, (proposedWindowSize))
+    if _proposedWindowSizeErr != nil {
+        return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
index ce2e82a..4d08fb1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
@@ -19,134 +19,137 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type APDUSimpleAck struct {
-	OriginalInvokeId uint8
-	ServiceChoice    uint8
-	APDU
+    OriginalInvokeId uint8
+    ServiceChoice uint8
+    APDU
 }
 
 // The corresponding interface
 type IAPDUSimpleAck interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUSimpleAck) ApduType() uint8 {
-	return 0x2
+    return 0x2
 }
 
 func (m APDUSimpleAck) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUSimpleAck(originalInvokeId uint8, serviceChoice uint8) APDUInitializer {
-	return &APDUSimpleAck{OriginalInvokeId: originalInvokeId, ServiceChoice: serviceChoice}
+    return &APDUSimpleAck{OriginalInvokeId: originalInvokeId, ServiceChoice: serviceChoice}
 }
 
 func CastIAPDUSimpleAck(structType interface{}) IAPDUSimpleAck {
-	castFunc := func(typ interface{}) IAPDUSimpleAck {
-		if iAPDUSimpleAck, ok := typ.(IAPDUSimpleAck); ok {
-			return iAPDUSimpleAck
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUSimpleAck {
+        if iAPDUSimpleAck, ok := typ.(IAPDUSimpleAck); ok {
+            return iAPDUSimpleAck
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUSimpleAck(structType interface{}) APDUSimpleAck {
-	castFunc := func(typ interface{}) APDUSimpleAck {
-		if sAPDUSimpleAck, ok := typ.(APDUSimpleAck); ok {
-			return sAPDUSimpleAck
-		}
-		return APDUSimpleAck{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUSimpleAck {
+        if sAPDUSimpleAck, ok := typ.(APDUSimpleAck); ok {
+            return sAPDUSimpleAck
+        }
+        if sAPDUSimpleAck, ok := typ.(*APDUSimpleAck); ok {
+            return *sAPDUSimpleAck
+        }
+        return APDUSimpleAck{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUSimpleAck) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Reserved Field (reserved)
-	lengthInBits += 4
+    // Reserved Field (reserved)
+    lengthInBits += 4
 
-	// Simple field (originalInvokeId)
-	lengthInBits += 8
+    // Simple field (originalInvokeId)
+    lengthInBits += 8
 
-	// Simple field (serviceChoice)
-	lengthInBits += 8
+    // Simple field (serviceChoice)
+    lengthInBits += 8
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUSimpleAck) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUSimpleAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(4)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (originalInvokeId)
-	originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
-	if _originalInvokeIdErr != nil {
-		return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-	}
-
-	// Simple Field (serviceChoice)
-	serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
-	if _serviceChoiceErr != nil {
-		return nil, errors.New("Error parsing 'serviceChoice' field " + _serviceChoiceErr.Error())
-	}
-
-	// Create the instance
-	return NewAPDUSimpleAck(originalInvokeId, serviceChoice), nil
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(4)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId, _originalInvokeIdErr := io.ReadUint8(8)
+    if _originalInvokeIdErr != nil {
+        return nil, errors.New("Error parsing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (serviceChoice)
+    serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
+    if _serviceChoiceErr != nil {
+        return nil, errors.New("Error parsing 'serviceChoice' field " + _serviceChoiceErr.Error())
+    }
+
+    // Create the instance
+    return NewAPDUSimpleAck(originalInvokeId, serviceChoice), nil
 }
 
 func (m APDUSimpleAck) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(4, uint8(0))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (originalInvokeId)
-		originalInvokeId := uint8(m.OriginalInvokeId)
-		_originalInvokeIdErr := io.WriteUint8(8, originalInvokeId)
-		if _originalInvokeIdErr != nil {
-			return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
-		}
-
-		// Simple Field (serviceChoice)
-		serviceChoice := uint8(m.ServiceChoice)
-		_serviceChoiceErr := io.WriteUint8(8, serviceChoice)
-		if _serviceChoiceErr != nil {
-			return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(4, uint8(0))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (originalInvokeId)
+    originalInvokeId := uint8(m.OriginalInvokeId)
+    _originalInvokeIdErr := io.WriteUint8(8, (originalInvokeId))
+    if _originalInvokeIdErr != nil {
+        return errors.New("Error serializing 'originalInvokeId' field " + _originalInvokeIdErr.Error())
+    }
+
+    // Simple Field (serviceChoice)
+    serviceChoice := uint8(m.ServiceChoice)
+    _serviceChoiceErr := io.WriteUint8(8, (serviceChoice))
+    if _serviceChoiceErr != nil {
+        return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
index 180c526..c5c17e4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
@@ -19,123 +19,126 @@
 package model
 
 import (
-	"errors"
-	log "github.com/sirupsen/logrus"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"reflect"
+    "errors"
+    log "github.com/sirupsen/logrus"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "reflect"
 )
 
 // The data-structure of this message
 type APDUUnconfirmedRequest struct {
-	ServiceRequest IBACnetUnconfirmedServiceRequest
-	APDU
+    ServiceRequest IBACnetUnconfirmedServiceRequest
+    APDU
 }
 
 // The corresponding interface
 type IAPDUUnconfirmedRequest interface {
-	IAPDU
-	Serialize(io spi.WriteBuffer) error
+    IAPDU
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m APDUUnconfirmedRequest) ApduType() uint8 {
-	return 0x1
+    return 0x1
 }
 
 func (m APDUUnconfirmedRequest) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewAPDUUnconfirmedRequest(serviceRequest IBACnetUnconfirmedServiceRequest) APDUInitializer {
-	return &APDUUnconfirmedRequest{ServiceRequest: serviceRequest}
+    return &APDUUnconfirmedRequest{ServiceRequest: serviceRequest}
 }
 
 func CastIAPDUUnconfirmedRequest(structType interface{}) IAPDUUnconfirmedRequest {
-	castFunc := func(typ interface{}) IAPDUUnconfirmedRequest {
-		if iAPDUUnconfirmedRequest, ok := typ.(IAPDUUnconfirmedRequest); ok {
-			return iAPDUUnconfirmedRequest
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IAPDUUnconfirmedRequest {
+        if iAPDUUnconfirmedRequest, ok := typ.(IAPDUUnconfirmedRequest); ok {
+            return iAPDUUnconfirmedRequest
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastAPDUUnconfirmedRequest(structType interface{}) APDUUnconfirmedRequest {
-	castFunc := func(typ interface{}) APDUUnconfirmedRequest {
-		if sAPDUUnconfirmedRequest, ok := typ.(APDUUnconfirmedRequest); ok {
-			return sAPDUUnconfirmedRequest
-		}
-		return APDUUnconfirmedRequest{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) APDUUnconfirmedRequest {
+        if sAPDUUnconfirmedRequest, ok := typ.(APDUUnconfirmedRequest); ok {
+            return sAPDUUnconfirmedRequest
+        }
+        if sAPDUUnconfirmedRequest, ok := typ.(*APDUUnconfirmedRequest); ok {
+            return *sAPDUUnconfirmedRequest
+        }
+        return APDUUnconfirmedRequest{}
+    }
+    return castFunc(structType)
 }
 
 func (m APDUUnconfirmedRequest) LengthInBits() uint16 {
-	var lengthInBits = m.APDU.LengthInBits()
+    var lengthInBits uint16 = m.APDU.LengthInBits()
 
-	// Reserved Field (reserved)
-	lengthInBits += 4
+    // Reserved Field (reserved)
+    lengthInBits += 4
 
-	// Simple field (serviceRequest)
-	lengthInBits += m.ServiceRequest.LengthInBits()
+    // Simple field (serviceRequest)
+    lengthInBits += m.ServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m APDUUnconfirmedRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func APDUUnconfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUInitializer, error) {
 
-	// Reserved Field (Compartmentalized so the "reserved" variable can't leak)
-	{
-		reserved, _err := io.ReadUint8(4)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
-		}
-		if reserved != uint8(0) {
-			log.WithFields(log.Fields{
-				"expected value": uint8(0),
-				"got value":      reserved,
-			}).Info("Got unexpected response.")
-		}
-	}
-
-	// Simple Field (serviceRequest)
-	_serviceRequestMessage, _err := BACnetUnconfirmedServiceRequestParse(io, uint16(apduLength)-uint16(uint16(1)))
-	if _err != nil {
-		return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
-	}
-	var serviceRequest IBACnetUnconfirmedServiceRequest
-	serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetUnconfirmedServiceRequest)
-	if !_serviceRequestOk {
-		return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetUnconfirmedServiceRequest")
-	}
-
-	// Create the instance
-	return NewAPDUUnconfirmedRequest(serviceRequest), nil
+    // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
+    {
+        reserved, _err := io.ReadUint8(4)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'reserved' field " + _err.Error())
+        }
+        if reserved != uint8(0) {
+            log.WithFields(log.Fields{
+                "expected value": uint8(0),
+                "got value": reserved,
+            }).Info("Got unexpected response.")
+        }
+    }
+
+    // Simple Field (serviceRequest)
+    _serviceRequestMessage, _err := BACnetUnconfirmedServiceRequestParse(io, uint16(apduLength) - uint16(uint16(1)))
+    if _err != nil {
+        return nil, errors.New("Error parsing simple field 'serviceRequest'. " + _err.Error())
+    }
+    var serviceRequest IBACnetUnconfirmedServiceRequest
+    serviceRequest, _serviceRequestOk := _serviceRequestMessage.(IBACnetUnconfirmedServiceRequest)
+    if !_serviceRequestOk {
+        return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_serviceRequestMessage).Name() + " to IBACnetUnconfirmedServiceRequest")
+    }
+
+    // Create the instance
+    return NewAPDUUnconfirmedRequest(serviceRequest), nil
 }
 
 func (m APDUUnconfirmedRequest) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Reserved Field (reserved)
-		{
-			_err := io.WriteUint8(4, uint8(0))
-			if _err != nil {
-				return errors.New("Error serializing 'reserved' field " + _err.Error())
-			}
-		}
-
-		// Simple Field (serviceRequest)
-		serviceRequest := CastIBACnetUnconfirmedServiceRequest(m.ServiceRequest)
-		_serviceRequestErr := serviceRequest.Serialize(io)
-		if _serviceRequestErr != nil {
-			return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
-		}
-
-		return nil
-	}
-	return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+    ser := func() error {
+
+    // Reserved Field (reserved)
+    {
+        _err := io.WriteUint8(4, uint8(0))
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
+
+    // Simple Field (serviceRequest)
+    serviceRequest := CastIBACnetUnconfirmedServiceRequest(m.ServiceRequest)
+    _serviceRequestErr := serviceRequest.Serialize(io)
+    if _serviceRequestErr != nil {
+        return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
+    }
+
+        return nil
+    }
+    return APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
index 3463d2c..e9e8915 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
@@ -18,55 +18,56 @@
 //
 package model
 
-import "plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+import "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 
 type ApplicationTag int8
 
 type IApplicationTag interface {
-	spi.Message
-	Serialize(io spi.WriteBuffer) error
+    spi.Message
+    Serialize(io spi.WriteBuffer) error
 }
 
-const (
-	ApplicationTag_NULL                     ApplicationTag = 0x0
-	ApplicationTag_BOOLEAN                  ApplicationTag = 0x1
-	ApplicationTag_UNSIGNED_INTEGER         ApplicationTag = 0x2
-	ApplicationTag_SIGNED_INTEGER           ApplicationTag = 0x3
-	ApplicationTag_REAL                     ApplicationTag = 0x4
-	ApplicationTag_DOUBLE                   ApplicationTag = 0x5
-	ApplicationTag_OCTET_STRING             ApplicationTag = 0x6
-	ApplicationTag_CHARACTER_STRING         ApplicationTag = 0x7
-	ApplicationTag_BIT_STRING               ApplicationTag = 0x8
-	ApplicationTag_ENUMERATED               ApplicationTag = 0x9
-	ApplicationTag_DATE                     ApplicationTag = 0xA
-	ApplicationTag_TIME                     ApplicationTag = 0xB
-	ApplicationTag_BACNET_OBJECT_IDENTIFIER ApplicationTag = 0xC
+const(
+    ApplicationTag_NULL ApplicationTag = 0x0
+    ApplicationTag_BOOLEAN ApplicationTag = 0x1
+    ApplicationTag_UNSIGNED_INTEGER ApplicationTag = 0x2
+    ApplicationTag_SIGNED_INTEGER ApplicationTag = 0x3
+    ApplicationTag_REAL ApplicationTag = 0x4
+    ApplicationTag_DOUBLE ApplicationTag = 0x5
+    ApplicationTag_OCTET_STRING ApplicationTag = 0x6
+    ApplicationTag_CHARACTER_STRING ApplicationTag = 0x7
+    ApplicationTag_BIT_STRING ApplicationTag = 0x8
+    ApplicationTag_ENUMERATED ApplicationTag = 0x9
+    ApplicationTag_DATE ApplicationTag = 0xA
+    ApplicationTag_TIME ApplicationTag = 0xB
+    ApplicationTag_BACNET_OBJECT_IDENTIFIER ApplicationTag = 0xC
 )
 
+
 func CastApplicationTag(structType interface{}) ApplicationTag {
-	castFunc := func(typ interface{}) ApplicationTag {
-		if sApplicationTag, ok := typ.(ApplicationTag); ok {
-			return sApplicationTag
-		}
-		return 0
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) ApplicationTag {
+        if sApplicationTag, ok := typ.(ApplicationTag); ok {
+            return sApplicationTag
+        }
+        return 0
+    }
+    return castFunc(structType)
 }
 
 func (m ApplicationTag) LengthInBits() uint16 {
-	return 4
+    return 4
 }
 
 func (m ApplicationTag) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func ApplicationTagParse(io *spi.ReadBuffer) (ApplicationTag, error) {
-	// TODO: Implement ...
-	return 0, nil
+    // TODO: Implement ...
+    return 0, nil
 }
 
 func (e ApplicationTag) Serialize(io spi.WriteBuffer) error {
-	// TODO: Implement ...
-	return nil
+    // 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 18261a5..28d9927 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
@@ -19,106 +19,111 @@
 package model
 
 import (
-	"errors"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetAddress struct {
-	Address []uint8
-	Port    uint16
+    Address []uint8
+    Port uint16
+
 }
 
 // The corresponding interface
 type IBACnetAddress interface {
-	spi.Message
-	Serialize(io spi.WriteBuffer) error
+    spi.Message
+    Serialize(io spi.WriteBuffer) error
 }
 
+
 func NewBACnetAddress(address []uint8, port uint16) spi.Message {
-	return &BACnetAddress{Address: address, Port: port}
+    return &BACnetAddress{Address: address, Port: port}
 }
 
 func CastIBACnetAddress(structType interface{}) IBACnetAddress {
-	castFunc := func(typ interface{}) IBACnetAddress {
-		if iBACnetAddress, ok := typ.(IBACnetAddress); ok {
-			return iBACnetAddress
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetAddress {
+        if iBACnetAddress, ok := typ.(IBACnetAddress); ok {
+            return iBACnetAddress
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetAddress(structType interface{}) BACnetAddress {
-	castFunc := func(typ interface{}) BACnetAddress {
-		if sBACnetAddress, ok := typ.(BACnetAddress); ok {
-			return sBACnetAddress
-		}
-		return BACnetAddress{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetAddress {
+        if sBACnetAddress, ok := typ.(BACnetAddress); ok {
+            return sBACnetAddress
+        }
+        if sBACnetAddress, ok := typ.(*BACnetAddress); ok {
+            return *sBACnetAddress
+        }
+        return BACnetAddress{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetAddress) LengthInBits() uint16 {
-	var lengthInBits uint16 = 0
+    var lengthInBits uint16 = 0
 
-	// Array field
-	if len(m.Address) > 0 {
-		lengthInBits += 8 * uint16(len(m.Address))
-	}
+    // Array field
+    if len(m.Address) > 0 {
+        lengthInBits += 8 * uint16(len(m.Address))
+    }
 
-	// Simple field (port)
-	lengthInBits += 16
+    // Simple field (port)
+    lengthInBits += 16
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetAddress) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
 
-	// Array field (address)
-	// Count array
-	address := make([]uint8, uint16(4))
-	for curItem := uint16(0); curItem < uint16(uint16(4)); curItem++ {
-
-		_item, _err := io.ReadUint8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'address' field " + _err.Error())
-		}
-		address[curItem] = _item
-	}
-
-	// Simple Field (port)
-	port, _portErr := io.ReadUint16(16)
-	if _portErr != nil {
-		return nil, errors.New("Error parsing 'port' field " + _portErr.Error())
-	}
-
-	// Create the instance
-	return NewBACnetAddress(address, port), nil
+    // Array field (address)
+    // Count array
+    address := make([]uint8, uint16(4))
+    for curItem := uint16(0); curItem < uint16(uint16(4)); curItem++ {
+
+        _item, _err := io.ReadUint8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'address' field " + _err.Error())
+        }
+        address[curItem] = _item
+    }
+
+    // Simple Field (port)
+    port, _portErr := io.ReadUint16(16)
+    if _portErr != nil {
+        return nil, errors.New("Error parsing 'port' field " + _portErr.Error())
+    }
+
+    // Create the instance
+    return NewBACnetAddress(address, port), nil
 }
 
 func (m BACnetAddress) Serialize(io spi.WriteBuffer) error {
 
-	// Array Field (address)
-	if m.Address != nil {
-		for _, _element := range m.Address {
-			_elementErr := io.WriteUint8(8, _element)
-			if _elementErr != nil {
-				return errors.New("Error serializing 'address' field " + _elementErr.Error())
-			}
-		}
-	}
-
-	// Simple Field (port)
-	port := uint16(m.Port)
-	_portErr := io.WriteUint16(16, port)
-	if _portErr != nil {
-		return errors.New("Error serializing 'port' field " + _portErr.Error())
-	}
-
-	return nil
+    // Array Field (address)
+    if m.Address != nil {
+        for _, _element := range m.Address {
+            _elementErr := io.WriteUint8(8, _element)
+            if _elementErr != nil {
+                return errors.New("Error serializing 'address' field " + _elementErr.Error())
+            }
+        }
+    }
+
+    // Simple Field (port)
+    port := uint16(m.Port)
+    _portErr := io.WriteUint16(16, (port))
+    if _portErr != nil {
+        return errors.New("Error serializing 'port' field " + _portErr.Error())
+    }
+
+    return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
index 2b1438f..48a3afd 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -19,127 +19,132 @@
 package model
 
 import (
-	"errors"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACK struct {
+
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACK interface {
-	spi.Message
-	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer) error
+    spi.Message
+    ServiceChoice() uint8
+    Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetConfirmedServiceACKInitializer interface {
-	initialize() spi.Message
+    initialize() spi.Message
 }
 
 func BACnetConfirmedServiceACKServiceChoice(m IBACnetConfirmedServiceACK) uint8 {
-	return m.ServiceChoice()
+    return m.ServiceChoice()
 }
 
+
 func CastIBACnetConfirmedServiceACK(structType interface{}) IBACnetConfirmedServiceACK {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACK {
-		if iBACnetConfirmedServiceACK, ok := typ.(IBACnetConfirmedServiceACK); ok {
-			return iBACnetConfirmedServiceACK
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACK {
+        if iBACnetConfirmedServiceACK, ok := typ.(IBACnetConfirmedServiceACK); ok {
+            return iBACnetConfirmedServiceACK
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACK(structType interface{}) BACnetConfirmedServiceACK {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACK {
-		if sBACnetConfirmedServiceACK, ok := typ.(BACnetConfirmedServiceACK); ok {
-			return sBACnetConfirmedServiceACK
-		}
-		return BACnetConfirmedServiceACK{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACK {
+        if sBACnetConfirmedServiceACK, ok := typ.(BACnetConfirmedServiceACK); ok {
+            return sBACnetConfirmedServiceACK
+        }
+        if sBACnetConfirmedServiceACK, ok := typ.(*BACnetConfirmedServiceACK); ok {
+            return *sBACnetConfirmedServiceACK
+        }
+        return BACnetConfirmedServiceACK{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACK) LengthInBits() uint16 {
-	var lengthInBits uint16 = 0
+    var lengthInBits uint16 = 0
 
-	// Discriminator Field (serviceChoice)
-	lengthInBits += 8
+    // Discriminator Field (serviceChoice)
+    lengthInBits += 8
 
-	// Length of sub-type elements will be added by sub-type...
+    // Length of sub-type elements will be added by sub-type...
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACK) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKParse(io *spi.ReadBuffer) (spi.Message, error) {
 
-	// Discriminator Field (serviceChoice) (Used as input to a switch field)
-	serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
-	if _serviceChoiceErr != nil {
-		return nil, errors.New("Error parsing 'serviceChoice' field " + _serviceChoiceErr.Error())
-	}
-
-	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-	var initializer BACnetConfirmedServiceACKInitializer
-	var typeSwitchError error
-	switch {
-	case serviceChoice == 0x03:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKGetAlarmSummaryParse(io)
-	case serviceChoice == 0x04:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKGetEnrollmentSummaryParse(io)
-	case serviceChoice == 0x1D:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKGetEventInformationParse(io)
-	case serviceChoice == 0x06:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKAtomicReadFileParse(io)
-	case serviceChoice == 0x07:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKAtomicWriteFileParse(io)
-	case serviceChoice == 0x0A:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKCreateObjectParse(io)
-	case serviceChoice == 0x0C:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKReadPropertyParse(io)
-	case serviceChoice == 0x0E:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKReadPropertyMultipleParse(io)
-	case serviceChoice == 0x1A:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKReadRangeParse(io)
-	case serviceChoice == 0x12:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKConfirmedPrivateTransferParse(io)
-	case serviceChoice == 0x15:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKVTOpenParse(io)
-	case serviceChoice == 0x17:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKVTDataParse(io)
-	case serviceChoice == 0x18:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKRemovedAuthenticateParse(io)
-	case serviceChoice == 0x0D:
-		initializer, typeSwitchError = BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(io)
-	}
-	if typeSwitchError != nil {
-		return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
-	}
-
-	// Create the instance
-	return initializer.initialize(), nil
+    // Discriminator Field (serviceChoice) (Used as input to a switch field)
+    serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
+    if _serviceChoiceErr != nil {
+        return nil, errors.New("Error parsing 'serviceChoice' field " + _serviceChoiceErr.Error())
+    }
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    var initializer BACnetConfirmedServiceACKInitializer
+    var typeSwitchError error
+    switch {
+    case serviceChoice == 0x03:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKGetAlarmSummaryParse(io)
+    case serviceChoice == 0x04:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKGetEnrollmentSummaryParse(io)
+    case serviceChoice == 0x1D:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKGetEventInformationParse(io)
+    case serviceChoice == 0x06:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKAtomicReadFileParse(io)
+    case serviceChoice == 0x07:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKAtomicWriteFileParse(io)
+    case serviceChoice == 0x0A:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKCreateObjectParse(io)
+    case serviceChoice == 0x0C:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKReadPropertyParse(io)
+    case serviceChoice == 0x0E:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKReadPropertyMultipleParse(io)
+    case serviceChoice == 0x1A:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKReadRangeParse(io)
+    case serviceChoice == 0x12:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKConfirmedPrivateTransferParse(io)
+    case serviceChoice == 0x15:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKVTOpenParse(io)
+    case serviceChoice == 0x17:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKVTDataParse(io)
+    case serviceChoice == 0x18:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKRemovedAuthenticateParse(io)
+    case serviceChoice == 0x0D:
+        initializer, typeSwitchError = BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(io)
+    }
+    if typeSwitchError != nil {
+        return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+    }
+
+    // Create the instance
+    return initializer.initialize(), nil
 }
 
 func BACnetConfirmedServiceACKSerialize(io spi.WriteBuffer, m BACnetConfirmedServiceACK, i IBACnetConfirmedServiceACK, childSerialize func() error) error {
 
-	// Discriminator Field (serviceChoice) (Used as input to a switch field)
-	serviceChoice := uint8(i.ServiceChoice())
-	_serviceChoiceErr := io.WriteUint8(8, serviceChoice)
-	if _serviceChoiceErr != nil {
-		return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
-	}
+    // Discriminator Field (serviceChoice) (Used as input to a switch field)
+    serviceChoice := uint8(i.ServiceChoice())
+    _serviceChoiceErr := io.WriteUint8(8, (serviceChoice))
+    if _serviceChoiceErr != nil {
+        return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
+    }
 
-	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	_typeSwitchErr := childSerialize()
-	if _typeSwitchErr != nil {
-		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
-	}
+    // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+    _typeSwitchErr := childSerialize()
+    if _typeSwitchErr != nil {
+        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+    }
 
-	return nil
+    return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
index f4a39a2..346b5c7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKAtomicReadFile struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicReadFile interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKAtomicReadFile) ServiceChoice() uint8 {
-	return 0x06
+    return 0x06
 }
 
 func (m BACnetConfirmedServiceACKAtomicReadFile) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKAtomicReadFile() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKAtomicReadFile{}
+    return &BACnetConfirmedServiceACKAtomicReadFile{}
 }
 
 func CastIBACnetConfirmedServiceACKAtomicReadFile(structType interface{}) IBACnetConfirmedServiceACKAtomicReadFile {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKAtomicReadFile {
-		if iBACnetConfirmedServiceACKAtomicReadFile, ok := typ.(IBACnetConfirmedServiceACKAtomicReadFile); ok {
-			return iBACnetConfirmedServiceACKAtomicReadFile
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKAtomicReadFile {
+        if iBACnetConfirmedServiceACKAtomicReadFile, ok := typ.(IBACnetConfirmedServiceACKAtomicReadFile); ok {
+            return iBACnetConfirmedServiceACKAtomicReadFile
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKAtomicReadFile(structType interface{}) BACnetConfirmedServiceACKAtomicReadFile {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKAtomicReadFile {
-		if sBACnetConfirmedServiceACKAtomicReadFile, ok := typ.(BACnetConfirmedServiceACKAtomicReadFile); ok {
-			return sBACnetConfirmedServiceACKAtomicReadFile
-		}
-		return BACnetConfirmedServiceACKAtomicReadFile{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKAtomicReadFile {
+        if sBACnetConfirmedServiceACKAtomicReadFile, ok := typ.(BACnetConfirmedServiceACKAtomicReadFile); ok {
+            return sBACnetConfirmedServiceACKAtomicReadFile
+        }
+        if sBACnetConfirmedServiceACKAtomicReadFile, ok := typ.(*BACnetConfirmedServiceACKAtomicReadFile); ok {
+            return *sBACnetConfirmedServiceACKAtomicReadFile
+        }
+        return BACnetConfirmedServiceACKAtomicReadFile{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKAtomicReadFile) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKAtomicReadFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKAtomicReadFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKAtomicReadFile(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKAtomicReadFile(), nil
 }
 
 func (m BACnetConfirmedServiceACKAtomicReadFile) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
index 3e70753..318f293 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKAtomicWriteFile struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicWriteFile interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKAtomicWriteFile) ServiceChoice() uint8 {
-	return 0x07
+    return 0x07
 }
 
 func (m BACnetConfirmedServiceACKAtomicWriteFile) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKAtomicWriteFile() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKAtomicWriteFile{}
+    return &BACnetConfirmedServiceACKAtomicWriteFile{}
 }
 
 func CastIBACnetConfirmedServiceACKAtomicWriteFile(structType interface{}) IBACnetConfirmedServiceACKAtomicWriteFile {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKAtomicWriteFile {
-		if iBACnetConfirmedServiceACKAtomicWriteFile, ok := typ.(IBACnetConfirmedServiceACKAtomicWriteFile); ok {
-			return iBACnetConfirmedServiceACKAtomicWriteFile
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKAtomicWriteFile {
+        if iBACnetConfirmedServiceACKAtomicWriteFile, ok := typ.(IBACnetConfirmedServiceACKAtomicWriteFile); ok {
+            return iBACnetConfirmedServiceACKAtomicWriteFile
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKAtomicWriteFile(structType interface{}) BACnetConfirmedServiceACKAtomicWriteFile {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKAtomicWriteFile {
-		if sBACnetConfirmedServiceACKAtomicWriteFile, ok := typ.(BACnetConfirmedServiceACKAtomicWriteFile); ok {
-			return sBACnetConfirmedServiceACKAtomicWriteFile
-		}
-		return BACnetConfirmedServiceACKAtomicWriteFile{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKAtomicWriteFile {
+        if sBACnetConfirmedServiceACKAtomicWriteFile, ok := typ.(BACnetConfirmedServiceACKAtomicWriteFile); ok {
+            return sBACnetConfirmedServiceACKAtomicWriteFile
+        }
+        if sBACnetConfirmedServiceACKAtomicWriteFile, ok := typ.(*BACnetConfirmedServiceACKAtomicWriteFile); ok {
+            return *sBACnetConfirmedServiceACKAtomicWriteFile
+        }
+        return BACnetConfirmedServiceACKAtomicWriteFile{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKAtomicWriteFile) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKAtomicWriteFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKAtomicWriteFile(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKAtomicWriteFile(), nil
 }
 
 func (m BACnetConfirmedServiceACKAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
index 6c88956..a73fb3f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKConfirmedPrivateTransfer struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKConfirmedPrivateTransfer interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) ServiceChoice() uint8 {
-	return 0x12
+    return 0x12
 }
 
 func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKConfirmedPrivateTransfer() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKConfirmedPrivateTransfer{}
+    return &BACnetConfirmedServiceACKConfirmedPrivateTransfer{}
 }
 
 func CastIBACnetConfirmedServiceACKConfirmedPrivateTransfer(structType interface{}) IBACnetConfirmedServiceACKConfirmedPrivateTransfer {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKConfirmedPrivateTransfer {
-		if iBACnetConfirmedServiceACKConfirmedPrivateTransfer, ok := typ.(IBACnetConfirmedServiceACKConfirmedPrivateTransfer); ok {
-			return iBACnetConfirmedServiceACKConfirmedPrivateTransfer
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKConfirmedPrivateTransfer {
+        if iBACnetConfirmedServiceACKConfirmedPrivateTransfer, ok := typ.(IBACnetConfirmedServiceACKConfirmedPrivateTransfer); ok {
+            return iBACnetConfirmedServiceACKConfirmedPrivateTransfer
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKConfirmedPrivateTransfer(structType interface{}) BACnetConfirmedServiceACKConfirmedPrivateTransfer {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKConfirmedPrivateTransfer {
-		if sBACnetConfirmedServiceACKConfirmedPrivateTransfer, ok := typ.(BACnetConfirmedServiceACKConfirmedPrivateTransfer); ok {
-			return sBACnetConfirmedServiceACKConfirmedPrivateTransfer
-		}
-		return BACnetConfirmedServiceACKConfirmedPrivateTransfer{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKConfirmedPrivateTransfer {
+        if sBACnetConfirmedServiceACKConfirmedPrivateTransfer, ok := typ.(BACnetConfirmedServiceACKConfirmedPrivateTransfer); ok {
+            return sBACnetConfirmedServiceACKConfirmedPrivateTransfer
+        }
+        if sBACnetConfirmedServiceACKConfirmedPrivateTransfer, ok := typ.(*BACnetConfirmedServiceACKConfirmedPrivateTransfer); ok {
+            return *sBACnetConfirmedServiceACKConfirmedPrivateTransfer
+        }
+        return BACnetConfirmedServiceACKConfirmedPrivateTransfer{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKConfirmedPrivateTransfer(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKConfirmedPrivateTransfer(), nil
 }
 
 func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
index 5184cc0..1ea54fc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKCreateObject struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKCreateObject interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKCreateObject) ServiceChoice() uint8 {
-	return 0x0A
+    return 0x0A
 }
 
 func (m BACnetConfirmedServiceACKCreateObject) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKCreateObject() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKCreateObject{}
+    return &BACnetConfirmedServiceACKCreateObject{}
 }
 
 func CastIBACnetConfirmedServiceACKCreateObject(structType interface{}) IBACnetConfirmedServiceACKCreateObject {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKCreateObject {
-		if iBACnetConfirmedServiceACKCreateObject, ok := typ.(IBACnetConfirmedServiceACKCreateObject); ok {
-			return iBACnetConfirmedServiceACKCreateObject
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKCreateObject {
+        if iBACnetConfirmedServiceACKCreateObject, ok := typ.(IBACnetConfirmedServiceACKCreateObject); ok {
+            return iBACnetConfirmedServiceACKCreateObject
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKCreateObject(structType interface{}) BACnetConfirmedServiceACKCreateObject {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKCreateObject {
-		if sBACnetConfirmedServiceACKCreateObject, ok := typ.(BACnetConfirmedServiceACKCreateObject); ok {
-			return sBACnetConfirmedServiceACKCreateObject
-		}
-		return BACnetConfirmedServiceACKCreateObject{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKCreateObject {
+        if sBACnetConfirmedServiceACKCreateObject, ok := typ.(BACnetConfirmedServiceACKCreateObject); ok {
+            return sBACnetConfirmedServiceACKCreateObject
+        }
+        if sBACnetConfirmedServiceACKCreateObject, ok := typ.(*BACnetConfirmedServiceACKCreateObject); ok {
+            return *sBACnetConfirmedServiceACKCreateObject
+        }
+        return BACnetConfirmedServiceACKCreateObject{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKCreateObject) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKCreateObject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKCreateObjectParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKCreateObject(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKCreateObject(), nil
 }
 
 func (m BACnetConfirmedServiceACKCreateObject) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
index 052c08c..28e3e81 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKGetAlarmSummary struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetAlarmSummary interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKGetAlarmSummary) ServiceChoice() uint8 {
-	return 0x03
+    return 0x03
 }
 
 func (m BACnetConfirmedServiceACKGetAlarmSummary) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKGetAlarmSummary() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKGetAlarmSummary{}
+    return &BACnetConfirmedServiceACKGetAlarmSummary{}
 }
 
 func CastIBACnetConfirmedServiceACKGetAlarmSummary(structType interface{}) IBACnetConfirmedServiceACKGetAlarmSummary {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKGetAlarmSummary {
-		if iBACnetConfirmedServiceACKGetAlarmSummary, ok := typ.(IBACnetConfirmedServiceACKGetAlarmSummary); ok {
-			return iBACnetConfirmedServiceACKGetAlarmSummary
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKGetAlarmSummary {
+        if iBACnetConfirmedServiceACKGetAlarmSummary, ok := typ.(IBACnetConfirmedServiceACKGetAlarmSummary); ok {
+            return iBACnetConfirmedServiceACKGetAlarmSummary
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKGetAlarmSummary(structType interface{}) BACnetConfirmedServiceACKGetAlarmSummary {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKGetAlarmSummary {
-		if sBACnetConfirmedServiceACKGetAlarmSummary, ok := typ.(BACnetConfirmedServiceACKGetAlarmSummary); ok {
-			return sBACnetConfirmedServiceACKGetAlarmSummary
-		}
-		return BACnetConfirmedServiceACKGetAlarmSummary{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKGetAlarmSummary {
+        if sBACnetConfirmedServiceACKGetAlarmSummary, ok := typ.(BACnetConfirmedServiceACKGetAlarmSummary); ok {
+            return sBACnetConfirmedServiceACKGetAlarmSummary
+        }
+        if sBACnetConfirmedServiceACKGetAlarmSummary, ok := typ.(*BACnetConfirmedServiceACKGetAlarmSummary); ok {
+            return *sBACnetConfirmedServiceACKGetAlarmSummary
+        }
+        return BACnetConfirmedServiceACKGetAlarmSummary{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKGetAlarmSummary) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKGetAlarmSummary) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKGetAlarmSummary(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKGetAlarmSummary(), nil
 }
 
 func (m BACnetConfirmedServiceACKGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
index df02484..793b65b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKGetEnrollmentSummary struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEnrollmentSummary interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKGetEnrollmentSummary) ServiceChoice() uint8 {
-	return 0x04
+    return 0x04
 }
 
 func (m BACnetConfirmedServiceACKGetEnrollmentSummary) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKGetEnrollmentSummary() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKGetEnrollmentSummary{}
+    return &BACnetConfirmedServiceACKGetEnrollmentSummary{}
 }
 
 func CastIBACnetConfirmedServiceACKGetEnrollmentSummary(structType interface{}) IBACnetConfirmedServiceACKGetEnrollmentSummary {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKGetEnrollmentSummary {
-		if iBACnetConfirmedServiceACKGetEnrollmentSummary, ok := typ.(IBACnetConfirmedServiceACKGetEnrollmentSummary); ok {
-			return iBACnetConfirmedServiceACKGetEnrollmentSummary
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKGetEnrollmentSummary {
+        if iBACnetConfirmedServiceACKGetEnrollmentSummary, ok := typ.(IBACnetConfirmedServiceACKGetEnrollmentSummary); ok {
+            return iBACnetConfirmedServiceACKGetEnrollmentSummary
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKGetEnrollmentSummary(structType interface{}) BACnetConfirmedServiceACKGetEnrollmentSummary {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKGetEnrollmentSummary {
-		if sBACnetConfirmedServiceACKGetEnrollmentSummary, ok := typ.(BACnetConfirmedServiceACKGetEnrollmentSummary); ok {
-			return sBACnetConfirmedServiceACKGetEnrollmentSummary
-		}
-		return BACnetConfirmedServiceACKGetEnrollmentSummary{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKGetEnrollmentSummary {
+        if sBACnetConfirmedServiceACKGetEnrollmentSummary, ok := typ.(BACnetConfirmedServiceACKGetEnrollmentSummary); ok {
+            return sBACnetConfirmedServiceACKGetEnrollmentSummary
+        }
+        if sBACnetConfirmedServiceACKGetEnrollmentSummary, ok := typ.(*BACnetConfirmedServiceACKGetEnrollmentSummary); ok {
+            return *sBACnetConfirmedServiceACKGetEnrollmentSummary
+        }
+        return BACnetConfirmedServiceACKGetEnrollmentSummary{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKGetEnrollmentSummary) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKGetEnrollmentSummary) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKGetEnrollmentSummary(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKGetEnrollmentSummary(), nil
 }
 
 func (m BACnetConfirmedServiceACKGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
index cb19773..382c2aa 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKGetEventInformation struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEventInformation interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKGetEventInformation) ServiceChoice() uint8 {
-	return 0x1D
+    return 0x1D
 }
 
 func (m BACnetConfirmedServiceACKGetEventInformation) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKGetEventInformation() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKGetEventInformation{}
+    return &BACnetConfirmedServiceACKGetEventInformation{}
 }
 
 func CastIBACnetConfirmedServiceACKGetEventInformation(structType interface{}) IBACnetConfirmedServiceACKGetEventInformation {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKGetEventInformation {
-		if iBACnetConfirmedServiceACKGetEventInformation, ok := typ.(IBACnetConfirmedServiceACKGetEventInformation); ok {
-			return iBACnetConfirmedServiceACKGetEventInformation
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKGetEventInformation {
+        if iBACnetConfirmedServiceACKGetEventInformation, ok := typ.(IBACnetConfirmedServiceACKGetEventInformation); ok {
+            return iBACnetConfirmedServiceACKGetEventInformation
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKGetEventInformation(structType interface{}) BACnetConfirmedServiceACKGetEventInformation {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKGetEventInformation {
-		if sBACnetConfirmedServiceACKGetEventInformation, ok := typ.(BACnetConfirmedServiceACKGetEventInformation); ok {
-			return sBACnetConfirmedServiceACKGetEventInformation
-		}
-		return BACnetConfirmedServiceACKGetEventInformation{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKGetEventInformation {
+        if sBACnetConfirmedServiceACKGetEventInformation, ok := typ.(BACnetConfirmedServiceACKGetEventInformation); ok {
+            return sBACnetConfirmedServiceACKGetEventInformation
+        }
+        if sBACnetConfirmedServiceACKGetEventInformation, ok := typ.(*BACnetConfirmedServiceACKGetEventInformation); ok {
+            return *sBACnetConfirmedServiceACKGetEventInformation
+        }
+        return BACnetConfirmedServiceACKGetEventInformation{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKGetEventInformation) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKGetEventInformation) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKGetEventInformationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKGetEventInformation(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKGetEventInformation(), nil
 }
 
 func (m BACnetConfirmedServiceACKGetEventInformation) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
index 27c0d84..cd06adf 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKReadProperty struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadProperty interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKReadProperty) ServiceChoice() uint8 {
-	return 0x0C
+    return 0x0C
 }
 
 func (m BACnetConfirmedServiceACKReadProperty) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKReadProperty() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKReadProperty{}
+    return &BACnetConfirmedServiceACKReadProperty{}
 }
 
 func CastIBACnetConfirmedServiceACKReadProperty(structType interface{}) IBACnetConfirmedServiceACKReadProperty {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKReadProperty {
-		if iBACnetConfirmedServiceACKReadProperty, ok := typ.(IBACnetConfirmedServiceACKReadProperty); ok {
-			return iBACnetConfirmedServiceACKReadProperty
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKReadProperty {
+        if iBACnetConfirmedServiceACKReadProperty, ok := typ.(IBACnetConfirmedServiceACKReadProperty); ok {
+            return iBACnetConfirmedServiceACKReadProperty
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKReadProperty(structType interface{}) BACnetConfirmedServiceACKReadProperty {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKReadProperty {
-		if sBACnetConfirmedServiceACKReadProperty, ok := typ.(BACnetConfirmedServiceACKReadProperty); ok {
-			return sBACnetConfirmedServiceACKReadProperty
-		}
-		return BACnetConfirmedServiceACKReadProperty{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKReadProperty {
+        if sBACnetConfirmedServiceACKReadProperty, ok := typ.(BACnetConfirmedServiceACKReadProperty); ok {
+            return sBACnetConfirmedServiceACKReadProperty
+        }
+        if sBACnetConfirmedServiceACKReadProperty, ok := typ.(*BACnetConfirmedServiceACKReadProperty); ok {
+            return *sBACnetConfirmedServiceACKReadProperty
+        }
+        return BACnetConfirmedServiceACKReadProperty{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKReadProperty) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKReadProperty) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKReadPropertyParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKReadProperty(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKReadProperty(), nil
 }
 
 func (m BACnetConfirmedServiceACKReadProperty) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
index c846d59..ccd2bce 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKReadPropertyMultiple struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadPropertyMultiple interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKReadPropertyMultiple) ServiceChoice() uint8 {
-	return 0x0E
+    return 0x0E
 }
 
 func (m BACnetConfirmedServiceACKReadPropertyMultiple) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKReadPropertyMultiple() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKReadPropertyMultiple{}
+    return &BACnetConfirmedServiceACKReadPropertyMultiple{}
 }
 
 func CastIBACnetConfirmedServiceACKReadPropertyMultiple(structType interface{}) IBACnetConfirmedServiceACKReadPropertyMultiple {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKReadPropertyMultiple {
-		if iBACnetConfirmedServiceACKReadPropertyMultiple, ok := typ.(IBACnetConfirmedServiceACKReadPropertyMultiple); ok {
-			return iBACnetConfirmedServiceACKReadPropertyMultiple
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKReadPropertyMultiple {
+        if iBACnetConfirmedServiceACKReadPropertyMultiple, ok := typ.(IBACnetConfirmedServiceACKReadPropertyMultiple); ok {
+            return iBACnetConfirmedServiceACKReadPropertyMultiple
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKReadPropertyMultiple(structType interface{}) BACnetConfirmedServiceACKReadPropertyMultiple {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKReadPropertyMultiple {
-		if sBACnetConfirmedServiceACKReadPropertyMultiple, ok := typ.(BACnetConfirmedServiceACKReadPropertyMultiple); ok {
-			return sBACnetConfirmedServiceACKReadPropertyMultiple
-		}
-		return BACnetConfirmedServiceACKReadPropertyMultiple{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKReadPropertyMultiple {
+        if sBACnetConfirmedServiceACKReadPropertyMultiple, ok := typ.(BACnetConfirmedServiceACKReadPropertyMultiple); ok {
+            return sBACnetConfirmedServiceACKReadPropertyMultiple
+        }
+        if sBACnetConfirmedServiceACKReadPropertyMultiple, ok := typ.(*BACnetConfirmedServiceACKReadPropertyMultiple); ok {
+            return *sBACnetConfirmedServiceACKReadPropertyMultiple
+        }
+        return BACnetConfirmedServiceACKReadPropertyMultiple{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKReadPropertyMultiple) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKReadPropertyMultiple) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKReadPropertyMultiple(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKReadPropertyMultiple(), nil
 }
 
 func (m BACnetConfirmedServiceACKReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
index 4d04950..13f9fcc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKReadRange struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadRange interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKReadRange) ServiceChoice() uint8 {
-	return 0x1A
+    return 0x1A
 }
 
 func (m BACnetConfirmedServiceACKReadRange) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKReadRange() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKReadRange{}
+    return &BACnetConfirmedServiceACKReadRange{}
 }
 
 func CastIBACnetConfirmedServiceACKReadRange(structType interface{}) IBACnetConfirmedServiceACKReadRange {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKReadRange {
-		if iBACnetConfirmedServiceACKReadRange, ok := typ.(IBACnetConfirmedServiceACKReadRange); ok {
-			return iBACnetConfirmedServiceACKReadRange
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKReadRange {
+        if iBACnetConfirmedServiceACKReadRange, ok := typ.(IBACnetConfirmedServiceACKReadRange); ok {
+            return iBACnetConfirmedServiceACKReadRange
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKReadRange(structType interface{}) BACnetConfirmedServiceACKReadRange {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKReadRange {
-		if sBACnetConfirmedServiceACKReadRange, ok := typ.(BACnetConfirmedServiceACKReadRange); ok {
-			return sBACnetConfirmedServiceACKReadRange
-		}
-		return BACnetConfirmedServiceACKReadRange{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKReadRange {
+        if sBACnetConfirmedServiceACKReadRange, ok := typ.(BACnetConfirmedServiceACKReadRange); ok {
+            return sBACnetConfirmedServiceACKReadRange
+        }
+        if sBACnetConfirmedServiceACKReadRange, ok := typ.(*BACnetConfirmedServiceACKReadRange); ok {
+            return *sBACnetConfirmedServiceACKReadRange
+        }
+        return BACnetConfirmedServiceACKReadRange{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKReadRange) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKReadRange) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKReadRangeParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKReadRange(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKReadRange(), nil
 }
 
 func (m BACnetConfirmedServiceACKReadRange) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
index 819d67d..c5b7aca 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKRemovedAuthenticate struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedAuthenticate interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKRemovedAuthenticate) ServiceChoice() uint8 {
-	return 0x18
+    return 0x18
 }
 
 func (m BACnetConfirmedServiceACKRemovedAuthenticate) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKRemovedAuthenticate() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKRemovedAuthenticate{}
+    return &BACnetConfirmedServiceACKRemovedAuthenticate{}
 }
 
 func CastIBACnetConfirmedServiceACKRemovedAuthenticate(structType interface{}) IBACnetConfirmedServiceACKRemovedAuthenticate {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKRemovedAuthenticate {
-		if iBACnetConfirmedServiceACKRemovedAuthenticate, ok := typ.(IBACnetConfirmedServiceACKRemovedAuthenticate); ok {
-			return iBACnetConfirmedServiceACKRemovedAuthenticate
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKRemovedAuthenticate {
+        if iBACnetConfirmedServiceACKRemovedAuthenticate, ok := typ.(IBACnetConfirmedServiceACKRemovedAuthenticate); ok {
+            return iBACnetConfirmedServiceACKRemovedAuthenticate
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKRemovedAuthenticate(structType interface{}) BACnetConfirmedServiceACKRemovedAuthenticate {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKRemovedAuthenticate {
-		if sBACnetConfirmedServiceACKRemovedAuthenticate, ok := typ.(BACnetConfirmedServiceACKRemovedAuthenticate); ok {
-			return sBACnetConfirmedServiceACKRemovedAuthenticate
-		}
-		return BACnetConfirmedServiceACKRemovedAuthenticate{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKRemovedAuthenticate {
+        if sBACnetConfirmedServiceACKRemovedAuthenticate, ok := typ.(BACnetConfirmedServiceACKRemovedAuthenticate); ok {
+            return sBACnetConfirmedServiceACKRemovedAuthenticate
+        }
+        if sBACnetConfirmedServiceACKRemovedAuthenticate, ok := typ.(*BACnetConfirmedServiceACKRemovedAuthenticate); ok {
+            return *sBACnetConfirmedServiceACKRemovedAuthenticate
+        }
+        return BACnetConfirmedServiceACKRemovedAuthenticate{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKRemovedAuthenticate) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKRemovedAuthenticate) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKRemovedAuthenticate(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKRemovedAuthenticate(), nil
 }
 
 func (m BACnetConfirmedServiceACKRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
index 152da95..fefcb4b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKRemovedReadPropertyConditional struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedReadPropertyConditional interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) ServiceChoice() uint8 {
-	return 0x0D
+    return 0x0D
 }
 
 func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKRemovedReadPropertyConditional() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKRemovedReadPropertyConditional{}
+    return &BACnetConfirmedServiceACKRemovedReadPropertyConditional{}
 }
 
 func CastIBACnetConfirmedServiceACKRemovedReadPropertyConditional(structType interface{}) IBACnetConfirmedServiceACKRemovedReadPropertyConditional {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKRemovedReadPropertyConditional {
-		if iBACnetConfirmedServiceACKRemovedReadPropertyConditional, ok := typ.(IBACnetConfirmedServiceACKRemovedReadPropertyConditional); ok {
-			return iBACnetConfirmedServiceACKRemovedReadPropertyConditional
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKRemovedReadPropertyConditional {
+        if iBACnetConfirmedServiceACKRemovedReadPropertyConditional, ok := typ.(IBACnetConfirmedServiceACKRemovedReadPropertyConditional); ok {
+            return iBACnetConfirmedServiceACKRemovedReadPropertyConditional
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKRemovedReadPropertyConditional(structType interface{}) BACnetConfirmedServiceACKRemovedReadPropertyConditional {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKRemovedReadPropertyConditional {
-		if sBACnetConfirmedServiceACKRemovedReadPropertyConditional, ok := typ.(BACnetConfirmedServiceACKRemovedReadPropertyConditional); ok {
-			return sBACnetConfirmedServiceACKRemovedReadPropertyConditional
-		}
-		return BACnetConfirmedServiceACKRemovedReadPropertyConditional{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKRemovedReadPropertyConditional {
+        if sBACnetConfirmedServiceACKRemovedReadPropertyConditional, ok := typ.(BACnetConfirmedServiceACKRemovedReadPropertyConditional); ok {
+            return sBACnetConfirmedServiceACKRemovedReadPropertyConditional
+        }
+        if sBACnetConfirmedServiceACKRemovedReadPropertyConditional, ok := typ.(*BACnetConfirmedServiceACKRemovedReadPropertyConditional); ok {
+            return *sBACnetConfirmedServiceACKRemovedReadPropertyConditional
+        }
+        return BACnetConfirmedServiceACKRemovedReadPropertyConditional{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKRemovedReadPropertyConditional(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKRemovedReadPropertyConditional(), nil
 }
 
 func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
index a807310..bda3931 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKVTData struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTData interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKVTData) ServiceChoice() uint8 {
-	return 0x17
+    return 0x17
 }
 
 func (m BACnetConfirmedServiceACKVTData) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKVTData() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKVTData{}
+    return &BACnetConfirmedServiceACKVTData{}
 }
 
 func CastIBACnetConfirmedServiceACKVTData(structType interface{}) IBACnetConfirmedServiceACKVTData {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKVTData {
-		if iBACnetConfirmedServiceACKVTData, ok := typ.(IBACnetConfirmedServiceACKVTData); ok {
-			return iBACnetConfirmedServiceACKVTData
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKVTData {
+        if iBACnetConfirmedServiceACKVTData, ok := typ.(IBACnetConfirmedServiceACKVTData); ok {
+            return iBACnetConfirmedServiceACKVTData
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKVTData(structType interface{}) BACnetConfirmedServiceACKVTData {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKVTData {
-		if sBACnetConfirmedServiceACKVTData, ok := typ.(BACnetConfirmedServiceACKVTData); ok {
-			return sBACnetConfirmedServiceACKVTData
-		}
-		return BACnetConfirmedServiceACKVTData{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKVTData {
+        if sBACnetConfirmedServiceACKVTData, ok := typ.(BACnetConfirmedServiceACKVTData); ok {
+            return sBACnetConfirmedServiceACKVTData
+        }
+        if sBACnetConfirmedServiceACKVTData, ok := typ.(*BACnetConfirmedServiceACKVTData); ok {
+            return *sBACnetConfirmedServiceACKVTData
+        }
+        return BACnetConfirmedServiceACKVTData{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKVTData) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKVTData) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKVTDataParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKVTData(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKVTData(), nil
 }
 
 func (m BACnetConfirmedServiceACKVTData) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
index 7021a8f..65949cb 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceACKVTOpen struct {
-	BACnetConfirmedServiceACK
+    BACnetConfirmedServiceACK
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTOpen interface {
-	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceACK
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceACKVTOpen) ServiceChoice() uint8 {
-	return 0x15
+    return 0x15
 }
 
 func (m BACnetConfirmedServiceACKVTOpen) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceACKVTOpen() BACnetConfirmedServiceACKInitializer {
-	return &BACnetConfirmedServiceACKVTOpen{}
+    return &BACnetConfirmedServiceACKVTOpen{}
 }
 
 func CastIBACnetConfirmedServiceACKVTOpen(structType interface{}) IBACnetConfirmedServiceACKVTOpen {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceACKVTOpen {
-		if iBACnetConfirmedServiceACKVTOpen, ok := typ.(IBACnetConfirmedServiceACKVTOpen); ok {
-			return iBACnetConfirmedServiceACKVTOpen
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceACKVTOpen {
+        if iBACnetConfirmedServiceACKVTOpen, ok := typ.(IBACnetConfirmedServiceACKVTOpen); ok {
+            return iBACnetConfirmedServiceACKVTOpen
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceACKVTOpen(structType interface{}) BACnetConfirmedServiceACKVTOpen {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceACKVTOpen {
-		if sBACnetConfirmedServiceACKVTOpen, ok := typ.(BACnetConfirmedServiceACKVTOpen); ok {
-			return sBACnetConfirmedServiceACKVTOpen
-		}
-		return BACnetConfirmedServiceACKVTOpen{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceACKVTOpen {
+        if sBACnetConfirmedServiceACKVTOpen, ok := typ.(BACnetConfirmedServiceACKVTOpen); ok {
+            return sBACnetConfirmedServiceACKVTOpen
+        }
+        if sBACnetConfirmedServiceACKVTOpen, ok := typ.(*BACnetConfirmedServiceACKVTOpen); ok {
+            return *sBACnetConfirmedServiceACKVTOpen
+        }
+        return BACnetConfirmedServiceACKVTOpen{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceACKVTOpen) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceACK.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceACK.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceACKVTOpen) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceACKVTOpenParse(io *spi.ReadBuffer) (BACnetConfirmedServiceACKInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceACKVTOpen(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceACKVTOpen(), nil
 }
 
 func (m BACnetConfirmedServiceACKVTOpen) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
index aa8c457..ec7bf7b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -19,173 +19,178 @@
 package model
 
 import (
-	"errors"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequest struct {
+
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequest interface {
-	spi.Message
-	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer) error
+    spi.Message
+    ServiceChoice() uint8
+    Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetConfirmedServiceRequestInitializer interface {
-	initialize() spi.Message
+    initialize() spi.Message
 }
 
 func BACnetConfirmedServiceRequestServiceChoice(m IBACnetConfirmedServiceRequest) uint8 {
-	return m.ServiceChoice()
+    return m.ServiceChoice()
 }
 
+
 func CastIBACnetConfirmedServiceRequest(structType interface{}) IBACnetConfirmedServiceRequest {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequest {
-		if iBACnetConfirmedServiceRequest, ok := typ.(IBACnetConfirmedServiceRequest); ok {
-			return iBACnetConfirmedServiceRequest
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequest {
+        if iBACnetConfirmedServiceRequest, ok := typ.(IBACnetConfirmedServiceRequest); ok {
+            return iBACnetConfirmedServiceRequest
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequest(structType interface{}) BACnetConfirmedServiceRequest {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequest {
-		if sBACnetConfirmedServiceRequest, ok := typ.(BACnetConfirmedServiceRequest); ok {
-			return sBACnetConfirmedServiceRequest
-		}
-		return BACnetConfirmedServiceRequest{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequest {
+        if sBACnetConfirmedServiceRequest, ok := typ.(BACnetConfirmedServiceRequest); ok {
+            return sBACnetConfirmedServiceRequest
+        }
+        if sBACnetConfirmedServiceRequest, ok := typ.(*BACnetConfirmedServiceRequest); ok {
+            return *sBACnetConfirmedServiceRequest
+        }
+        return BACnetConfirmedServiceRequest{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequest) LengthInBits() uint16 {
-	var lengthInBits uint16 = 0
+    var lengthInBits uint16 = 0
 
-	// Discriminator Field (serviceChoice)
-	lengthInBits += 8
+    // Discriminator Field (serviceChoice)
+    lengthInBits += 8
 
-	// Length of sub-type elements will be added by sub-type...
+    // Length of sub-type elements will be added by sub-type...
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequest) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.Message, error) {
 
-	// Discriminator Field (serviceChoice) (Used as input to a switch field)
-	serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
-	if _serviceChoiceErr != nil {
-		return nil, errors.New("Error parsing 'serviceChoice' field " + _serviceChoiceErr.Error())
-	}
-
-	// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-	var initializer BACnetConfirmedServiceRequestInitializer
-	var typeSwitchError error
-	switch {
-	case serviceChoice == 0x00:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestAcknowledgeAlarmParse(io)
-	case serviceChoice == 0x01:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io, len)
-	case serviceChoice == 0x1F:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io)
-	case serviceChoice == 0x02:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedEventNotificationParse(io)
-	case serviceChoice == 0x04:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(io)
-	case serviceChoice == 0x1D:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestGetEventInformationParse(io)
-	case serviceChoice == 0x1B:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestLifeSafetyOperationParse(io)
-	case serviceChoice == 0x05:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVParse(io)
-	case serviceChoice == 0x1C:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io)
-	case serviceChoice == 0x1E:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io)
-	case serviceChoice == 0x06:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestAtomicReadFileParse(io)
-	case serviceChoice == 0x07:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestAtomicWriteFileParse(io)
-	case serviceChoice == 0x08:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestAddListElementParse(io)
-	case serviceChoice == 0x09:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestRemoveListElementParse(io)
-	case serviceChoice == 0x0A:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestCreateObjectParse(io)
-	case serviceChoice == 0x0B:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestDeleteObjectParse(io)
-	case serviceChoice == 0x0C:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestReadPropertyParse(io)
-	case serviceChoice == 0x0E:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestReadPropertyMultipleParse(io)
-	case serviceChoice == 0x1A:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestReadRangeParse(io)
-	case serviceChoice == 0x0F:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestWritePropertyParse(io, len)
-	case serviceChoice == 0x10:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestWritePropertyMultipleParse(io)
-	case serviceChoice == 0x11:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestDeviceCommunicationControlParse(io)
-	case serviceChoice == 0x12:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(io)
-	case serviceChoice == 0x13:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedTextMessageParse(io)
-	case serviceChoice == 0x14:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestReinitializeDeviceParse(io)
-	case serviceChoice == 0x15:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestVTOpenParse(io)
-	case serviceChoice == 0x16:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestVTCloseParse(io)
-	case serviceChoice == 0x17:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestVTDataParse(io)
-	case serviceChoice == 0x18:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestRemovedAuthenticateParse(io)
-	case serviceChoice == 0x19:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestRemovedRequestKeyParse(io)
-	case serviceChoice == 0x0D:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestRemovedReadPropertyConditionalParse(io)
-	case serviceChoice == 0x1A:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestReadRangeParse(io)
-	case serviceChoice == 0x1B:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestLifeSafetyOperationParse(io)
-	case serviceChoice == 0x1C:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io)
-	case serviceChoice == 0x1D:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestGetEventInformationParse(io)
-	case serviceChoice == 0x1E:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io)
-	case serviceChoice == 0x1F:
-		initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io)
-	}
-	if typeSwitchError != nil {
-		return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
-	}
-
-	// Create the instance
-	return initializer.initialize(), nil
+    // Discriminator Field (serviceChoice) (Used as input to a switch field)
+    serviceChoice, _serviceChoiceErr := io.ReadUint8(8)
+    if _serviceChoiceErr != nil {
+        return nil, errors.New("Error parsing 'serviceChoice' field " + _serviceChoiceErr.Error())
+    }
+
+    // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
+    var initializer BACnetConfirmedServiceRequestInitializer
+    var typeSwitchError error
+    switch {
+    case serviceChoice == 0x00:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestAcknowledgeAlarmParse(io)
+    case serviceChoice == 0x01:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io, len)
+    case serviceChoice == 0x1F:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io)
+    case serviceChoice == 0x02:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedEventNotificationParse(io)
+    case serviceChoice == 0x04:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(io)
+    case serviceChoice == 0x1D:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestGetEventInformationParse(io)
+    case serviceChoice == 0x1B:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestLifeSafetyOperationParse(io)
+    case serviceChoice == 0x05:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVParse(io)
+    case serviceChoice == 0x1C:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io)
+    case serviceChoice == 0x1E:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io)
+    case serviceChoice == 0x06:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestAtomicReadFileParse(io)
+    case serviceChoice == 0x07:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestAtomicWriteFileParse(io)
+    case serviceChoice == 0x08:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestAddListElementParse(io)
+    case serviceChoice == 0x09:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestRemoveListElementParse(io)
+    case serviceChoice == 0x0A:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestCreateObjectParse(io)
+    case serviceChoice == 0x0B:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestDeleteObjectParse(io)
+    case serviceChoice == 0x0C:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestReadPropertyParse(io)
+    case serviceChoice == 0x0E:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestReadPropertyMultipleParse(io)
+    case serviceChoice == 0x1A:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestReadRangeParse(io)
+    case serviceChoice == 0x0F:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestWritePropertyParse(io, len)
+    case serviceChoice == 0x10:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestWritePropertyMultipleParse(io)
+    case serviceChoice == 0x11:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestDeviceCommunicationControlParse(io)
+    case serviceChoice == 0x12:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(io)
+    case serviceChoice == 0x13:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedTextMessageParse(io)
+    case serviceChoice == 0x14:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestReinitializeDeviceParse(io)
+    case serviceChoice == 0x15:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestVTOpenParse(io)
+    case serviceChoice == 0x16:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestVTCloseParse(io)
+    case serviceChoice == 0x17:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestVTDataParse(io)
+    case serviceChoice == 0x18:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestRemovedAuthenticateParse(io)
+    case serviceChoice == 0x19:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestRemovedRequestKeyParse(io)
+    case serviceChoice == 0x0D:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestRemovedReadPropertyConditionalParse(io)
+    case serviceChoice == 0x1A:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestReadRangeParse(io)
+    case serviceChoice == 0x1B:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestLifeSafetyOperationParse(io)
+    case serviceChoice == 0x1C:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io)
+    case serviceChoice == 0x1D:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestGetEventInformationParse(io)
+    case serviceChoice == 0x1E:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io)
+    case serviceChoice == 0x1F:
+        initializer, typeSwitchError = BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io)
+    }
+    if typeSwitchError != nil {
+        return nil, errors.New("Error parsing sub-type for type-switch. " + typeSwitchError.Error())
+    }
+
+    // Create the instance
+    return initializer.initialize(), nil
 }
 
 func BACnetConfirmedServiceRequestSerialize(io spi.WriteBuffer, m BACnetConfirmedServiceRequest, i IBACnetConfirmedServiceRequest, childSerialize func() error) error {
 
-	// Discriminator Field (serviceChoice) (Used as input to a switch field)
-	serviceChoice := uint8(i.ServiceChoice())
-	_serviceChoiceErr := io.WriteUint8(8, serviceChoice)
-	if _serviceChoiceErr != nil {
-		return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
-	}
+    // Discriminator Field (serviceChoice) (Used as input to a switch field)
+    serviceChoice := uint8(i.ServiceChoice())
+    _serviceChoiceErr := io.WriteUint8(8, (serviceChoice))
+    if _serviceChoiceErr != nil {
+        return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
+    }
 
-	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	_typeSwitchErr := childSerialize()
-	if _typeSwitchErr != nil {
-		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
-	}
+    // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
+    _typeSwitchErr := childSerialize()
+    if _typeSwitchErr != nil {
+        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+    }
 
-	return nil
+    return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
index c2116ee..fb3b62e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestAcknowledgeAlarm struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAcknowledgeAlarm interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) ServiceChoice() uint8 {
-	return 0x00
+    return 0x00
 }
 
 func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestAcknowledgeAlarm() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestAcknowledgeAlarm{}
+    return &BACnetConfirmedServiceRequestAcknowledgeAlarm{}
 }
 
 func CastIBACnetConfirmedServiceRequestAcknowledgeAlarm(structType interface{}) IBACnetConfirmedServiceRequestAcknowledgeAlarm {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAcknowledgeAlarm {
-		if iBACnetConfirmedServiceRequestAcknowledgeAlarm, ok := typ.(IBACnetConfirmedServiceRequestAcknowledgeAlarm); ok {
-			return iBACnetConfirmedServiceRequestAcknowledgeAlarm
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAcknowledgeAlarm {
+        if iBACnetConfirmedServiceRequestAcknowledgeAlarm, ok := typ.(IBACnetConfirmedServiceRequestAcknowledgeAlarm); ok {
+            return iBACnetConfirmedServiceRequestAcknowledgeAlarm
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestAcknowledgeAlarm(structType interface{}) BACnetConfirmedServiceRequestAcknowledgeAlarm {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAcknowledgeAlarm {
-		if sBACnetConfirmedServiceRequestAcknowledgeAlarm, ok := typ.(BACnetConfirmedServiceRequestAcknowledgeAlarm); ok {
-			return sBACnetConfirmedServiceRequestAcknowledgeAlarm
-		}
-		return BACnetConfirmedServiceRequestAcknowledgeAlarm{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAcknowledgeAlarm {
+        if sBACnetConfirmedServiceRequestAcknowledgeAlarm, ok := typ.(BACnetConfirmedServiceRequestAcknowledgeAlarm); ok {
+            return sBACnetConfirmedServiceRequestAcknowledgeAlarm
+        }
+        if sBACnetConfirmedServiceRequestAcknowledgeAlarm, ok := typ.(*BACnetConfirmedServiceRequestAcknowledgeAlarm); ok {
+            return *sBACnetConfirmedServiceRequestAcknowledgeAlarm
+        }
+        return BACnetConfirmedServiceRequestAcknowledgeAlarm{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAcknowledgeAlarmParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestAcknowledgeAlarm(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestAcknowledgeAlarm(), nil
 }
 
 func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
index f8ab70b..d96409c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestAddListElement struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAddListElement interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestAddListElement) ServiceChoice() uint8 {
-	return 0x08
+    return 0x08
 }
 
 func (m BACnetConfirmedServiceRequestAddListElement) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestAddListElement() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestAddListElement{}
+    return &BACnetConfirmedServiceRequestAddListElement{}
 }
 
 func CastIBACnetConfirmedServiceRequestAddListElement(structType interface{}) IBACnetConfirmedServiceRequestAddListElement {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAddListElement {
-		if iBACnetConfirmedServiceRequestAddListElement, ok := typ.(IBACnetConfirmedServiceRequestAddListElement); ok {
-			return iBACnetConfirmedServiceRequestAddListElement
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAddListElement {
+        if iBACnetConfirmedServiceRequestAddListElement, ok := typ.(IBACnetConfirmedServiceRequestAddListElement); ok {
+            return iBACnetConfirmedServiceRequestAddListElement
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestAddListElement(structType interface{}) BACnetConfirmedServiceRequestAddListElement {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAddListElement {
-		if sBACnetConfirmedServiceRequestAddListElement, ok := typ.(BACnetConfirmedServiceRequestAddListElement); ok {
-			return sBACnetConfirmedServiceRequestAddListElement
-		}
-		return BACnetConfirmedServiceRequestAddListElement{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAddListElement {
+        if sBACnetConfirmedServiceRequestAddListElement, ok := typ.(BACnetConfirmedServiceRequestAddListElement); ok {
+            return sBACnetConfirmedServiceRequestAddListElement
+        }
+        if sBACnetConfirmedServiceRequestAddListElement, ok := typ.(*BACnetConfirmedServiceRequestAddListElement); ok {
+            return *sBACnetConfirmedServiceRequestAddListElement
+        }
+        return BACnetConfirmedServiceRequestAddListElement{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestAddListElement) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestAddListElement) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAddListElementParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestAddListElement(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestAddListElement(), nil
 }
 
 func (m BACnetConfirmedServiceRequestAddListElement) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
index 9ad5042..f1cf70f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestAtomicReadFile struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAtomicReadFile interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestAtomicReadFile) ServiceChoice() uint8 {
-	return 0x06
+    return 0x06
 }
 
 func (m BACnetConfirmedServiceRequestAtomicReadFile) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestAtomicReadFile() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestAtomicReadFile{}
+    return &BACnetConfirmedServiceRequestAtomicReadFile{}
 }
 
 func CastIBACnetConfirmedServiceRequestAtomicReadFile(structType interface{}) IBACnetConfirmedServiceRequestAtomicReadFile {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAtomicReadFile {
-		if iBACnetConfirmedServiceRequestAtomicReadFile, ok := typ.(IBACnetConfirmedServiceRequestAtomicReadFile); ok {
-			return iBACnetConfirmedServiceRequestAtomicReadFile
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAtomicReadFile {
+        if iBACnetConfirmedServiceRequestAtomicReadFile, ok := typ.(IBACnetConfirmedServiceRequestAtomicReadFile); ok {
+            return iBACnetConfirmedServiceRequestAtomicReadFile
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestAtomicReadFile(structType interface{}) BACnetConfirmedServiceRequestAtomicReadFile {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAtomicReadFile {
-		if sBACnetConfirmedServiceRequestAtomicReadFile, ok := typ.(BACnetConfirmedServiceRequestAtomicReadFile); ok {
-			return sBACnetConfirmedServiceRequestAtomicReadFile
-		}
-		return BACnetConfirmedServiceRequestAtomicReadFile{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAtomicReadFile {
+        if sBACnetConfirmedServiceRequestAtomicReadFile, ok := typ.(BACnetConfirmedServiceRequestAtomicReadFile); ok {
+            return sBACnetConfirmedServiceRequestAtomicReadFile
+        }
+        if sBACnetConfirmedServiceRequestAtomicReadFile, ok := typ.(*BACnetConfirmedServiceRequestAtomicReadFile); ok {
+            return *sBACnetConfirmedServiceRequestAtomicReadFile
+        }
+        return BACnetConfirmedServiceRequestAtomicReadFile{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestAtomicReadFile) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestAtomicReadFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicReadFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestAtomicReadFile(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestAtomicReadFile(), nil
 }
 
 func (m BACnetConfirmedServiceRequestAtomicReadFile) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
index 4797853..c275039 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestAtomicWriteFile struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAtomicWriteFile interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestAtomicWriteFile) ServiceChoice() uint8 {
-	return 0x07
+    return 0x07
 }
 
 func (m BACnetConfirmedServiceRequestAtomicWriteFile) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestAtomicWriteFile() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestAtomicWriteFile{}
+    return &BACnetConfirmedServiceRequestAtomicWriteFile{}
 }
 
 func CastIBACnetConfirmedServiceRequestAtomicWriteFile(structType interface{}) IBACnetConfirmedServiceRequestAtomicWriteFile {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAtomicWriteFile {
-		if iBACnetConfirmedServiceRequestAtomicWriteFile, ok := typ.(IBACnetConfirmedServiceRequestAtomicWriteFile); ok {
-			return iBACnetConfirmedServiceRequestAtomicWriteFile
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestAtomicWriteFile {
+        if iBACnetConfirmedServiceRequestAtomicWriteFile, ok := typ.(IBACnetConfirmedServiceRequestAtomicWriteFile); ok {
+            return iBACnetConfirmedServiceRequestAtomicWriteFile
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestAtomicWriteFile(structType interface{}) BACnetConfirmedServiceRequestAtomicWriteFile {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAtomicWriteFile {
-		if sBACnetConfirmedServiceRequestAtomicWriteFile, ok := typ.(BACnetConfirmedServiceRequestAtomicWriteFile); ok {
-			return sBACnetConfirmedServiceRequestAtomicWriteFile
-		}
-		return BACnetConfirmedServiceRequestAtomicWriteFile{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestAtomicWriteFile {
+        if sBACnetConfirmedServiceRequestAtomicWriteFile, ok := typ.(BACnetConfirmedServiceRequestAtomicWriteFile); ok {
+            return sBACnetConfirmedServiceRequestAtomicWriteFile
+        }
+        if sBACnetConfirmedServiceRequestAtomicWriteFile, ok := typ.(*BACnetConfirmedServiceRequestAtomicWriteFile); ok {
+            return *sBACnetConfirmedServiceRequestAtomicWriteFile
+        }
+        return BACnetConfirmedServiceRequestAtomicWriteFile{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestAtomicWriteFile) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestAtomicWriteFile) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestAtomicWriteFile(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestAtomicWriteFile(), nil
 }
 
 func (m BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
index c46fe32..5d9c3ef 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -19,10 +19,10 @@
 package model
 
 import (
-	"errors"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"reflect"
-	"strconv"
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "reflect"
+    "strconv"
 )
 
 // Constant values.
@@ -35,342 +35,345 @@ const BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGT
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedCOVNotification struct {
-	SubscriberProcessIdentifier               uint8
-	MonitoredObjectType                       uint16
-	MonitoredObjectInstanceNumber             uint32
-	IssueConfirmedNotificationsType           uint16
-	IssueConfirmedNotificationsInstanceNumber uint32
-	LifetimeLength                            uint8
-	LifetimeSeconds                           []int8
-	Notifications                             []IBACnetTagWithContent
-	BACnetConfirmedServiceRequest
+    SubscriberProcessIdentifier uint8
+    MonitoredObjectType uint16
+    MonitoredObjectInstanceNumber uint32
+    IssueConfirmedNotificationsType uint16
+    IssueConfirmedNotificationsInstanceNumber uint32
+    LifetimeLength uint8
+    LifetimeSeconds []int8
+    Notifications []IBACnetTagWithContent
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotification interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) ServiceChoice() uint8 {
-	return 0x01
+    return 0x01
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier uint8, monitoredObjectType uint16, monitoredObjectInstanceNumber uint32, issueConfirmedNotificationsType uint16, issueConfirmedNotificationsInstanceNumber uint32, lifetimeLength uint8, lifetimeSeconds []int8, notifications []IBACnetTagWithContent) BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestConfirmedCOVNotification{SubscriberProcessIdentifier: subscriberProcessIdentifier, MonitoredObjectType: monitoredObjectType, MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber, IssueConfirmedNotificationsType: issueConfirmedNotificationsType, IssueConfirmedNotificationsInstanceNumber: issueConfirmedNotificationsInstanceNumber, LifetimeLength: lifetimeLength, LifetimeSeconds: lifetimeSeconds, Notifications: notifications}
+    return &BACnetConfirmedServiceRequestConfirmedCOVNotification{SubscriberProcessIdentifier: subscriberProcessIdentifier, MonitoredObjectType: monitoredObjectType, MonitoredObjectInstanceNumber: monitoredObjectInstanceNumber, IssueConfirmedNotificationsType: issueConfirmedNotificationsType, IssueConfirmedNotificationsInstanceNumber: issueConfirmedNotificationsInstanceNumber, LifetimeLength: lifetimeLength, LifetimeSeconds: lifetimeSeconds, Notifications: notifications}
 }
 
 func CastIBACnetConfirmedServiceRequestConfirmedCOVNotification(structType interface{}) IBACnetConfirmedServiceRequestConfirmedCOVNotification {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedCOVNotification {
-		if iBACnetConfirmedServiceRequestConfirmedCOVNotification, ok := typ.(IBACnetConfirmedServiceRequestConfirmedCOVNotification); ok {
-			return iBACnetConfirmedServiceRequestConfirmedCOVNotification
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedCOVNotification {
+        if iBACnetConfirmedServiceRequestConfirmedCOVNotification, ok := typ.(IBACnetConfirmedServiceRequestConfirmedCOVNotification); ok {
+            return iBACnetConfirmedServiceRequestConfirmedCOVNotification
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestConfirmedCOVNotification(structType interface{}) BACnetConfirmedServiceRequestConfirmedCOVNotification {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedCOVNotification {
-		if sBACnetConfirmedServiceRequestConfirmedCOVNotification, ok := typ.(BACnetConfirmedServiceRequestConfirmedCOVNotification); ok {
-			return sBACnetConfirmedServiceRequestConfirmedCOVNotification
-		}
-		return BACnetConfirmedServiceRequestConfirmedCOVNotification{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedCOVNotification {
+        if sBACnetConfirmedServiceRequestConfirmedCOVNotification, ok := typ.(BACnetConfirmedServiceRequestConfirmedCOVNotification); ok {
+            return sBACnetConfirmedServiceRequestConfirmedCOVNotification
+        }
+        if sBACnetConfirmedServiceRequestConfirmedCOVNotification, ok := typ.(*BACnetConfirmedServiceRequestConfirmedCOVNotification); ok {
+            return *sBACnetConfirmedServiceRequestConfirmedCOVNotification
+        }
+        return BACnetConfirmedServiceRequestConfirmedCOVNotification{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	// Const Field (subscriberProcessIdentifierHeader)
-	lengthInBits += 8
+    // Const Field (subscriberProcessIdentifierHeader)
+    lengthInBits += 8
 
-	// Simple field (subscriberProcessIdentifier)
-	lengthInBits += 8
+    // Simple field (subscriberProcessIdentifier)
+    lengthInBits += 8
 
-	// Const Field (monitoredObjectIdentifierHeader)
-	lengthInBits += 8
+    // Const Field (monitoredObjectIdentifierHeader)
+    lengthInBits += 8
 
-	// Simple field (monitoredObjectType)
-	lengthInBits += 10
+    // Simple field (monitoredObjectType)
+    lengthInBits += 10
 
-	// Simple field (monitoredObjectInstanceNumber)
-	lengthInBits += 22
+    // Simple field (monitoredObjectInstanceNumber)
+    lengthInBits += 22
 
-	// Const Field (issueConfirmedNotificationsHeader)
-	lengthInBits += 8
+    // Const Field (issueConfirmedNotificationsHeader)
+    lengthInBits += 8
 
-	// Simple field (issueConfirmedNotificationsType)
-	lengthInBits += 10
+    // Simple field (issueConfirmedNotificationsType)
+    lengthInBits += 10
 
-	// Simple field (issueConfirmedNotificationsInstanceNumber)
-	lengthInBits += 22
+    // Simple field (issueConfirmedNotificationsInstanceNumber)
+    lengthInBits += 22
 
-	// Const Field (lifetimeHeader)
-	lengthInBits += 5
+    // Const Field (lifetimeHeader)
+    lengthInBits += 5
 
-	// Simple field (lifetimeLength)
-	lengthInBits += 3
+    // Simple field (lifetimeLength)
+    lengthInBits += 3
 
-	// Array field
-	if len(m.LifetimeSeconds) > 0 {
-		lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
-	}
+    // Array field
+    if len(m.LifetimeSeconds) > 0 {
+        lengthInBits += 8 * uint16(len(m.LifetimeSeconds))
+    }
 
-	// Const Field (listOfValuesOpeningTag)
-	lengthInBits += 8
+    // Const Field (listOfValuesOpeningTag)
+    lengthInBits += 8
 
-	// Array field
-	if len(m.Notifications) > 0 {
-		for _, element := range m.Notifications {
-			lengthInBits += element.LengthInBits()
-		}
-	}
+    // Array field
+    if len(m.Notifications) > 0 {
+        for _, element := range m.Notifications {
+            lengthInBits += element.LengthInBits()
+        }
+    }
 
-	// Const Field (listOfValuesClosingTag)
-	lengthInBits += 8
+    // Const Field (listOfValuesClosingTag)
+    lengthInBits += 8
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io *spi.ReadBuffer, len uint16) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Const Field (subscriberProcessIdentifierHeader)
-	subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
-	if _subscriberProcessIdentifierHeaderErr != nil {
-		return nil, errors.New("Error parsing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
-	}
-	if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(subscriberProcessIdentifierHeader)))
-	}
-
-	// Simple Field (subscriberProcessIdentifier)
-	subscriberProcessIdentifier, _subscriberProcessIdentifierErr := io.ReadUint8(8)
-	if _subscriberProcessIdentifierErr != nil {
-		return nil, errors.New("Error parsing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
-	}
-
-	// Const Field (monitoredObjectIdentifierHeader)
-	monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := io.ReadUint8(8)
-	if _monitoredObjectIdentifierHeaderErr != nil {
-		return nil, errors.New("Error parsing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
-	}
-	if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(monitoredObjectIdentifierHeader)))
-	}
-
-	// Simple Field (monitoredObjectType)
-	monitoredObjectType, _monitoredObjectTypeErr := io.ReadUint16(10)
-	if _monitoredObjectTypeErr != nil {
-		return nil, errors.New("Error parsing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
-	}
-
-	// Simple Field (monitoredObjectInstanceNumber)
-	monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := io.ReadUint32(22)
-	if _monitoredObjectInstanceNumberErr != nil {
-		return nil, errors.New("Error parsing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
-	}
-
-	// Const Field (issueConfirmedNotificationsHeader)
-	issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := io.ReadUint8(8)
-	if _issueConfirmedNotificationsHeaderErr != nil {
-		return nil, errors.New("Error parsing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
-	}
-	if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsHeader)))
-	}
-
-	// Simple Field (issueConfirmedNotificationsType)
-	issueConfirmedNotificationsType, _issueConfirmedNotificationsTypeErr := io.ReadUint16(10)
-	if _issueConfirmedNotificationsTypeErr != nil {
-		return nil, errors.New("Error parsing 'issueConfirmedNotificationsType' field " + _issueConfirmedNotificationsTypeErr.Error())
-	}
-
-	// Simple Field (issueConfirmedNotificationsInstanceNumber)
-	issueConfirmedNotificationsInstanceNumber, _issueConfirmedNotificationsInstanceNumberErr := io.ReadUint32(22)
-	if _issueConfirmedNotificationsInstanceNumberErr != nil {
-		return nil, errors.New("Error parsing 'issueConfirmedNotificationsInstanceNumber' field " + _issueConfirmedNotificationsInstanceNumberErr.Error())
-	}
-
-	// Const Field (lifetimeHeader)
-	lifetimeHeader, _lifetimeHeaderErr := io.ReadUint8(5)
-	if _lifetimeHeaderErr != nil {
-		return nil, errors.New("Error parsing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
-	}
-	if lifetimeHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER)) + " but got " + strconv.Itoa(int(lifetimeHeader)))
-	}
-
-	// Simple Field (lifetimeLength)
-	lifetimeLength, _lifetimeLengthErr := io.ReadUint8(3)
-	if _lifetimeLengthErr != nil {
-		return nil, errors.New("Error parsing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
-	}
-
-	// Array field (lifetimeSeconds)
-	// Count array
-	lifetimeSeconds := make([]int8, lifetimeLength)
-	for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
-
-		_item, _err := io.ReadInt8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'lifetimeSeconds' field " + _err.Error())
-		}
-		lifetimeSeconds[curItem] = _item
-	}
-
-	// Const Field (listOfValuesOpeningTag)
-	listOfValuesOpeningTag, _listOfValuesOpeningTagErr := io.ReadUint8(8)
-	if _listOfValuesOpeningTagErr != nil {
-		return nil, errors.New("Error parsing 'listOfValuesOpeningTag' field " + _listOfValuesOpeningTagErr.Error())
-	}
-	if listOfValuesOpeningTag != BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG)) + " but got " + strconv.Itoa(int(listOfValuesOpeningTag)))
-	}
-
-	// Array field (notifications)
-	// Length array
-	notifications := make([]IBACnetTagWithContent, 0)
-	_notificationsLength := uint16(len) - uint16(uint16(18))
-	_notificationsEndPos := io.GetPos() + uint16(_notificationsLength)
-	for io.GetPos() < _notificationsEndPos {
-		_message, _err := BACnetTagWithContentParse(io)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'notifications' field " + _err.Error())
-		}
-		var _item IBACnetTagWithContent
-		_item, _ok := _message.(IBACnetTagWithContent)
-		if !_ok {
-			return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to BACnetTagWithContent")
-		}
-		notifications = append(notifications, _item)
-	}
-
-	// Const Field (listOfValuesClosingTag)
-	listOfValuesClosingTag, _listOfValuesClosingTagErr := io.ReadUint8(8)
-	if _listOfValuesClosingTagErr != nil {
-		return nil, errors.New("Error parsing 'listOfValuesClosingTag' field " + _listOfValuesClosingTagErr.Error())
-	}
-	if listOfValuesClosingTag != BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG)) + " but got " + strconv.Itoa(int(listOfValuesClosingTag)))
-	}
-
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotificationsType, issueConfirmedNotificationsInstanceNumber, lifetimeLength, lifetimeSeconds, notifications), nil
+    // Const Field (subscriberProcessIdentifierHeader)
+    subscriberProcessIdentifierHeader, _subscriberProcessIdentifierHeaderErr := io.ReadUint8(8)
+    if _subscriberProcessIdentifierHeaderErr != nil {
+        return nil, errors.New("Error parsing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+    }
+    if subscriberProcessIdentifierHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_SUBSCRIBERPROCESSIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(subscriberProcessIdentifierHeader)))
+    }
+
+    // Simple Field (subscriberProcessIdentifier)
+    subscriberProcessIdentifier, _subscriberProcessIdentifierErr := io.ReadUint8(8)
+    if _subscriberProcessIdentifierErr != nil {
+        return nil, errors.New("Error parsing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+    }
+
+    // Const Field (monitoredObjectIdentifierHeader)
+    monitoredObjectIdentifierHeader, _monitoredObjectIdentifierHeaderErr := io.ReadUint8(8)
+    if _monitoredObjectIdentifierHeaderErr != nil {
+        return nil, errors.New("Error parsing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+    }
+    if monitoredObjectIdentifierHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_MONITOREDOBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(monitoredObjectIdentifierHeader)))
+    }
+
+    // Simple Field (monitoredObjectType)
+    monitoredObjectType, _monitoredObjectTypeErr := io.ReadUint16(10)
+    if _monitoredObjectTypeErr != nil {
+        return nil, errors.New("Error parsing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
+    }
+
+    // Simple Field (monitoredObjectInstanceNumber)
+    monitoredObjectInstanceNumber, _monitoredObjectInstanceNumberErr := io.ReadUint32(22)
+    if _monitoredObjectInstanceNumberErr != nil {
+        return nil, errors.New("Error parsing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+    }
+
+    // Const Field (issueConfirmedNotificationsHeader)
+    issueConfirmedNotificationsHeader, _issueConfirmedNotificationsHeaderErr := io.ReadUint8(8)
+    if _issueConfirmedNotificationsHeaderErr != nil {
+        return nil, errors.New("Error parsing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+    }
+    if issueConfirmedNotificationsHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_ISSUECONFIRMEDNOTIFICATIONSHEADER)) + " but got " + strconv.Itoa(int(issueConfirmedNotificationsHeader)))
+    }
+
+    // Simple Field (issueConfirmedNotificationsType)
+    issueConfirmedNotificationsType, _issueConfirmedNotificationsTypeErr := io.ReadUint16(10)
+    if _issueConfirmedNotificationsTypeErr != nil {
+        return nil, errors.New("Error parsing 'issueConfirmedNotificationsType' field " + _issueConfirmedNotificationsTypeErr.Error())
+    }
+
+    // Simple Field (issueConfirmedNotificationsInstanceNumber)
+    issueConfirmedNotificationsInstanceNumber, _issueConfirmedNotificationsInstanceNumberErr := io.ReadUint32(22)
+    if _issueConfirmedNotificationsInstanceNumberErr != nil {
+        return nil, errors.New("Error parsing 'issueConfirmedNotificationsInstanceNumber' field " + _issueConfirmedNotificationsInstanceNumberErr.Error())
+    }
+
+    // Const Field (lifetimeHeader)
+    lifetimeHeader, _lifetimeHeaderErr := io.ReadUint8(5)
+    if _lifetimeHeaderErr != nil {
+        return nil, errors.New("Error parsing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+    }
+    if lifetimeHeader != BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_LIFETIMEHEADER)) + " but got " + strconv.Itoa(int(lifetimeHeader)))
+    }
+
+    // Simple Field (lifetimeLength)
+    lifetimeLength, _lifetimeLengthErr := io.ReadUint8(3)
+    if _lifetimeLengthErr != nil {
+        return nil, errors.New("Error parsing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
+    }
+
+    // Array field (lifetimeSeconds)
+    // Count array
+    lifetimeSeconds := make([]int8, lifetimeLength)
+    for curItem := uint16(0); curItem < uint16(lifetimeLength); curItem++ {
+
+        _item, _err := io.ReadInt8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'lifetimeSeconds' field " + _err.Error())
+        }
+        lifetimeSeconds[curItem] = _item
+    }
+
+    // Const Field (listOfValuesOpeningTag)
+    listOfValuesOpeningTag, _listOfValuesOpeningTagErr := io.ReadUint8(8)
+    if _listOfValuesOpeningTagErr != nil {
+        return nil, errors.New("Error parsing 'listOfValuesOpeningTag' field " + _listOfValuesOpeningTagErr.Error())
+    }
+    if listOfValuesOpeningTag != BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESOPENINGTAG)) + " but got " + strconv.Itoa(int(listOfValuesOpeningTag)))
+    }
+
+    // Array field (notifications)
+    // Length array
+    notifications := make([]IBACnetTagWithContent, 0)
+    _notificationsLength := uint16(len) - uint16(uint16(18))
+    _notificationsEndPos := io.GetPos() + uint16(_notificationsLength)
+    for ;io.GetPos() < _notificationsEndPos; {
+        _message, _err := BACnetTagWithContentParse(io)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'notifications' field " + _err.Error())
+        }
+        var _item IBACnetTagWithContent
+        _item, _ok := _message.(IBACnetTagWithContent)
+        if !_ok {
+            return nil, errors.New("Couldn't cast message of type " + reflect.TypeOf(_item).Name() + " to BACnetTagWithContent")
+        }
+        notifications = append(notifications, _item)
+    }
+
+    // Const Field (listOfValuesClosingTag)
+    listOfValuesClosingTag, _listOfValuesClosingTagErr := io.ReadUint8(8)
+    if _listOfValuesClosingTagErr != nil {
+        return nil, errors.New("Error parsing 'listOfValuesClosingTag' field " + _listOfValuesClosingTagErr.Error())
+    }
+    if listOfValuesClosingTag != BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestConfirmedCOVNotification_LISTOFVALUESCLOSINGTAG)) + " but got " + strconv.Itoa(int(listOfValuesClosingTag)))
+    }
+
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotificationsType, issueConfirmedNotificationsInstanceNumber, lifetimeLength, lifetimeSeconds, notifications), nil
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Const Field (subscriberProcessIdentifierHeader)
-		_subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
-		if _subscriberProcessIdentifierHeaderErr != nil {
-			return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
-		}
-
-		// Simple Field (subscriberProcessIdentifier)
-		subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
-		_subscriberProcessIdentifierErr := io.WriteUint8(8, subscriberProcessIdentifier)
-		if _subscriberProcessIdentifierErr != nil {
-			return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
-		}
-
-		// Const Field (monitoredObjectIdentifierHeader)
-		_monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
-		if _monitoredObjectIdentifierHeaderErr != nil {
-			return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
-		}
-
-		// Simple Field (monitoredObjectType)
-		monitoredObjectType := uint16(m.MonitoredObjectType)
-		_monitoredObjectTypeErr := io.WriteUint16(10, monitoredObjectType)
-		if _monitoredObjectTypeErr != nil {
-			return errors.New("Error serializing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
-		}
-
-		// Simple Field (monitoredObjectInstanceNumber)
-		monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
-		_monitoredObjectInstanceNumberErr := io.WriteUint32(22, monitoredObjectInstanceNumber)
-		if _monitoredObjectInstanceNumberErr != nil {
-			return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
-		}
-
-		// Const Field (issueConfirmedNotificationsHeader)
-		_issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x2C)
-		if _issueConfirmedNotificationsHeaderErr != nil {
-			return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
-		}
-
-		// Simple Field (issueConfirmedNotificationsType)
-		issueConfirmedNotificationsType := uint16(m.IssueConfirmedNotificationsType)
-		_issueConfirmedNotificationsTypeErr := io.WriteUint16(10, issueConfirmedNotificationsType)
-		if _issueConfirmedNotificationsTypeErr != nil {
-			return errors.New("Error serializing 'issueConfirmedNotificationsType' field " + _issueConfirmedNotificationsTypeErr.Error())
-		}
-
-		// Simple Field (issueConfirmedNotificationsInstanceNumber)
-		issueConfirmedNotificationsInstanceNumber := uint32(m.IssueConfirmedNotificationsInstanceNumber)
-		_issueConfirmedNotificationsInstanceNumberErr := io.WriteUint32(22, issueConfirmedNotificationsInstanceNumber)
-		if _issueConfirmedNotificationsInstanceNumberErr != nil {
-			return errors.New("Error serializing 'issueConfirmedNotificationsInstanceNumber' field " + _issueConfirmedNotificationsInstanceNumberErr.Error())
-		}
-
-		// Const Field (lifetimeHeader)
-		_lifetimeHeaderErr := io.WriteUint8(5, 0x07)
-		if _lifetimeHeaderErr != nil {
-			return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
-		}
-
-		// Simple Field (lifetimeLength)
-		lifetimeLength := uint8(m.LifetimeLength)
-		_lifetimeLengthErr := io.WriteUint8(3, lifetimeLength)
-		if _lifetimeLengthErr != nil {
-			return errors.New("Error serializing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
-		}
-
-		// Array Field (lifetimeSeconds)
-		if m.LifetimeSeconds != nil {
-			for _, _element := range m.LifetimeSeconds {
-				_elementErr := io.WriteInt8(8, _element)
-				if _elementErr != nil {
-					return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
-				}
-			}
-		}
-
-		// Const Field (listOfValuesOpeningTag)
-		_listOfValuesOpeningTagErr := io.WriteUint8(8, 0x4E)
-		if _listOfValuesOpeningTagErr != nil {
-			return errors.New("Error serializing 'listOfValuesOpeningTag' field " + _listOfValuesOpeningTagErr.Error())
-		}
-
-		// Array Field (notifications)
-		if m.Notifications != nil {
-			for _, _element := range m.Notifications {
-				_elementErr := _element.Serialize(io)
-				if _elementErr != nil {
-					return errors.New("Error serializing 'notifications' field " + _elementErr.Error())
-				}
-			}
-		}
-
-		// Const Field (listOfValuesClosingTag)
-		_listOfValuesClosingTagErr := io.WriteUint8(8, 0x4F)
-		if _listOfValuesClosingTagErr != nil {
-			return errors.New("Error serializing 'listOfValuesClosingTag' field " + _listOfValuesClosingTagErr.Error())
-		}
-
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+    ser := func() error {
+
+    // Const Field (subscriberProcessIdentifierHeader)
+    _subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
+    if _subscriberProcessIdentifierHeaderErr != nil {
+        return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+    }
+
+    // Simple Field (subscriberProcessIdentifier)
+    subscriberProcessIdentifier := uint8(m.SubscriberProcessIdentifier)
+    _subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
+    if _subscriberProcessIdentifierErr != nil {
+        return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+    }
+
+    // Const Field (monitoredObjectIdentifierHeader)
+    _monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
+    if _monitoredObjectIdentifierHeaderErr != nil {
+        return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+    }
+
+    // Simple Field (monitoredObjectType)
+    monitoredObjectType := uint16(m.MonitoredObjectType)
+    _monitoredObjectTypeErr := io.WriteUint16(10, (monitoredObjectType))
+    if _monitoredObjectTypeErr != nil {
+        return errors.New("Error serializing 'monitoredObjectType' field " + _monitoredObjectTypeErr.Error())
+    }
+
+    // Simple Field (monitoredObjectInstanceNumber)
+    monitoredObjectInstanceNumber := uint32(m.MonitoredObjectInstanceNumber)
+    _monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
+    if _monitoredObjectInstanceNumberErr != nil {
+        return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+    }
+
+    // Const Field (issueConfirmedNotificationsHeader)
+    _issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x2C)
+    if _issueConfirmedNotificationsHeaderErr != nil {
+        return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+    }
+
+    // Simple Field (issueConfirmedNotificationsType)
+    issueConfirmedNotificationsType := uint16(m.IssueConfirmedNotificationsType)
+    _issueConfirmedNotificationsTypeErr := io.WriteUint16(10, (issueConfirmedNotificationsType))
+    if _issueConfirmedNotificationsTypeErr != nil {
+        return errors.New("Error serializing 'issueConfirmedNotificationsType' field " + _issueConfirmedNotificationsTypeErr.Error())
+    }
+
+    // Simple Field (issueConfirmedNotificationsInstanceNumber)
+    issueConfirmedNotificationsInstanceNumber := uint32(m.IssueConfirmedNotificationsInstanceNumber)
+    _issueConfirmedNotificationsInstanceNumberErr := io.WriteUint32(22, (issueConfirmedNotificationsInstanceNumber))
+    if _issueConfirmedNotificationsInstanceNumberErr != nil {
+        return errors.New("Error serializing 'issueConfirmedNotificationsInstanceNumber' field " + _issueConfirmedNotificationsInstanceNumberErr.Error())
+    }
+
+    // Const Field (lifetimeHeader)
+    _lifetimeHeaderErr := io.WriteUint8(5, 0x07)
+    if _lifetimeHeaderErr != nil {
+        return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+    }
+
+    // Simple Field (lifetimeLength)
+    lifetimeLength := uint8(m.LifetimeLength)
+    _lifetimeLengthErr := io.WriteUint8(3, (lifetimeLength))
+    if _lifetimeLengthErr != nil {
+        return errors.New("Error serializing 'lifetimeLength' field " + _lifetimeLengthErr.Error())
+    }
+
+    // Array Field (lifetimeSeconds)
+    if m.LifetimeSeconds != nil {
+        for _, _element := range m.LifetimeSeconds {
+            _elementErr := io.WriteInt8(8, _element)
+            if _elementErr != nil {
+                return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
+            }
+        }
+    }
+
+    // Const Field (listOfValuesOpeningTag)
+    _listOfValuesOpeningTagErr := io.WriteUint8(8, 0x4E)
+    if _listOfValuesOpeningTagErr != nil {
+        return errors.New("Error serializing 'listOfValuesOpeningTag' field " + _listOfValuesOpeningTagErr.Error())
+    }
+
+    // Array Field (notifications)
+    if m.Notifications != nil {
+        for _, _element := range m.Notifications {
+            _elementErr := _element.Serialize(io)
+            if _elementErr != nil {
+                return errors.New("Error serializing 'notifications' field " + _elementErr.Error())
+            }
+        }
+    }
+
+    // Const Field (listOfValuesClosingTag)
+    _listOfValuesClosingTagErr := io.WriteUint8(8, 0x4F)
+    if _listOfValuesClosingTagErr != nil {
+        return errors.New("Error serializing 'listOfValuesClosingTag' field " + _listOfValuesClosingTagErr.Error())
+    }
+
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
index ac29276..765fa14 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) ServiceChoice() uint8 {
-	return 0x1F
+    return 0x1F
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple{}
+    return &BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple{}
 }
 
 func CastIBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(structType interface{}) IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple {
-		if iBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple, ok := typ.(IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple); ok {
-			return iBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple {
+        if iBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple, ok := typ.(IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple); ok {
+            return iBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(structType interface{}) BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple {
-		if sBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple, ok := typ.(BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple); ok {
-			return sBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
-		}
-		return BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple {
+        if sBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple, ok := typ.(BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple); ok {
+            return sBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
+        }
+        if sBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple, ok := typ.(*BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple); ok {
+            return *sBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple
+        }
+        return BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(), nil
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
index bd8bf0e..81c8022 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedEventNotification struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedEventNotification interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestConfirmedEventNotification) ServiceChoice() uint8 {
-	return 0x02
+    return 0x02
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedEventNotification) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestConfirmedEventNotification() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestConfirmedEventNotification{}
+    return &BACnetConfirmedServiceRequestConfirmedEventNotification{}
 }
 
 func CastIBACnetConfirmedServiceRequestConfirmedEventNotification(structType interface{}) IBACnetConfirmedServiceRequestConfirmedEventNotification {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedEventNotification {
-		if iBACnetConfirmedServiceRequestConfirmedEventNotification, ok := typ.(IBACnetConfirmedServiceRequestConfirmedEventNotification); ok {
-			return iBACnetConfirmedServiceRequestConfirmedEventNotification
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedEventNotification {
+        if iBACnetConfirmedServiceRequestConfirmedEventNotification, ok := typ.(IBACnetConfirmedServiceRequestConfirmedEventNotification); ok {
+            return iBACnetConfirmedServiceRequestConfirmedEventNotification
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestConfirmedEventNotification(structType interface{}) BACnetConfirmedServiceRequestConfirmedEventNotification {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedEventNotification {
-		if sBACnetConfirmedServiceRequestConfirmedEventNotification, ok := typ.(BACnetConfirmedServiceRequestConfirmedEventNotification); ok {
-			return sBACnetConfirmedServiceRequestConfirmedEventNotification
-		}
-		return BACnetConfirmedServiceRequestConfirmedEventNotification{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedEventNotification {
+        if sBACnetConfirmedServiceRequestConfirmedEventNotification, ok := typ.(BACnetConfirmedServiceRequestConfirmedEventNotification); ok {
+            return sBACnetConfirmedServiceRequestConfirmedEventNotification
+        }
+        if sBACnetConfirmedServiceRequestConfirmedEventNotification, ok := typ.(*BACnetConfirmedServiceRequestConfirmedEventNotification); ok {
+            return *sBACnetConfirmedServiceRequestConfirmedEventNotification
+        }
+        return BACnetConfirmedServiceRequestConfirmedEventNotification{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedEventNotification) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedEventNotification) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedEventNotificationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestConfirmedEventNotification(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestConfirmedEventNotification(), nil
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedEventNotification) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
index e36c12a..e141b99 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedPrivateTransfer struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedPrivateTransfer interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) ServiceChoice() uint8 {
-	return 0x12
+    return 0x12
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestConfirmedPrivateTransfer{}
+    return &BACnetConfirmedServiceRequestConfirmedPrivateTransfer{}
 }
 
 func CastIBACnetConfirmedServiceRequestConfirmedPrivateTransfer(structType interface{}) IBACnetConfirmedServiceRequestConfirmedPrivateTransfer {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedPrivateTransfer {
-		if iBACnetConfirmedServiceRequestConfirmedPrivateTransfer, ok := typ.(IBACnetConfirmedServiceRequestConfirmedPrivateTransfer); ok {
-			return iBACnetConfirmedServiceRequestConfirmedPrivateTransfer
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedPrivateTransfer {
+        if iBACnetConfirmedServiceRequestConfirmedPrivateTransfer, ok := typ.(IBACnetConfirmedServiceRequestConfirmedPrivateTransfer); ok {
+            return iBACnetConfirmedServiceRequestConfirmedPrivateTransfer
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestConfirmedPrivateTransfer(structType interface{}) BACnetConfirmedServiceRequestConfirmedPrivateTransfer {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedPrivateTransfer {
-		if sBACnetConfirmedServiceRequestConfirmedPrivateTransfer, ok := typ.(BACnetConfirmedServiceRequestConfirmedPrivateTransfer); ok {
-			return sBACnetConfirmedServiceRequestConfirmedPrivateTransfer
-		}
-		return BACnetConfirmedServiceRequestConfirmedPrivateTransfer{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedPrivateTransfer {
+        if sBACnetConfirmedServiceRequestConfirmedPrivateTransfer, ok := typ.(BACnetConfirmedServiceRequestConfirmedPrivateTransfer); ok {
+            return sBACnetConfirmedServiceRequestConfirmedPrivateTransfer
+        }
+        if sBACnetConfirmedServiceRequestConfirmedPrivateTransfer, ok := typ.(*BACnetConfirmedServiceRequestConfirmedPrivateTransfer); ok {
+            return *sBACnetConfirmedServiceRequestConfirmedPrivateTransfer
+        }
+        return BACnetConfirmedServiceRequestConfirmedPrivateTransfer{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer(), nil
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
index e2a45aa..c97c998 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestConfirmedTextMessage struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedTextMessage interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestConfirmedTextMessage) ServiceChoice() uint8 {
-	return 0x13
+    return 0x13
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedTextMessage) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestConfirmedTextMessage() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestConfirmedTextMessage{}
+    return &BACnetConfirmedServiceRequestConfirmedTextMessage{}
 }
 
 func CastIBACnetConfirmedServiceRequestConfirmedTextMessage(structType interface{}) IBACnetConfirmedServiceRequestConfirmedTextMessage {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedTextMessage {
-		if iBACnetConfirmedServiceRequestConfirmedTextMessage, ok := typ.(IBACnetConfirmedServiceRequestConfirmedTextMessage); ok {
-			return iBACnetConfirmedServiceRequestConfirmedTextMessage
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestConfirmedTextMessage {
+        if iBACnetConfirmedServiceRequestConfirmedTextMessage, ok := typ.(IBACnetConfirmedServiceRequestConfirmedTextMessage); ok {
+            return iBACnetConfirmedServiceRequestConfirmedTextMessage
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestConfirmedTextMessage(structType interface{}) BACnetConfirmedServiceRequestConfirmedTextMessage {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedTextMessage {
-		if sBACnetConfirmedServiceRequestConfirmedTextMessage, ok := typ.(BACnetConfirmedServiceRequestConfirmedTextMessage); ok {
-			return sBACnetConfirmedServiceRequestConfirmedTextMessage
-		}
-		return BACnetConfirmedServiceRequestConfirmedTextMessage{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestConfirmedTextMessage {
+        if sBACnetConfirmedServiceRequestConfirmedTextMessage, ok := typ.(BACnetConfirmedServiceRequestConfirmedTextMessage); ok {
+            return sBACnetConfirmedServiceRequestConfirmedTextMessage
+        }
+        if sBACnetConfirmedServiceRequestConfirmedTextMessage, ok := typ.(*BACnetConfirmedServiceRequestConfirmedTextMessage); ok {
+            return *sBACnetConfirmedServiceRequestConfirmedTextMessage
+        }
+        return BACnetConfirmedServiceRequestConfirmedTextMessage{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedTextMessage) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedTextMessage) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestConfirmedTextMessageParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestConfirmedTextMessage(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestConfirmedTextMessage(), nil
 }
 
 func (m BACnetConfirmedServiceRequestConfirmedTextMessage) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
index 8b9a8f5..6df1941 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestCreateObject struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestCreateObject interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestCreateObject) ServiceChoice() uint8 {
-	return 0x0A
+    return 0x0A
 }
 
 func (m BACnetConfirmedServiceRequestCreateObject) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestCreateObject() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestCreateObject{}
+    return &BACnetConfirmedServiceRequestCreateObject{}
 }
 
 func CastIBACnetConfirmedServiceRequestCreateObject(structType interface{}) IBACnetConfirmedServiceRequestCreateObject {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestCreateObject {
-		if iBACnetConfirmedServiceRequestCreateObject, ok := typ.(IBACnetConfirmedServiceRequestCreateObject); ok {
-			return iBACnetConfirmedServiceRequestCreateObject
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestCreateObject {
+        if iBACnetConfirmedServiceRequestCreateObject, ok := typ.(IBACnetConfirmedServiceRequestCreateObject); ok {
+            return iBACnetConfirmedServiceRequestCreateObject
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestCreateObject(structType interface{}) BACnetConfirmedServiceRequestCreateObject {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestCreateObject {
-		if sBACnetConfirmedServiceRequestCreateObject, ok := typ.(BACnetConfirmedServiceRequestCreateObject); ok {
-			return sBACnetConfirmedServiceRequestCreateObject
-		}
-		return BACnetConfirmedServiceRequestCreateObject{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestCreateObject {
+        if sBACnetConfirmedServiceRequestCreateObject, ok := typ.(BACnetConfirmedServiceRequestCreateObject); ok {
+            return sBACnetConfirmedServiceRequestCreateObject
+        }
+        if sBACnetConfirmedServiceRequestCreateObject, ok := typ.(*BACnetConfirmedServiceRequestCreateObject); ok {
+            return *sBACnetConfirmedServiceRequestCreateObject
+        }
+        return BACnetConfirmedServiceRequestCreateObject{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestCreateObject) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestCreateObject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestCreateObjectParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestCreateObject(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestCreateObject(), nil
 }
 
 func (m BACnetConfirmedServiceRequestCreateObject) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
index 336b7b1..621d73f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestDeleteObject struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeleteObject interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestDeleteObject) ServiceChoice() uint8 {
-	return 0x0B
+    return 0x0B
 }
 
 func (m BACnetConfirmedServiceRequestDeleteObject) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestDeleteObject() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestDeleteObject{}
+    return &BACnetConfirmedServiceRequestDeleteObject{}
 }
 
 func CastIBACnetConfirmedServiceRequestDeleteObject(structType interface{}) IBACnetConfirmedServiceRequestDeleteObject {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestDeleteObject {
-		if iBACnetConfirmedServiceRequestDeleteObject, ok := typ.(IBACnetConfirmedServiceRequestDeleteObject); ok {
-			return iBACnetConfirmedServiceRequestDeleteObject
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestDeleteObject {
+        if iBACnetConfirmedServiceRequestDeleteObject, ok := typ.(IBACnetConfirmedServiceRequestDeleteObject); ok {
+            return iBACnetConfirmedServiceRequestDeleteObject
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestDeleteObject(structType interface{}) BACnetConfirmedServiceRequestDeleteObject {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestDeleteObject {
-		if sBACnetConfirmedServiceRequestDeleteObject, ok := typ.(BACnetConfirmedServiceRequestDeleteObject); ok {
-			return sBACnetConfirmedServiceRequestDeleteObject
-		}
-		return BACnetConfirmedServiceRequestDeleteObject{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestDeleteObject {
+        if sBACnetConfirmedServiceRequestDeleteObject, ok := typ.(BACnetConfirmedServiceRequestDeleteObject); ok {
+            return sBACnetConfirmedServiceRequestDeleteObject
+        }
+        if sBACnetConfirmedServiceRequestDeleteObject, ok := typ.(*BACnetConfirmedServiceRequestDeleteObject); ok {
+            return *sBACnetConfirmedServiceRequestDeleteObject
+        }
+        return BACnetConfirmedServiceRequestDeleteObject{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestDeleteObject) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestDeleteObject) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestDeleteObjectParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestDeleteObject(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestDeleteObject(), nil
 }
 
 func (m BACnetConfirmedServiceRequestDeleteObject) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
index 36e3ae2..3056872 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestDeviceCommunicationControl struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeviceCommunicationControl interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) ServiceChoice() uint8 {
-	return 0x11
+    return 0x11
 }
 
 func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestDeviceCommunicationControl() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestDeviceCommunicationControl{}
+    return &BACnetConfirmedServiceRequestDeviceCommunicationControl{}
 }
 
 func CastIBACnetConfirmedServiceRequestDeviceCommunicationControl(structType interface{}) IBACnetConfirmedServiceRequestDeviceCommunicationControl {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestDeviceCommunicationControl {
-		if iBACnetConfirmedServiceRequestDeviceCommunicationControl, ok := typ.(IBACnetConfirmedServiceRequestDeviceCommunicationControl); ok {
-			return iBACnetConfirmedServiceRequestDeviceCommunicationControl
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestDeviceCommunicationControl {
+        if iBACnetConfirmedServiceRequestDeviceCommunicationControl, ok := typ.(IBACnetConfirmedServiceRequestDeviceCommunicationControl); ok {
+            return iBACnetConfirmedServiceRequestDeviceCommunicationControl
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestDeviceCommunicationControl(structType interface{}) BACnetConfirmedServiceRequestDeviceCommunicationControl {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestDeviceCommunicationControl {
-		if sBACnetConfirmedServiceRequestDeviceCommunicationControl, ok := typ.(BACnetConfirmedServiceRequestDeviceCommunicationControl); ok {
-			return sBACnetConfirmedServiceRequestDeviceCommunicationControl
-		}
-		return BACnetConfirmedServiceRequestDeviceCommunicationControl{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestDeviceCommunicationControl {
+        if sBACnetConfirmedServiceRequestDeviceCommunicationControl, ok := typ.(BACnetConfirmedServiceRequestDeviceCommunicationControl); ok {
+            return sBACnetConfirmedServiceRequestDeviceCommunicationControl
+        }
+        if sBACnetConfirmedServiceRequestDeviceCommunicationControl, ok := typ.(*BACnetConfirmedServiceRequestDeviceCommunicationControl); ok {
+            return *sBACnetConfirmedServiceRequestDeviceCommunicationControl
+        }
+        return BACnetConfirmedServiceRequestDeviceCommunicationControl{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestDeviceCommunicationControl(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestDeviceCommunicationControl(), nil
 }
 
 func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
index fcd4fcd..9c91b5f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestGetEnrollmentSummary struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEnrollmentSummary interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) ServiceChoice() uint8 {
-	return 0x04
+    return 0x04
 }
 
 func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestGetEnrollmentSummary() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestGetEnrollmentSummary{}
+    return &BACnetConfirmedServiceRequestGetEnrollmentSummary{}
 }
 
 func CastIBACnetConfirmedServiceRequestGetEnrollmentSummary(structType interface{}) IBACnetConfirmedServiceRequestGetEnrollmentSummary {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestGetEnrollmentSummary {
-		if iBACnetConfirmedServiceRequestGetEnrollmentSummary, ok := typ.(IBACnetConfirmedServiceRequestGetEnrollmentSummary); ok {
-			return iBACnetConfirmedServiceRequestGetEnrollmentSummary
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestGetEnrollmentSummary {
+        if iBACnetConfirmedServiceRequestGetEnrollmentSummary, ok := typ.(IBACnetConfirmedServiceRequestGetEnrollmentSummary); ok {
+            return iBACnetConfirmedServiceRequestGetEnrollmentSummary
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestGetEnrollmentSummary(structType interface{}) BACnetConfirmedServiceRequestGetEnrollmentSummary {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestGetEnrollmentSummary {
-		if sBACnetConfirmedServiceRequestGetEnrollmentSummary, ok := typ.(BACnetConfirmedServiceRequestGetEnrollmentSummary); ok {
-			return sBACnetConfirmedServiceRequestGetEnrollmentSummary
-		}
-		return BACnetConfirmedServiceRequestGetEnrollmentSummary{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestGetEnrollmentSummary {
+        if sBACnetConfirmedServiceRequestGetEnrollmentSummary, ok := typ.(BACnetConfirmedServiceRequestGetEnrollmentSummary); ok {
+            return sBACnetConfirmedServiceRequestGetEnrollmentSummary
+        }
+        if sBACnetConfirmedServiceRequestGetEnrollmentSummary, ok := typ.(*BACnetConfirmedServiceRequestGetEnrollmentSummary); ok {
+            return *sBACnetConfirmedServiceRequestGetEnrollmentSummary
+        }
+        return BACnetConfirmedServiceRequestGetEnrollmentSummary{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestGetEnrollmentSummary(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestGetEnrollmentSummary(), nil
 }
 
 func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
index ecccc5a..2f6dc20 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestGetEventInformation struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEventInformation interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestGetEventInformation) ServiceChoice() uint8 {
-	return 0x1D
+    return 0x1D
 }
 
 func (m BACnetConfirmedServiceRequestGetEventInformation) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestGetEventInformation() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestGetEventInformation{}
+    return &BACnetConfirmedServiceRequestGetEventInformation{}
 }
 
 func CastIBACnetConfirmedServiceRequestGetEventInformation(structType interface{}) IBACnetConfirmedServiceRequestGetEventInformation {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestGetEventInformation {
-		if iBACnetConfirmedServiceRequestGetEventInformation, ok := typ.(IBACnetConfirmedServiceRequestGetEventInformation); ok {
-			return iBACnetConfirmedServiceRequestGetEventInformation
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestGetEventInformation {
+        if iBACnetConfirmedServiceRequestGetEventInformation, ok := typ.(IBACnetConfirmedServiceRequestGetEventInformation); ok {
+            return iBACnetConfirmedServiceRequestGetEventInformation
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestGetEventInformation(structType interface{}) BACnetConfirmedServiceRequestGetEventInformation {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestGetEventInformation {
-		if sBACnetConfirmedServiceRequestGetEventInformation, ok := typ.(BACnetConfirmedServiceRequestGetEventInformation); ok {
-			return sBACnetConfirmedServiceRequestGetEventInformation
-		}
-		return BACnetConfirmedServiceRequestGetEventInformation{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestGetEventInformation {
+        if sBACnetConfirmedServiceRequestGetEventInformation, ok := typ.(BACnetConfirmedServiceRequestGetEventInformation); ok {
+            return sBACnetConfirmedServiceRequestGetEventInformation
+        }
+        if sBACnetConfirmedServiceRequestGetEventInformation, ok := typ.(*BACnetConfirmedServiceRequestGetEventInformation); ok {
+            return *sBACnetConfirmedServiceRequestGetEventInformation
+        }
+        return BACnetConfirmedServiceRequestGetEventInformation{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestGetEventInformation) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestGetEventInformation) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestGetEventInformationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestGetEventInformation(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestGetEventInformation(), nil
 }
 
 func (m BACnetConfirmedServiceRequestGetEventInformation) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
index 87327f6..43a29ea 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestLifeSafetyOperation struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestLifeSafetyOperation interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestLifeSafetyOperation) ServiceChoice() uint8 {
-	return 0x1B
+    return 0x1B
 }
 
 func (m BACnetConfirmedServiceRequestLifeSafetyOperation) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestLifeSafetyOperation() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestLifeSafetyOperation{}
+    return &BACnetConfirmedServiceRequestLifeSafetyOperation{}
 }
 
 func CastIBACnetConfirmedServiceRequestLifeSafetyOperation(structType interface{}) IBACnetConfirmedServiceRequestLifeSafetyOperation {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestLifeSafetyOperation {
-		if iBACnetConfirmedServiceRequestLifeSafetyOperation, ok := typ.(IBACnetConfirmedServiceRequestLifeSafetyOperation); ok {
-			return iBACnetConfirmedServiceRequestLifeSafetyOperation
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestLifeSafetyOperation {
+        if iBACnetConfirmedServiceRequestLifeSafetyOperation, ok := typ.(IBACnetConfirmedServiceRequestLifeSafetyOperation); ok {
+            return iBACnetConfirmedServiceRequestLifeSafetyOperation
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestLifeSafetyOperation(structType interface{}) BACnetConfirmedServiceRequestLifeSafetyOperation {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestLifeSafetyOperation {
-		if sBACnetConfirmedServiceRequestLifeSafetyOperation, ok := typ.(BACnetConfirmedServiceRequestLifeSafetyOperation); ok {
-			return sBACnetConfirmedServiceRequestLifeSafetyOperation
-		}
-		return BACnetConfirmedServiceRequestLifeSafetyOperation{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestLifeSafetyOperation {
+        if sBACnetConfirmedServiceRequestLifeSafetyOperation, ok := typ.(BACnetConfirmedServiceRequestLifeSafetyOperation); ok {
+            return sBACnetConfirmedServiceRequestLifeSafetyOperation
+        }
+        if sBACnetConfirmedServiceRequestLifeSafetyOperation, ok := typ.(*BACnetConfirmedServiceRequestLifeSafetyOperation); ok {
+            return *sBACnetConfirmedServiceRequestLifeSafetyOperation
+        }
+        return BACnetConfirmedServiceRequestLifeSafetyOperation{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestLifeSafetyOperation) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestLifeSafetyOperation) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestLifeSafetyOperationParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestLifeSafetyOperation(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestLifeSafetyOperation(), nil
 }
 
 func (m BACnetConfirmedServiceRequestLifeSafetyOperation) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
index b24041c..5e653e1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -19,9 +19,9 @@
 package model
 
 import (
-	"errors"
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
-	"strconv"
+    "errors"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
+    "strconv"
 )
 
 // Constant values.
@@ -30,183 +30,186 @@ const BACnetConfirmedServiceRequestReadProperty_PROPERTYIDENTIFIERHEADER uint8 =
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReadProperty struct {
-	ObjectType               uint16
-	ObjectInstanceNumber     uint32
-	PropertyIdentifierLength uint8
-	PropertyIdentifier       []int8
-	BACnetConfirmedServiceRequest
+    ObjectType uint16
+    ObjectInstanceNumber uint32
+    PropertyIdentifierLength uint8
+    PropertyIdentifier []int8
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadProperty interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestReadProperty) ServiceChoice() uint8 {
-	return 0x0C
+    return 0x0C
 }
 
 func (m BACnetConfirmedServiceRequestReadProperty) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestReadProperty(objectType uint16, objectInstanceNumber uint32, propertyIdentifierLength uint8, propertyIdentifier []int8) BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestReadProperty{ObjectType: objectType, ObjectInstanceNumber: objectInstanceNumber, PropertyIdentifierLength: propertyIdentifierLength, PropertyIdentifier: propertyIdentifier}
+    return &BACnetConfirmedServiceRequestReadProperty{ObjectType: objectType, ObjectInstanceNumber: objectInstanceNumber, PropertyIdentifierLength: propertyIdentifierLength, PropertyIdentifier: propertyIdentifier}
 }
 
 func CastIBACnetConfirmedServiceRequestReadProperty(structType interface{}) IBACnetConfirmedServiceRequestReadProperty {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReadProperty {
-		if iBACnetConfirmedServiceRequestReadProperty, ok := typ.(IBACnetConfirmedServiceRequestReadProperty); ok {
-			return iBACnetConfirmedServiceRequestReadProperty
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReadProperty {
+        if iBACnetConfirmedServiceRequestReadProperty, ok := typ.(IBACnetConfirmedServiceRequestReadProperty); ok {
+            return iBACnetConfirmedServiceRequestReadProperty
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestReadProperty(structType interface{}) BACnetConfirmedServiceRequestReadProperty {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReadProperty {
-		if sBACnetConfirmedServiceRequestReadProperty, ok := typ.(BACnetConfirmedServiceRequestReadProperty); ok {
-			return sBACnetConfirmedServiceRequestReadProperty
-		}
-		return BACnetConfirmedServiceRequestReadProperty{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReadProperty {
+        if sBACnetConfirmedServiceRequestReadProperty, ok := typ.(BACnetConfirmedServiceRequestReadProperty); ok {
+            return sBACnetConfirmedServiceRequestReadProperty
+        }
+        if sBACnetConfirmedServiceRequestReadProperty, ok := typ.(*BACnetConfirmedServiceRequestReadProperty); ok {
+            return *sBACnetConfirmedServiceRequestReadProperty
+        }
+        return BACnetConfirmedServiceRequestReadProperty{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestReadProperty) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	// Const Field (objectIdentifierHeader)
-	lengthInBits += 8
+    // Const Field (objectIdentifierHeader)
+    lengthInBits += 8
 
-	// Simple field (objectType)
-	lengthInBits += 10
+    // Simple field (objectType)
+    lengthInBits += 10
 
-	// Simple field (objectInstanceNumber)
-	lengthInBits += 22
+    // Simple field (objectInstanceNumber)
+    lengthInBits += 22
 
-	// Const Field (propertyIdentifierHeader)
-	lengthInBits += 5
+    // Const Field (propertyIdentifierHeader)
+    lengthInBits += 5
 
-	// Simple field (propertyIdentifierLength)
-	lengthInBits += 3
+    // Simple field (propertyIdentifierLength)
+    lengthInBits += 3
 
-	// Array field
-	if len(m.PropertyIdentifier) > 0 {
-		lengthInBits += 8 * uint16(len(m.PropertyIdentifier))
-	}
+    // Array field
+    if len(m.PropertyIdentifier) > 0 {
+        lengthInBits += 8 * uint16(len(m.PropertyIdentifier))
+    }
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestReadProperty) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReadPropertyParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Const Field (objectIdentifierHeader)
-	objectIdentifierHeader, _objectIdentifierHeaderErr := io.ReadUint8(8)
-	if _objectIdentifierHeaderErr != nil {
-		return nil, errors.New("Error parsing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
-	}
-	if objectIdentifierHeader != BACnetConfirmedServiceRequestReadProperty_OBJECTIDENTIFIERHEADER {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestReadProperty_OBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(objectIdentifierHeader)))
-	}
-
-	// Simple Field (objectType)
-	objectType, _objectTypeErr := io.ReadUint16(10)
-	if _objectTypeErr != nil {
-		return nil, errors.New("Error parsing 'objectType' field " + _objectTypeErr.Error())
-	}
-
-	// Simple Field (objectInstanceNumber)
-	objectInstanceNumber, _objectInstanceNumberErr := io.ReadUint32(22)
-	if _objectInstanceNumberErr != nil {
-		return nil, errors.New("Error parsing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
-	}
-
-	// Const Field (propertyIdentifierHeader)
-	propertyIdentifierHeader, _propertyIdentifierHeaderErr := io.ReadUint8(5)
-	if _propertyIdentifierHeaderErr != nil {
-		return nil, errors.New("Error parsing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
-	}
-	if propertyIdentifierHeader != BACnetConfirmedServiceRequestReadProperty_PROPERTYIDENTIFIERHEADER {
-		return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestReadProperty_PROPERTYIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(propertyIdentifierHeader)))
-	}
-
-	// Simple Field (propertyIdentifierLength)
-	propertyIdentifierLength, _propertyIdentifierLengthErr := io.ReadUint8(3)
-	if _propertyIdentifierLengthErr != nil {
-		return nil, errors.New("Error parsing 'propertyIdentifierLength' field " + _propertyIdentifierLengthErr.Error())
-	}
-
-	// Array field (propertyIdentifier)
-	// Count array
-	propertyIdentifier := make([]int8, propertyIdentifierLength)
-	for curItem := uint16(0); curItem < uint16(propertyIdentifierLength); curItem++ {
-
-		_item, _err := io.ReadInt8(8)
-		if _err != nil {
-			return nil, errors.New("Error parsing 'propertyIdentifier' field " + _err.Error())
-		}
-		propertyIdentifier[curItem] = _item
-	}
-
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestReadProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier), nil
+    // Const Field (objectIdentifierHeader)
+    objectIdentifierHeader, _objectIdentifierHeaderErr := io.ReadUint8(8)
+    if _objectIdentifierHeaderErr != nil {
+        return nil, errors.New("Error parsing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
+    }
+    if objectIdentifierHeader != BACnetConfirmedServiceRequestReadProperty_OBJECTIDENTIFIERHEADER {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestReadProperty_OBJECTIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(objectIdentifierHeader)))
+    }
+
+    // Simple Field (objectType)
+    objectType, _objectTypeErr := io.ReadUint16(10)
+    if _objectTypeErr != nil {
+        return nil, errors.New("Error parsing 'objectType' field " + _objectTypeErr.Error())
+    }
+
+    // Simple Field (objectInstanceNumber)
+    objectInstanceNumber, _objectInstanceNumberErr := io.ReadUint32(22)
+    if _objectInstanceNumberErr != nil {
+        return nil, errors.New("Error parsing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
+    }
+
+    // Const Field (propertyIdentifierHeader)
+    propertyIdentifierHeader, _propertyIdentifierHeaderErr := io.ReadUint8(5)
+    if _propertyIdentifierHeaderErr != nil {
+        return nil, errors.New("Error parsing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
+    }
+    if propertyIdentifierHeader != BACnetConfirmedServiceRequestReadProperty_PROPERTYIDENTIFIERHEADER {
+        return nil, errors.New("Expected constant value " + strconv.Itoa(int(BACnetConfirmedServiceRequestReadProperty_PROPERTYIDENTIFIERHEADER)) + " but got " + strconv.Itoa(int(propertyIdentifierHeader)))
+    }
+
+    // Simple Field (propertyIdentifierLength)
+    propertyIdentifierLength, _propertyIdentifierLengthErr := io.ReadUint8(3)
+    if _propertyIdentifierLengthErr != nil {
+        return nil, errors.New("Error parsing 'propertyIdentifierLength' field " + _propertyIdentifierLengthErr.Error())
+    }
+
+    // Array field (propertyIdentifier)
+    // Count array
+    propertyIdentifier := make([]int8, propertyIdentifierLength)
+    for curItem := uint16(0); curItem < uint16(propertyIdentifierLength); curItem++ {
+
+        _item, _err := io.ReadInt8(8)
+        if _err != nil {
+            return nil, errors.New("Error parsing 'propertyIdentifier' field " + _err.Error())
+        }
+        propertyIdentifier[curItem] = _item
+    }
+
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestReadProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier), nil
 }
 
 func (m BACnetConfirmedServiceRequestReadProperty) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
-
-		// Const Field (objectIdentifierHeader)
-		_objectIdentifierHeaderErr := io.WriteUint8(8, 0x0C)
-		if _objectIdentifierHeaderErr != nil {
-			return errors.New("Error serializing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
-		}
-
-		// Simple Field (objectType)
-		objectType := uint16(m.ObjectType)
-		_objectTypeErr := io.WriteUint16(10, objectType)
-		if _objectTypeErr != nil {
-			return errors.New("Error serializing 'objectType' field " + _objectTypeErr.Error())
-		}
-
-		// Simple Field (objectInstanceNumber)
-		objectInstanceNumber := uint32(m.ObjectInstanceNumber)
-		_objectInstanceNumberErr := io.WriteUint32(22, objectInstanceNumber)
-		if _objectInstanceNumberErr != nil {
-			return errors.New("Error serializing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
-		}
-
-		// Const Field (propertyIdentifierHeader)
-		_propertyIdentifierHeaderErr := io.WriteUint8(5, 0x03)
-		if _propertyIdentifierHeaderErr != nil {
-			return errors.New("Error serializing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
-		}
-
-		// Simple Field (propertyIdentifierLength)
-		propertyIdentifierLength := uint8(m.PropertyIdentifierLength)
-		_propertyIdentifierLengthErr := io.WriteUint8(3, propertyIdentifierLength)
-		if _propertyIdentifierLengthErr != nil {
-			return errors.New("Error serializing 'propertyIdentifierLength' field " + _propertyIdentifierLengthErr.Error())
-		}
-
-		// Array Field (propertyIdentifier)
-		if m.PropertyIdentifier != nil {
-			for _, _element := range m.PropertyIdentifier {
-				_elementErr := io.WriteInt8(8, _element)
-				if _elementErr != nil {
-					return errors.New("Error serializing 'propertyIdentifier' field " + _elementErr.Error())
-				}
-			}
-		}
-
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+    ser := func() error {
+
+    // Const Field (objectIdentifierHeader)
+    _objectIdentifierHeaderErr := io.WriteUint8(8, 0x0C)
+    if _objectIdentifierHeaderErr != nil {
+        return errors.New("Error serializing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
+    }
+
+    // Simple Field (objectType)
+    objectType := uint16(m.ObjectType)
+    _objectTypeErr := io.WriteUint16(10, (objectType))
+    if _objectTypeErr != nil {
+        return errors.New("Error serializing 'objectType' field " + _objectTypeErr.Error())
+    }
+
+    // Simple Field (objectInstanceNumber)
+    objectInstanceNumber := uint32(m.ObjectInstanceNumber)
+    _objectInstanceNumberErr := io.WriteUint32(22, (objectInstanceNumber))
+    if _objectInstanceNumberErr != nil {
+        return errors.New("Error serializing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
+    }
+
+    // Const Field (propertyIdentifierHeader)
+    _propertyIdentifierHeaderErr := io.WriteUint8(5, 0x03)
+    if _propertyIdentifierHeaderErr != nil {
+        return errors.New("Error serializing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
+    }
+
+    // Simple Field (propertyIdentifierLength)
+    propertyIdentifierLength := uint8(m.PropertyIdentifierLength)
+    _propertyIdentifierLengthErr := io.WriteUint8(3, (propertyIdentifierLength))
+    if _propertyIdentifierLengthErr != nil {
+        return errors.New("Error serializing 'propertyIdentifierLength' field " + _propertyIdentifierLengthErr.Error())
+    }
+
+    // Array Field (propertyIdentifier)
+    if m.PropertyIdentifier != nil {
+        for _, _element := range m.PropertyIdentifier {
+            _elementErr := io.WriteInt8(8, _element)
+            if _elementErr != nil {
+                return errors.New("Error serializing 'propertyIdentifier' field " + _elementErr.Error())
+            }
+        }
+    }
+
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
index 2909daa..641b0b7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReadPropertyMultiple struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadPropertyMultiple interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestReadPropertyMultiple) ServiceChoice() uint8 {
-	return 0x0E
+    return 0x0E
 }
 
 func (m BACnetConfirmedServiceRequestReadPropertyMultiple) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestReadPropertyMultiple() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestReadPropertyMultiple{}
+    return &BACnetConfirmedServiceRequestReadPropertyMultiple{}
 }
 
 func CastIBACnetConfirmedServiceRequestReadPropertyMultiple(structType interface{}) IBACnetConfirmedServiceRequestReadPropertyMultiple {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReadPropertyMultiple {
-		if iBACnetConfirmedServiceRequestReadPropertyMultiple, ok := typ.(IBACnetConfirmedServiceRequestReadPropertyMultiple); ok {
-			return iBACnetConfirmedServiceRequestReadPropertyMultiple
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReadPropertyMultiple {
+        if iBACnetConfirmedServiceRequestReadPropertyMultiple, ok := typ.(IBACnetConfirmedServiceRequestReadPropertyMultiple); ok {
+            return iBACnetConfirmedServiceRequestReadPropertyMultiple
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestReadPropertyMultiple(structType interface{}) BACnetConfirmedServiceRequestReadPropertyMultiple {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReadPropertyMultiple {
-		if sBACnetConfirmedServiceRequestReadPropertyMultiple, ok := typ.(BACnetConfirmedServiceRequestReadPropertyMultiple); ok {
-			return sBACnetConfirmedServiceRequestReadPropertyMultiple
-		}
-		return BACnetConfirmedServiceRequestReadPropertyMultiple{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReadPropertyMultiple {
+        if sBACnetConfirmedServiceRequestReadPropertyMultiple, ok := typ.(BACnetConfirmedServiceRequestReadPropertyMultiple); ok {
+            return sBACnetConfirmedServiceRequestReadPropertyMultiple
+        }
+        if sBACnetConfirmedServiceRequestReadPropertyMultiple, ok := typ.(*BACnetConfirmedServiceRequestReadPropertyMultiple); ok {
+            return *sBACnetConfirmedServiceRequestReadPropertyMultiple
+        }
+        return BACnetConfirmedServiceRequestReadPropertyMultiple{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestReadPropertyMultiple) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestReadPropertyMultiple) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestReadPropertyMultiple(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestReadPropertyMultiple(), nil
 }
 
 func (m BACnetConfirmedServiceRequestReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
index 3816fb1..bf4629e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReadRange struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadRange interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestReadRange) ServiceChoice() uint8 {
-	return 0x1A
+    return 0x1A
 }
 
 func (m BACnetConfirmedServiceRequestReadRange) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestReadRange() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestReadRange{}
+    return &BACnetConfirmedServiceRequestReadRange{}
 }
 
 func CastIBACnetConfirmedServiceRequestReadRange(structType interface{}) IBACnetConfirmedServiceRequestReadRange {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReadRange {
-		if iBACnetConfirmedServiceRequestReadRange, ok := typ.(IBACnetConfirmedServiceRequestReadRange); ok {
-			return iBACnetConfirmedServiceRequestReadRange
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReadRange {
+        if iBACnetConfirmedServiceRequestReadRange, ok := typ.(IBACnetConfirmedServiceRequestReadRange); ok {
+            return iBACnetConfirmedServiceRequestReadRange
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestReadRange(structType interface{}) BACnetConfirmedServiceRequestReadRange {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReadRange {
-		if sBACnetConfirmedServiceRequestReadRange, ok := typ.(BACnetConfirmedServiceRequestReadRange); ok {
-			return sBACnetConfirmedServiceRequestReadRange
-		}
-		return BACnetConfirmedServiceRequestReadRange{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReadRange {
+        if sBACnetConfirmedServiceRequestReadRange, ok := typ.(BACnetConfirmedServiceRequestReadRange); ok {
+            return sBACnetConfirmedServiceRequestReadRange
+        }
+        if sBACnetConfirmedServiceRequestReadRange, ok := typ.(*BACnetConfirmedServiceRequestReadRange); ok {
+            return *sBACnetConfirmedServiceRequestReadRange
+        }
+        return BACnetConfirmedServiceRequestReadRange{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestReadRange) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestReadRange) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReadRangeParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestReadRange(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestReadRange(), nil
 }
 
 func (m BACnetConfirmedServiceRequestReadRange) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
index 53b5f33..9422cc1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestReinitializeDevice struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReinitializeDevice interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestReinitializeDevice) ServiceChoice() uint8 {
-	return 0x14
+    return 0x14
 }
 
 func (m BACnetConfirmedServiceRequestReinitializeDevice) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestReinitializeDevice() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestReinitializeDevice{}
+    return &BACnetConfirmedServiceRequestReinitializeDevice{}
 }
 
 func CastIBACnetConfirmedServiceRequestReinitializeDevice(structType interface{}) IBACnetConfirmedServiceRequestReinitializeDevice {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReinitializeDevice {
-		if iBACnetConfirmedServiceRequestReinitializeDevice, ok := typ.(IBACnetConfirmedServiceRequestReinitializeDevice); ok {
-			return iBACnetConfirmedServiceRequestReinitializeDevice
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestReinitializeDevice {
+        if iBACnetConfirmedServiceRequestReinitializeDevice, ok := typ.(IBACnetConfirmedServiceRequestReinitializeDevice); ok {
+            return iBACnetConfirmedServiceRequestReinitializeDevice
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestReinitializeDevice(structType interface{}) BACnetConfirmedServiceRequestReinitializeDevice {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReinitializeDevice {
-		if sBACnetConfirmedServiceRequestReinitializeDevice, ok := typ.(BACnetConfirmedServiceRequestReinitializeDevice); ok {
-			return sBACnetConfirmedServiceRequestReinitializeDevice
-		}
-		return BACnetConfirmedServiceRequestReinitializeDevice{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestReinitializeDevice {
+        if sBACnetConfirmedServiceRequestReinitializeDevice, ok := typ.(BACnetConfirmedServiceRequestReinitializeDevice); ok {
+            return sBACnetConfirmedServiceRequestReinitializeDevice
+        }
+        if sBACnetConfirmedServiceRequestReinitializeDevice, ok := typ.(*BACnetConfirmedServiceRequestReinitializeDevice); ok {
+            return *sBACnetConfirmedServiceRequestReinitializeDevice
+        }
+        return BACnetConfirmedServiceRequestReinitializeDevice{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestReinitializeDevice) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestReinitializeDevice) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
+    return m.LengthInBits() / 8
 }
 
 func BACnetConfirmedServiceRequestReinitializeDeviceParse(io *spi.ReadBuffer) (BACnetConfirmedServiceRequestInitializer, error) {
 
-	// Create the instance
-	return NewBACnetConfirmedServiceRequestReinitializeDevice(), nil
+    // Create the instance
+    return NewBACnetConfirmedServiceRequestReinitializeDevice(), nil
 }
 
 func (m BACnetConfirmedServiceRequestReinitializeDevice) Serialize(io spi.WriteBuffer) error {
-	ser := func() error {
+    ser := func() error {
 
-		return nil
-	}
-	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+        return nil
+    }
+    return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
index dad3804..038b46d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
@@ -19,73 +19,76 @@
 package model
 
 import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/internal/plc4go/spi"
+    "plc4x.apache.org/plc4go-modbus-driver/v0/internal/plc4go/spi"
 )
 
 // The data-structure of this message
 type BACnetConfirmedServiceRequestRemoveListElement struct {
-	BACnetConfirmedServiceRequest
+    BACnetConfirmedServiceRequest
 }
 
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemoveListElement interface {
-	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer) error
+    IBACnetConfirmedServiceRequest
+    Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
 func (m BACnetConfirmedServiceRequestRemoveListElement) ServiceChoice() uint8 {
-	return 0x09
+    return 0x09
 }
 
 func (m BACnetConfirmedServiceRequestRemoveListElement) initialize() spi.Message {
-	return m
+    return m
 }
 
 func NewBACnetConfirmedServiceRequestRemoveListElement() BACnetConfirmedServiceRequestInitializer {
-	return &BACnetConfirmedServiceRequestRemoveListElement{}
+    return &BACnetConfirmedServiceRequestRemoveListElement{}
 }
 
 func CastIBACnetConfirmedServiceRequestRemoveListElement(structType interface{}) IBACnetConfirmedServiceRequestRemoveListElement {
-	castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestRemoveListElement {
-		if iBACnetConfirmedServiceRequestRemoveListElement, ok := typ.(IBACnetConfirmedServiceRequestRemoveListElement); ok {
-			return iBACnetConfirmedServiceRequestRemoveListElement
-		}
-		return nil
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) IBACnetConfirmedServiceRequestRemoveListElement {
+        if iBACnetConfirmedServiceRequestRemoveListElement, ok := typ.(IBACnetConfirmedServiceRequestRemoveListElement); ok {
+            return iBACnetConfirmedServiceRequestRemoveListElement
+        }
+        return nil
+    }
+    return castFunc(structType)
 }
 
 func CastBACnetConfirmedServiceRequestRemoveListElement(structType interface{}) BACnetConfirmedServiceRequestRemoveListElement {
-	castFunc := func(typ interface{}) BACnetConfirmedServiceRequestRemoveListElement {
-		if sBACnetConfirmedServiceRequestRemoveListElement, ok := typ.(BACnetConfirmedServiceRequestRemoveListElement); ok {
-			return sBACnetConfirmedServiceRequestRemoveListElement
-		}
-		return BACnetConfirmedServiceRequestRemoveListElement{}
-	}
-	return castFunc(structType)
+    castFunc := func(typ interface{}) BACnetConfirmedServiceRequestRemoveListElement {
+        if sBACnetConfirmedServiceRequestRemoveListElement, ok := typ.(BACnetConfirmedServiceRequestRemoveListElement); ok {
+            return sBACnetConfirmedServiceRequestRemoveListElement
+        }
+        if sBACnetConfirmedServiceRequestRemoveListElement, ok := typ.(*BACnetConfirmedServiceRequestRemoveListElement); ok {
+            return *sBACnetConfirmedServiceRequestRemoveListElement
+        }
+        return BACnetConfirmedServiceRequestRemoveListElement{}
+    }
+    return castFunc(structType)
 }
 
 func (m BACnetConfirmedServiceRequestRemoveListElement) LengthInBits() uint16 {
-	var lengthInBits = m.BACnetConfirmedServiceRequest.LengthInBits()
+    var lengthInBits uint16 = m.BACnetConfirmedServiceRequest.LengthInBits()
 
-	return lengthInBits
+    return lengthInBits
 }
 
 func (m BACnetConfirmedServiceRequestRemoveListElement) LengthInBytes() uint16 {
-	return m.LengthInBits() / 8
... 55829 lines suppressed ...