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/13 15:40:59 UTC

[plc4x] branch feature/plc4go updated: - Improved the error handling in the serializers

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 ca6d972  - Improved the error handling in the serializers
ca6d972 is described below

commit ca6d9727f3c5fc50b8acaec60796155be750ea88
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Oct 13 17:40:51 2020 +0200

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

diff --git a/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh b/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
index 753a787..822e7a2 100644
--- a/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
+++ b/build-utils/language-go/src/main/resources/templates/go/enum-template.ftlh
@@ -58,7 +58,7 @@ type I${type.name} interface {
     ${constantName?cap_first}() ${helper.getLanguageTypeNameForTypeReference(type.getConstantType(constantName))}
     </#list>
 </#if>
-    Serialize(io spi.WriteBuffer)
+    Serialize(io spi.WriteBuffer) error
 }
 
 const(
@@ -115,8 +115,9 @@ func ${type.name}Parse(io *spi.ReadBuffer) (${type.name}, error) {
     return 0, nil
 }
 
-func (e ${type.name}) Serialize(io spi.WriteBuffer) {
+func (e ${type.name}) Serialize(io spi.WriteBuffer) error {
     // TODO: Implement ...
+    return nil
 }
 </#if>
 </#outputformat>
\ No newline at end of file
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 6381ec4..cb68147 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
@@ -107,7 +107,7 @@ type I${type.name} interface {
         </#if>
     </#list>
 </#if>
-    Serialize(io spi.WriteBuffer<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>)
+    Serialize(io spi.WriteBuffer<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error
 }
 
 <#if helper.isDiscriminatedChildTypeDefinition()>
@@ -663,9 +663,9 @@ func ${type.name}Parse(io *spi.ReadBuffer<#if type.parserArguments?has_content>,
 }
 
 <#if helper.isDiscriminatedParentTypeDefinition()>
-func ${type.name}Serialize(io spi.WriteBuffer, m ${type.name}, i I${type.name}, childSerialize func()<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) {
+func ${type.name}Serialize(io spi.WriteBuffer, m ${type.name}, i I${type.name}, childSerialize func() error<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
 <#else>
-func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) {
+func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArguments(type.parserArguments)?has_content>, <#list helper.getSerializerArguments(type.parserArguments) as parserArgument>${parserArgument.name} ${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if>) error {
 </#if>
     <#assign arraySizeInBytesHelpers=helper.requiresHelperFunctions("ARRAY_SIZE_IN_BYTES")>
     <#if arraySizeInBytesHelpers?has_content>
@@ -681,7 +681,7 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
         </#list>
     </#if>
     <#if helper.isDiscriminatedChildTypeDefinition()>
-    ser := func() {
+    ser := func() error {
     </#if>
     <#list type.fields as field>
         <#switch field.typeName>
@@ -698,17 +698,20 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
         for _, _element := range m.${arrayField.name} {
                 <#if helper.isSimpleTypeReference(arrayField.type)>
                     <#assign simpleTypeReference = arrayField.type>
-            ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "_element")}
+            _elementErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "_element")}
                 <#else>
                     <#assign complexTypeReference = arrayField.type>
                     <#if helper.needsVariable(arrayField, "lastItem", true)>
             var lastItem bool = curItem == (itemCount - 1)
                     </#if>
-            _element.Serialize(io<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
+            _elementErr := _element.Serialize(io<#if helper.getSerializerTerms(field.params)?has_content>, <#list helper.getSerializerTerms(field.params) as parserArgument>${parserArgument.name}<#sep>, </#sep></#list></#if>)
                 </#if>
-                    <#if helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true)>
+            if _elementErr != nil {
+                return errors.New("Error serializing '${arrayField.name}' field " + _elementErr.Error())
+            }
+                <#if helper.needsVariable(arrayField, "curItem", true) || helper.needsVariable(arrayField, "lastItem", true)>
             curItem++
-                    </#if>
+                </#if>
         }
     }
                 <#break>
@@ -722,7 +725,10 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
         // Create an array of all the bytes written in this message element so far.
         checksumRawData []uint8 = io.getBytes(startPos, io.GetPos())
         _checksum = ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(checksumField, checksumField.checksumExpression, type.parserArguments)})
-        ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")}
+        _checksumErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_checksum)")}
+        if _elementErr != nil {
+            return errors.New("Error serializing 'checksum' field " + _elementErr.Error())
+        }
     }
                 <#break>
             <#case "const">
@@ -730,7 +736,10 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
                 <#assign simpleTypeReference = constField.type>
 
     // Const Field (${constField.name})
-    ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)}
+    _${constField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, constField.referenceValue)}
+    if _${constField.name}Err != nil {
+        return errors.New("Error serializing '${constField.name}' field " + _${constField.name}Err.Error())
+    }
                 <#break>
             <#case "discriminator">
                 <#assign discriminatorField = field>
@@ -738,14 +747,20 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
 
     // Discriminator Field (${discriminatorField.name}) (Used as input to a switch field)
     ${discriminatorField.name} := ${helper.getLanguageTypeNameForField(field)}(i.${discriminatorField.name?cap_first}())
-    ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
+    _${discriminatorField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + discriminatorField.name + ")")}
+    if _${discriminatorField.name}Err != nil {
+        return errors.New("Error serializing '${discriminatorField.name}' field " + _${discriminatorField.name}Err.Error())
+    }
                 <#break>
             <#case "enum">
                 <#assign enumField = field>
 
     // Enum field (${enumField.name})
     ${enumField.name} := Cast${helper.getLanguageTypeNameForField(field)}(m.${enumField.name})
-    ${enumField.name}.Serialize(io)
+    _${enumField.name}Err := ${enumField.name}.Serialize(io)
+    if _${enumField.name}Err != nil {
+        return errors.New("Error serializing '${enumField.name}' field " + _${enumField.name}Err.Error())
+    }
                 <#break>
             <#case "implicit">
                 <#assign implicitField = field>
@@ -753,7 +768,10 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
 
     // Implicit Field (${implicitField.name}) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
     ${implicitField.name} := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(implicitField, implicitField.serializeExpression, type.parserArguments)})
-    ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")}
+    _${implicitField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + implicitField.name + ")")}
+    if _${implicitField.name}Err != nil {
+        return errors.New("Error serializing '${implicitField.name}' field " + _${implicitField.name}Err.Error())
+    }
                 <#break>
             <#case "manualArray">
                 <#assign manualArrayField = field>
@@ -780,12 +798,15 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
                 <#if helper.isSimpleTypeReference(optionalField.type)>
                     <#assign simpleTypeReference = optionalField.type>
         ${optionalField.name} = m.${optionalField.name}
-        ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "*(" + optionalField.name + ")")}
+        _${optionalField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "*(" + optionalField.name + ")")}
                 <#else>
                     <#assign complexTypeReference = optionalField.type>
         ${optionalField.name} = m.${optionalField.name}
-        CastI${helper.getLanguageTypeNameForField(field)}(*${optionalField.name}).Serialize(io)
+        _${optionalField.name}Err := CastI${helper.getLanguageTypeNameForField(field)}(*${optionalField.name}).Serialize(io)
                 </#if>
+        if _${optionalField.name}Err != nil {
+            return errors.New("Error serializing '${optionalField.name}' field " + _${optionalField.name}Err.Error())
+        }
     }
                 <#break>
             <#case "padding">
@@ -797,7 +818,10 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
         _timesPadding := uint8(${helper.toSerializationExpression(paddingField, paddingField.paddingCondition, type.parserArguments)})
         for ;_timesPadding > 0; _timesPadding-- {
             _paddingValue := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(paddingField, paddingField.paddingValue, type.parserArguments)})
-            ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")}
+            _paddingErr := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(_paddingValue)")}
+            if _paddingErr != nil {
+                return errors.New("Error serializing 'padding' field " + _paddingErr.Error())
+            }
         }
     }
                 <#break>
@@ -806,7 +830,12 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
                 <#assign simpleTypeReference = reservedField.type>
 
     // Reserved Field (reserved)
-    ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))}
+    {
+        _err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, helper.getReservedValue(field))}
+        if _err != nil {
+            return errors.New("Error serializing 'reserved' field " + _err.Error())
+        }
+    }
                 <#break>
             <#case "simple">
                 <#assign simpleField = field>
@@ -815,18 +844,24 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
                 <#if helper.isSimpleTypeReference(simpleField.type)>
                     <#assign simpleTypeReference = simpleField.type>
     ${simpleField.name} := ${helper.getLanguageTypeNameForField(field)}(m.${simpleField.name})
-    ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")}
+    _${simpleField.name}Err := ${helper.getWriteBufferWriteMethodCall(simpleTypeReference, "(" + simpleField.name + ")")}
                 <#else>
                     <#assign complexTypeReference = simpleField.type>
     ${simpleField.name} := CastI${helper.getLanguageTypeNameForField(field)}(m.${simpleField.name})
-    ${simpleField.name}.Serialize(io)
+    _${simpleField.name}Err := ${simpleField.name}.Serialize(io)
                 </#if>
+    if _${simpleField.name}Err != nil {
+        return errors.New("Error serializing '${simpleField.name}' field " + _${simpleField.name}Err.Error())
+    }
                 <#break>
             <#case "switch">
                 <#assign switchField = field>
 
     // Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-    childSerialize()
+    _typeSwitchErr := childSerialize()
+    if _typeSwitchErr != nil {
+        return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+    }
                 <#break>
             <#case "virtual">
                 <#break>
@@ -834,8 +869,11 @@ func (m ${type.name}) Serialize(io spi.WriteBuffer<#if helper.getSerializerArgum
     </#list>
 
     <#if helper.isDiscriminatedChildTypeDefinition()>
+        return nil
     }
-    ${type.parentType.name}Serialize(io, m.${type.parentType.name}, CastI${type.parentType.name}(m), ser)
+    return ${type.parentType.name}Serialize(io, m.${type.parentType.name}, CastI${type.parentType.name}(m), ser)
+    <#else>
+    return nil
     </#if>
 }
 </#outputformat>
\ No newline at end of file
diff --git a/sandbox/plc4go/cmd/main/drivers/bacnetip.go b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
similarity index 87%
rename from sandbox/plc4go/cmd/main/drivers/bacnetip.go
rename to sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
index 850c44b..4e9ef59 100644
--- a/sandbox/plc4go/cmd/main/drivers/bacnetip.go
+++ b/sandbox/plc4go/cmd/main/drivers/bacnetip_test.go
@@ -19,20 +19,22 @@ 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"
+	"testing"
 )
 
-func BacnetIp() {
+func TestBacnetIp(t *testing.T) {
+	t.Skip()
 	request, err := hex.DecodeString("000a00000006010300000004")
 	if err != nil {
-		// Output an error ...
+		t.Errorf("Error decoding test input")
 	}
 	rb := spi.ReadBufferNew(request)
 	adu, err := model.BVLCParse(rb)
 	if err != nil {
-		// Output an error ...
+		t.Errorf("Error parsing: %s", err)
 	}
 	if adu != nil {
-		// Output success ...
+		// Do something ...
 	}
 
 }
diff --git a/sandbox/plc4go/cmd/main/drivers/knxnetip.go b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
similarity index 89%
rename from sandbox/plc4go/cmd/main/drivers/knxnetip.go
rename to sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
index 6cc4078..8160542 100644
--- a/sandbox/plc4go/cmd/main/drivers/knxnetip.go
+++ b/sandbox/plc4go/cmd/main/drivers/knxnetip_test.go
@@ -19,17 +19,19 @@ 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"
+	"testing"
 )
 
-func KnxNetIp() {
+func TestKnxNetIp(t *testing.T) {
+	t.Skip()
 	request, err := hex.DecodeString("000a00000006010300000004")
 	if err != nil {
-		// Output an error ...
+		t.Errorf("Error decoding test input")
 	}
 	rb := spi.ReadBufferNew(request)
 	adu, err := model.KNXNetIPMessageParse(rb)
 	if err != nil {
-		// Output an error ...
+		t.Errorf("Error parsing: %s", err)
 	}
 	if adu != nil {
 		// Output success ...
diff --git a/sandbox/plc4go/cmd/main/drivers/modbus.go b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
similarity index 55%
rename from sandbox/plc4go/cmd/main/drivers/modbus.go
rename to sandbox/plc4go/cmd/main/drivers/modbus_test.go
index d41916e..5a8a7f9 100644
--- a/sandbox/plc4go/cmd/main/drivers/modbus.go
+++ b/sandbox/plc4go/cmd/main/drivers/modbus_test.go
@@ -17,44 +17,40 @@ package drivers
 
 import (
 	"encoding/hex"
-	"fmt"
 	"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"
 	"strings"
+	"testing"
 )
 
-func Modbus() {
-	test("000000000006ff0408d20002", false)
-	test("7cfe000000c9ff04c600000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000004000000000000000000000000000001db000001d600004a380000000000000000000000000000000000000000000000000000000000006461696d006e0000000000000000000000000000303100300000000000000000000000000000000000000000000000000000000000000000000000000000", true)
-	test("000a0000001101140e060003270e000206000400000008", false)
-	test("000a0000001b011418050600000000110600000000000000000000000000000000", true)
-	test("000a0000000c011509060002000000010008", false)
-	test("000a00000015011512060001270F00010000060002000000010000", false)
+func TestModbus(t *testing.T) {
+	test(t, "000000000006ff0408d20002", false)
+	test(t, "7cfe000000c9ff04c600000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000004000000000000000000000000000001db000001d600004a380000000000000000000000000000000000000000000000000000000000006461696d006e0000000000000000000000000000303100300000000000000000000000000000000000000000000000000000000000000000000000000000", true)
+	test(t, "000a0000001101140e060003270e000206000400000008", false)
+	test(t, "000a0000001b011418050600000000110600000000000000000000000000000000", true)
+	test(t, "000a0000000c011509060002000000010008", false)
+	test(t, "000a00000015011512060001270F00010000060002000000010000", false)
 }
 
-func test(rawMessage string, response bool) {
+func test(t *testing.T, rawMessage string, response bool) {
 	// Create the input data
 	// "000a 0000 0006 01 03 00 00 00 04"
 	request, err := hex.DecodeString(rawMessage)
 	if err != nil {
-		fmt.Errorf("error preparing input buffer")
-		return
+		t.Errorf("Error decoding test input")
 	}
 	rb := spi.ReadBufferNew(request)
 	adu, err := model.ModbusTcpADUParse(rb, response)
 	if err != nil {
-		fmt.Errorf("error parsing input")
-		return
+		t.Errorf("Error parsing: %s", err)
 	}
 	if adu != nil {
 		wb := spi.WriteBufferNew()
 		val := model.CastIModbusTcpADU(adu)
 		val.Serialize(*wb)
 		serializedMessage := hex.EncodeToString(wb.GetBytes())
-		if strings.ToUpper(serializedMessage) == strings.ToUpper(rawMessage) {
-			fmt.Println("Success")
-		} else {
-			fmt.Println("Failure")
+		if strings.ToUpper(serializedMessage) != strings.ToUpper(rawMessage) {
+			t.Errorf("The serilized result doesn't match the input")
 		}
 	}
 }
diff --git a/sandbox/plc4go/cmd/main/drivers/s7.go b/sandbox/plc4go/cmd/main/drivers/s7_test.go
similarity index 92%
rename from sandbox/plc4go/cmd/main/drivers/s7.go
rename to sandbox/plc4go/cmd/main/drivers/s7_test.go
index f6c582b..7a3011b 100644
--- a/sandbox/plc4go/cmd/main/drivers/s7.go
+++ b/sandbox/plc4go/cmd/main/drivers/s7_test.go
@@ -19,9 +19,11 @@ 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"
+	"testing"
 )
 
-func S7() {
+func TestS7(t *testing.T) {
+	t.Skip()
 	request, err := hex.DecodeString("000a00000006010300000004")
 	if err != nil {
 		// Output an error ...
@@ -29,10 +31,9 @@ func S7() {
 	rb := spi.ReadBufferNew(request)
 	adu, err := model.TPKTPacketParse(rb)
 	if err != nil {
-		// Output an error ...
+		t.Errorf("Error parsing: %s", err)
 	}
 	if adu != nil {
 		// Output success ...
 	}
-
 }
diff --git a/sandbox/plc4go/cmd/main/main.go b/sandbox/plc4go/cmd/main/main.go
index 683199c..60524d6 100644
--- a/sandbox/plc4go/cmd/main/main.go
+++ b/sandbox/plc4go/cmd/main/main.go
@@ -15,13 +15,5 @@
 //
 package main
 
-import (
-	"plc4x.apache.org/plc4go-modbus-driver/0.8.0/cmd/main/drivers"
-)
-
 func main() {
-	drivers.BacnetIp()
-	drivers.KnxNetIp()
-	drivers.Modbus()
-	drivers.S7()
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
index 1b9d8eb..9b4aa69 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDU.go
@@ -31,7 +31,7 @@ type APDU struct {
 type IAPDU interface {
 	spi.Message
 	ApduType() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type APDUInitializer interface {
@@ -114,13 +114,20 @@ func APDUParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func APDUSerialize(io spi.WriteBuffer, m APDU, i IAPDU, childSerialize func()) {
+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())
-	io.WriteUint8(4, (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)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	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 a4344d6..8d49ee2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUAbort.go
@@ -35,7 +35,7 @@ type APDUAbort struct {
 // The corresponding interface
 type IAPDUAbort interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -131,24 +131,39 @@ func APDUAbortParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 	return NewAPDUAbort(server, originalInvokeId, abortReason), nil
 }
 
-func (m APDUAbort) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUAbort) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Reserved Field (reserved)
-		io.WriteUint8(3, uint8(0x00))
+		{
+			_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)
-		io.WriteBit((bool)(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)
-		io.WriteUint8(8, (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)
-		io.WriteUint8(8, (abortReason))
+		_abortReasonErr := io.WriteUint8(8, (abortReason))
+		if _abortReasonErr != nil {
+			return errors.New("Error serializing 'abortReason' field " + _abortReasonErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 5bea9a4..8e54475 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUComplexAck.go
@@ -39,7 +39,7 @@ type APDUComplexAck struct {
 // The corresponding interface
 type IAPDUComplexAck interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -181,42 +181,66 @@ func APDUComplexAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 	return NewAPDUComplexAck(segmentedMessage, moreFollows, originalInvokeId, sequenceNumber, proposedWindowSize, serviceAck), nil
 }
 
-func (m APDUComplexAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUComplexAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (segmentedMessage)
 		segmentedMessage := bool(m.segmentedMessage)
-		io.WriteBit((bool)(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)
-		io.WriteBit((bool)(moreFollows))
+		_moreFollowsErr := io.WriteBit((bool)(moreFollows))
+		if _moreFollowsErr != nil {
+			return errors.New("Error serializing 'moreFollows' field " + _moreFollowsErr.Error())
+		}
 
 		// Reserved Field (reserved)
-		io.WriteUint8(2, uint8(0))
+		{
+			_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)
-		io.WriteUint8(8, (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
-			io.WriteUint8(8, *(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
-			io.WriteUint8(8, *(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)
-		serviceAck.Serialize(io)
+		_serviceAckErr := serviceAck.Serialize(io)
+		if _serviceAckErr != nil {
+			return errors.New("Error serializing 'serviceAck' field " + _serviceAckErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 51be524..dfe8717 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUConfirmedRequest.go
@@ -42,7 +42,7 @@ type APDUConfirmedRequest struct {
 // The corresponding interface
 type IAPDUConfirmedRequest interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -211,54 +211,87 @@ func APDUConfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUIniti
 	return NewAPDUConfirmedRequest(segmentedMessage, moreFollows, segmentedResponseAccepted, maxSegmentsAccepted, maxApduLengthAccepted, invokeId, sequenceNumber, proposedWindowSize, serviceRequest), nil
 }
 
-func (m APDUConfirmedRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUConfirmedRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (segmentedMessage)
 		segmentedMessage := bool(m.segmentedMessage)
-		io.WriteBit((bool)(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)
-		io.WriteBit((bool)(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)
-		io.WriteBit((bool)(segmentedResponseAccepted))
+		_segmentedResponseAcceptedErr := io.WriteBit((bool)(segmentedResponseAccepted))
+		if _segmentedResponseAcceptedErr != nil {
+			return errors.New("Error serializing 'segmentedResponseAccepted' field " + _segmentedResponseAcceptedErr.Error())
+		}
 
 		// Reserved Field (reserved)
-		io.WriteUint8(2, uint8(0))
+		{
+			_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)
-		io.WriteUint8(3, (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)
-		io.WriteUint8(4, (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)
-		io.WriteUint8(8, (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
-			io.WriteUint8(8, *(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
-			io.WriteUint8(8, *(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)
-		serviceRequest.Serialize(io)
+		_serviceRequestErr := serviceRequest.Serialize(io)
+		if _serviceRequestErr != nil {
+			return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 9028fe2..0c8b9aa 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUError.go
@@ -35,7 +35,7 @@ type APDUError struct {
 // The corresponding interface
 type IAPDUError interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -127,20 +127,32 @@ func APDUErrorParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 	return NewAPDUError(originalInvokeId, error), nil
 }
 
-func (m APDUError) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUError) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Reserved Field (reserved)
-		io.WriteUint8(4, uint8(0x00))
+		{
+			_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)
-		io.WriteUint8(8, (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)
-		error.Serialize(io)
+		_errorErr := error.Serialize(io)
+		if _errorErr != nil {
+			return errors.New("Error serializing 'error' field " + _errorErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 bdc27fd..605b1fa 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUReject.go
@@ -34,7 +34,7 @@ type APDUReject struct {
 // The corresponding interface
 type IAPDUReject interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -121,20 +121,32 @@ func APDURejectParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 	return NewAPDUReject(originalInvokeId, rejectReason), nil
 }
 
-func (m APDUReject) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUReject) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Reserved Field (reserved)
-		io.WriteUint8(4, uint8(0x00))
+		{
+			_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)
-		io.WriteUint8(8, (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)
-		io.WriteUint8(8, (rejectReason))
+		_rejectReasonErr := io.WriteUint8(8, (rejectReason))
+		if _rejectReasonErr != nil {
+			return errors.New("Error serializing 'rejectReason' field " + _rejectReasonErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 f58737d..ed5098e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSegmentAck.go
@@ -37,7 +37,7 @@ type APDUSegmentAck struct {
 // The corresponding interface
 type IAPDUSegmentAck interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -151,32 +151,53 @@ func APDUSegmentAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 	return NewAPDUSegmentAck(negativeAck, server, originalInvokeId, sequenceNumber, proposedWindowSize), nil
 }
 
-func (m APDUSegmentAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUSegmentAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Reserved Field (reserved)
-		io.WriteUint8(2, uint8(0x00))
+		{
+			_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)
-		io.WriteBit((bool)(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)
-		io.WriteBit((bool)(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)
-		io.WriteUint8(8, (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)
-		io.WriteUint8(8, (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)
-		io.WriteUint8(8, (proposedWindowSize))
+		_proposedWindowSizeErr := io.WriteUint8(8, (proposedWindowSize))
+		if _proposedWindowSizeErr != nil {
+			return errors.New("Error serializing 'proposedWindowSize' field " + _proposedWindowSizeErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 66223a0..f987c96 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUSimpleAck.go
@@ -34,7 +34,7 @@ type APDUSimpleAck struct {
 // The corresponding interface
 type IAPDUSimpleAck interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -121,20 +121,32 @@ func APDUSimpleAckParse(io *spi.ReadBuffer) (APDUInitializer, error) {
 	return NewAPDUSimpleAck(originalInvokeId, serviceChoice), nil
 }
 
-func (m APDUSimpleAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUSimpleAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Reserved Field (reserved)
-		io.WriteUint8(4, uint8(0))
+		{
+			_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)
-		io.WriteUint8(8, (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)
-		io.WriteUint8(8, (serviceChoice))
+		_serviceChoiceErr := io.WriteUint8(8, (serviceChoice))
+		if _serviceChoiceErr != nil {
+			return errors.New("Error serializing 'serviceChoice' field " + _serviceChoiceErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 11006f4..41cc01f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/APDUUnconfirmedRequest.go
@@ -34,7 +34,7 @@ type APDUUnconfirmedRequest struct {
 // The corresponding interface
 type IAPDUUnconfirmedRequest interface {
 	IAPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -117,16 +117,25 @@ func APDUUnconfirmedRequestParse(io *spi.ReadBuffer, apduLength uint16) (APDUIni
 	return NewAPDUUnconfirmedRequest(serviceRequest), nil
 }
 
-func (m APDUUnconfirmedRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m APDUUnconfirmedRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Reserved Field (reserved)
-		io.WriteUint8(4, uint8(0))
+		{
+			_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)
-		serviceRequest.Serialize(io)
+		_serviceRequestErr := serviceRequest.Serialize(io)
+		if _serviceRequestErr != nil {
+			return errors.New("Error serializing 'serviceRequest' field " + _serviceRequestErr.Error())
+		}
 
+		return nil
 	}
-	APDUSerialize(io, m.APDU, CastIAPDU(m), ser)
+	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 f23f299..3463d2c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/ApplicationTag.go
@@ -24,7 +24,7 @@ type ApplicationTag int8
 
 type IApplicationTag interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -66,6 +66,7 @@ func ApplicationTagParse(io *spi.ReadBuffer) (ApplicationTag, error) {
 	return 0, nil
 }
 
-func (e ApplicationTag) Serialize(io spi.WriteBuffer) {
+func (e ApplicationTag) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
index c5ba724..c2807bb 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetAddress.go
@@ -32,7 +32,7 @@ type BACnetAddress struct {
 // The corresponding interface
 type IBACnetAddress interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewBACnetAddress(address []uint8, port uint16) spi.Message {
@@ -101,17 +101,24 @@ func BACnetAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewBACnetAddress(address, port), nil
 }
 
-func (m BACnetAddress) Serialize(io spi.WriteBuffer) {
+func (m BACnetAddress) Serialize(io spi.WriteBuffer) error {
 
 	// Array Field (address)
 	if m.address != nil {
 		for _, _element := range m.address {
-			io.WriteUint8(8, _element)
+			_elementErr := io.WriteUint8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'address' field " + _elementErr.Error())
+			}
 		}
 	}
 
 	// Simple Field (port)
 	port := uint16(m.port)
-	io.WriteUint16(16, (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 5c2bd40..133eace 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACK.go
@@ -31,7 +31,7 @@ type BACnetConfirmedServiceACK struct {
 type IBACnetConfirmedServiceACK interface {
 	spi.Message
 	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetConfirmedServiceACKInitializer interface {
@@ -126,13 +126,20 @@ func BACnetConfirmedServiceACKParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func BACnetConfirmedServiceACKSerialize(io spi.WriteBuffer, m BACnetConfirmedServiceACK, i IBACnetConfirmedServiceACK, childSerialize func()) {
+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())
-	io.WriteUint8(8, (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)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	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 d4d56ec..3538648 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicReadFile.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKAtomicReadFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicReadFile interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKAtomicReadFileParse(io *spi.ReadBuffer) (BACnetCon
 	return NewBACnetConfirmedServiceACKAtomicReadFile(), nil
 }
 
-func (m BACnetConfirmedServiceACKAtomicReadFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 9cbc185..10ff1cf 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKAtomicWriteFile.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKAtomicWriteFile interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetCo
 	return NewBACnetConfirmedServiceACKAtomicWriteFile(), nil
 }
 
-func (m BACnetConfirmedServiceACKAtomicWriteFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 b35dde9..ba2f5e3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKConfirmedPrivateTransfer.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKConfirmedPrivateTransfer interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKConfirmedPrivateTransferParse(io *spi.ReadBuffer)
 	return NewBACnetConfirmedServiceACKConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 1686b38..a5590c2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKCreateObject.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKCreateObject struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKCreateObject interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKCreateObjectParse(io *spi.ReadBuffer) (BACnetConfi
 	return NewBACnetConfirmedServiceACKCreateObject(), nil
 }
 
-func (m BACnetConfirmedServiceACKCreateObject) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKCreateObject) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 9e34269..e903b17 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetAlarmSummary.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKGetAlarmSummary struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetAlarmSummary interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetCo
 	return NewBACnetConfirmedServiceACKGetAlarmSummary(), nil
 }
 
-func (m BACnetConfirmedServiceACKGetAlarmSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 76aa6b1..a2873ba 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEnrollmentSummary.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEnrollmentSummary interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BAC
 	return NewBACnetConfirmedServiceACKGetEnrollmentSummary(), nil
 }
 
-func (m BACnetConfirmedServiceACKGetEnrollmentSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 0235e2c..5bf064a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKGetEventInformation.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKGetEventInformation struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKGetEventInformation interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKGetEventInformationParse(io *spi.ReadBuffer) (BACn
 	return NewBACnetConfirmedServiceACKGetEventInformation(), nil
 }
 
-func (m BACnetConfirmedServiceACKGetEventInformation) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKGetEventInformation) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 2b01b03..e50328b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadProperty.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKReadProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadProperty interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKReadPropertyParse(io *spi.ReadBuffer) (BACnetConfi
 	return NewBACnetConfirmedServiceACKReadProperty(), nil
 }
 
-func (m BACnetConfirmedServiceACKReadProperty) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKReadProperty) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 44c93e6..fd696e2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadPropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadPropertyMultiple interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKReadPropertyMultipleParse(io *spi.ReadBuffer) (BAC
 	return NewBACnetConfirmedServiceACKReadPropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceACKReadPropertyMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 2d0f011..1ff9dc5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKReadRange.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKReadRange struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKReadRange interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKReadRangeParse(io *spi.ReadBuffer) (BACnetConfirme
 	return NewBACnetConfirmedServiceACKReadRange(), nil
 }
 
-func (m BACnetConfirmedServiceACKReadRange) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKReadRange) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 3d57f4b..d0c5481 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedAuthenticate.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedAuthenticate interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKRemovedAuthenticateParse(io *spi.ReadBuffer) (BACn
 	return NewBACnetConfirmedServiceACKRemovedAuthenticate(), nil
 }
 
-func (m BACnetConfirmedServiceACKRemovedAuthenticate) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 98e3251..a27f717 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKRemovedReadPropertyConditional.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKRemovedReadPropertyConditional interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKRemovedReadPropertyConditionalParse(io *spi.ReadBu
 	return NewBACnetConfirmedServiceACKRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 7d0018b..6094926 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTData.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKVTData struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTData interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKVTDataParse(io *spi.ReadBuffer) (BACnetConfirmedSe
 	return NewBACnetConfirmedServiceACKVTData(), nil
 }
 
-func (m BACnetConfirmedServiceACKVTData) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKVTData) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 1e11502..3ae1769 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceACKVTOpen.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceACKVTOpen struct {
 // The corresponding interface
 type IBACnetConfirmedServiceACKVTOpen interface {
 	IBACnetConfirmedServiceACK
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceACKVTOpenParse(io *spi.ReadBuffer) (BACnetConfirmedSe
 	return NewBACnetConfirmedServiceACKVTOpen(), nil
 }
 
-func (m BACnetConfirmedServiceACKVTOpen) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceACKVTOpen) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceACKSerialize(io, m.BACnetConfirmedServiceACK, CastIBACnetConfirmedServiceACK(m), ser)
+	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 f5dd7fd..a0498d2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequest.go
@@ -31,7 +31,7 @@ type BACnetConfirmedServiceRequest struct {
 type IBACnetConfirmedServiceRequest interface {
 	spi.Message
 	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetConfirmedServiceRequestInitializer interface {
@@ -172,13 +172,20 @@ func BACnetConfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.Mes
 	return initializer.initialize(), nil
 }
 
-func BACnetConfirmedServiceRequestSerialize(io spi.WriteBuffer, m BACnetConfirmedServiceRequest, i IBACnetConfirmedServiceRequest, childSerialize func()) {
+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())
-	io.WriteUint8(8, (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)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	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 34b01ec..e59f0de 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAcknowledgeAlarm.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestAcknowledgeAlarm struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAcknowledgeAlarm interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestAcknowledgeAlarmParse(io *spi.ReadBuffer) (BAC
 	return NewBACnetConfirmedServiceRequestAcknowledgeAlarm(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestAcknowledgeAlarm) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 9b608bb..c3dd842 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAddListElement.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestAddListElement struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAddListElement interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestAddListElementParse(io *spi.ReadBuffer) (BACne
 	return NewBACnetConfirmedServiceRequestAddListElement(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAddListElement) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestAddListElement) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 37abcf1..5224418 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicReadFile.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestAtomicReadFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAtomicReadFile interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestAtomicReadFileParse(io *spi.ReadBuffer) (BACne
 	return NewBACnetConfirmedServiceRequestAtomicReadFile(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAtomicReadFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 c3a5c89..3394a50 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestAtomicWriteFile.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestAtomicWriteFile interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestAtomicWriteFileParse(io *spi.ReadBuffer) (BACn
 	return NewBACnetConfirmedServiceRequestAtomicWriteFile(), nil
 }
 
-func (m BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 4b912c2..254f25f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotification.go
@@ -49,7 +49,7 @@ type BACnetConfirmedServiceRequestConfirmedCOVNotification struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotification interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -269,65 +269,108 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationParse(io *spi.ReadBuff
 	return NewBACnetConfirmedServiceRequestConfirmedCOVNotification(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotificationsType, issueConfirmedNotificationsInstanceNumber, lifetimeLength, lifetimeSeconds, notifications), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotification) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (subscriberProcessIdentifierHeader)
-		io.WriteUint8(8, 0x09)
+		_subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
+		if _subscriberProcessIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (subscriberProcessIdentifier)
 		subscriberProcessIdentifier := uint8(m.subscriberProcessIdentifier)
-		io.WriteUint8(8, (subscriberProcessIdentifier))
+		_subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
+		if _subscriberProcessIdentifierErr != nil {
+			return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+		}
 
 		// Const Field (monitoredObjectIdentifierHeader)
-		io.WriteUint8(8, 0x1C)
+		_monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
+		if _monitoredObjectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (monitoredObjectType)
 		monitoredObjectType := uint16(m.monitoredObjectType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (monitoredObjectInstanceNumber))
+		_monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
+		if _monitoredObjectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+		}
 
 		// Const Field (issueConfirmedNotificationsHeader)
-		io.WriteUint8(8, 0x2C)
+		_issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x2C)
+		if _issueConfirmedNotificationsHeaderErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+		}
 
 		// Simple Field (issueConfirmedNotificationsType)
 		issueConfirmedNotificationsType := uint16(m.issueConfirmedNotificationsType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (issueConfirmedNotificationsInstanceNumber))
+		_issueConfirmedNotificationsInstanceNumberErr := io.WriteUint32(22, (issueConfirmedNotificationsInstanceNumber))
+		if _issueConfirmedNotificationsInstanceNumberErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotificationsInstanceNumber' field " + _issueConfirmedNotificationsInstanceNumberErr.Error())
+		}
 
 		// Const Field (lifetimeHeader)
-		io.WriteUint8(5, 0x07)
+		_lifetimeHeaderErr := io.WriteUint8(5, 0x07)
+		if _lifetimeHeaderErr != nil {
+			return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+		}
 
 		// Simple Field (lifetimeLength)
 		lifetimeLength := uint8(m.lifetimeLength)
-		io.WriteUint8(3, (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 {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (listOfValuesOpeningTag)
-		io.WriteUint8(8, 0x4E)
+		_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 {
-				_element.Serialize(io)
+				_elementErr := _element.Serialize(io)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'notifications' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (listOfValuesClosingTag)
-		io.WriteUint8(8, 0x4F)
+		_listOfValuesClosingTagErr := io.WriteUint8(8, 0x4F)
+		if _listOfValuesClosingTagErr != nil {
+			return errors.New("Error serializing 'listOfValuesClosingTag' field " + _listOfValuesClosingTagErr.Error())
+		}
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 4ac5f74..16b0c0b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestConfirmedCOVNotificationMultipleParse(io *spi.
 	return NewBACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestConfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 80bba48..f2ef767 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedEventNotification.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestConfirmedEventNotification struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedEventNotification interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestConfirmedEventNotificationParse(io *spi.ReadBu
 	return NewBACnetConfirmedServiceRequestConfirmedEventNotification(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedEventNotification) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestConfirmedEventNotification) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 ce5336d..b80a261 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedPrivateTransfer.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedPrivateTransfer interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestConfirmedPrivateTransferParse(io *spi.ReadBuff
 	return NewBACnetConfirmedServiceRequestConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 b62129b..3c6aaa1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestConfirmedTextMessage.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestConfirmedTextMessage struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestConfirmedTextMessage interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestConfirmedTextMessageParse(io *spi.ReadBuffer)
 	return NewBACnetConfirmedServiceRequestConfirmedTextMessage(), nil
 }
 
-func (m BACnetConfirmedServiceRequestConfirmedTextMessage) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestConfirmedTextMessage) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 f5f2946..e20f26d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestCreateObject.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestCreateObject struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestCreateObject interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestCreateObjectParse(io *spi.ReadBuffer) (BACnetC
 	return NewBACnetConfirmedServiceRequestCreateObject(), nil
 }
 
-func (m BACnetConfirmedServiceRequestCreateObject) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestCreateObject) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 abf93e9..c26cbf3 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeleteObject.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestDeleteObject struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeleteObject interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestDeleteObjectParse(io *spi.ReadBuffer) (BACnetC
 	return NewBACnetConfirmedServiceRequestDeleteObject(), nil
 }
 
-func (m BACnetConfirmedServiceRequestDeleteObject) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestDeleteObject) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 dd39d90..b0bebab 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestDeviceCommunicationControl.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestDeviceCommunicationControl struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestDeviceCommunicationControl interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestDeviceCommunicationControlParse(io *spi.ReadBu
 	return NewBACnetConfirmedServiceRequestDeviceCommunicationControl(), nil
 }
 
-func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestDeviceCommunicationControl) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 fffcf270..46fc1e6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEnrollmentSummary.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEnrollmentSummary interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestGetEnrollmentSummaryParse(io *spi.ReadBuffer)
 	return NewBACnetConfirmedServiceRequestGetEnrollmentSummary(), nil
 }
 
-func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 fec7e78..9d9e254 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestGetEventInformation.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestGetEventInformation struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestGetEventInformation interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestGetEventInformationParse(io *spi.ReadBuffer) (
 	return NewBACnetConfirmedServiceRequestGetEventInformation(), nil
 }
 
-func (m BACnetConfirmedServiceRequestGetEventInformation) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestGetEventInformation) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 5f4e878..77458ca 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestLifeSafetyOperation.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestLifeSafetyOperation struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestLifeSafetyOperation interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestLifeSafetyOperationParse(io *spi.ReadBuffer) (
 	return NewBACnetConfirmedServiceRequestLifeSafetyOperation(), nil
 }
 
-func (m BACnetConfirmedServiceRequestLifeSafetyOperation) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestLifeSafetyOperation) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 1babc39..9219fd4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadProperty.go
@@ -40,7 +40,7 @@ type BACnetConfirmedServiceRequestReadProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadProperty interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -160,34 +160,53 @@ func BACnetConfirmedServiceRequestReadPropertyParse(io *spi.ReadBuffer) (BACnetC
 	return NewBACnetConfirmedServiceRequestReadProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier), nil
 }
 
-func (m BACnetConfirmedServiceRequestReadProperty) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestReadProperty) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (objectIdentifierHeader)
-		io.WriteUint8(8, 0x0C)
+		_objectIdentifierHeaderErr := io.WriteUint8(8, 0x0C)
+		if _objectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (objectType)
 		objectType := uint16(m.objectType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (objectInstanceNumber))
+		_objectInstanceNumberErr := io.WriteUint32(22, (objectInstanceNumber))
+		if _objectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
+		}
 
 		// Const Field (propertyIdentifierHeader)
-		io.WriteUint8(5, 0x03)
+		_propertyIdentifierHeaderErr := io.WriteUint8(5, 0x03)
+		if _propertyIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (propertyIdentifierLength)
 		propertyIdentifierLength := uint8(m.propertyIdentifierLength)
-		io.WriteUint8(3, (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 {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'propertyIdentifier' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 5903c32..49245be 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadPropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadPropertyMultiple interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestReadPropertyMultipleParse(io *spi.ReadBuffer)
 	return NewBACnetConfirmedServiceRequestReadPropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestReadPropertyMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 6c14476..61d3b17 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReadRange.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestReadRange struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReadRange interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestReadRangeParse(io *spi.ReadBuffer) (BACnetConf
 	return NewBACnetConfirmedServiceRequestReadRange(), nil
 }
 
-func (m BACnetConfirmedServiceRequestReadRange) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestReadRange) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 01384d1..2a45777 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestReinitializeDevice.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestReinitializeDevice struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestReinitializeDevice interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestReinitializeDeviceParse(io *spi.ReadBuffer) (B
 	return NewBACnetConfirmedServiceRequestReinitializeDevice(), nil
 }
 
-func (m BACnetConfirmedServiceRequestReinitializeDevice) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestReinitializeDevice) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	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 761cc5c..b64f6e2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemoveListElement.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestRemoveListElement struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemoveListElement interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestRemoveListElementParse(io *spi.ReadBuffer) (BA
 	return NewBACnetConfirmedServiceRequestRemoveListElement(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemoveListElement) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestRemoveListElement) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
index f426b40..45ef9d0 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedAuthenticate.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemovedAuthenticate interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestRemovedAuthenticateParse(io *spi.ReadBuffer) (
 	return NewBACnetConfirmedServiceRequestRemovedAuthenticate(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemovedAuthenticate) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
index 2c922b3..181e5eb 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedReadPropertyConditional.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemovedReadPropertyConditional interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestRemovedReadPropertyConditionalParse(io *spi.Re
 	return NewBACnetConfirmedServiceRequestRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
index 432faf4..02db147 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestRemovedRequestKey.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestRemovedRequestKey struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestRemovedRequestKey interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestRemovedRequestKeyParse(io *spi.ReadBuffer) (BA
 	return NewBACnetConfirmedServiceRequestRemovedRequestKey(), nil
 }
 
-func (m BACnetConfirmedServiceRequestRemovedRequestKey) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestRemovedRequestKey) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
index 5e10fff..d4eb1f6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOV.go
@@ -45,7 +45,7 @@ type BACnetConfirmedServiceRequestSubscribeCOV struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOV interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -219,51 +219,85 @@ func BACnetConfirmedServiceRequestSubscribeCOVParse(io *spi.ReadBuffer) (BACnetC
 	return NewBACnetConfirmedServiceRequestSubscribeCOV(subscriberProcessIdentifier, monitoredObjectType, monitoredObjectInstanceNumber, issueConfirmedNotifications, lifetimeLength, lifetimeSeconds), nil
 }
 
-func (m BACnetConfirmedServiceRequestSubscribeCOV) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestSubscribeCOV) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (subscriberProcessIdentifierHeader)
-		io.WriteUint8(8, 0x09)
+		_subscriberProcessIdentifierHeaderErr := io.WriteUint8(8, 0x09)
+		if _subscriberProcessIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'subscriberProcessIdentifierHeader' field " + _subscriberProcessIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (subscriberProcessIdentifier)
 		subscriberProcessIdentifier := uint8(m.subscriberProcessIdentifier)
-		io.WriteUint8(8, (subscriberProcessIdentifier))
+		_subscriberProcessIdentifierErr := io.WriteUint8(8, (subscriberProcessIdentifier))
+		if _subscriberProcessIdentifierErr != nil {
+			return errors.New("Error serializing 'subscriberProcessIdentifier' field " + _subscriberProcessIdentifierErr.Error())
+		}
 
 		// Const Field (monitoredObjectIdentifierHeader)
-		io.WriteUint8(8, 0x1C)
+		_monitoredObjectIdentifierHeaderErr := io.WriteUint8(8, 0x1C)
+		if _monitoredObjectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'monitoredObjectIdentifierHeader' field " + _monitoredObjectIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (monitoredObjectType)
 		monitoredObjectType := uint16(m.monitoredObjectType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (monitoredObjectInstanceNumber))
+		_monitoredObjectInstanceNumberErr := io.WriteUint32(22, (monitoredObjectInstanceNumber))
+		if _monitoredObjectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'monitoredObjectInstanceNumber' field " + _monitoredObjectInstanceNumberErr.Error())
+		}
 
 		// Const Field (issueConfirmedNotificationsHeader)
-		io.WriteUint8(8, 0x29)
+		_issueConfirmedNotificationsHeaderErr := io.WriteUint8(8, 0x29)
+		if _issueConfirmedNotificationsHeaderErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotificationsHeader' field " + _issueConfirmedNotificationsHeaderErr.Error())
+		}
 
 		// Const Field (issueConfirmedNotificationsSkipBits)
-		io.WriteUint8(7, 0x00)
+		_issueConfirmedNotificationsSkipBitsErr := io.WriteUint8(7, 0x00)
+		if _issueConfirmedNotificationsSkipBitsErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotificationsSkipBits' field " + _issueConfirmedNotificationsSkipBitsErr.Error())
+		}
 
 		// Simple Field (issueConfirmedNotifications)
 		issueConfirmedNotifications := bool(m.issueConfirmedNotifications)
-		io.WriteBit((bool)(issueConfirmedNotifications))
+		_issueConfirmedNotificationsErr := io.WriteBit((bool)(issueConfirmedNotifications))
+		if _issueConfirmedNotificationsErr != nil {
+			return errors.New("Error serializing 'issueConfirmedNotifications' field " + _issueConfirmedNotificationsErr.Error())
+		}
 
 		// Const Field (lifetimeHeader)
-		io.WriteUint8(5, 0x07)
+		_lifetimeHeaderErr := io.WriteUint8(5, 0x07)
+		if _lifetimeHeaderErr != nil {
+			return errors.New("Error serializing 'lifetimeHeader' field " + _lifetimeHeaderErr.Error())
+		}
 
 		// Simple Field (lifetimeLength)
 		lifetimeLength := uint8(m.lifetimeLength)
-		io.WriteUint8(3, (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 {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'lifetimeSeconds' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
index fdbf803..4231daf 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVProperty.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestSubscribeCOVProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOVProperty interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestSubscribeCOVPropertyParse(io *spi.ReadBuffer)
 	return NewBACnetConfirmedServiceRequestSubscribeCOVProperty(), nil
 }
 
-func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestSubscribeCOVProperty) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
index e07cb1f..aa3fce7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestSubscribeCOVPropertyMultipleParse(io *spi.Read
 	return NewBACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestSubscribeCOVPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
index 294f08c..c0b6148 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTClose.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestVTClose struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestVTClose interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestVTCloseParse(io *spi.ReadBuffer) (BACnetConfir
 	return NewBACnetConfirmedServiceRequestVTClose(), nil
 }
 
-func (m BACnetConfirmedServiceRequestVTClose) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestVTClose) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
index bb51558..3f4fb20 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTData.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestVTData struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestVTData interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestVTDataParse(io *spi.ReadBuffer) (BACnetConfirm
 	return NewBACnetConfirmedServiceRequestVTData(), nil
 }
 
-func (m BACnetConfirmedServiceRequestVTData) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestVTData) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
index a74e252..8dec9c6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestVTOpen.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestVTOpen struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestVTOpen interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestVTOpenParse(io *spi.ReadBuffer) (BACnetConfirm
 	return NewBACnetConfirmedServiceRequestVTOpen(), nil
 }
 
-func (m BACnetConfirmedServiceRequestVTOpen) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestVTOpen) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
index 35819a5..1874ad0 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWriteProperty.go
@@ -45,7 +45,7 @@ type BACnetConfirmedServiceRequestWriteProperty struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestWriteProperty interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -226,51 +226,82 @@ func BACnetConfirmedServiceRequestWritePropertyParse(io *spi.ReadBuffer, len uin
 	return NewBACnetConfirmedServiceRequestWriteProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier, value, priority), nil
 }
 
-func (m BACnetConfirmedServiceRequestWriteProperty) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestWriteProperty) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (objectIdentifierHeader)
-		io.WriteUint8(8, 0x0C)
+		_objectIdentifierHeaderErr := io.WriteUint8(8, 0x0C)
+		if _objectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (objectType)
 		objectType := uint16(m.objectType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (objectInstanceNumber))
+		_objectInstanceNumberErr := io.WriteUint32(22, (objectInstanceNumber))
+		if _objectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
+		}
 
 		// Const Field (propertyIdentifierHeader)
-		io.WriteUint8(5, 0x03)
+		_propertyIdentifierHeaderErr := io.WriteUint8(5, 0x03)
+		if _propertyIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (propertyIdentifierLength)
 		propertyIdentifierLength := uint8(m.propertyIdentifierLength)
-		io.WriteUint8(3, (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 {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'propertyIdentifier' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (openingTag)
-		io.WriteUint8(8, 0x3E)
+		_openingTagErr := io.WriteUint8(8, 0x3E)
+		if _openingTagErr != nil {
+			return errors.New("Error serializing 'openingTag' field " + _openingTagErr.Error())
+		}
 
 		// Simple Field (value)
 		value := CastIBACnetTag(m.value)
-		value.Serialize(io)
+		_valueErr := value.Serialize(io)
+		if _valueErr != nil {
+			return errors.New("Error serializing 'value' field " + _valueErr.Error())
+		}
 
 		// Const Field (closingTag)
-		io.WriteUint8(8, 0x3F)
+		_closingTagErr := io.WriteUint8(8, 0x3F)
+		if _closingTagErr != nil {
+			return errors.New("Error serializing 'closingTag' field " + _closingTagErr.Error())
+		}
 
 		// Optional Field (priority) (Can be skipped, if the value is null)
 		var priority *IBACnetTag = nil
 		if m.priority != nil {
 			priority = m.priority
-			CastIBACnetTag(*priority).Serialize(io)
+			_priorityErr := CastIBACnetTag(*priority).Serialize(io)
+			if _priorityErr != nil {
+				return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+			}
 		}
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
index 5441100..deca851 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetConfirmedServiceRequestWritePropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetConfirmedServiceRequestWritePropertyMultiple struct {
 // The corresponding interface
 type IBACnetConfirmedServiceRequestWritePropertyMultiple interface {
 	IBACnetConfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetConfirmedServiceRequestWritePropertyMultipleParse(io *spi.ReadBuffer)
 	return NewBACnetConfirmedServiceRequestWritePropertyMultiple(), nil
 }
 
-func (m BACnetConfirmedServiceRequestWritePropertyMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetConfirmedServiceRequestWritePropertyMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
+	return BACnetConfirmedServiceRequestSerialize(io, m.BACnetConfirmedServiceRequest, CastIBACnetConfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
index e1bfd88..cb557ee 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetError.go
@@ -31,7 +31,7 @@ type BACnetError struct {
 type IBACnetError interface {
 	spi.Message
 	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetErrorInitializer interface {
@@ -126,13 +126,20 @@ func BACnetErrorParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func BACnetErrorSerialize(io spi.WriteBuffer, m BACnetError, i IBACnetError, childSerialize func()) {
+func BACnetErrorSerialize(io spi.WriteBuffer, m BACnetError, i IBACnetError, childSerialize func() error) error {
 
 	// Discriminator Field (serviceChoice) (Used as input to a switch field)
 	serviceChoice := uint8(i.ServiceChoice())
-	io.WriteUint8(8, (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)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
index c459668..7599ae1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicReadFile.go
@@ -30,7 +30,7 @@ type BACnetErrorAtomicReadFile struct {
 // The corresponding interface
 type IBACnetErrorAtomicReadFile interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorAtomicReadFileParse(io *spi.ReadBuffer) (BACnetErrorInitializer,
 	return NewBACnetErrorAtomicReadFile(), nil
 }
 
-func (m BACnetErrorAtomicReadFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
index a8a2382..85a66ab 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorAtomicWriteFile.go
@@ -30,7 +30,7 @@ type BACnetErrorAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetErrorAtomicWriteFile interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetErrorInitializer
 	return NewBACnetErrorAtomicWriteFile(), nil
 }
 
-func (m BACnetErrorAtomicWriteFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
index a5b5ffc..7683016 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorConfirmedPrivateTransfer.go
@@ -30,7 +30,7 @@ type BACnetErrorConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetErrorConfirmedPrivateTransfer interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetErrorIn
 	return NewBACnetErrorConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetErrorConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
index 343be75..6da48c5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorCreateObject.go
@@ -30,7 +30,7 @@ type BACnetErrorCreateObject struct {
 // The corresponding interface
 type IBACnetErrorCreateObject interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorCreateObjectParse(io *spi.ReadBuffer) (BACnetErrorInitializer, e
 	return NewBACnetErrorCreateObject(), nil
 }
 
-func (m BACnetErrorCreateObject) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorCreateObject) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
index db3a0df..383060c 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetAlarmSummary.go
@@ -30,7 +30,7 @@ type BACnetErrorGetAlarmSummary struct {
 // The corresponding interface
 type IBACnetErrorGetAlarmSummary interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetErrorInitializer
 	return NewBACnetErrorGetAlarmSummary(), nil
 }
 
-func (m BACnetErrorGetAlarmSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
index cb20c5d..3135b7d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEnrollmentSummary.go
@@ -30,7 +30,7 @@ type BACnetErrorGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetErrorGetEnrollmentSummary interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetErrorInitia
 	return NewBACnetErrorGetEnrollmentSummary(), nil
 }
 
-func (m BACnetErrorGetEnrollmentSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
index 688af41..e187468 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorGetEventInformation.go
@@ -30,7 +30,7 @@ type BACnetErrorGetEventInformation struct {
 // The corresponding interface
 type IBACnetErrorGetEventInformation interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorGetEventInformationParse(io *spi.ReadBuffer) (BACnetErrorInitial
 	return NewBACnetErrorGetEventInformation(), nil
 }
 
-func (m BACnetErrorGetEventInformation) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorGetEventInformation) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
index b1b4105..00dbfc7 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadProperty.go
@@ -40,7 +40,7 @@ type BACnetErrorReadProperty struct {
 // The corresponding interface
 type IBACnetErrorReadProperty interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -168,37 +168,56 @@ func BACnetErrorReadPropertyParse(io *spi.ReadBuffer) (BACnetErrorInitializer, e
 	return NewBACnetErrorReadProperty(errorClassLength, errorClass, errorCodeLength, errorCode), nil
 }
 
-func (m BACnetErrorReadProperty) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorReadProperty) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (errorClassHeader)
-		io.WriteUint8(5, 0x12)
+		_errorClassHeaderErr := io.WriteUint8(5, 0x12)
+		if _errorClassHeaderErr != nil {
+			return errors.New("Error serializing 'errorClassHeader' field " + _errorClassHeaderErr.Error())
+		}
 
 		// Simple Field (errorClassLength)
 		errorClassLength := uint8(m.errorClassLength)
-		io.WriteUint8(3, (errorClassLength))
+		_errorClassLengthErr := io.WriteUint8(3, (errorClassLength))
+		if _errorClassLengthErr != nil {
+			return errors.New("Error serializing 'errorClassLength' field " + _errorClassLengthErr.Error())
+		}
 
 		// Array Field (errorClass)
 		if m.errorClass != nil {
 			for _, _element := range m.errorClass {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'errorClass' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (errorCodeHeader)
-		io.WriteUint8(5, 0x12)
+		_errorCodeHeaderErr := io.WriteUint8(5, 0x12)
+		if _errorCodeHeaderErr != nil {
+			return errors.New("Error serializing 'errorCodeHeader' field " + _errorCodeHeaderErr.Error())
+		}
 
 		// Simple Field (errorCodeLength)
 		errorCodeLength := uint8(m.errorCodeLength)
-		io.WriteUint8(3, (errorCodeLength))
+		_errorCodeLengthErr := io.WriteUint8(3, (errorCodeLength))
+		if _errorCodeLengthErr != nil {
+			return errors.New("Error serializing 'errorCodeLength' field " + _errorCodeLengthErr.Error())
+		}
 
 		// Array Field (errorCode)
 		if m.errorCode != nil {
 			for _, _element := range m.errorCode {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'errorCode' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
index a928128..ed35cb5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadPropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetErrorReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetErrorReadPropertyMultiple interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetErrorInitia
 	return NewBACnetErrorReadPropertyMultiple(), nil
 }
 
-func (m BACnetErrorReadPropertyMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
index 6c066d0..75b1ab8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorReadRange.go
@@ -30,7 +30,7 @@ type BACnetErrorReadRange struct {
 // The corresponding interface
 type IBACnetErrorReadRange interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorReadRangeParse(io *spi.ReadBuffer) (BACnetErrorInitializer, erro
 	return NewBACnetErrorReadRange(), nil
 }
 
-func (m BACnetErrorReadRange) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorReadRange) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
index e960cef..5de2a36 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedAuthenticate.go
@@ -30,7 +30,7 @@ type BACnetErrorRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetErrorRemovedAuthenticate interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetErrorInitial
 	return NewBACnetErrorRemovedAuthenticate(), nil
 }
 
-func (m BACnetErrorRemovedAuthenticate) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
index 30a385b..234f78b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorRemovedReadPropertyConditional.go
@@ -30,7 +30,7 @@ type BACnetErrorRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetErrorRemovedReadPropertyConditional interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BACnetE
 	return NewBACnetErrorRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetErrorRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
index 180b297..d3a9097 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTData.go
@@ -30,7 +30,7 @@ type BACnetErrorVTData struct {
 // The corresponding interface
 type IBACnetErrorVTData interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorVTDataParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error)
 	return NewBACnetErrorVTData(), nil
 }
 
-func (m BACnetErrorVTData) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorVTData) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
index a8cbd95..00893be 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetErrorVTOpen.go
@@ -30,7 +30,7 @@ type BACnetErrorVTOpen struct {
 // The corresponding interface
 type IBACnetErrorVTOpen interface {
 	IBACnetError
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetErrorVTOpenParse(io *spi.ReadBuffer) (BACnetErrorInitializer, error)
 	return NewBACnetErrorVTOpen(), nil
 }
 
-func (m BACnetErrorVTOpen) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetErrorVTOpen) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
+	return BACnetErrorSerialize(io, m.BACnetError, CastIBACnetError(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
index 9f752cb..ce543ff 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNetworkType.go
@@ -24,7 +24,7 @@ type BACnetNetworkType uint8
 
 type IBACnetNetworkType interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -64,6 +64,7 @@ func BACnetNetworkTypeParse(io *spi.ReadBuffer) (BACnetNetworkType, error) {
 	return 0, nil
 }
 
-func (e BACnetNetworkType) Serialize(io spi.WriteBuffer) {
+func (e BACnetNetworkType) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
index b4f2194..cf995a2 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNodeType.go
@@ -24,7 +24,7 @@ type BACnetNodeType uint8
 
 type IBACnetNodeType interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -75,6 +75,7 @@ func BACnetNodeTypeParse(io *spi.ReadBuffer) (BACnetNodeType, error) {
 	return 0, nil
 }
 
-func (e BACnetNodeType) Serialize(io spi.WriteBuffer) {
+func (e BACnetNodeType) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
index 455cfdb..80076ad 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetNotifyType.go
@@ -24,7 +24,7 @@ type BACnetNotifyType uint8
 
 type IBACnetNotifyType interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -56,6 +56,7 @@ func BACnetNotifyTypeParse(io *spi.ReadBuffer) (BACnetNotifyType, error) {
 	return 0, nil
 }
 
-func (e BACnetNotifyType) Serialize(io spi.WriteBuffer) {
+func (e BACnetNotifyType) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
index 3f292c7..9259fc6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetObjectType.go
@@ -24,7 +24,7 @@ type BACnetObjectType uint16
 
 type IBACnetObjectType interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -112,6 +112,7 @@ func BACnetObjectTypeParse(io *spi.ReadBuffer) (BACnetObjectType, error) {
 	return 0, nil
 }
 
-func (e BACnetObjectType) Serialize(io spi.WriteBuffer) {
+func (e BACnetObjectType) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
index b0d6d37..8c3dc44 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAck.go
@@ -31,7 +31,7 @@ type BACnetServiceAck struct {
 type IBACnetServiceAck interface {
 	spi.Message
 	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetServiceAckInitializer interface {
@@ -126,13 +126,20 @@ func BACnetServiceAckParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func BACnetServiceAckSerialize(io spi.WriteBuffer, m BACnetServiceAck, i IBACnetServiceAck, childSerialize func()) {
+func BACnetServiceAckSerialize(io spi.WriteBuffer, m BACnetServiceAck, i IBACnetServiceAck, childSerialize func() error) error {
 
 	// Discriminator Field (serviceChoice) (Used as input to a switch field)
 	serviceChoice := uint8(i.ServiceChoice())
-	io.WriteUint8(8, (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)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
index 7d29a6f..1ebb8dc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicReadFile.go
@@ -30,7 +30,7 @@ type BACnetServiceAckAtomicReadFile struct {
 // The corresponding interface
 type IBACnetServiceAckAtomicReadFile interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckAtomicReadFileParse(io *spi.ReadBuffer) (BACnetServiceAckIn
 	return NewBACnetServiceAckAtomicReadFile(), nil
 }
 
-func (m BACnetServiceAckAtomicReadFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckAtomicReadFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
index 43ef81f..95f9844 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckAtomicWriteFile.go
@@ -30,7 +30,7 @@ type BACnetServiceAckAtomicWriteFile struct {
 // The corresponding interface
 type IBACnetServiceAckAtomicWriteFile interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckAtomicWriteFileParse(io *spi.ReadBuffer) (BACnetServiceAckI
 	return NewBACnetServiceAckAtomicWriteFile(), nil
 }
 
-func (m BACnetServiceAckAtomicWriteFile) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckAtomicWriteFile) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
index bd0c852..85f4987 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckConfirmedPrivateTransfer.go
@@ -30,7 +30,7 @@ type BACnetServiceAckConfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetServiceAckConfirmedPrivateTransfer interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckConfirmedPrivateTransferParse(io *spi.ReadBuffer) (BACnetSe
 	return NewBACnetServiceAckConfirmedPrivateTransfer(), nil
 }
 
-func (m BACnetServiceAckConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckConfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
index 0cfe474..5abb68b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckCreateObject.go
@@ -30,7 +30,7 @@ type BACnetServiceAckCreateObject struct {
 // The corresponding interface
 type IBACnetServiceAckCreateObject interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckCreateObjectParse(io *spi.ReadBuffer) (BACnetServiceAckInit
 	return NewBACnetServiceAckCreateObject(), nil
 }
 
-func (m BACnetServiceAckCreateObject) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckCreateObject) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
index a7a7710..0c417f0 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetAlarmSummary.go
@@ -30,7 +30,7 @@ type BACnetServiceAckGetAlarmSummary struct {
 // The corresponding interface
 type IBACnetServiceAckGetAlarmSummary interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckGetAlarmSummaryParse(io *spi.ReadBuffer) (BACnetServiceAckI
 	return NewBACnetServiceAckGetAlarmSummary(), nil
 }
 
-func (m BACnetServiceAckGetAlarmSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckGetAlarmSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
index 65f61f3..ff5b088 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEnrollmentSummary.go
@@ -30,7 +30,7 @@ type BACnetServiceAckGetEnrollmentSummary struct {
 // The corresponding interface
 type IBACnetServiceAckGetEnrollmentSummary interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckGetEnrollmentSummaryParse(io *spi.ReadBuffer) (BACnetServic
 	return NewBACnetServiceAckGetEnrollmentSummary(), nil
 }
 
-func (m BACnetServiceAckGetEnrollmentSummary) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckGetEnrollmentSummary) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
index 5e386f7..d9ec94d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckGetEventInformation.go
@@ -30,7 +30,7 @@ type BACnetServiceAckGetEventInformation struct {
 // The corresponding interface
 type IBACnetServiceAckGetEventInformation interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckGetEventInformationParse(io *spi.ReadBuffer) (BACnetService
 	return NewBACnetServiceAckGetEventInformation(), nil
 }
 
-func (m BACnetServiceAckGetEventInformation) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckGetEventInformation) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
index 6afd7bc..51abc3b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadProperty.go
@@ -44,7 +44,7 @@ type BACnetServiceAckReadProperty struct {
 // The corresponding interface
 type IBACnetServiceAckReadProperty interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -202,44 +202,72 @@ func BACnetServiceAckReadPropertyParse(io *spi.ReadBuffer) (BACnetServiceAckInit
 	return NewBACnetServiceAckReadProperty(objectType, objectInstanceNumber, propertyIdentifierLength, propertyIdentifier, value), nil
 }
 
-func (m BACnetServiceAckReadProperty) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckReadProperty) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (objectIdentifierHeader)
-		io.WriteUint8(8, 0x0C)
+		_objectIdentifierHeaderErr := io.WriteUint8(8, 0x0C)
+		if _objectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (objectType)
 		objectType := uint16(m.objectType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (objectInstanceNumber))
+		_objectInstanceNumberErr := io.WriteUint32(22, (objectInstanceNumber))
+		if _objectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
+		}
 
 		// Const Field (propertyIdentifierHeader)
-		io.WriteUint8(5, 0x03)
+		_propertyIdentifierHeaderErr := io.WriteUint8(5, 0x03)
+		if _propertyIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'propertyIdentifierHeader' field " + _propertyIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (propertyIdentifierLength)
 		propertyIdentifierLength := uint8(m.propertyIdentifierLength)
-		io.WriteUint8(3, (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 {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'propertyIdentifier' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (openingTag)
-		io.WriteUint8(8, 0x3E)
+		_openingTagErr := io.WriteUint8(8, 0x3E)
+		if _openingTagErr != nil {
+			return errors.New("Error serializing 'openingTag' field " + _openingTagErr.Error())
+		}
 
 		// Simple Field (value)
 		value := CastIBACnetTag(m.value)
-		value.Serialize(io)
+		_valueErr := value.Serialize(io)
+		if _valueErr != nil {
+			return errors.New("Error serializing 'value' field " + _valueErr.Error())
+		}
 
 		// Const Field (closingTag)
-		io.WriteUint8(8, 0x3F)
+		_closingTagErr := io.WriteUint8(8, 0x3F)
+		if _closingTagErr != nil {
+			return errors.New("Error serializing 'closingTag' field " + _closingTagErr.Error())
+		}
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
index 88bde24..fa9e994 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadPropertyMultiple.go
@@ -30,7 +30,7 @@ type BACnetServiceAckReadPropertyMultiple struct {
 // The corresponding interface
 type IBACnetServiceAckReadPropertyMultiple interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckReadPropertyMultipleParse(io *spi.ReadBuffer) (BACnetServic
 	return NewBACnetServiceAckReadPropertyMultiple(), nil
 }
 
-func (m BACnetServiceAckReadPropertyMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckReadPropertyMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
index 5e192b4..e79084b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckReadRange.go
@@ -30,7 +30,7 @@ type BACnetServiceAckReadRange struct {
 // The corresponding interface
 type IBACnetServiceAckReadRange interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckReadRangeParse(io *spi.ReadBuffer) (BACnetServiceAckInitial
 	return NewBACnetServiceAckReadRange(), nil
 }
 
-func (m BACnetServiceAckReadRange) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckReadRange) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
index 03a2e70..ba77ff4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedAuthenticate.go
@@ -30,7 +30,7 @@ type BACnetServiceAckRemovedAuthenticate struct {
 // The corresponding interface
 type IBACnetServiceAckRemovedAuthenticate interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckRemovedAuthenticateParse(io *spi.ReadBuffer) (BACnetService
 	return NewBACnetServiceAckRemovedAuthenticate(), nil
 }
 
-func (m BACnetServiceAckRemovedAuthenticate) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckRemovedAuthenticate) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
index 0df0a00..abc3714 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckRemovedReadPropertyConditional.go
@@ -30,7 +30,7 @@ type BACnetServiceAckRemovedReadPropertyConditional struct {
 // The corresponding interface
 type IBACnetServiceAckRemovedReadPropertyConditional interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckRemovedReadPropertyConditionalParse(io *spi.ReadBuffer) (BA
 	return NewBACnetServiceAckRemovedReadPropertyConditional(), nil
 }
 
-func (m BACnetServiceAckRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckRemovedReadPropertyConditional) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
index 45305dd..1c9181a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTData.go
@@ -30,7 +30,7 @@ type BACnetServiceAckVTData struct {
 // The corresponding interface
 type IBACnetServiceAckVTData interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckVTDataParse(io *spi.ReadBuffer) (BACnetServiceAckInitialize
 	return NewBACnetServiceAckVTData(), nil
 }
 
-func (m BACnetServiceAckVTData) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckVTData) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
index 2e59f5a..dddce6e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetServiceAckVTOpen.go
@@ -30,7 +30,7 @@ type BACnetServiceAckVTOpen struct {
 // The corresponding interface
 type IBACnetServiceAckVTOpen interface {
 	IBACnetServiceAck
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetServiceAckVTOpenParse(io *spi.ReadBuffer) (BACnetServiceAckInitialize
 	return NewBACnetServiceAckVTOpen(), nil
 }
 
-func (m BACnetServiceAckVTOpen) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetServiceAckVTOpen) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
+	return BACnetServiceAckSerialize(io, m.BACnetServiceAck, CastIBACnetServiceAck(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
index 59b97fe..fbd96c6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTag.go
@@ -35,7 +35,7 @@ type BACnetTag struct {
 type IBACnetTag interface {
 	spi.Message
 	ContextSpecificTag() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetTagInitializer interface {
@@ -180,35 +180,54 @@ func BACnetTagParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(typeOrTagNumber, lengthValueType, extTagNumber, extLength), nil
 }
 
-func BACnetTagSerialize(io spi.WriteBuffer, m BACnetTag, i IBACnetTag, childSerialize func()) {
+func BACnetTagSerialize(io spi.WriteBuffer, m BACnetTag, i IBACnetTag, childSerialize func() error) error {
 
 	// Simple Field (typeOrTagNumber)
 	typeOrTagNumber := uint8(m.typeOrTagNumber)
-	io.WriteUint8(4, (typeOrTagNumber))
+	_typeOrTagNumberErr := io.WriteUint8(4, (typeOrTagNumber))
+	if _typeOrTagNumberErr != nil {
+		return errors.New("Error serializing 'typeOrTagNumber' field " + _typeOrTagNumberErr.Error())
+	}
 
 	// Discriminator Field (contextSpecificTag) (Used as input to a switch field)
 	contextSpecificTag := uint8(i.ContextSpecificTag())
-	io.WriteUint8(1, (contextSpecificTag))
+	_contextSpecificTagErr := io.WriteUint8(1, (contextSpecificTag))
+	if _contextSpecificTagErr != nil {
+		return errors.New("Error serializing 'contextSpecificTag' field " + _contextSpecificTagErr.Error())
+	}
 
 	// Simple Field (lengthValueType)
 	lengthValueType := uint8(m.lengthValueType)
-	io.WriteUint8(3, (lengthValueType))
+	_lengthValueTypeErr := io.WriteUint8(3, (lengthValueType))
+	if _lengthValueTypeErr != nil {
+		return errors.New("Error serializing 'lengthValueType' field " + _lengthValueTypeErr.Error())
+	}
 
 	// Optional Field (extTagNumber) (Can be skipped, if the value is null)
 	var extTagNumber *uint8 = nil
 	if m.extTagNumber != nil {
 		extTagNumber = m.extTagNumber
-		io.WriteUint8(8, *(extTagNumber))
+		_extTagNumberErr := io.WriteUint8(8, *(extTagNumber))
+		if _extTagNumberErr != nil {
+			return errors.New("Error serializing 'extTagNumber' field " + _extTagNumberErr.Error())
+		}
 	}
 
 	// Optional Field (extLength) (Can be skipped, if the value is null)
 	var extLength *uint8 = nil
 	if m.extLength != nil {
 		extLength = m.extLength
-		io.WriteUint8(8, *(extLength))
+		_extLengthErr := io.WriteUint8(8, *(extLength))
+		if _extLengthErr != nil {
+			return errors.New("Error serializing 'extLength' field " + _extLengthErr.Error())
+		}
 	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
index 5a7541f..4cf24be 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBitString.go
@@ -33,7 +33,7 @@ type BACnetTagApplicationBitString struct {
 // The corresponding interface
 type IBACnetTagApplicationBitString interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -116,20 +116,27 @@ func BACnetTagApplicationBitStringParse(io *spi.ReadBuffer, lengthValueType uint
 	return NewBACnetTagApplicationBitString(unusedBits, data), nil
 }
 
-func (m BACnetTagApplicationBitString) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationBitString) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (unusedBits)
 		unusedBits := uint8(m.unusedBits)
-		io.WriteUint8(8, (unusedBits))
+		_unusedBitsErr := io.WriteUint8(8, (unusedBits))
+		if _unusedBitsErr != nil {
+			return errors.New("Error serializing 'unusedBits' field " + _unusedBitsErr.Error())
+		}
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
index a06b740..51eaf5e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationBoolean.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationBoolean struct {
 // The corresponding interface
 type IBACnetTagApplicationBoolean interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationBooleanParse(io *spi.ReadBuffer) (BACnetTagInitializer,
 	return NewBACnetTagApplicationBoolean(), nil
 }
 
-func (m BACnetTagApplicationBoolean) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationBoolean) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
index a9d419b..99a80db 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationCharacterString.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationCharacterString struct {
 // The corresponding interface
 type IBACnetTagApplicationCharacterString interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationCharacterStringParse(io *spi.ReadBuffer) (BACnetTagInit
 	return NewBACnetTagApplicationCharacterString(), nil
 }
 
-func (m BACnetTagApplicationCharacterString) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationCharacterString) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
index 418b1e8..ec2c3ca 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDate.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationDate struct {
 // The corresponding interface
 type IBACnetTagApplicationDate interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationDateParse(io *spi.ReadBuffer) (BACnetTagInitializer, er
 	return NewBACnetTagApplicationDate(), nil
 }
 
-func (m BACnetTagApplicationDate) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationDate) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
index 9fc81b3..97a3849 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationDouble.go
@@ -32,7 +32,7 @@ type BACnetTagApplicationDouble struct {
 // The corresponding interface
 type IBACnetTagApplicationDouble interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,13 +97,17 @@ func BACnetTagApplicationDoubleParse(io *spi.ReadBuffer, lengthValueType uint8,
 	return NewBACnetTagApplicationDouble(value), nil
 }
 
-func (m BACnetTagApplicationDouble) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationDouble) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (value)
 		value := float64(m.value)
-		io.WriteFloat64(64, (value))
+		_valueErr := io.WriteFloat64(64, (value))
+		if _valueErr != nil {
+			return errors.New("Error serializing 'value' field " + _valueErr.Error())
+		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
index 35e9c17..36589d4 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationEnumerated.go
@@ -32,7 +32,7 @@ type BACnetTagApplicationEnumerated struct {
 // The corresponding interface
 type IBACnetTagApplicationEnumerated interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -106,16 +106,20 @@ func BACnetTagApplicationEnumeratedParse(io *spi.ReadBuffer, lengthValueType uin
 	return NewBACnetTagApplicationEnumerated(data), nil
 }
 
-func (m BACnetTagApplicationEnumerated) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationEnumerated) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
index 0b07c24..e266af6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationNull.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationNull struct {
 // The corresponding interface
 type IBACnetTagApplicationNull interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationNullParse(io *spi.ReadBuffer) (BACnetTagInitializer, er
 	return NewBACnetTagApplicationNull(), nil
 }
 
-func (m BACnetTagApplicationNull) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationNull) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
index 5ea7542..005dce8 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationObjectIdentifier.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationObjectIdentifier struct {
 // The corresponding interface
 type IBACnetTagApplicationObjectIdentifier interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationObjectIdentifierParse(io *spi.ReadBuffer) (BACnetTagIni
 	return NewBACnetTagApplicationObjectIdentifier(), nil
 }
 
-func (m BACnetTagApplicationObjectIdentifier) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationObjectIdentifier) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
index 4606ad4..cd34a0a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationOctetString.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationOctetString struct {
 // The corresponding interface
 type IBACnetTagApplicationOctetString interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationOctetStringParse(io *spi.ReadBuffer) (BACnetTagInitiali
 	return NewBACnetTagApplicationOctetString(), nil
 }
 
-func (m BACnetTagApplicationOctetString) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationOctetString) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
index 5ba6238..2617ccb 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationReal.go
@@ -32,7 +32,7 @@ type BACnetTagApplicationReal struct {
 // The corresponding interface
 type IBACnetTagApplicationReal interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -97,13 +97,17 @@ func BACnetTagApplicationRealParse(io *spi.ReadBuffer, lengthValueType uint8, ex
 	return NewBACnetTagApplicationReal(value), nil
 }
 
-func (m BACnetTagApplicationReal) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationReal) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (value)
 		value := float32(m.value)
-		io.WriteFloat32(32, (value))
+		_valueErr := io.WriteFloat32(32, (value))
+		if _valueErr != nil {
+			return errors.New("Error serializing 'value' field " + _valueErr.Error())
+		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
index 091ce78..301b39a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationSignedInteger.go
@@ -32,7 +32,7 @@ type BACnetTagApplicationSignedInteger struct {
 // The corresponding interface
 type IBACnetTagApplicationSignedInteger interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -106,16 +106,20 @@ func BACnetTagApplicationSignedIntegerParse(io *spi.ReadBuffer, lengthValueType
 	return NewBACnetTagApplicationSignedInteger(data), nil
 }
 
-func (m BACnetTagApplicationSignedInteger) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationSignedInteger) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
index 7a5e8f6..0df3b25 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationTime.go
@@ -30,7 +30,7 @@ type BACnetTagApplicationTime struct {
 // The corresponding interface
 type IBACnetTagApplicationTime interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -86,9 +86,10 @@ func BACnetTagApplicationTimeParse(io *spi.ReadBuffer) (BACnetTagInitializer, er
 	return NewBACnetTagApplicationTime(), nil
 }
 
-func (m BACnetTagApplicationTime) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationTime) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
index 8abec83..eaa2884 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagApplicationUnsignedInteger.go
@@ -32,7 +32,7 @@ type BACnetTagApplicationUnsignedInteger struct {
 // The corresponding interface
 type IBACnetTagApplicationUnsignedInteger interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -106,16 +106,20 @@ func BACnetTagApplicationUnsignedIntegerParse(io *spi.ReadBuffer, lengthValueTyp
 	return NewBACnetTagApplicationUnsignedInteger(data), nil
 }
 
-func (m BACnetTagApplicationUnsignedInteger) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagApplicationUnsignedInteger) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
index dcffd64..f1aa58f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagContext.go
@@ -32,7 +32,7 @@ type BACnetTagContext struct {
 // The corresponding interface
 type IBACnetTagContext interface {
 	IBACnetTag
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -106,16 +106,20 @@ func BACnetTagContextParse(io *spi.ReadBuffer, typeOrTagNumber uint8, extTagNumb
 	return NewBACnetTagContext(data), nil
 }
 
-func (m BACnetTagContext) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetTagContext) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
+	return BACnetTagSerialize(io, m.BACnetTag, CastIBACnetTag(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
index aad6bea..f2d3983 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetTagWithContent.go
@@ -43,7 +43,7 @@ type BACnetTagWithContent struct {
 // The corresponding interface
 type IBACnetTagWithContent interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewBACnetTagWithContent(typeOrTagNumber uint8, contextSpecificTag uint8, lengthValueType uint8, extTagNumber *uint8, extLength *uint8, propertyIdentifier []uint8, value IBACnetTag) spi.Message {
@@ -201,49 +201,77 @@ func BACnetTagWithContentParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewBACnetTagWithContent(typeOrTagNumber, contextSpecificTag, lengthValueType, extTagNumber, extLength, propertyIdentifier, value), nil
 }
 
-func (m BACnetTagWithContent) Serialize(io spi.WriteBuffer) {
+func (m BACnetTagWithContent) Serialize(io spi.WriteBuffer) error {
 
 	// Simple Field (typeOrTagNumber)
 	typeOrTagNumber := uint8(m.typeOrTagNumber)
-	io.WriteUint8(4, (typeOrTagNumber))
+	_typeOrTagNumberErr := io.WriteUint8(4, (typeOrTagNumber))
+	if _typeOrTagNumberErr != nil {
+		return errors.New("Error serializing 'typeOrTagNumber' field " + _typeOrTagNumberErr.Error())
+	}
 
 	// Simple Field (contextSpecificTag)
 	contextSpecificTag := uint8(m.contextSpecificTag)
-	io.WriteUint8(1, (contextSpecificTag))
+	_contextSpecificTagErr := io.WriteUint8(1, (contextSpecificTag))
+	if _contextSpecificTagErr != nil {
+		return errors.New("Error serializing 'contextSpecificTag' field " + _contextSpecificTagErr.Error())
+	}
 
 	// Simple Field (lengthValueType)
 	lengthValueType := uint8(m.lengthValueType)
-	io.WriteUint8(3, (lengthValueType))
+	_lengthValueTypeErr := io.WriteUint8(3, (lengthValueType))
+	if _lengthValueTypeErr != nil {
+		return errors.New("Error serializing 'lengthValueType' field " + _lengthValueTypeErr.Error())
+	}
 
 	// Optional Field (extTagNumber) (Can be skipped, if the value is null)
 	var extTagNumber *uint8 = nil
 	if m.extTagNumber != nil {
 		extTagNumber = m.extTagNumber
-		io.WriteUint8(8, *(extTagNumber))
+		_extTagNumberErr := io.WriteUint8(8, *(extTagNumber))
+		if _extTagNumberErr != nil {
+			return errors.New("Error serializing 'extTagNumber' field " + _extTagNumberErr.Error())
+		}
 	}
 
 	// Optional Field (extLength) (Can be skipped, if the value is null)
 	var extLength *uint8 = nil
 	if m.extLength != nil {
 		extLength = m.extLength
-		io.WriteUint8(8, *(extLength))
+		_extLengthErr := io.WriteUint8(8, *(extLength))
+		if _extLengthErr != nil {
+			return errors.New("Error serializing 'extLength' field " + _extLengthErr.Error())
+		}
 	}
 
 	// Array Field (propertyIdentifier)
 	if m.propertyIdentifier != nil {
 		for _, _element := range m.propertyIdentifier {
-			io.WriteUint8(8, _element)
+			_elementErr := io.WriteUint8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'propertyIdentifier' field " + _elementErr.Error())
+			}
 		}
 	}
 
 	// Const Field (openTag)
-	io.WriteUint8(8, 0x2e)
+	_openTagErr := io.WriteUint8(8, 0x2e)
+	if _openTagErr != nil {
+		return errors.New("Error serializing 'openTag' field " + _openTagErr.Error())
+	}
 
 	// Simple Field (value)
 	value := CastIBACnetTag(m.value)
-	value.Serialize(io)
+	_valueErr := value.Serialize(io)
+	if _valueErr != nil {
+		return errors.New("Error serializing 'value' field " + _valueErr.Error())
+	}
 
 	// Const Field (closingTag)
-	io.WriteUint8(8, 0x2f)
+	_closingTagErr := io.WriteUint8(8, 0x2f)
+	if _closingTagErr != nil {
+		return errors.New("Error serializing 'closingTag' field " + _closingTagErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
index 4cd7b60..e121e45 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequest.go
@@ -31,7 +31,7 @@ type BACnetUnconfirmedServiceRequest struct {
 type IBACnetUnconfirmedServiceRequest interface {
 	spi.Message
 	ServiceChoice() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BACnetUnconfirmedServiceRequestInitializer interface {
@@ -122,13 +122,20 @@ func BACnetUnconfirmedServiceRequestParse(io *spi.ReadBuffer, len uint16) (spi.M
 	return initializer.initialize(), nil
 }
 
-func BACnetUnconfirmedServiceRequestSerialize(io spi.WriteBuffer, m BACnetUnconfirmedServiceRequest, i IBACnetUnconfirmedServiceRequest, childSerialize func()) {
+func BACnetUnconfirmedServiceRequestSerialize(io spi.WriteBuffer, m BACnetUnconfirmedServiceRequest, i IBACnetUnconfirmedServiceRequest, childSerialize func() error) error {
 
 	// Discriminator Field (serviceChoice) (Used as input to a switch field)
 	serviceChoice := uint8(i.ServiceChoice())
-	io.WriteUint8(8, (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)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
index 7272ab5..519144a 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIAm.go
@@ -44,7 +44,7 @@ type BACnetUnconfirmedServiceRequestIAm struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestIAm interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -206,48 +206,79 @@ func BACnetUnconfirmedServiceRequestIAmParse(io *spi.ReadBuffer) (BACnetUnconfir
 	return NewBACnetUnconfirmedServiceRequestIAm(objectType, objectInstanceNumber, maximumApduLengthAcceptedLength, maximumApduLengthAccepted, segmentationSupported, vendorId), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestIAm) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestIAm) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (objectIdentifierHeader)
-		io.WriteUint8(8, 0xC4)
+		_objectIdentifierHeaderErr := io.WriteUint8(8, 0xC4)
+		if _objectIdentifierHeaderErr != nil {
+			return errors.New("Error serializing 'objectIdentifierHeader' field " + _objectIdentifierHeaderErr.Error())
+		}
 
 		// Simple Field (objectType)
 		objectType := uint16(m.objectType)
-		io.WriteUint16(10, (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)
-		io.WriteUint32(22, (objectInstanceNumber))
+		_objectInstanceNumberErr := io.WriteUint32(22, (objectInstanceNumber))
+		if _objectInstanceNumberErr != nil {
+			return errors.New("Error serializing 'objectInstanceNumber' field " + _objectInstanceNumberErr.Error())
+		}
 
 		// Const Field (maximumApduLengthAcceptedHeader)
-		io.WriteUint8(5, 0x04)
+		_maximumApduLengthAcceptedHeaderErr := io.WriteUint8(5, 0x04)
+		if _maximumApduLengthAcceptedHeaderErr != nil {
+			return errors.New("Error serializing 'maximumApduLengthAcceptedHeader' field " + _maximumApduLengthAcceptedHeaderErr.Error())
+		}
 
 		// Simple Field (maximumApduLengthAcceptedLength)
 		maximumApduLengthAcceptedLength := uint8(m.maximumApduLengthAcceptedLength)
-		io.WriteUint8(3, (maximumApduLengthAcceptedLength))
+		_maximumApduLengthAcceptedLengthErr := io.WriteUint8(3, (maximumApduLengthAcceptedLength))
+		if _maximumApduLengthAcceptedLengthErr != nil {
+			return errors.New("Error serializing 'maximumApduLengthAcceptedLength' field " + _maximumApduLengthAcceptedLengthErr.Error())
+		}
 
 		// Array Field (maximumApduLengthAccepted)
 		if m.maximumApduLengthAccepted != nil {
 			for _, _element := range m.maximumApduLengthAccepted {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'maximumApduLengthAccepted' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (segmentationSupportedHeader)
-		io.WriteUint8(8, 0x91)
+		_segmentationSupportedHeaderErr := io.WriteUint8(8, 0x91)
+		if _segmentationSupportedHeaderErr != nil {
+			return errors.New("Error serializing 'segmentationSupportedHeader' field " + _segmentationSupportedHeaderErr.Error())
+		}
 
 		// Simple Field (segmentationSupported)
 		segmentationSupported := uint8(m.segmentationSupported)
-		io.WriteUint8(8, (segmentationSupported))
+		_segmentationSupportedErr := io.WriteUint8(8, (segmentationSupported))
+		if _segmentationSupportedErr != nil {
+			return errors.New("Error serializing 'segmentationSupported' field " + _segmentationSupportedErr.Error())
+		}
 
 		// Const Field (vendorIdHeader)
-		io.WriteUint8(8, 0x21)
+		_vendorIdHeaderErr := io.WriteUint8(8, 0x21)
+		if _vendorIdHeaderErr != nil {
+			return errors.New("Error serializing 'vendorIdHeader' field " + _vendorIdHeaderErr.Error())
+		}
 
 		// Simple Field (vendorId)
 		vendorId := uint8(m.vendorId)
-		io.WriteUint8(8, (vendorId))
+		_vendorIdErr := io.WriteUint8(8, (vendorId))
+		if _vendorIdErr != nil {
+			return errors.New("Error serializing 'vendorId' field " + _vendorIdErr.Error())
+		}
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
index a882221..78f44c6 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestIHave.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestIHave struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestIHave interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestIHaveParse(io *spi.ReadBuffer) (BACnetUnconf
 	return NewBACnetUnconfirmedServiceRequestIHave(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestIHave) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestIHave) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
index cd3285f..d54fb23 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestTimeSynchronization.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestTimeSynchronization struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestTimeSynchronization interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestTimeSynchronizationParse(io *spi.ReadBuffer)
 	return NewBACnetUnconfirmedServiceRequestTimeSynchronization(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestTimeSynchronization) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestTimeSynchronization) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
index 4faaa6c..a7259f1 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUTCTimeSynchronization.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestUTCTimeSynchronization struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUTCTimeSynchronization interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestUTCTimeSynchronizationParse(io *spi.ReadBuff
 	return NewBACnetUnconfirmedServiceRequestUTCTimeSynchronization(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestUTCTimeSynchronization) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
index c8b867a..f3ea7be 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationParse(io *spi.Read
 	return NewBACnetUnconfirmedServiceRequestUnconfirmedCOVNotification(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotification) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
index 9b935ed..1de86bf 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultipleParse(io *
 	return NewBACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedCOVNotificationMultiple) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
index 68b1b44..e2e0664 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedEventNotification.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedEventNotification struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedEventNotification interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestUnconfirmedEventNotificationParse(io *spi.Re
 	return NewBACnetUnconfirmedServiceRequestUnconfirmedEventNotification(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedEventNotification) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
index 41c78df..f3cde16 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer.go
@@ -41,7 +41,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -177,36 +177,58 @@ func BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransferParse(io *spi.Read
 	return NewBACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer(vendorId, serviceNumber, values), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedPrivateTransfer) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (vendorIdHeader)
-		io.WriteUint8(8, 0x09)
+		_vendorIdHeaderErr := io.WriteUint8(8, 0x09)
+		if _vendorIdHeaderErr != nil {
+			return errors.New("Error serializing 'vendorIdHeader' field " + _vendorIdHeaderErr.Error())
+		}
 
 		// Simple Field (vendorId)
 		vendorId := uint8(m.vendorId)
-		io.WriteUint8(8, (vendorId))
+		_vendorIdErr := io.WriteUint8(8, (vendorId))
+		if _vendorIdErr != nil {
+			return errors.New("Error serializing 'vendorId' field " + _vendorIdErr.Error())
+		}
 
 		// Const Field (serviceNumberHeader)
-		io.WriteUint8(8, 0x1A)
+		_serviceNumberHeaderErr := io.WriteUint8(8, 0x1A)
+		if _serviceNumberHeaderErr != nil {
+			return errors.New("Error serializing 'serviceNumberHeader' field " + _serviceNumberHeaderErr.Error())
+		}
 
 		// Simple Field (serviceNumber)
 		serviceNumber := uint16(m.serviceNumber)
-		io.WriteUint16(16, (serviceNumber))
+		_serviceNumberErr := io.WriteUint16(16, (serviceNumber))
+		if _serviceNumberErr != nil {
+			return errors.New("Error serializing 'serviceNumber' field " + _serviceNumberErr.Error())
+		}
 
 		// Const Field (listOfValuesOpeningTag)
-		io.WriteUint8(8, 0x2E)
+		_listOfValuesOpeningTagErr := io.WriteUint8(8, 0x2E)
+		if _listOfValuesOpeningTagErr != nil {
+			return errors.New("Error serializing 'listOfValuesOpeningTag' field " + _listOfValuesOpeningTagErr.Error())
+		}
 
 		// Array Field (values)
 		if m.values != nil {
 			for _, _element := range m.values {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'values' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (listOfValuesClosingTag)
-		io.WriteUint8(8, 0x2F)
+		_listOfValuesClosingTagErr := io.WriteUint8(8, 0x2F)
+		if _listOfValuesClosingTagErr != nil {
+			return errors.New("Error serializing 'listOfValuesClosingTag' field " + _listOfValuesClosingTagErr.Error())
+		}
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
index d12529d..b20136f 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestUnconfirmedTextMessage.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestUnconfirmedTextMessage struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestUnconfirmedTextMessage interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestUnconfirmedTextMessageParse(io *spi.ReadBuff
 	return NewBACnetUnconfirmedServiceRequestUnconfirmedTextMessage(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestUnconfirmedTextMessage) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
index 6d3f87c..cfb74b5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoHas.go
@@ -41,7 +41,7 @@ type BACnetUnconfirmedServiceRequestWhoHas struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestWhoHas interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -183,41 +183,66 @@ func BACnetUnconfirmedServiceRequestWhoHasParse(io *spi.ReadBuffer) (BACnetUncon
 	return NewBACnetUnconfirmedServiceRequestWhoHas(deviceInstanceLowLimit, deviceInstanceHighLimit, objectNameCharacterSet, objectName), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestWhoHas) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestWhoHas) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (deviceInstanceLowLimitHeader)
-		io.WriteUint8(8, 0x0B)
+		_deviceInstanceLowLimitHeaderErr := io.WriteUint8(8, 0x0B)
+		if _deviceInstanceLowLimitHeaderErr != nil {
+			return errors.New("Error serializing 'deviceInstanceLowLimitHeader' field " + _deviceInstanceLowLimitHeaderErr.Error())
+		}
 
 		// Simple Field (deviceInstanceLowLimit)
 		deviceInstanceLowLimit := uint32(m.deviceInstanceLowLimit)
-		io.WriteUint32(24, (deviceInstanceLowLimit))
+		_deviceInstanceLowLimitErr := io.WriteUint32(24, (deviceInstanceLowLimit))
+		if _deviceInstanceLowLimitErr != nil {
+			return errors.New("Error serializing 'deviceInstanceLowLimit' field " + _deviceInstanceLowLimitErr.Error())
+		}
 
 		// Const Field (deviceInstanceHighLimitHeader)
-		io.WriteUint8(8, 0x1B)
+		_deviceInstanceHighLimitHeaderErr := io.WriteUint8(8, 0x1B)
+		if _deviceInstanceHighLimitHeaderErr != nil {
+			return errors.New("Error serializing 'deviceInstanceHighLimitHeader' field " + _deviceInstanceHighLimitHeaderErr.Error())
+		}
 
 		// Simple Field (deviceInstanceHighLimit)
 		deviceInstanceHighLimit := uint32(m.deviceInstanceHighLimit)
-		io.WriteUint32(24, (deviceInstanceHighLimit))
+		_deviceInstanceHighLimitErr := io.WriteUint32(24, (deviceInstanceHighLimit))
+		if _deviceInstanceHighLimitErr != nil {
+			return errors.New("Error serializing 'deviceInstanceHighLimit' field " + _deviceInstanceHighLimitErr.Error())
+		}
 
 		// Const Field (objectNameHeader)
-		io.WriteUint8(8, 0x3D)
+		_objectNameHeaderErr := io.WriteUint8(8, 0x3D)
+		if _objectNameHeaderErr != nil {
+			return errors.New("Error serializing 'objectNameHeader' field " + _objectNameHeaderErr.Error())
+		}
 
 		// Implicit Field (objectNameLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 		objectNameLength := uint8(uint8(uint8(len(m.objectName))) + uint8(uint8(1)))
-		io.WriteUint8(8, (objectNameLength))
+		_objectNameLengthErr := io.WriteUint8(8, (objectNameLength))
+		if _objectNameLengthErr != nil {
+			return errors.New("Error serializing 'objectNameLength' field " + _objectNameLengthErr.Error())
+		}
 
 		// Simple Field (objectNameCharacterSet)
 		objectNameCharacterSet := uint8(m.objectNameCharacterSet)
-		io.WriteUint8(8, (objectNameCharacterSet))
+		_objectNameCharacterSetErr := io.WriteUint8(8, (objectNameCharacterSet))
+		if _objectNameCharacterSetErr != nil {
+			return errors.New("Error serializing 'objectNameCharacterSet' field " + _objectNameCharacterSetErr.Error())
+		}
 
 		// Array Field (objectName)
 		if m.objectName != nil {
 			for _, _element := range m.objectName {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'objectName' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
index 679fce0..f49effb 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWhoIs.go
@@ -40,7 +40,7 @@ type BACnetUnconfirmedServiceRequestWhoIs struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestWhoIs interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -168,37 +168,56 @@ func BACnetUnconfirmedServiceRequestWhoIsParse(io *spi.ReadBuffer) (BACnetUnconf
 	return NewBACnetUnconfirmedServiceRequestWhoIs(deviceInstanceRangeLowLimitLength, deviceInstanceRangeLowLimit, deviceInstanceRangeHighLimitLength, deviceInstanceRangeHighLimit), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestWhoIs) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestWhoIs) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (deviceInstanceRangeLowLimitHeader)
-		io.WriteUint8(5, 0x01)
+		_deviceInstanceRangeLowLimitHeaderErr := io.WriteUint8(5, 0x01)
+		if _deviceInstanceRangeLowLimitHeaderErr != nil {
+			return errors.New("Error serializing 'deviceInstanceRangeLowLimitHeader' field " + _deviceInstanceRangeLowLimitHeaderErr.Error())
+		}
 
 		// Simple Field (deviceInstanceRangeLowLimitLength)
 		deviceInstanceRangeLowLimitLength := uint8(m.deviceInstanceRangeLowLimitLength)
-		io.WriteUint8(3, (deviceInstanceRangeLowLimitLength))
+		_deviceInstanceRangeLowLimitLengthErr := io.WriteUint8(3, (deviceInstanceRangeLowLimitLength))
+		if _deviceInstanceRangeLowLimitLengthErr != nil {
+			return errors.New("Error serializing 'deviceInstanceRangeLowLimitLength' field " + _deviceInstanceRangeLowLimitLengthErr.Error())
+		}
 
 		// Array Field (deviceInstanceRangeLowLimit)
 		if m.deviceInstanceRangeLowLimit != nil {
 			for _, _element := range m.deviceInstanceRangeLowLimit {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'deviceInstanceRangeLowLimit' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Const Field (deviceInstanceRangeHighLimitHeader)
-		io.WriteUint8(5, 0x03)
+		_deviceInstanceRangeHighLimitHeaderErr := io.WriteUint8(5, 0x03)
+		if _deviceInstanceRangeHighLimitHeaderErr != nil {
+			return errors.New("Error serializing 'deviceInstanceRangeHighLimitHeader' field " + _deviceInstanceRangeHighLimitHeaderErr.Error())
+		}
 
 		// Simple Field (deviceInstanceRangeHighLimitLength)
 		deviceInstanceRangeHighLimitLength := uint8(m.deviceInstanceRangeHighLimitLength)
-		io.WriteUint8(3, (deviceInstanceRangeHighLimitLength))
+		_deviceInstanceRangeHighLimitLengthErr := io.WriteUint8(3, (deviceInstanceRangeHighLimitLength))
+		if _deviceInstanceRangeHighLimitLengthErr != nil {
+			return errors.New("Error serializing 'deviceInstanceRangeHighLimitLength' field " + _deviceInstanceRangeHighLimitLengthErr.Error())
+		}
 
 		// Array Field (deviceInstanceRangeHighLimit)
 		if m.deviceInstanceRangeHighLimit != nil {
 			for _, _element := range m.deviceInstanceRangeHighLimit {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'deviceInstanceRangeHighLimit' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
index 8e25564..8e5a704 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BACnetUnconfirmedServiceRequestWriteGroup.go
@@ -30,7 +30,7 @@ type BACnetUnconfirmedServiceRequestWriteGroup struct {
 // The corresponding interface
 type IBACnetUnconfirmedServiceRequestWriteGroup interface {
 	IBACnetUnconfirmedServiceRequest
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BACnetUnconfirmedServiceRequestWriteGroupParse(io *spi.ReadBuffer) (BACnetU
 	return NewBACnetUnconfirmedServiceRequestWriteGroup(), nil
 }
 
-func (m BACnetUnconfirmedServiceRequestWriteGroup) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BACnetUnconfirmedServiceRequestWriteGroup) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
+	return BACnetUnconfirmedServiceRequestSerialize(io, m.BACnetUnconfirmedServiceRequest, CastIBACnetUnconfirmedServiceRequest(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
index 27d14db..1bc2088 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLC.go
@@ -35,7 +35,7 @@ type BVLC struct {
 type IBVLC interface {
 	spi.Message
 	BvlcFunction() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type BVLCInitializer interface {
@@ -149,20 +149,33 @@ func BVLCParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func BVLCSerialize(io spi.WriteBuffer, m BVLC, i IBVLC, childSerialize func()) {
+func BVLCSerialize(io spi.WriteBuffer, m BVLC, i IBVLC, childSerialize func() error) error {
 
 	// Const Field (bacnetType)
-	io.WriteUint8(8, 0x81)
+	_bacnetTypeErr := io.WriteUint8(8, 0x81)
+	if _bacnetTypeErr != nil {
+		return errors.New("Error serializing 'bacnetType' field " + _bacnetTypeErr.Error())
+	}
 
 	// Discriminator Field (bvlcFunction) (Used as input to a switch field)
 	bvlcFunction := uint8(i.BvlcFunction())
-	io.WriteUint8(8, (bvlcFunction))
+	_bvlcFunctionErr := io.WriteUint8(8, (bvlcFunction))
+	if _bvlcFunctionErr != nil {
+		return errors.New("Error serializing 'bvlcFunction' field " + _bvlcFunctionErr.Error())
+	}
 
 	// Implicit Field (bvlcLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	bvlcLength := uint16(uint16(m.LengthInBytes()))
-	io.WriteUint16(16, (bvlcLength))
+	_bvlcLengthErr := io.WriteUint16(16, (bvlcLength))
+	if _bvlcLengthErr != nil {
+		return errors.New("Error serializing 'bvlcLength' field " + _bvlcLengthErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
index 276402b..8d3bbac 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDeleteForeignDeviceTableEntry.go
@@ -30,7 +30,7 @@ type BVLCDeleteForeignDeviceTableEntry struct {
 // The corresponding interface
 type IBVLCDeleteForeignDeviceTableEntry interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCDeleteForeignDeviceTableEntryParse(io *spi.ReadBuffer) (BVLCInitializer
 	return NewBVLCDeleteForeignDeviceTableEntry(), nil
 }
 
-func (m BVLCDeleteForeignDeviceTableEntry) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCDeleteForeignDeviceTableEntry) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
index 37d85a3..8a4ee23 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCDistributeBroadcastToNetwork.go
@@ -30,7 +30,7 @@ type BVLCDistributeBroadcastToNetwork struct {
 // The corresponding interface
 type IBVLCDistributeBroadcastToNetwork interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCDistributeBroadcastToNetworkParse(io *spi.ReadBuffer) (BVLCInitializer,
 	return NewBVLCDistributeBroadcastToNetwork(), nil
 }
 
-func (m BVLCDistributeBroadcastToNetwork) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCDistributeBroadcastToNetwork) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
index de6ccfa..3c66936 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCForwardedNPDU.go
@@ -35,7 +35,7 @@ type BVLCForwardedNPDU struct {
 // The corresponding interface
 type IBVLCForwardedNPDU interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -127,24 +127,34 @@ func BVLCForwardedNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCInitiali
 	return NewBVLCForwardedNPDU(ip, port, npdu), nil
 }
 
-func (m BVLCForwardedNPDU) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCForwardedNPDU) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (ip)
 		if m.ip != nil {
 			for _, _element := range m.ip {
-				io.WriteUint8(8, _element)
+				_elementErr := io.WriteUint8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'ip' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (port)
 		port := uint16(m.port)
-		io.WriteUint16(16, (port))
+		_portErr := io.WriteUint16(16, (port))
+		if _portErr != nil {
+			return errors.New("Error serializing 'port' field " + _portErr.Error())
+		}
 
 		// Simple Field (npdu)
 		npdu := CastINPDU(m.npdu)
-		npdu.Serialize(io)
+		_npduErr := npdu.Serialize(io)
+		if _npduErr != nil {
+			return errors.New("Error serializing 'npdu' field " + _npduErr.Error())
+		}
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
index e48a588..78c805d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalBroadcastNPDU.go
@@ -33,7 +33,7 @@ type BVLCOriginalBroadcastNPDU struct {
 // The corresponding interface
 type IBVLCOriginalBroadcastNPDU interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func BVLCOriginalBroadcastNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLC
 	return NewBVLCOriginalBroadcastNPDU(npdu), nil
 }
 
-func (m BVLCOriginalBroadcastNPDU) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCOriginalBroadcastNPDU) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (npdu)
 		npdu := CastINPDU(m.npdu)
-		npdu.Serialize(io)
+		_npduErr := npdu.Serialize(io)
+		if _npduErr != nil {
+			return errors.New("Error serializing 'npdu' field " + _npduErr.Error())
+		}
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
index e8a28f1..4a0956e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCOriginalUnicastNPDU.go
@@ -33,7 +33,7 @@ type BVLCOriginalUnicastNPDU struct {
 // The corresponding interface
 type IBVLCOriginalUnicastNPDU interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func BVLCOriginalUnicastNPDUParse(io *spi.ReadBuffer, bvlcLength uint16) (BVLCIn
 	return NewBVLCOriginalUnicastNPDU(npdu), nil
 }
 
-func (m BVLCOriginalUnicastNPDU) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCOriginalUnicastNPDU) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (npdu)
 		npdu := CastINPDU(m.npdu)
-		npdu.Serialize(io)
+		_npduErr := npdu.Serialize(io)
+		if _npduErr != nil {
+			return errors.New("Error serializing 'npdu' field " + _npduErr.Error())
+		}
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
index f1caf73..a79e221 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTable.go
@@ -30,7 +30,7 @@ type BVLCReadBroadcastDistributionTable struct {
 // The corresponding interface
 type IBVLCReadBroadcastDistributionTable interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCReadBroadcastDistributionTableParse(io *spi.ReadBuffer) (BVLCInitialize
 	return NewBVLCReadBroadcastDistributionTable(), nil
 }
 
-func (m BVLCReadBroadcastDistributionTable) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCReadBroadcastDistributionTable) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
index d05f9fc..e54023b 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadBroadcastDistributionTableAck.go
@@ -30,7 +30,7 @@ type BVLCReadBroadcastDistributionTableAck struct {
 // The corresponding interface
 type IBVLCReadBroadcastDistributionTableAck interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCReadBroadcastDistributionTableAckParse(io *spi.ReadBuffer) (BVLCInitial
 	return NewBVLCReadBroadcastDistributionTableAck(), nil
 }
 
-func (m BVLCReadBroadcastDistributionTableAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCReadBroadcastDistributionTableAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
index f5905a2..5b38ee5 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTable.go
@@ -30,7 +30,7 @@ type BVLCReadForeignDeviceTable struct {
 // The corresponding interface
 type IBVLCReadForeignDeviceTable interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCReadForeignDeviceTableParse(io *spi.ReadBuffer) (BVLCInitializer, error
 	return NewBVLCReadForeignDeviceTable(), nil
 }
 
-func (m BVLCReadForeignDeviceTable) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCReadForeignDeviceTable) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
index a754d43..f140e1e 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCReadForeignDeviceTableAck.go
@@ -30,7 +30,7 @@ type BVLCReadForeignDeviceTableAck struct {
 // The corresponding interface
 type IBVLCReadForeignDeviceTableAck interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCReadForeignDeviceTableAckParse(io *spi.ReadBuffer) (BVLCInitializer, er
 	return NewBVLCReadForeignDeviceTableAck(), nil
 }
 
-func (m BVLCReadForeignDeviceTableAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCReadForeignDeviceTableAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
index 1536550..63e9251 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCRegisterForeignDevice.go
@@ -30,7 +30,7 @@ type BVLCRegisterForeignDevice struct {
 // The corresponding interface
 type IBVLCRegisterForeignDevice interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCRegisterForeignDeviceParse(io *spi.ReadBuffer) (BVLCInitializer, error)
 	return NewBVLCRegisterForeignDevice(), nil
 }
 
-func (m BVLCRegisterForeignDevice) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCRegisterForeignDevice) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
index dcd439a..aa21b00 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCResult.go
@@ -30,7 +30,7 @@ type BVLCResult struct {
 // The corresponding interface
 type IBVLCResult interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCResultParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
 	return NewBVLCResult(), nil
 }
 
-func (m BVLCResult) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCResult) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
index 7e7995e..7ba36a9 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCSecureBVLL.go
@@ -30,7 +30,7 @@ type BVLCSecureBVLL struct {
 // The corresponding interface
 type IBVLCSecureBVLL interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCSecureBVLLParse(io *spi.ReadBuffer) (BVLCInitializer, error) {
 	return NewBVLCSecureBVLL(), nil
 }
 
-func (m BVLCSecureBVLL) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCSecureBVLL) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
index c73f87c..31d29ca 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/BVLCWideBroadcastDistributionTable.go
@@ -30,7 +30,7 @@ type BVLCWideBroadcastDistributionTable struct {
 // The corresponding interface
 type IBVLCWideBroadcastDistributionTable interface {
 	IBVLC
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func BVLCWideBroadcastDistributionTableParse(io *spi.ReadBuffer) (BVLCInitialize
 	return NewBVLCWideBroadcastDistributionTable(), nil
 }
 
-func (m BVLCWideBroadcastDistributionTable) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m BVLCWideBroadcastDistributionTable) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
+	return BVLCSerialize(io, m.BVLC, CastIBVLC(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
index 5087f72..4cc09fc 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLM.go
@@ -32,7 +32,7 @@ type NLM struct {
 type INLM interface {
 	spi.Message
 	MessageType() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type NLMInitializer interface {
@@ -119,20 +119,30 @@ func NLMParse(io *spi.ReadBuffer, apduLength uint16) (spi.Message, error) {
 	return initializer.initialize(vendorId), nil
 }
 
-func NLMSerialize(io spi.WriteBuffer, m NLM, i INLM, childSerialize func()) {
+func NLMSerialize(io spi.WriteBuffer, m NLM, i INLM, childSerialize func() error) error {
 
 	// Discriminator Field (messageType) (Used as input to a switch field)
 	messageType := uint8(i.MessageType())
-	io.WriteUint8(8, (messageType))
+	_messageTypeErr := io.WriteUint8(8, (messageType))
+	if _messageTypeErr != nil {
+		return errors.New("Error serializing 'messageType' field " + _messageTypeErr.Error())
+	}
 
 	// Optional Field (vendorId) (Can be skipped, if the value is null)
 	var vendorId *uint16 = nil
 	if m.vendorId != nil {
 		vendorId = m.vendorId
-		io.WriteUint16(16, *(vendorId))
+		_vendorIdErr := io.WriteUint16(16, *(vendorId))
+		if _vendorIdErr != nil {
+			return errors.New("Error serializing 'vendorId' field " + _vendorIdErr.Error())
+		}
 	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
index e8d6a8e..c339e9d 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMIAmRouterToNetwork.go
@@ -32,7 +32,7 @@ type NLMIAmRouterToNetwork struct {
 // The corresponding interface
 type INLMIAmRouterToNetwork interface {
 	INLM
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -103,16 +103,20 @@ func NLMIAmRouterToNetworkParse(io *spi.ReadBuffer, apduLength uint16, messageTy
 	return NewNLMIAmRouterToNetwork(destinationNetworkAddress), nil
 }
 
-func (m NLMIAmRouterToNetwork) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m NLMIAmRouterToNetwork) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (destinationNetworkAddress)
 		if m.destinationNetworkAddress != nil {
 			for _, _element := range m.destinationNetworkAddress {
-				io.WriteUint16(16, _element)
+				_elementErr := io.WriteUint16(16, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'destinationNetworkAddress' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	NLMSerialize(io, m.NLM, CastINLM(m), ser)
+	return NLMSerialize(io, m.NLM, CastINLM(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
index 3e8cb44..53c8205 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NLMWhoIsRouterToNetwork.go
@@ -32,7 +32,7 @@ type NLMWhoIsRouterToNetwork struct {
 // The corresponding interface
 type INLMWhoIsRouterToNetwork interface {
 	INLM
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -103,16 +103,20 @@ func NLMWhoIsRouterToNetworkParse(io *spi.ReadBuffer, apduLength uint16, message
 	return NewNLMWhoIsRouterToNetwork(destinationNetworkAddress), nil
 }
 
-func (m NLMWhoIsRouterToNetwork) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m NLMWhoIsRouterToNetwork) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (destinationNetworkAddress)
 		if m.destinationNetworkAddress != nil {
 			for _, _element := range m.destinationNetworkAddress {
-				io.WriteUint16(16, _element)
+				_elementErr := io.WriteUint16(16, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'destinationNetworkAddress' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	NLMSerialize(io, m.NLM, CastINLM(m), ser)
+	return NLMSerialize(io, m.NLM, CastINLM(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
index 72526b2..a621733 100644
--- a/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
+++ b/sandbox/plc4go/internal/plc4go/bacnetip/readwrite/model/NPDU.go
@@ -47,7 +47,7 @@ type NPDU struct {
 // The corresponding interface
 type INPDU interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewNPDU(protocolVersionNumber uint8, messageTypeFieldPresent bool, destinationSpecified bool, sourceSpecified bool, expectingReply bool, networkPriority uint8, destinationNetworkAddress *uint16, destinationLength *uint8, destinationAddress []uint8, sourceNetworkAddress *uint16, sourceLength *uint8, sourceAddress []uint8, hopCount *uint8, nlm *INLM, apdu *IAPDU) spi.Message {
@@ -332,56 +332,93 @@ func NPDUParse(io *spi.ReadBuffer, npduLength uint16) (spi.Message, error) {
 	return NewNPDU(protocolVersionNumber, messageTypeFieldPresent, destinationSpecified, sourceSpecified, expectingReply, networkPriority, destinationNetworkAddress, destinationLength, destinationAddress, sourceNetworkAddress, sourceLength, sourceAddress, hopCount, nlm, apdu), nil
 }
 
-func (m NPDU) Serialize(io spi.WriteBuffer) {
+func (m NPDU) Serialize(io spi.WriteBuffer) error {
 
 	// Simple Field (protocolVersionNumber)
 	protocolVersionNumber := uint8(m.protocolVersionNumber)
-	io.WriteUint8(8, (protocolVersionNumber))
+	_protocolVersionNumberErr := io.WriteUint8(8, (protocolVersionNumber))
+	if _protocolVersionNumberErr != nil {
+		return errors.New("Error serializing 'protocolVersionNumber' field " + _protocolVersionNumberErr.Error())
+	}
 
 	// Simple Field (messageTypeFieldPresent)
 	messageTypeFieldPresent := bool(m.messageTypeFieldPresent)
-	io.WriteBit((bool)(messageTypeFieldPresent))
+	_messageTypeFieldPresentErr := io.WriteBit((bool)(messageTypeFieldPresent))
+	if _messageTypeFieldPresentErr != nil {
+		return errors.New("Error serializing 'messageTypeFieldPresent' field " + _messageTypeFieldPresentErr.Error())
+	}
 
 	// Reserved Field (reserved)
-	io.WriteUint8(1, uint8(0))
+	{
+		_err := io.WriteUint8(1, uint8(0))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
 
 	// Simple Field (destinationSpecified)
 	destinationSpecified := bool(m.destinationSpecified)
-	io.WriteBit((bool)(destinationSpecified))
+	_destinationSpecifiedErr := io.WriteBit((bool)(destinationSpecified))
+	if _destinationSpecifiedErr != nil {
+		return errors.New("Error serializing 'destinationSpecified' field " + _destinationSpecifiedErr.Error())
+	}
 
 	// Reserved Field (reserved)
-	io.WriteUint8(1, uint8(0))
+	{
+		_err := io.WriteUint8(1, uint8(0))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
 
 	// Simple Field (sourceSpecified)
 	sourceSpecified := bool(m.sourceSpecified)
-	io.WriteBit((bool)(sourceSpecified))
+	_sourceSpecifiedErr := io.WriteBit((bool)(sourceSpecified))
+	if _sourceSpecifiedErr != nil {
+		return errors.New("Error serializing 'sourceSpecified' field " + _sourceSpecifiedErr.Error())
+	}
 
 	// Simple Field (expectingReply)
 	expectingReply := bool(m.expectingReply)
-	io.WriteBit((bool)(expectingReply))
+	_expectingReplyErr := io.WriteBit((bool)(expectingReply))
+	if _expectingReplyErr != nil {
+		return errors.New("Error serializing 'expectingReply' field " + _expectingReplyErr.Error())
+	}
 
 	// Simple Field (networkPriority)
 	networkPriority := uint8(m.networkPriority)
-	io.WriteUint8(2, (networkPriority))
+	_networkPriorityErr := io.WriteUint8(2, (networkPriority))
+	if _networkPriorityErr != nil {
+		return errors.New("Error serializing 'networkPriority' field " + _networkPriorityErr.Error())
+	}
 
 	// Optional Field (destinationNetworkAddress) (Can be skipped, if the value is null)
 	var destinationNetworkAddress *uint16 = nil
 	if m.destinationNetworkAddress != nil {
 		destinationNetworkAddress = m.destinationNetworkAddress
-		io.WriteUint16(16, *(destinationNetworkAddress))
+		_destinationNetworkAddressErr := io.WriteUint16(16, *(destinationNetworkAddress))
+		if _destinationNetworkAddressErr != nil {
+			return errors.New("Error serializing 'destinationNetworkAddress' field " + _destinationNetworkAddressErr.Error())
+		}
 	}
 
 	// Optional Field (destinationLength) (Can be skipped, if the value is null)
 	var destinationLength *uint8 = nil
 	if m.destinationLength != nil {
 		destinationLength = m.destinationLength
-		io.WriteUint8(8, *(destinationLength))
+		_destinationLengthErr := io.WriteUint8(8, *(destinationLength))
+		if _destinationLengthErr != nil {
+			return errors.New("Error serializing 'destinationLength' field " + _destinationLengthErr.Error())
+		}
 	}
 
 	// Array Field (destinationAddress)
 	if m.destinationAddress != nil {
 		for _, _element := range m.destinationAddress {
-			io.WriteUint8(8, _element)
+			_elementErr := io.WriteUint8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+			}
 		}
 	}
 
@@ -389,20 +426,29 @@ func (m NPDU) Serialize(io spi.WriteBuffer) {
 	var sourceNetworkAddress *uint16 = nil
 	if m.sourceNetworkAddress != nil {
 		sourceNetworkAddress = m.sourceNetworkAddress
-		io.WriteUint16(16, *(sourceNetworkAddress))
+		_sourceNetworkAddressErr := io.WriteUint16(16, *(sourceNetworkAddress))
+		if _sourceNetworkAddressErr != nil {
+			return errors.New("Error serializing 'sourceNetworkAddress' field " + _sourceNetworkAddressErr.Error())
+		}
 	}
 
 	// Optional Field (sourceLength) (Can be skipped, if the value is null)
 	var sourceLength *uint8 = nil
 	if m.sourceLength != nil {
 		sourceLength = m.sourceLength
-		io.WriteUint8(8, *(sourceLength))
+		_sourceLengthErr := io.WriteUint8(8, *(sourceLength))
+		if _sourceLengthErr != nil {
+			return errors.New("Error serializing 'sourceLength' field " + _sourceLengthErr.Error())
+		}
 	}
 
 	// Array Field (sourceAddress)
 	if m.sourceAddress != nil {
 		for _, _element := range m.sourceAddress {
-			io.WriteUint8(8, _element)
+			_elementErr := io.WriteUint8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'sourceAddress' field " + _elementErr.Error())
+			}
 		}
 	}
 
@@ -410,21 +456,31 @@ func (m NPDU) Serialize(io spi.WriteBuffer) {
 	var hopCount *uint8 = nil
 	if m.hopCount != nil {
 		hopCount = m.hopCount
-		io.WriteUint8(8, *(hopCount))
+		_hopCountErr := io.WriteUint8(8, *(hopCount))
+		if _hopCountErr != nil {
+			return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+		}
 	}
 
 	// Optional Field (nlm) (Can be skipped, if the value is null)
 	var nlm *INLM = nil
 	if m.nlm != nil {
 		nlm = m.nlm
-		CastINLM(*nlm).Serialize(io)
+		_nlmErr := CastINLM(*nlm).Serialize(io)
+		if _nlmErr != nil {
+			return errors.New("Error serializing 'nlm' field " + _nlmErr.Error())
+		}
 	}
 
 	// Optional Field (apdu) (Can be skipped, if the value is null)
 	var apdu *IAPDU = nil
 	if m.apdu != nil {
 		apdu = m.apdu
-		CastIAPDU(*apdu).Serialize(io)
+		_apduErr := CastIAPDU(*apdu).Serialize(io)
+		if _apduErr != nil {
+			return errors.New("Error serializing 'apdu' field " + _apduErr.Error())
+		}
 	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
index 300c01d..dd737ee 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/APCI.go
@@ -24,7 +24,7 @@ type APCI uint8
 
 type IAPCI interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -69,6 +69,7 @@ func APCIParse(io *spi.ReadBuffer) (APCI, error) {
 	return 0, nil
 }
 
-func (e APCI) Serialize(io spi.WriteBuffer) {
+func (e APCI) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
index 4ef02e3..c4f423d 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMI.go
@@ -31,7 +31,7 @@ type CEMI struct {
 type ICEMI interface {
 	spi.Message
 	MessageCode() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type CEMIInitializer interface {
@@ -120,13 +120,20 @@ func CEMIParse(io *spi.ReadBuffer, size uint8) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func CEMISerialize(io spi.WriteBuffer, m CEMI, i ICEMI, childSerialize func()) {
+func CEMISerialize(io spi.WriteBuffer, m CEMI, i ICEMI, childSerialize func() error) error {
 
 	// Discriminator Field (messageCode) (Used as input to a switch field)
 	messageCode := uint8(i.MessageCode())
-	io.WriteUint8(8, (messageCode))
+	_messageCodeErr := io.WriteUint8(8, (messageCode))
+	if _messageCodeErr != nil {
+		return errors.New("Error serializing 'messageCode' field " + _messageCodeErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
index c922164..70973a9 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformation.go
@@ -31,7 +31,7 @@ type CEMIAdditionalInformation struct {
 type ICEMIAdditionalInformation interface {
 	spi.Message
 	AdditionalInformationType() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type CEMIAdditionalInformationInitializer interface {
@@ -102,13 +102,20 @@ func CEMIAdditionalInformationParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func CEMIAdditionalInformationSerialize(io spi.WriteBuffer, m CEMIAdditionalInformation, i ICEMIAdditionalInformation, childSerialize func()) {
+func CEMIAdditionalInformationSerialize(io spi.WriteBuffer, m CEMIAdditionalInformation, i ICEMIAdditionalInformation, childSerialize func() error) error {
 
 	// Discriminator Field (additionalInformationType) (Used as input to a switch field)
 	additionalInformationType := uint8(i.AdditionalInformationType())
-	io.WriteUint8(8, (additionalInformationType))
+	_additionalInformationTypeErr := io.WriteUint8(8, (additionalInformationType))
+	if _additionalInformationTypeErr != nil {
+		return errors.New("Error serializing 'additionalInformationType' field " + _additionalInformationTypeErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
index f6714d3..7dde612 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationBusmonitorInfo.go
@@ -41,7 +41,7 @@ type CEMIAdditionalInformationBusmonitorInfo struct {
 // The corresponding interface
 type ICEMIAdditionalInformationBusmonitorInfo interface {
 	ICEMIAdditionalInformation
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -159,36 +159,58 @@ func CEMIAdditionalInformationBusmonitorInfoParse(io *spi.ReadBuffer) (CEMIAddit
 	return NewCEMIAdditionalInformationBusmonitorInfo(frameErrorFlag, bitErrorFlag, parityErrorFlag, unknownFlag, lostFlag, sequenceNumber), nil
 }
 
-func (m CEMIAdditionalInformationBusmonitorInfo) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIAdditionalInformationBusmonitorInfo) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (len)
-		io.WriteUint8(8, 1)
+		_lenErr := io.WriteUint8(8, 1)
+		if _lenErr != nil {
+			return errors.New("Error serializing 'len' field " + _lenErr.Error())
+		}
 
 		// Simple Field (frameErrorFlag)
 		frameErrorFlag := bool(m.frameErrorFlag)
-		io.WriteBit((bool)(frameErrorFlag))
+		_frameErrorFlagErr := io.WriteBit((bool)(frameErrorFlag))
+		if _frameErrorFlagErr != nil {
+			return errors.New("Error serializing 'frameErrorFlag' field " + _frameErrorFlagErr.Error())
+		}
 
 		// Simple Field (bitErrorFlag)
 		bitErrorFlag := bool(m.bitErrorFlag)
-		io.WriteBit((bool)(bitErrorFlag))
+		_bitErrorFlagErr := io.WriteBit((bool)(bitErrorFlag))
+		if _bitErrorFlagErr != nil {
+			return errors.New("Error serializing 'bitErrorFlag' field " + _bitErrorFlagErr.Error())
+		}
 
 		// Simple Field (parityErrorFlag)
 		parityErrorFlag := bool(m.parityErrorFlag)
-		io.WriteBit((bool)(parityErrorFlag))
+		_parityErrorFlagErr := io.WriteBit((bool)(parityErrorFlag))
+		if _parityErrorFlagErr != nil {
+			return errors.New("Error serializing 'parityErrorFlag' field " + _parityErrorFlagErr.Error())
+		}
 
 		// Simple Field (unknownFlag)
 		unknownFlag := bool(m.unknownFlag)
-		io.WriteBit((bool)(unknownFlag))
+		_unknownFlagErr := io.WriteBit((bool)(unknownFlag))
+		if _unknownFlagErr != nil {
+			return errors.New("Error serializing 'unknownFlag' field " + _unknownFlagErr.Error())
+		}
 
 		// Simple Field (lostFlag)
 		lostFlag := bool(m.lostFlag)
-		io.WriteBit((bool)(lostFlag))
+		_lostFlagErr := io.WriteBit((bool)(lostFlag))
+		if _lostFlagErr != nil {
+			return errors.New("Error serializing 'lostFlag' field " + _lostFlagErr.Error())
+		}
 
 		// Simple Field (sequenceNumber)
 		sequenceNumber := uint8(m.sequenceNumber)
-		io.WriteUint8(3, (sequenceNumber))
+		_sequenceNumberErr := io.WriteUint8(3, (sequenceNumber))
+		if _sequenceNumberErr != nil {
+			return errors.New("Error serializing 'sequenceNumber' field " + _sequenceNumberErr.Error())
+		}
 
+		return nil
 	}
-	CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
+	return CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
index b2d2175..62c29b0 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIAdditionalInformationRelativeTimestamp.go
@@ -37,7 +37,7 @@ type CEMIAdditionalInformationRelativeTimestamp struct {
 // The corresponding interface
 type ICEMIAdditionalInformationRelativeTimestamp interface {
 	ICEMIAdditionalInformation
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -115,16 +115,23 @@ func CEMIAdditionalInformationRelativeTimestampParse(io *spi.ReadBuffer) (CEMIAd
 	return NewCEMIAdditionalInformationRelativeTimestamp(relativeTimestamp), nil
 }
 
-func (m CEMIAdditionalInformationRelativeTimestamp) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIAdditionalInformationRelativeTimestamp) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Const Field (len)
-		io.WriteUint8(8, 2)
+		_lenErr := io.WriteUint8(8, 2)
+		if _lenErr != nil {
+			return errors.New("Error serializing 'len' field " + _lenErr.Error())
+		}
 
 		// Simple Field (relativeTimestamp)
 		relativeTimestamp := CastIRelativeTimestamp(m.relativeTimestamp)
-		relativeTimestamp.Serialize(io)
+		_relativeTimestampErr := relativeTimestamp.Serialize(io)
+		if _relativeTimestampErr != nil {
+			return errors.New("Error serializing 'relativeTimestamp' field " + _relativeTimestampErr.Error())
+		}
 
+		return nil
 	}
-	CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
+	return CEMIAdditionalInformationSerialize(io, m.CEMIAdditionalInformation, CastICEMIAdditionalInformation(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go
index 61ba83a..5598f05 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIBusmonInd.go
@@ -35,7 +35,7 @@ type CEMIBusmonInd struct {
 // The corresponding interface
 type ICEMIBusmonInd interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -135,24 +135,34 @@ func CEMIBusmonIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIBusmonInd(additionalInformationLength, additionalInformation, cemiFrame), nil
 }
 
-func (m CEMIBusmonInd) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIBusmonInd) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (additionalInformationLength)
 		additionalInformationLength := uint8(m.additionalInformationLength)
-		io.WriteUint8(8, (additionalInformationLength))
+		_additionalInformationLengthErr := io.WriteUint8(8, (additionalInformationLength))
+		if _additionalInformationLengthErr != nil {
+			return errors.New("Error serializing 'additionalInformationLength' field " + _additionalInformationLengthErr.Error())
+		}
 
 		// Array Field (additionalInformation)
 		if m.additionalInformation != nil {
 			for _, _element := range m.additionalInformation {
-				_element.Serialize(io)
+				_elementErr := _element.Serialize(io)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'additionalInformation' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (cemiFrame)
 		cemiFrame := CastICEMIFrame(m.cemiFrame)
-		cemiFrame.Serialize(io)
+		_cemiFrameErr := cemiFrame.Serialize(io)
+		if _cemiFrameErr != nil {
+			return errors.New("Error serializing 'cemiFrame' field " + _cemiFrameErr.Error())
+		}
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go
index 2bf3862..84a382c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataCon.go
@@ -35,7 +35,7 @@ type CEMIDataCon struct {
 // The corresponding interface
 type ICEMIDataCon interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -135,24 +135,34 @@ func CEMIDataConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIDataCon(additionalInformationLength, additionalInformation, cemiDataFrame), nil
 }
 
-func (m CEMIDataCon) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIDataCon) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (additionalInformationLength)
 		additionalInformationLength := uint8(m.additionalInformationLength)
-		io.WriteUint8(8, (additionalInformationLength))
+		_additionalInformationLengthErr := io.WriteUint8(8, (additionalInformationLength))
+		if _additionalInformationLengthErr != nil {
+			return errors.New("Error serializing 'additionalInformationLength' field " + _additionalInformationLengthErr.Error())
+		}
 
 		// Array Field (additionalInformation)
 		if m.additionalInformation != nil {
 			for _, _element := range m.additionalInformation {
-				_element.Serialize(io)
+				_elementErr := _element.Serialize(io)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'additionalInformation' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (cemiDataFrame)
 		cemiDataFrame := CastICEMIDataFrame(m.cemiDataFrame)
-		cemiDataFrame.Serialize(io)
+		_cemiDataFrameErr := cemiDataFrame.Serialize(io)
+		if _cemiDataFrameErr != nil {
+			return errors.New("Error serializing 'cemiDataFrame' field " + _cemiDataFrameErr.Error())
+		}
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
index c253c14..a7de6ea 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataFrame.go
@@ -49,7 +49,7 @@ type CEMIDataFrame struct {
 // The corresponding interface
 type ICEMIDataFrame interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewCEMIDataFrame(standardFrame bool, polling bool, notRepeated bool, notAckFrame bool, priority ICEMIPriority, acknowledgeRequested bool, errorFlag bool, groupDestinationAddress bool, hopCount uint8, extendedFrameFormat uint8, sourceAddress IKNXAddress, destinationAddress []int8, dataLength uint8, tcpi ITPCI, counter uint8, apci IAPCI, dataFirstByte int8, data []int8) spi.Message {
@@ -275,84 +275,139 @@ func CEMIDataFrameParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewCEMIDataFrame(standardFrame, polling, notRepeated, notAckFrame, priority, acknowledgeRequested, errorFlag, groupDestinationAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data), nil
 }
 
-func (m CEMIDataFrame) Serialize(io spi.WriteBuffer) {
+func (m CEMIDataFrame) Serialize(io spi.WriteBuffer) error {
 
 	// Simple Field (standardFrame)
 	standardFrame := bool(m.standardFrame)
-	io.WriteBit((bool)(standardFrame))
+	_standardFrameErr := io.WriteBit((bool)(standardFrame))
+	if _standardFrameErr != nil {
+		return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
+	}
 
 	// Simple Field (polling)
 	polling := bool(m.polling)
-	io.WriteBit((bool)(polling))
+	_pollingErr := io.WriteBit((bool)(polling))
+	if _pollingErr != nil {
+		return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
+	}
 
 	// Simple Field (notRepeated)
 	notRepeated := bool(m.notRepeated)
-	io.WriteBit((bool)(notRepeated))
+	_notRepeatedErr := io.WriteBit((bool)(notRepeated))
+	if _notRepeatedErr != nil {
+		return errors.New("Error serializing 'notRepeated' field " + _notRepeatedErr.Error())
+	}
 
 	// Simple Field (notAckFrame)
 	notAckFrame := bool(m.notAckFrame)
-	io.WriteBit((bool)(notAckFrame))
+	_notAckFrameErr := io.WriteBit((bool)(notAckFrame))
+	if _notAckFrameErr != nil {
+		return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
+	}
 
 	// Enum field (priority)
 	priority := CastCEMIPriority(m.priority)
-	priority.Serialize(io)
+	_priorityErr := priority.Serialize(io)
+	if _priorityErr != nil {
+		return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+	}
 
 	// Simple Field (acknowledgeRequested)
 	acknowledgeRequested := bool(m.acknowledgeRequested)
-	io.WriteBit((bool)(acknowledgeRequested))
+	_acknowledgeRequestedErr := io.WriteBit((bool)(acknowledgeRequested))
+	if _acknowledgeRequestedErr != nil {
+		return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+	}
 
 	// Simple Field (errorFlag)
 	errorFlag := bool(m.errorFlag)
-	io.WriteBit((bool)(errorFlag))
+	_errorFlagErr := io.WriteBit((bool)(errorFlag))
+	if _errorFlagErr != nil {
+		return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+	}
 
 	// Simple Field (groupDestinationAddress)
 	groupDestinationAddress := bool(m.groupDestinationAddress)
-	io.WriteBit((bool)(groupDestinationAddress))
+	_groupDestinationAddressErr := io.WriteBit((bool)(groupDestinationAddress))
+	if _groupDestinationAddressErr != nil {
+		return errors.New("Error serializing 'groupDestinationAddress' field " + _groupDestinationAddressErr.Error())
+	}
 
 	// Simple Field (hopCount)
 	hopCount := uint8(m.hopCount)
-	io.WriteUint8(3, (hopCount))
+	_hopCountErr := io.WriteUint8(3, (hopCount))
+	if _hopCountErr != nil {
+		return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+	}
 
 	// Simple Field (extendedFrameFormat)
 	extendedFrameFormat := uint8(m.extendedFrameFormat)
-	io.WriteUint8(4, (extendedFrameFormat))
+	_extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
+	if _extendedFrameFormatErr != nil {
+		return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+	}
 
 	// Simple Field (sourceAddress)
 	sourceAddress := CastIKNXAddress(m.sourceAddress)
-	sourceAddress.Serialize(io)
+	_sourceAddressErr := sourceAddress.Serialize(io)
+	if _sourceAddressErr != nil {
+		return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+	}
 
 	// Array Field (destinationAddress)
 	if m.destinationAddress != nil {
 		for _, _element := range m.destinationAddress {
-			io.WriteInt8(8, _element)
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+			}
 		}
 	}
 
 	// Simple Field (dataLength)
 	dataLength := uint8(m.dataLength)
-	io.WriteUint8(8, (dataLength))
+	_dataLengthErr := io.WriteUint8(8, (dataLength))
+	if _dataLengthErr != nil {
+		return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+	}
 
 	// Enum field (tcpi)
 	tcpi := CastTPCI(m.tcpi)
-	tcpi.Serialize(io)
+	_tcpiErr := tcpi.Serialize(io)
+	if _tcpiErr != nil {
+		return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+	}
 
 	// Simple Field (counter)
 	counter := uint8(m.counter)
-	io.WriteUint8(4, (counter))
+	_counterErr := io.WriteUint8(4, (counter))
+	if _counterErr != nil {
+		return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+	}
 
 	// Enum field (apci)
 	apci := CastAPCI(m.apci)
-	apci.Serialize(io)
+	_apciErr := apci.Serialize(io)
+	if _apciErr != nil {
+		return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+	}
 
 	// Simple Field (dataFirstByte)
 	dataFirstByte := int8(m.dataFirstByte)
-	io.WriteInt8(6, (dataFirstByte))
+	_dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+	if _dataFirstByteErr != nil {
+		return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+	}
 
 	// Array Field (data)
 	if m.data != nil {
 		for _, _element := range m.data {
-			io.WriteInt8(8, _element)
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'data' field " + _elementErr.Error())
+			}
 		}
 	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go
index da61319..c492c6c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataInd.go
@@ -35,7 +35,7 @@ type CEMIDataInd struct {
 // The corresponding interface
 type ICEMIDataInd interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -135,24 +135,34 @@ func CEMIDataIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIDataInd(additionalInformationLength, additionalInformation, cemiDataFrame), nil
 }
 
-func (m CEMIDataInd) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIDataInd) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (additionalInformationLength)
 		additionalInformationLength := uint8(m.additionalInformationLength)
-		io.WriteUint8(8, (additionalInformationLength))
+		_additionalInformationLengthErr := io.WriteUint8(8, (additionalInformationLength))
+		if _additionalInformationLengthErr != nil {
+			return errors.New("Error serializing 'additionalInformationLength' field " + _additionalInformationLengthErr.Error())
+		}
 
 		// Array Field (additionalInformation)
 		if m.additionalInformation != nil {
 			for _, _element := range m.additionalInformation {
-				_element.Serialize(io)
+				_elementErr := _element.Serialize(io)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'additionalInformation' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (cemiDataFrame)
 		cemiDataFrame := CastICEMIDataFrame(m.cemiDataFrame)
-		cemiDataFrame.Serialize(io)
+		_cemiDataFrameErr := cemiDataFrame.Serialize(io)
+		if _cemiDataFrameErr != nil {
+			return errors.New("Error serializing 'cemiDataFrame' field " + _cemiDataFrameErr.Error())
+		}
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go
index 79d72a4..433c86c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIDataReq.go
@@ -35,7 +35,7 @@ type CEMIDataReq struct {
 // The corresponding interface
 type ICEMIDataReq interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -135,24 +135,34 @@ func CEMIDataReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIDataReq(additionalInformationLength, additionalInformation, cemiDataFrame), nil
 }
 
-func (m CEMIDataReq) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIDataReq) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (additionalInformationLength)
 		additionalInformationLength := uint8(m.additionalInformationLength)
-		io.WriteUint8(8, (additionalInformationLength))
+		_additionalInformationLengthErr := io.WriteUint8(8, (additionalInformationLength))
+		if _additionalInformationLengthErr != nil {
+			return errors.New("Error serializing 'additionalInformationLength' field " + _additionalInformationLengthErr.Error())
+		}
 
 		// Array Field (additionalInformation)
 		if m.additionalInformation != nil {
 			for _, _element := range m.additionalInformation {
-				_element.Serialize(io)
+				_elementErr := _element.Serialize(io)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'additionalInformation' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (cemiDataFrame)
 		cemiDataFrame := CastICEMIDataFrame(m.cemiDataFrame)
-		cemiDataFrame.Serialize(io)
+		_cemiDataFrameErr := cemiDataFrame.Serialize(io)
+		if _cemiDataFrameErr != nil {
+			return errors.New("Error serializing 'cemiDataFrame' field " + _cemiDataFrameErr.Error())
+		}
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
index 279c294..e2d23d7 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrame.go
@@ -37,7 +37,7 @@ type ICEMIFrame interface {
 	NotAckFrame() bool
 	Polling() bool
 	StandardFrame() bool
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type CEMIFrameInitializer interface {
@@ -176,37 +176,62 @@ func CEMIFrameParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(repeated, priority, acknowledgeRequested, errorFlag), nil
 }
 
-func CEMIFrameSerialize(io spi.WriteBuffer, m CEMIFrame, i ICEMIFrame, childSerialize func()) {
+func CEMIFrameSerialize(io spi.WriteBuffer, m CEMIFrame, i ICEMIFrame, childSerialize func() error) error {
 
 	// Discriminator Field (standardFrame) (Used as input to a switch field)
 	standardFrame := bool(i.StandardFrame())
-	io.WriteBit((bool)(standardFrame))
+	_standardFrameErr := io.WriteBit((bool)(standardFrame))
+	if _standardFrameErr != nil {
+		return errors.New("Error serializing 'standardFrame' field " + _standardFrameErr.Error())
+	}
 
 	// Discriminator Field (polling) (Used as input to a switch field)
 	polling := bool(i.Polling())
-	io.WriteBit((bool)(polling))
+	_pollingErr := io.WriteBit((bool)(polling))
+	if _pollingErr != nil {
+		return errors.New("Error serializing 'polling' field " + _pollingErr.Error())
+	}
 
 	// Simple Field (repeated)
 	repeated := bool(m.repeated)
-	io.WriteBit((bool)(repeated))
+	_repeatedErr := io.WriteBit((bool)(repeated))
+	if _repeatedErr != nil {
+		return errors.New("Error serializing 'repeated' field " + _repeatedErr.Error())
+	}
 
 	// Discriminator Field (notAckFrame) (Used as input to a switch field)
 	notAckFrame := bool(i.NotAckFrame())
-	io.WriteBit((bool)(notAckFrame))
+	_notAckFrameErr := io.WriteBit((bool)(notAckFrame))
+	if _notAckFrameErr != nil {
+		return errors.New("Error serializing 'notAckFrame' field " + _notAckFrameErr.Error())
+	}
 
 	// Enum field (priority)
 	priority := CastCEMIPriority(m.priority)
-	priority.Serialize(io)
+	_priorityErr := priority.Serialize(io)
+	if _priorityErr != nil {
+		return errors.New("Error serializing 'priority' field " + _priorityErr.Error())
+	}
 
 	// Simple Field (acknowledgeRequested)
 	acknowledgeRequested := bool(m.acknowledgeRequested)
-	io.WriteBit((bool)(acknowledgeRequested))
+	_acknowledgeRequestedErr := io.WriteBit((bool)(acknowledgeRequested))
+	if _acknowledgeRequestedErr != nil {
+		return errors.New("Error serializing 'acknowledgeRequested' field " + _acknowledgeRequestedErr.Error())
+	}
 
 	// Simple Field (errorFlag)
 	errorFlag := bool(m.errorFlag)
-	io.WriteBit((bool)(errorFlag))
+	_errorFlagErr := io.WriteBit((bool)(errorFlag))
+	if _errorFlagErr != nil {
+		return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go
index f936d6a..65ede50 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameAck.go
@@ -30,7 +30,7 @@ type CEMIFrameAck struct {
 // The corresponding interface
 type ICEMIFrameAck interface {
 	ICEMIFrame
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -94,9 +94,10 @@ func CEMIFrameAckParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
 	return NewCEMIFrameAck(), nil
 }
 
-func (m CEMIFrameAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIFrameAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
index 0c6a445..37ee0c7 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameData.go
@@ -43,7 +43,7 @@ type CEMIFrameData struct {
 // The corresponding interface
 type ICEMIFrameData interface {
 	ICEMIFrame
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -227,59 +227,93 @@ func CEMIFrameDataParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
 	return NewCEMIFrameData(sourceAddress, destinationAddress, groupAddress, hopCount, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
 }
 
-func (m CEMIFrameData) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIFrameData) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (sourceAddress)
 		sourceAddress := CastIKNXAddress(m.sourceAddress)
-		sourceAddress.Serialize(io)
+		_sourceAddressErr := sourceAddress.Serialize(io)
+		if _sourceAddressErr != nil {
+			return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+		}
 
 		// Array Field (destinationAddress)
 		if m.destinationAddress != nil {
 			for _, _element := range m.destinationAddress {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (groupAddress)
 		groupAddress := bool(m.groupAddress)
-		io.WriteBit((bool)(groupAddress))
+		_groupAddressErr := io.WriteBit((bool)(groupAddress))
+		if _groupAddressErr != nil {
+			return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
+		}
 
 		// Simple Field (hopCount)
 		hopCount := uint8(m.hopCount)
-		io.WriteUint8(3, (hopCount))
+		_hopCountErr := io.WriteUint8(3, (hopCount))
+		if _hopCountErr != nil {
+			return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+		}
 
 		// Simple Field (dataLength)
 		dataLength := uint8(m.dataLength)
-		io.WriteUint8(4, (dataLength))
+		_dataLengthErr := io.WriteUint8(4, (dataLength))
+		if _dataLengthErr != nil {
+			return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+		}
 
 		// Enum field (tcpi)
 		tcpi := CastTPCI(m.tcpi)
-		tcpi.Serialize(io)
+		_tcpiErr := tcpi.Serialize(io)
+		if _tcpiErr != nil {
+			return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+		}
 
 		// Simple Field (counter)
 		counter := uint8(m.counter)
-		io.WriteUint8(4, (counter))
+		_counterErr := io.WriteUint8(4, (counter))
+		if _counterErr != nil {
+			return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+		}
 
 		// Enum field (apci)
 		apci := CastAPCI(m.apci)
-		apci.Serialize(io)
+		_apciErr := apci.Serialize(io)
+		if _apciErr != nil {
+			return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+		}
 
 		// Simple Field (dataFirstByte)
 		dataFirstByte := int8(m.dataFirstByte)
-		io.WriteInt8(6, (dataFirstByte))
+		_dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+		if _dataFirstByteErr != nil {
+			return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+		}
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (crc)
 		crc := uint8(m.crc)
-		io.WriteUint8(8, (crc))
+		_crcErr := io.WriteUint8(8, (crc))
+		if _crcErr != nil {
+			return errors.New("Error serializing 'crc' field " + _crcErr.Error())
+		}
 
+		return nil
 	}
-	CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
index 73375df..fdced95 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFrameDataExt.go
@@ -44,7 +44,7 @@ type CEMIFrameDataExt struct {
 // The corresponding interface
 type ICEMIFrameDataExt interface {
 	ICEMIFrame
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -237,63 +237,100 @@ func CEMIFrameDataExtParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error) {
 	return NewCEMIFrameDataExt(groupAddress, hopCount, extendedFrameFormat, sourceAddress, destinationAddress, dataLength, tcpi, counter, apci, dataFirstByte, data, crc), nil
 }
 
-func (m CEMIFrameDataExt) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIFrameDataExt) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (groupAddress)
 		groupAddress := bool(m.groupAddress)
-		io.WriteBit((bool)(groupAddress))
+		_groupAddressErr := io.WriteBit((bool)(groupAddress))
+		if _groupAddressErr != nil {
+			return errors.New("Error serializing 'groupAddress' field " + _groupAddressErr.Error())
+		}
 
 		// Simple Field (hopCount)
 		hopCount := uint8(m.hopCount)
-		io.WriteUint8(3, (hopCount))
+		_hopCountErr := io.WriteUint8(3, (hopCount))
+		if _hopCountErr != nil {
+			return errors.New("Error serializing 'hopCount' field " + _hopCountErr.Error())
+		}
 
 		// Simple Field (extendedFrameFormat)
 		extendedFrameFormat := uint8(m.extendedFrameFormat)
-		io.WriteUint8(4, (extendedFrameFormat))
+		_extendedFrameFormatErr := io.WriteUint8(4, (extendedFrameFormat))
+		if _extendedFrameFormatErr != nil {
+			return errors.New("Error serializing 'extendedFrameFormat' field " + _extendedFrameFormatErr.Error())
+		}
 
 		// Simple Field (sourceAddress)
 		sourceAddress := CastIKNXAddress(m.sourceAddress)
-		sourceAddress.Serialize(io)
+		_sourceAddressErr := sourceAddress.Serialize(io)
+		if _sourceAddressErr != nil {
+			return errors.New("Error serializing 'sourceAddress' field " + _sourceAddressErr.Error())
+		}
 
 		// Array Field (destinationAddress)
 		if m.destinationAddress != nil {
 			for _, _element := range m.destinationAddress {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'destinationAddress' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (dataLength)
 		dataLength := uint8(m.dataLength)
-		io.WriteUint8(8, (dataLength))
+		_dataLengthErr := io.WriteUint8(8, (dataLength))
+		if _dataLengthErr != nil {
+			return errors.New("Error serializing 'dataLength' field " + _dataLengthErr.Error())
+		}
 
 		// Enum field (tcpi)
 		tcpi := CastTPCI(m.tcpi)
-		tcpi.Serialize(io)
+		_tcpiErr := tcpi.Serialize(io)
+		if _tcpiErr != nil {
+			return errors.New("Error serializing 'tcpi' field " + _tcpiErr.Error())
+		}
 
 		// Simple Field (counter)
 		counter := uint8(m.counter)
-		io.WriteUint8(4, (counter))
+		_counterErr := io.WriteUint8(4, (counter))
+		if _counterErr != nil {
+			return errors.New("Error serializing 'counter' field " + _counterErr.Error())
+		}
 
 		// Enum field (apci)
 		apci := CastAPCI(m.apci)
-		apci.Serialize(io)
+		_apciErr := apci.Serialize(io)
+		if _apciErr != nil {
+			return errors.New("Error serializing 'apci' field " + _apciErr.Error())
+		}
 
 		// Simple Field (dataFirstByte)
 		dataFirstByte := int8(m.dataFirstByte)
-		io.WriteInt8(6, (dataFirstByte))
+		_dataFirstByteErr := io.WriteInt8(6, (dataFirstByte))
+		if _dataFirstByteErr != nil {
+			return errors.New("Error serializing 'dataFirstByte' field " + _dataFirstByteErr.Error())
+		}
 
 		// Array Field (data)
 		if m.data != nil {
 			for _, _element := range m.data {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'data' field " + _elementErr.Error())
+				}
 			}
 		}
 
 		// Simple Field (crc)
 		crc := uint8(m.crc)
-		io.WriteUint8(8, (crc))
+		_crcErr := io.WriteUint8(8, (crc))
+		if _crcErr != nil {
+			return errors.New("Error serializing 'crc' field " + _crcErr.Error())
+		}
 
+		return nil
 	}
-	CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go
index c05a0ea..7c9eabb 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingData.go
@@ -30,7 +30,7 @@ type CEMIFramePollingData struct {
 // The corresponding interface
 type ICEMIFramePollingData interface {
 	ICEMIFrame
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -94,9 +94,10 @@ func CEMIFramePollingDataParse(io *spi.ReadBuffer) (CEMIFrameInitializer, error)
 	return NewCEMIFramePollingData(), nil
 }
 
-func (m CEMIFramePollingData) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIFramePollingData) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go
index a542a5e..0910cab 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIFramePollingDataExt.go
@@ -30,7 +30,7 @@ type CEMIFramePollingDataExt struct {
 // The corresponding interface
 type ICEMIFramePollingDataExt interface {
 	ICEMIFrame
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -94,9 +94,10 @@ func CEMIFramePollingDataExtParse(io *spi.ReadBuffer) (CEMIFrameInitializer, err
 	return NewCEMIFramePollingDataExt(), nil
 }
 
-func (m CEMIFramePollingDataExt) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIFramePollingDataExt) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
+	return CEMIFrameSerialize(io, m.CEMIFrame, CastICEMIFrame(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go
index fccf5d5..afae8b6 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadCon.go
@@ -37,7 +37,7 @@ type CEMIMPropReadCon struct {
 // The corresponding interface
 type ICEMIMPropReadCon interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -143,33 +143,52 @@ func CEMIMPropReadConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIMPropReadCon(interfaceObjectType, objectInstance, propertyId, numberOfElements, startIndex, unknown), nil
 }
 
-func (m CEMIMPropReadCon) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIMPropReadCon) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (interfaceObjectType)
 		interfaceObjectType := uint16(m.interfaceObjectType)
-		io.WriteUint16(16, (interfaceObjectType))
+		_interfaceObjectTypeErr := io.WriteUint16(16, (interfaceObjectType))
+		if _interfaceObjectTypeErr != nil {
+			return errors.New("Error serializing 'interfaceObjectType' field " + _interfaceObjectTypeErr.Error())
+		}
 
 		// Simple Field (objectInstance)
 		objectInstance := uint8(m.objectInstance)
-		io.WriteUint8(8, (objectInstance))
+		_objectInstanceErr := io.WriteUint8(8, (objectInstance))
+		if _objectInstanceErr != nil {
+			return errors.New("Error serializing 'objectInstance' field " + _objectInstanceErr.Error())
+		}
 
 		// Simple Field (propertyId)
 		propertyId := uint8(m.propertyId)
-		io.WriteUint8(8, (propertyId))
+		_propertyIdErr := io.WriteUint8(8, (propertyId))
+		if _propertyIdErr != nil {
+			return errors.New("Error serializing 'propertyId' field " + _propertyIdErr.Error())
+		}
 
 		// Simple Field (numberOfElements)
 		numberOfElements := uint8(m.numberOfElements)
-		io.WriteUint8(4, (numberOfElements))
+		_numberOfElementsErr := io.WriteUint8(4, (numberOfElements))
+		if _numberOfElementsErr != nil {
+			return errors.New("Error serializing 'numberOfElements' field " + _numberOfElementsErr.Error())
+		}
 
 		// Simple Field (startIndex)
 		startIndex := uint16(m.startIndex)
-		io.WriteUint16(12, (startIndex))
+		_startIndexErr := io.WriteUint16(12, (startIndex))
+		if _startIndexErr != nil {
+			return errors.New("Error serializing 'startIndex' field " + _startIndexErr.Error())
+		}
 
 		// Simple Field (unknown)
 		unknown := uint16(m.unknown)
-		io.WriteUint16(16, (unknown))
+		_unknownErr := io.WriteUint16(16, (unknown))
+		if _unknownErr != nil {
+			return errors.New("Error serializing 'unknown' field " + _unknownErr.Error())
+		}
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go
index 150c17a..4d8160e 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIMPropReadReq.go
@@ -36,7 +36,7 @@ type CEMIMPropReadReq struct {
 // The corresponding interface
 type ICEMIMPropReadReq interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -133,29 +133,45 @@ func CEMIMPropReadReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIMPropReadReq(interfaceObjectType, objectInstance, propertyId, numberOfElements, startIndex), nil
 }
 
-func (m CEMIMPropReadReq) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIMPropReadReq) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (interfaceObjectType)
 		interfaceObjectType := uint16(m.interfaceObjectType)
-		io.WriteUint16(16, (interfaceObjectType))
+		_interfaceObjectTypeErr := io.WriteUint16(16, (interfaceObjectType))
+		if _interfaceObjectTypeErr != nil {
+			return errors.New("Error serializing 'interfaceObjectType' field " + _interfaceObjectTypeErr.Error())
+		}
 
 		// Simple Field (objectInstance)
 		objectInstance := uint8(m.objectInstance)
-		io.WriteUint8(8, (objectInstance))
+		_objectInstanceErr := io.WriteUint8(8, (objectInstance))
+		if _objectInstanceErr != nil {
+			return errors.New("Error serializing 'objectInstance' field " + _objectInstanceErr.Error())
+		}
 
 		// Simple Field (propertyId)
 		propertyId := uint8(m.propertyId)
-		io.WriteUint8(8, (propertyId))
+		_propertyIdErr := io.WriteUint8(8, (propertyId))
+		if _propertyIdErr != nil {
+			return errors.New("Error serializing 'propertyId' field " + _propertyIdErr.Error())
+		}
 
 		// Simple Field (numberOfElements)
 		numberOfElements := uint8(m.numberOfElements)
-		io.WriteUint8(4, (numberOfElements))
+		_numberOfElementsErr := io.WriteUint8(4, (numberOfElements))
+		if _numberOfElementsErr != nil {
+			return errors.New("Error serializing 'numberOfElements' field " + _numberOfElementsErr.Error())
+		}
 
 		// Simple Field (startIndex)
 		startIndex := uint16(m.startIndex)
-		io.WriteUint16(12, (startIndex))
+		_startIndexErr := io.WriteUint16(12, (startIndex))
+		if _startIndexErr != nil {
+			return errors.New("Error serializing 'startIndex' field " + _startIndexErr.Error())
+		}
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go
index 8592b04..6fb36b4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataCon.go
@@ -30,7 +30,7 @@ type CEMIPollDataCon struct {
 // The corresponding interface
 type ICEMIPollDataCon interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func CEMIPollDataConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIPollDataCon(), nil
 }
 
-func (m CEMIPollDataCon) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIPollDataCon) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go
index 3a730fb..ba26d4b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPollDataReq.go
@@ -30,7 +30,7 @@ type CEMIPollDataReq struct {
 // The corresponding interface
 type ICEMIPollDataReq interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func CEMIPollDataReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIPollDataReq(), nil
 }
 
-func (m CEMIPollDataReq) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIPollDataReq) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
index 1c23946..adce5ca 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIPriority.go
@@ -24,7 +24,7 @@ type CEMIPriority uint8
 
 type ICEMIPriority interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -57,6 +57,7 @@ func CEMIPriorityParse(io *spi.ReadBuffer) (CEMIPriority, error) {
 	return 0, nil
 }
 
-func (e CEMIPriority) Serialize(io spi.WriteBuffer) {
+func (e CEMIPriority) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go
index bf09ec5..31e7ef4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawCon.go
@@ -30,7 +30,7 @@ type CEMIRawCon struct {
 // The corresponding interface
 type ICEMIRawCon interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func CEMIRawConParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIRawCon(), nil
 }
 
-func (m CEMIRawCon) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIRawCon) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go
index 521a0d4..b436dbe 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawInd.go
@@ -30,7 +30,7 @@ type CEMIRawInd struct {
 // The corresponding interface
 type ICEMIRawInd interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func CEMIRawIndParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIRawInd(), nil
 }
 
-func (m CEMIRawInd) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIRawInd) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go
index 10be7f4..8f92ea5 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/CEMIRawReq.go
@@ -30,7 +30,7 @@ type CEMIRawReq struct {
 // The corresponding interface
 type ICEMIRawReq interface {
 	ICEMI
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func CEMIRawReqParse(io *spi.ReadBuffer) (CEMIInitializer, error) {
 	return NewCEMIRawReq(), nil
 }
 
-func (m CEMIRawReq) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m CEMIRawReq) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
+	return CEMISerialize(io, m.CEMI, CastICEMI(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
index 6d0711f..86c1dc0 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequest.go
@@ -35,7 +35,7 @@ type ConnectionRequest struct {
 // The corresponding interface
 type IConnectionRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -129,21 +129,31 @@ func ConnectionRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
 	return NewConnectionRequest(hpaiDiscoveryEndpoint, hpaiDataEndpoint, connectionRequestInformation), nil
 }
 
-func (m ConnectionRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (hpaiDiscoveryEndpoint)
 		hpaiDiscoveryEndpoint := CastIHPAIDiscoveryEndpoint(m.hpaiDiscoveryEndpoint)
-		hpaiDiscoveryEndpoint.Serialize(io)
+		_hpaiDiscoveryEndpointErr := hpaiDiscoveryEndpoint.Serialize(io)
+		if _hpaiDiscoveryEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiDiscoveryEndpoint' field " + _hpaiDiscoveryEndpointErr.Error())
+		}
 
 		// Simple Field (hpaiDataEndpoint)
 		hpaiDataEndpoint := CastIHPAIDataEndpoint(m.hpaiDataEndpoint)
-		hpaiDataEndpoint.Serialize(io)
+		_hpaiDataEndpointErr := hpaiDataEndpoint.Serialize(io)
+		if _hpaiDataEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiDataEndpoint' field " + _hpaiDataEndpointErr.Error())
+		}
 
 		// Simple Field (connectionRequestInformation)
 		connectionRequestInformation := CastIConnectionRequestInformation(m.connectionRequestInformation)
-		connectionRequestInformation.Serialize(io)
+		_connectionRequestInformationErr := connectionRequestInformation.Serialize(io)
+		if _connectionRequestInformationErr != nil {
+			return errors.New("Error serializing 'connectionRequestInformation' field " + _connectionRequestInformationErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
index 80eaffb..0fecad4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformation.go
@@ -31,7 +31,7 @@ type ConnectionRequestInformation struct {
 type IConnectionRequestInformation interface {
 	spi.Message
 	ConnectionType() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type ConnectionRequestInformationInitializer interface {
@@ -111,17 +111,27 @@ func ConnectionRequestInformationParse(io *spi.ReadBuffer) (spi.Message, error)
 	return initializer.initialize(), nil
 }
 
-func ConnectionRequestInformationSerialize(io spi.WriteBuffer, m ConnectionRequestInformation, i IConnectionRequestInformation, childSerialize func()) {
+func ConnectionRequestInformationSerialize(io spi.WriteBuffer, m ConnectionRequestInformation, i IConnectionRequestInformation, childSerialize func() error) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Discriminator Field (connectionType) (Used as input to a switch field)
 	connectionType := uint8(i.ConnectionType())
-	io.WriteUint8(8, (connectionType))
+	_connectionTypeErr := io.WriteUint8(8, (connectionType))
+	if _connectionTypeErr != nil {
+		return errors.New("Error serializing 'connectionType' field " + _connectionTypeErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
index 44b21d1..d296d6c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationDeviceManagement.go
@@ -30,7 +30,7 @@ type ConnectionRequestInformationDeviceManagement struct {
 // The corresponding interface
 type IConnectionRequestInformationDeviceManagement interface {
 	IConnectionRequestInformation
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func ConnectionRequestInformationDeviceManagementParse(io *spi.ReadBuffer) (Conn
 	return NewConnectionRequestInformationDeviceManagement(), nil
 }
 
-func (m ConnectionRequestInformationDeviceManagement) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionRequestInformationDeviceManagement) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	ConnectionRequestInformationSerialize(io, m.ConnectionRequestInformation, CastIConnectionRequestInformation(m), ser)
+	return ConnectionRequestInformationSerialize(io, m.ConnectionRequestInformation, CastIConnectionRequestInformation(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
index 5572cb6..33a1b39 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionRequestInformationTunnelConnection.go
@@ -33,7 +33,7 @@ type ConnectionRequestInformationTunnelConnection struct {
 // The corresponding interface
 type IConnectionRequestInformationTunnelConnection interface {
 	IConnectionRequestInformation
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -111,16 +111,25 @@ func ConnectionRequestInformationTunnelConnectionParse(io *spi.ReadBuffer) (Conn
 	return NewConnectionRequestInformationTunnelConnection(knxLayer), nil
 }
 
-func (m ConnectionRequestInformationTunnelConnection) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionRequestInformationTunnelConnection) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Enum field (knxLayer)
 		knxLayer := CastKnxLayer(m.knxLayer)
-		knxLayer.Serialize(io)
+		_knxLayerErr := knxLayer.Serialize(io)
+		if _knxLayerErr != nil {
+			return errors.New("Error serializing 'knxLayer' field " + _knxLayerErr.Error())
+		}
 
 		// Reserved Field (reserved)
-		io.WriteUint8(8, uint8(0x00))
+		{
+			_err := io.WriteUint8(8, uint8(0x00))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
 
+		return nil
 	}
-	ConnectionRequestInformationSerialize(io, m.ConnectionRequestInformation, CastIConnectionRequestInformation(m), ser)
+	return ConnectionRequestInformationSerialize(io, m.ConnectionRequestInformation, CastIConnectionRequestInformation(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
index b44d107..e6805b5 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponse.go
@@ -36,7 +36,7 @@ type ConnectionResponse struct {
 // The corresponding interface
 type IConnectionResponse interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -146,31 +146,44 @@ func ConnectionResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, er
 	return NewConnectionResponse(communicationChannelId, status, hpaiDataEndpoint, connectionResponseDataBlock), nil
 }
 
-func (m ConnectionResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (communicationChannelId)
 		communicationChannelId := uint8(m.communicationChannelId)
-		io.WriteUint8(8, (communicationChannelId))
+		_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+		if _communicationChannelIdErr != nil {
+			return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+		}
 
 		// Enum field (status)
 		status := CastStatus(m.status)
-		status.Serialize(io)
+		_statusErr := status.Serialize(io)
+		if _statusErr != nil {
+			return errors.New("Error serializing 'status' field " + _statusErr.Error())
+		}
 
 		// Optional Field (hpaiDataEndpoint) (Can be skipped, if the value is null)
 		var hpaiDataEndpoint *IHPAIDataEndpoint = nil
 		if m.hpaiDataEndpoint != nil {
 			hpaiDataEndpoint = m.hpaiDataEndpoint
-			CastIHPAIDataEndpoint(*hpaiDataEndpoint).Serialize(io)
+			_hpaiDataEndpointErr := CastIHPAIDataEndpoint(*hpaiDataEndpoint).Serialize(io)
+			if _hpaiDataEndpointErr != nil {
+				return errors.New("Error serializing 'hpaiDataEndpoint' field " + _hpaiDataEndpointErr.Error())
+			}
 		}
 
 		// Optional Field (connectionResponseDataBlock) (Can be skipped, if the value is null)
 		var connectionResponseDataBlock *IConnectionResponseDataBlock = nil
 		if m.connectionResponseDataBlock != nil {
 			connectionResponseDataBlock = m.connectionResponseDataBlock
-			CastIConnectionResponseDataBlock(*connectionResponseDataBlock).Serialize(io)
+			_connectionResponseDataBlockErr := CastIConnectionResponseDataBlock(*connectionResponseDataBlock).Serialize(io)
+			if _connectionResponseDataBlockErr != nil {
+				return errors.New("Error serializing 'connectionResponseDataBlock' field " + _connectionResponseDataBlockErr.Error())
+			}
 		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
index 9ab4fac..ad0701a 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlock.go
@@ -31,7 +31,7 @@ type ConnectionResponseDataBlock struct {
 type IConnectionResponseDataBlock interface {
 	spi.Message
 	ConnectionType() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type ConnectionResponseDataBlockInitializer interface {
@@ -111,17 +111,27 @@ func ConnectionResponseDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func ConnectionResponseDataBlockSerialize(io spi.WriteBuffer, m ConnectionResponseDataBlock, i IConnectionResponseDataBlock, childSerialize func()) {
+func ConnectionResponseDataBlockSerialize(io spi.WriteBuffer, m ConnectionResponseDataBlock, i IConnectionResponseDataBlock, childSerialize func() error) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Discriminator Field (connectionType) (Used as input to a switch field)
 	connectionType := uint8(i.ConnectionType())
-	io.WriteUint8(8, (connectionType))
+	_connectionTypeErr := io.WriteUint8(8, (connectionType))
+	if _connectionTypeErr != nil {
+		return errors.New("Error serializing 'connectionType' field " + _connectionTypeErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
index 4a5fb42..df33ee3 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockDeviceManagement.go
@@ -30,7 +30,7 @@ type ConnectionResponseDataBlockDeviceManagement struct {
 // The corresponding interface
 type IConnectionResponseDataBlockDeviceManagement interface {
 	IConnectionResponseDataBlock
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func ConnectionResponseDataBlockDeviceManagementParse(io *spi.ReadBuffer) (Conne
 	return NewConnectionResponseDataBlockDeviceManagement(), nil
 }
 
-func (m ConnectionResponseDataBlockDeviceManagement) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionResponseDataBlockDeviceManagement) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	ConnectionResponseDataBlockSerialize(io, m.ConnectionResponseDataBlock, CastIConnectionResponseDataBlock(m), ser)
+	return ConnectionResponseDataBlockSerialize(io, m.ConnectionResponseDataBlock, CastIConnectionResponseDataBlock(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
index 8146e49..77cd612 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionResponseDataBlockTunnelConnection.go
@@ -33,7 +33,7 @@ type ConnectionResponseDataBlockTunnelConnection struct {
 // The corresponding interface
 type IConnectionResponseDataBlockTunnelConnection interface {
 	IConnectionResponseDataBlock
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func ConnectionResponseDataBlockTunnelConnectionParse(io *spi.ReadBuffer) (Conne
 	return NewConnectionResponseDataBlockTunnelConnection(knxAddress), nil
 }
 
-func (m ConnectionResponseDataBlockTunnelConnection) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionResponseDataBlockTunnelConnection) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (knxAddress)
 		knxAddress := CastIKNXAddress(m.knxAddress)
-		knxAddress.Serialize(io)
+		_knxAddressErr := knxAddress.Serialize(io)
+		if _knxAddressErr != nil {
+			return errors.New("Error serializing 'knxAddress' field " + _knxAddressErr.Error())
+		}
 
+		return nil
 	}
-	ConnectionResponseDataBlockSerialize(io, m.ConnectionResponseDataBlock, CastIConnectionResponseDataBlock(m), ser)
+	return ConnectionResponseDataBlockSerialize(io, m.ConnectionResponseDataBlock, CastIConnectionResponseDataBlock(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
index 1484241..7e42a1d 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateRequest.go
@@ -35,7 +35,7 @@ type ConnectionStateRequest struct {
 // The corresponding interface
 type IConnectionStateRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -127,20 +127,32 @@ func ConnectionStateRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer
 	return NewConnectionStateRequest(communicationChannelId, hpaiControlEndpoint), nil
 }
 
-func (m ConnectionStateRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionStateRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (communicationChannelId)
 		communicationChannelId := uint8(m.communicationChannelId)
-		io.WriteUint8(8, (communicationChannelId))
+		_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+		if _communicationChannelIdErr != nil {
+			return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+		}
 
 		// Reserved Field (reserved)
-		io.WriteUint8(8, uint8(0x00))
+		{
+			_err := io.WriteUint8(8, uint8(0x00))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
 
 		// Simple Field (hpaiControlEndpoint)
 		hpaiControlEndpoint := CastIHPAIControlEndpoint(m.hpaiControlEndpoint)
-		hpaiControlEndpoint.Serialize(io)
+		_hpaiControlEndpointErr := hpaiControlEndpoint.Serialize(io)
+		if _hpaiControlEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiControlEndpoint' field " + _hpaiControlEndpointErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
index 6114efd..ef598fb 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ConnectionStateResponse.go
@@ -33,7 +33,7 @@ type ConnectionStateResponse struct {
 // The corresponding interface
 type IConnectionStateResponse interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -103,17 +103,24 @@ func ConnectionStateResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitialize
 	return NewConnectionStateResponse(communicationChannelId, status), nil
 }
 
-func (m ConnectionStateResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ConnectionStateResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (communicationChannelId)
 		communicationChannelId := uint8(m.communicationChannelId)
-		io.WriteUint8(8, (communicationChannelId))
+		_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+		if _communicationChannelIdErr != nil {
+			return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+		}
 
 		// Enum field (status)
 		status := CastStatus(m.status)
-		status.Serialize(io)
+		_statusErr := status.Serialize(io)
+		if _statusErr != nil {
+			return errors.New("Error serializing 'status' field " + _statusErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
index 54c4fcc..a372fa4 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBDeviceInfo.go
@@ -40,7 +40,7 @@ type DIBDeviceInfo struct {
 // The corresponding interface
 type IDIBDeviceInfo interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewDIBDeviceInfo(descriptionType uint8, knxMedium uint8, deviceStatus IDeviceStatus, knxAddress IKNXAddress, projectInstallationIdentifier IProjectInstallationIdentifier, knxNetIpDeviceSerialNumber []int8, knxNetIpDeviceMulticastAddress IIPAddress, knxNetIpDeviceMacAddress IMACAddress, deviceFriendlyName []int8) spi.Message {
@@ -214,52 +214,83 @@ func DIBDeviceInfoParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewDIBDeviceInfo(descriptionType, knxMedium, deviceStatus, knxAddress, projectInstallationIdentifier, knxNetIpDeviceSerialNumber, knxNetIpDeviceMulticastAddress, knxNetIpDeviceMacAddress, deviceFriendlyName), nil
 }
 
-func (m DIBDeviceInfo) Serialize(io spi.WriteBuffer) {
+func (m DIBDeviceInfo) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Simple Field (descriptionType)
 	descriptionType := uint8(m.descriptionType)
-	io.WriteUint8(8, (descriptionType))
+	_descriptionTypeErr := io.WriteUint8(8, (descriptionType))
+	if _descriptionTypeErr != nil {
+		return errors.New("Error serializing 'descriptionType' field " + _descriptionTypeErr.Error())
+	}
 
 	// Simple Field (knxMedium)
 	knxMedium := uint8(m.knxMedium)
-	io.WriteUint8(8, (knxMedium))
+	_knxMediumErr := io.WriteUint8(8, (knxMedium))
+	if _knxMediumErr != nil {
+		return errors.New("Error serializing 'knxMedium' field " + _knxMediumErr.Error())
+	}
 
 	// Simple Field (deviceStatus)
 	deviceStatus := CastIDeviceStatus(m.deviceStatus)
-	deviceStatus.Serialize(io)
+	_deviceStatusErr := deviceStatus.Serialize(io)
+	if _deviceStatusErr != nil {
+		return errors.New("Error serializing 'deviceStatus' field " + _deviceStatusErr.Error())
+	}
 
 	// Simple Field (knxAddress)
 	knxAddress := CastIKNXAddress(m.knxAddress)
-	knxAddress.Serialize(io)
+	_knxAddressErr := knxAddress.Serialize(io)
+	if _knxAddressErr != nil {
+		return errors.New("Error serializing 'knxAddress' field " + _knxAddressErr.Error())
+	}
 
 	// Simple Field (projectInstallationIdentifier)
 	projectInstallationIdentifier := CastIProjectInstallationIdentifier(m.projectInstallationIdentifier)
-	projectInstallationIdentifier.Serialize(io)
+	_projectInstallationIdentifierErr := projectInstallationIdentifier.Serialize(io)
+	if _projectInstallationIdentifierErr != nil {
+		return errors.New("Error serializing 'projectInstallationIdentifier' field " + _projectInstallationIdentifierErr.Error())
+	}
 
 	// Array Field (knxNetIpDeviceSerialNumber)
 	if m.knxNetIpDeviceSerialNumber != nil {
 		for _, _element := range m.knxNetIpDeviceSerialNumber {
-			io.WriteInt8(8, _element)
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'knxNetIpDeviceSerialNumber' field " + _elementErr.Error())
+			}
 		}
 	}
 
 	// Simple Field (knxNetIpDeviceMulticastAddress)
 	knxNetIpDeviceMulticastAddress := CastIIPAddress(m.knxNetIpDeviceMulticastAddress)
-	knxNetIpDeviceMulticastAddress.Serialize(io)
+	_knxNetIpDeviceMulticastAddressErr := knxNetIpDeviceMulticastAddress.Serialize(io)
+	if _knxNetIpDeviceMulticastAddressErr != nil {
+		return errors.New("Error serializing 'knxNetIpDeviceMulticastAddress' field " + _knxNetIpDeviceMulticastAddressErr.Error())
+	}
 
 	// Simple Field (knxNetIpDeviceMacAddress)
 	knxNetIpDeviceMacAddress := CastIMACAddress(m.knxNetIpDeviceMacAddress)
-	knxNetIpDeviceMacAddress.Serialize(io)
+	_knxNetIpDeviceMacAddressErr := knxNetIpDeviceMacAddress.Serialize(io)
+	if _knxNetIpDeviceMacAddressErr != nil {
+		return errors.New("Error serializing 'knxNetIpDeviceMacAddress' field " + _knxNetIpDeviceMacAddressErr.Error())
+	}
 
 	// Array Field (deviceFriendlyName)
 	if m.deviceFriendlyName != nil {
 		for _, _element := range m.deviceFriendlyName {
-			io.WriteInt8(8, _element)
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'deviceFriendlyName' field " + _elementErr.Error())
+			}
 		}
 	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
index 41d4649..c33ea18 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DIBSuppSvcFamilies.go
@@ -33,7 +33,7 @@ type DIBSuppSvcFamilies struct {
 // The corresponding interface
 type IDIBSuppSvcFamilies interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewDIBSuppSvcFamilies(descriptionType uint8, serviceIds []IServiceId) spi.Message {
@@ -118,21 +118,31 @@ func DIBSuppSvcFamiliesParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewDIBSuppSvcFamilies(descriptionType, serviceIds), nil
 }
 
-func (m DIBSuppSvcFamilies) Serialize(io spi.WriteBuffer) {
+func (m DIBSuppSvcFamilies) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Simple Field (descriptionType)
 	descriptionType := uint8(m.descriptionType)
-	io.WriteUint8(8, (descriptionType))
+	_descriptionTypeErr := io.WriteUint8(8, (descriptionType))
+	if _descriptionTypeErr != nil {
+		return errors.New("Error serializing 'descriptionType' field " + _descriptionTypeErr.Error())
+	}
 
 	// Array Field (serviceIds)
 	if m.serviceIds != nil {
 		for _, _element := range m.serviceIds {
-			_element.Serialize(io)
+			_elementErr := _element.Serialize(io)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'serviceIds' field " + _elementErr.Error())
+			}
 		}
 	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
index e85fa2e..24a8147 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionRequest.go
@@ -33,7 +33,7 @@ type DescriptionRequest struct {
 // The corresponding interface
 type IDescriptionRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func DescriptionRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, er
 	return NewDescriptionRequest(hpaiControlEndpoint), nil
 }
 
-func (m DescriptionRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m DescriptionRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (hpaiControlEndpoint)
 		hpaiControlEndpoint := CastIHPAIControlEndpoint(m.hpaiControlEndpoint)
-		hpaiControlEndpoint.Serialize(io)
+		_hpaiControlEndpointErr := hpaiControlEndpoint.Serialize(io)
+		if _hpaiControlEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiControlEndpoint' field " + _hpaiControlEndpointErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
index 1e900f7..1e77ba3 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DescriptionResponse.go
@@ -34,7 +34,7 @@ type DescriptionResponse struct {
 // The corresponding interface
 type IDescriptionResponse interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -114,17 +114,24 @@ func DescriptionResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, e
 	return NewDescriptionResponse(dibDeviceInfo, dibSuppSvcFamilies), nil
 }
 
-func (m DescriptionResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m DescriptionResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (dibDeviceInfo)
 		dibDeviceInfo := CastIDIBDeviceInfo(m.dibDeviceInfo)
-		dibDeviceInfo.Serialize(io)
+		_dibDeviceInfoErr := dibDeviceInfo.Serialize(io)
+		if _dibDeviceInfoErr != nil {
+			return errors.New("Error serializing 'dibDeviceInfo' field " + _dibDeviceInfoErr.Error())
+		}
 
 		// Simple Field (dibSuppSvcFamilies)
 		dibSuppSvcFamilies := CastIDIBSuppSvcFamilies(m.dibSuppSvcFamilies)
-		dibSuppSvcFamilies.Serialize(io)
+		_dibSuppSvcFamiliesErr := dibSuppSvcFamilies.Serialize(io)
+		if _dibSuppSvcFamiliesErr != nil {
+			return errors.New("Error serializing 'dibSuppSvcFamilies' field " + _dibSuppSvcFamiliesErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
index ac64912..bb8373b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAck.go
@@ -33,7 +33,7 @@ type DeviceConfigurationAck struct {
 // The corresponding interface
 type IDeviceConfigurationAck interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func DeviceConfigurationAckParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer
 	return NewDeviceConfigurationAck(deviceConfigurationAckDataBlock), nil
 }
 
-func (m DeviceConfigurationAck) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m DeviceConfigurationAck) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (deviceConfigurationAckDataBlock)
 		deviceConfigurationAckDataBlock := CastIDeviceConfigurationAckDataBlock(m.deviceConfigurationAckDataBlock)
-		deviceConfigurationAckDataBlock.Serialize(io)
+		_deviceConfigurationAckDataBlockErr := deviceConfigurationAckDataBlock.Serialize(io)
+		if _deviceConfigurationAckDataBlockErr != nil {
+			return errors.New("Error serializing 'deviceConfigurationAckDataBlock' field " + _deviceConfigurationAckDataBlockErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
index f942bfc..75ed370 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationAckDataBlock.go
@@ -33,7 +33,7 @@ type DeviceConfigurationAckDataBlock struct {
 // The corresponding interface
 type IDeviceConfigurationAckDataBlock interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewDeviceConfigurationAckDataBlock(communicationChannelId uint8, sequenceCounter uint8, status IStatus) spi.Message {
@@ -112,22 +112,35 @@ func DeviceConfigurationAckDataBlockParse(io *spi.ReadBuffer) (spi.Message, erro
 	return NewDeviceConfigurationAckDataBlock(communicationChannelId, sequenceCounter, status), nil
 }
 
-func (m DeviceConfigurationAckDataBlock) Serialize(io spi.WriteBuffer) {
+func (m DeviceConfigurationAckDataBlock) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Simple Field (communicationChannelId)
 	communicationChannelId := uint8(m.communicationChannelId)
-	io.WriteUint8(8, (communicationChannelId))
+	_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+	if _communicationChannelIdErr != nil {
+		return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+	}
 
 	// Simple Field (sequenceCounter)
 	sequenceCounter := uint8(m.sequenceCounter)
-	io.WriteUint8(8, (sequenceCounter))
+	_sequenceCounterErr := io.WriteUint8(8, (sequenceCounter))
+	if _sequenceCounterErr != nil {
+		return errors.New("Error serializing 'sequenceCounter' field " + _sequenceCounterErr.Error())
+	}
 
 	// Enum field (status)
 	status := CastStatus(m.status)
-	status.Serialize(io)
+	_statusErr := status.Serialize(io)
+	if _statusErr != nil {
+		return errors.New("Error serializing 'status' field " + _statusErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
index 62dcdb5..7b580e3 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequest.go
@@ -34,7 +34,7 @@ type DeviceConfigurationRequest struct {
 // The corresponding interface
 type IDeviceConfigurationRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -114,17 +114,24 @@ func DeviceConfigurationRequestParse(io *spi.ReadBuffer, totalLength uint16) (KN
 	return NewDeviceConfigurationRequest(deviceConfigurationRequestDataBlock, cemi), nil
 }
 
-func (m DeviceConfigurationRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m DeviceConfigurationRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (deviceConfigurationRequestDataBlock)
 		deviceConfigurationRequestDataBlock := CastIDeviceConfigurationRequestDataBlock(m.deviceConfigurationRequestDataBlock)
-		deviceConfigurationRequestDataBlock.Serialize(io)
+		_deviceConfigurationRequestDataBlockErr := deviceConfigurationRequestDataBlock.Serialize(io)
+		if _deviceConfigurationRequestDataBlockErr != nil {
+			return errors.New("Error serializing 'deviceConfigurationRequestDataBlock' field " + _deviceConfigurationRequestDataBlockErr.Error())
+		}
 
 		// Simple Field (cemi)
 		cemi := CastICEMI(m.cemi)
-		cemi.Serialize(io)
+		_cemiErr := cemi.Serialize(io)
+		if _cemiErr != nil {
+			return errors.New("Error serializing 'cemi' field " + _cemiErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
index 478847d..4aa689c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceConfigurationRequestDataBlock.go
@@ -33,7 +33,7 @@ type DeviceConfigurationRequestDataBlock struct {
 // The corresponding interface
 type IDeviceConfigurationRequestDataBlock interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewDeviceConfigurationRequestDataBlock(communicationChannelId uint8, sequenceCounter uint8) spi.Message {
@@ -120,21 +120,36 @@ func DeviceConfigurationRequestDataBlockParse(io *spi.ReadBuffer) (spi.Message,
 	return NewDeviceConfigurationRequestDataBlock(communicationChannelId, sequenceCounter), nil
 }
 
-func (m DeviceConfigurationRequestDataBlock) Serialize(io spi.WriteBuffer) {
+func (m DeviceConfigurationRequestDataBlock) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Simple Field (communicationChannelId)
 	communicationChannelId := uint8(m.communicationChannelId)
-	io.WriteUint8(8, (communicationChannelId))
+	_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+	if _communicationChannelIdErr != nil {
+		return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+	}
 
 	// Simple Field (sequenceCounter)
 	sequenceCounter := uint8(m.sequenceCounter)
-	io.WriteUint8(8, (sequenceCounter))
+	_sequenceCounterErr := io.WriteUint8(8, (sequenceCounter))
+	if _sequenceCounterErr != nil {
+		return errors.New("Error serializing 'sequenceCounter' field " + _sequenceCounterErr.Error())
+	}
 
 	// Reserved Field (reserved)
-	io.WriteUint8(8, uint8(0x00))
+	{
+		_err := io.WriteUint8(8, uint8(0x00))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
index 0267dc5..7208db5 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DeviceStatus.go
@@ -32,7 +32,7 @@ type DeviceStatus struct {
 // The corresponding interface
 type IDeviceStatus interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewDeviceStatus(programMode bool) spi.Message {
@@ -101,13 +101,22 @@ func DeviceStatusParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewDeviceStatus(programMode), nil
 }
 
-func (m DeviceStatus) Serialize(io spi.WriteBuffer) {
+func (m DeviceStatus) Serialize(io spi.WriteBuffer) error {
 
 	// Reserved Field (reserved)
-	io.WriteUint8(7, uint8(0x00))
+	{
+		_err := io.WriteUint8(7, uint8(0x00))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
 
 	// Simple Field (programMode)
 	programMode := bool(m.programMode)
-	io.WriteBit((bool)(programMode))
+	_programModeErr := io.WriteBit((bool)(programMode))
+	if _programModeErr != nil {
+		return errors.New("Error serializing 'programMode' field " + _programModeErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
index 9520a4c..0b29b0d 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectRequest.go
@@ -35,7 +35,7 @@ type DisconnectRequest struct {
 // The corresponding interface
 type IDisconnectRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -127,20 +127,32 @@ func DisconnectRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
 	return NewDisconnectRequest(communicationChannelId, hpaiControlEndpoint), nil
 }
 
-func (m DisconnectRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m DisconnectRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (communicationChannelId)
 		communicationChannelId := uint8(m.communicationChannelId)
-		io.WriteUint8(8, (communicationChannelId))
+		_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+		if _communicationChannelIdErr != nil {
+			return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+		}
 
 		// Reserved Field (reserved)
-		io.WriteUint8(8, uint8(0x00))
+		{
+			_err := io.WriteUint8(8, uint8(0x00))
+			if _err != nil {
+				return errors.New("Error serializing 'reserved' field " + _err.Error())
+			}
+		}
 
 		// Simple Field (hpaiControlEndpoint)
 		hpaiControlEndpoint := CastIHPAIControlEndpoint(m.hpaiControlEndpoint)
-		hpaiControlEndpoint.Serialize(io)
+		_hpaiControlEndpointErr := hpaiControlEndpoint.Serialize(io)
+		if _hpaiControlEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiControlEndpoint' field " + _hpaiControlEndpointErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
index 9b82327..e3edc65 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/DisconnectResponse.go
@@ -33,7 +33,7 @@ type DisconnectResponse struct {
 // The corresponding interface
 type IDisconnectResponse interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -103,17 +103,24 @@ func DisconnectResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, er
 	return NewDisconnectResponse(communicationChannelId, status), nil
 }
 
-func (m DisconnectResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m DisconnectResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (communicationChannelId)
 		communicationChannelId := uint8(m.communicationChannelId)
-		io.WriteUint8(8, (communicationChannelId))
+		_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+		if _communicationChannelIdErr != nil {
+			return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+		}
 
 		// Enum field (status)
 		status := CastStatus(m.status)
-		status.Serialize(io)
+		_statusErr := status.Serialize(io)
+		if _statusErr != nil {
+			return errors.New("Error serializing 'status' field " + _statusErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
index 1a616a0..1a2ae8f 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIControlEndpoint.go
@@ -34,7 +34,7 @@ type HPAIControlEndpoint struct {
 // The corresponding interface
 type IHPAIControlEndpoint interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewHPAIControlEndpoint(hostProtocolCode IHostProtocolCode, ipAddress IIPAddress, ipPort uint16) spi.Message {
@@ -118,22 +118,35 @@ func HPAIControlEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewHPAIControlEndpoint(hostProtocolCode, ipAddress, ipPort), nil
 }
 
-func (m HPAIControlEndpoint) Serialize(io spi.WriteBuffer) {
+func (m HPAIControlEndpoint) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Enum field (hostProtocolCode)
 	hostProtocolCode := CastHostProtocolCode(m.hostProtocolCode)
-	hostProtocolCode.Serialize(io)
+	_hostProtocolCodeErr := hostProtocolCode.Serialize(io)
+	if _hostProtocolCodeErr != nil {
+		return errors.New("Error serializing 'hostProtocolCode' field " + _hostProtocolCodeErr.Error())
+	}
 
 	// Simple Field (ipAddress)
 	ipAddress := CastIIPAddress(m.ipAddress)
-	ipAddress.Serialize(io)
+	_ipAddressErr := ipAddress.Serialize(io)
+	if _ipAddressErr != nil {
+		return errors.New("Error serializing 'ipAddress' field " + _ipAddressErr.Error())
+	}
 
 	// Simple Field (ipPort)
 	ipPort := uint16(m.ipPort)
-	io.WriteUint16(16, (ipPort))
+	_ipPortErr := io.WriteUint16(16, (ipPort))
+	if _ipPortErr != nil {
+		return errors.New("Error serializing 'ipPort' field " + _ipPortErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
index d9425f3..0b11aaa 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDataEndpoint.go
@@ -34,7 +34,7 @@ type HPAIDataEndpoint struct {
 // The corresponding interface
 type IHPAIDataEndpoint interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewHPAIDataEndpoint(hostProtocolCode IHostProtocolCode, ipAddress IIPAddress, ipPort uint16) spi.Message {
@@ -118,22 +118,35 @@ func HPAIDataEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewHPAIDataEndpoint(hostProtocolCode, ipAddress, ipPort), nil
 }
 
-func (m HPAIDataEndpoint) Serialize(io spi.WriteBuffer) {
+func (m HPAIDataEndpoint) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Enum field (hostProtocolCode)
 	hostProtocolCode := CastHostProtocolCode(m.hostProtocolCode)
-	hostProtocolCode.Serialize(io)
+	_hostProtocolCodeErr := hostProtocolCode.Serialize(io)
+	if _hostProtocolCodeErr != nil {
+		return errors.New("Error serializing 'hostProtocolCode' field " + _hostProtocolCodeErr.Error())
+	}
 
 	// Simple Field (ipAddress)
 	ipAddress := CastIIPAddress(m.ipAddress)
-	ipAddress.Serialize(io)
+	_ipAddressErr := ipAddress.Serialize(io)
+	if _ipAddressErr != nil {
+		return errors.New("Error serializing 'ipAddress' field " + _ipAddressErr.Error())
+	}
 
 	// Simple Field (ipPort)
 	ipPort := uint16(m.ipPort)
-	io.WriteUint16(16, (ipPort))
+	_ipPortErr := io.WriteUint16(16, (ipPort))
+	if _ipPortErr != nil {
+		return errors.New("Error serializing 'ipPort' field " + _ipPortErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
index 8a3c86c..2fbad66 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HPAIDiscoveryEndpoint.go
@@ -34,7 +34,7 @@ type HPAIDiscoveryEndpoint struct {
 // The corresponding interface
 type IHPAIDiscoveryEndpoint interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewHPAIDiscoveryEndpoint(hostProtocolCode IHostProtocolCode, ipAddress IIPAddress, ipPort uint16) spi.Message {
@@ -118,22 +118,35 @@ func HPAIDiscoveryEndpointParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewHPAIDiscoveryEndpoint(hostProtocolCode, ipAddress, ipPort), nil
 }
 
-func (m HPAIDiscoveryEndpoint) Serialize(io spi.WriteBuffer) {
+func (m HPAIDiscoveryEndpoint) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Enum field (hostProtocolCode)
 	hostProtocolCode := CastHostProtocolCode(m.hostProtocolCode)
-	hostProtocolCode.Serialize(io)
+	_hostProtocolCodeErr := hostProtocolCode.Serialize(io)
+	if _hostProtocolCodeErr != nil {
+		return errors.New("Error serializing 'hostProtocolCode' field " + _hostProtocolCodeErr.Error())
+	}
 
 	// Simple Field (ipAddress)
 	ipAddress := CastIIPAddress(m.ipAddress)
-	ipAddress.Serialize(io)
+	_ipAddressErr := ipAddress.Serialize(io)
+	if _ipAddressErr != nil {
+		return errors.New("Error serializing 'ipAddress' field " + _ipAddressErr.Error())
+	}
 
 	// Simple Field (ipPort)
 	ipPort := uint16(m.ipPort)
-	io.WriteUint16(16, (ipPort))
+	_ipPortErr := io.WriteUint16(16, (ipPort))
+	if _ipPortErr != nil {
+		return errors.New("Error serializing 'ipPort' field " + _ipPortErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
index 2459c28..5e4b958 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/HostProtocolCode.go
@@ -24,7 +24,7 @@ type HostProtocolCode uint8
 
 type IHostProtocolCode interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -55,6 +55,7 @@ func HostProtocolCodeParse(io *spi.ReadBuffer) (HostProtocolCode, error) {
 	return 0, nil
 }
 
-func (e HostProtocolCode) Serialize(io spi.WriteBuffer) {
+func (e HostProtocolCode) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
index 8d42bd2..c4afe52 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/IPAddress.go
@@ -31,7 +31,7 @@ type IPAddress struct {
 // The corresponding interface
 type IIPAddress interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewIPAddress(addr []int8) spi.Message {
@@ -91,13 +91,17 @@ func IPAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewIPAddress(addr), nil
 }
 
-func (m IPAddress) Serialize(io spi.WriteBuffer) {
+func (m IPAddress) Serialize(io spi.WriteBuffer) error {
 
 	// Array Field (addr)
 	if m.addr != nil {
 		for _, _element := range m.addr {
-			io.WriteInt8(8, _element)
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'addr' field " + _elementErr.Error())
+			}
 		}
 	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go
index 84ee309..77b2493 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXAddress.go
@@ -33,7 +33,7 @@ type KNXAddress struct {
 // The corresponding interface
 type IKNXAddress interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewKNXAddress(mainGroup uint8, middleGroup uint8, subGroup uint8) spi.Message {
@@ -103,18 +103,28 @@ func KNXAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewKNXAddress(mainGroup, middleGroup, subGroup), nil
 }
 
-func (m KNXAddress) Serialize(io spi.WriteBuffer) {
+func (m KNXAddress) Serialize(io spi.WriteBuffer) error {
 
 	// Simple Field (mainGroup)
 	mainGroup := uint8(m.mainGroup)
-	io.WriteUint8(4, (mainGroup))
+	_mainGroupErr := io.WriteUint8(4, (mainGroup))
+	if _mainGroupErr != nil {
+		return errors.New("Error serializing 'mainGroup' field " + _mainGroupErr.Error())
+	}
 
 	// Simple Field (middleGroup)
 	middleGroup := uint8(m.middleGroup)
-	io.WriteUint8(4, (middleGroup))
+	_middleGroupErr := io.WriteUint8(4, (middleGroup))
+	if _middleGroupErr != nil {
+		return errors.New("Error serializing 'middleGroup' field " + _middleGroupErr.Error())
+	}
 
 	// Simple Field (subGroup)
 	subGroup := uint8(m.subGroup)
-	io.WriteUint8(8, (subGroup))
+	_subGroupErr := io.WriteUint8(8, (subGroup))
+	if _subGroupErr != nil {
+		return errors.New("Error serializing 'subGroup' field " + _subGroupErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go
index a886eec..8d8dbdd 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress.go
@@ -31,7 +31,7 @@ type KNXGroupAddress struct {
 type IKNXGroupAddress interface {
 	spi.Message
 	NumLevels() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type KNXGroupAddressInitializer interface {
@@ -95,9 +95,13 @@ func KNXGroupAddressParse(io *spi.ReadBuffer, numLevels uint8) (spi.Message, err
 	return initializer.initialize(), nil
 }
 
-func KNXGroupAddressSerialize(io spi.WriteBuffer, m KNXGroupAddress, i IKNXGroupAddress, childSerialize func()) {
+func KNXGroupAddressSerialize(io spi.WriteBuffer, m KNXGroupAddress, i IKNXGroupAddress, childSerialize func() error) error {
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go
index f8654cf..2eeb011 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress2Level.go
@@ -33,7 +33,7 @@ type KNXGroupAddress2Level struct {
 // The corresponding interface
 type IKNXGroupAddress2Level interface {
 	IKNXGroupAddress
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -103,17 +103,24 @@ func KNXGroupAddress2LevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer,
 	return NewKNXGroupAddress2Level(mainGroup, subGroup), nil
 }
 
-func (m KNXGroupAddress2Level) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KNXGroupAddress2Level) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (mainGroup)
 		mainGroup := uint8(m.mainGroup)
-		io.WriteUint8(5, (mainGroup))
+		_mainGroupErr := io.WriteUint8(5, (mainGroup))
+		if _mainGroupErr != nil {
+			return errors.New("Error serializing 'mainGroup' field " + _mainGroupErr.Error())
+		}
 
 		// Simple Field (subGroup)
 		subGroup := uint16(m.subGroup)
-		io.WriteUint16(11, (subGroup))
+		_subGroupErr := io.WriteUint16(11, (subGroup))
+		if _subGroupErr != nil {
+			return errors.New("Error serializing 'subGroup' field " + _subGroupErr.Error())
+		}
 
+		return nil
 	}
-	KNXGroupAddressSerialize(io, m.KNXGroupAddress, CastIKNXGroupAddress(m), ser)
+	return KNXGroupAddressSerialize(io, m.KNXGroupAddress, CastIKNXGroupAddress(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go
index e894620..16c26fd 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddress3Level.go
@@ -34,7 +34,7 @@ type KNXGroupAddress3Level struct {
 // The corresponding interface
 type IKNXGroupAddress3Level interface {
 	IKNXGroupAddress
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -113,21 +113,31 @@ func KNXGroupAddress3LevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializer,
 	return NewKNXGroupAddress3Level(mainGroup, middleGroup, subGroup), nil
 }
 
-func (m KNXGroupAddress3Level) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KNXGroupAddress3Level) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (mainGroup)
 		mainGroup := uint8(m.mainGroup)
-		io.WriteUint8(5, (mainGroup))
+		_mainGroupErr := io.WriteUint8(5, (mainGroup))
+		if _mainGroupErr != nil {
+			return errors.New("Error serializing 'mainGroup' field " + _mainGroupErr.Error())
+		}
 
 		// Simple Field (middleGroup)
 		middleGroup := uint8(m.middleGroup)
-		io.WriteUint8(3, (middleGroup))
+		_middleGroupErr := io.WriteUint8(3, (middleGroup))
+		if _middleGroupErr != nil {
+			return errors.New("Error serializing 'middleGroup' field " + _middleGroupErr.Error())
+		}
 
 		// Simple Field (subGroup)
 		subGroup := uint8(m.subGroup)
-		io.WriteUint8(8, (subGroup))
+		_subGroupErr := io.WriteUint8(8, (subGroup))
+		if _subGroupErr != nil {
+			return errors.New("Error serializing 'subGroup' field " + _subGroupErr.Error())
+		}
 
+		return nil
 	}
-	KNXGroupAddressSerialize(io, m.KNXGroupAddress, CastIKNXGroupAddress(m), ser)
+	return KNXGroupAddressSerialize(io, m.KNXGroupAddress, CastIKNXGroupAddress(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go
index 265bbca..17fdfeb 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXGroupAddressFreeLevel.go
@@ -32,7 +32,7 @@ type KNXGroupAddressFreeLevel struct {
 // The corresponding interface
 type IKNXGroupAddressFreeLevel interface {
 	IKNXGroupAddress
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KNXGroupAddressFreeLevelParse(io *spi.ReadBuffer) (KNXGroupAddressInitializ
 	return NewKNXGroupAddressFreeLevel(subGroup), nil
 }
 
-func (m KNXGroupAddressFreeLevel) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KNXGroupAddressFreeLevel) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (subGroup)
 		subGroup := uint16(m.subGroup)
-		io.WriteUint16(16, (subGroup))
+		_subGroupErr := io.WriteUint16(16, (subGroup))
+		if _subGroupErr != nil {
+			return errors.New("Error serializing 'subGroup' field " + _subGroupErr.Error())
+		}
 
+		return nil
 	}
-	KNXGroupAddressSerialize(io, m.KNXGroupAddress, CastIKNXGroupAddress(m), ser)
+	return KNXGroupAddressSerialize(io, m.KNXGroupAddress, CastIKNXGroupAddress(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go
index 48417da..94e0e5b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KNXNetIPMessage.go
@@ -35,7 +35,7 @@ type KNXNetIPMessage struct {
 type IKNXNetIPMessage interface {
 	spi.Message
 	MsgType() uint16
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type KNXNetIPMessageInitializer interface {
@@ -164,24 +164,40 @@ func KNXNetIPMessageParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func KNXNetIPMessageSerialize(io spi.WriteBuffer, m KNXNetIPMessage, i IKNXNetIPMessage, childSerialize func()) {
+func KNXNetIPMessageSerialize(io spi.WriteBuffer, m KNXNetIPMessage, i IKNXNetIPMessage, childSerialize func() error) error {
 
 	// Implicit Field (headerLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	headerLength := uint8(uint8(6))
-	io.WriteUint8(8, (headerLength))
+	_headerLengthErr := io.WriteUint8(8, (headerLength))
+	if _headerLengthErr != nil {
+		return errors.New("Error serializing 'headerLength' field " + _headerLengthErr.Error())
+	}
 
 	// Const Field (protocolVersion)
-	io.WriteUint8(8, 0x10)
+	_protocolVersionErr := io.WriteUint8(8, 0x10)
+	if _protocolVersionErr != nil {
+		return errors.New("Error serializing 'protocolVersion' field " + _protocolVersionErr.Error())
+	}
 
 	// Discriminator Field (msgType) (Used as input to a switch field)
 	msgType := uint16(i.MsgType())
-	io.WriteUint16(16, (msgType))
+	_msgTypeErr := io.WriteUint16(16, (msgType))
+	if _msgTypeErr != nil {
+		return errors.New("Error serializing 'msgType' field " + _msgTypeErr.Error())
+	}
 
 	// Implicit Field (totalLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	totalLength := uint16(uint16(m.LengthInBytes()))
-	io.WriteUint16(16, (totalLength))
+	_totalLengthErr := io.WriteUint16(16, (totalLength))
+	if _totalLengthErr != nil {
+		return errors.New("Error serializing 'totalLength' field " + _totalLengthErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
index addd4d9..ef0c310 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxLayer.go
@@ -24,7 +24,7 @@ type KnxLayer uint8
 
 type IKnxLayer interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -56,6 +56,7 @@ func KnxLayerParse(io *spi.ReadBuffer) (KnxLayer, error) {
 	return 0, nil
 }
 
-func (e KnxLayer) Serialize(io spi.WriteBuffer) {
+func (e KnxLayer) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
index ddef9ce..fd8fd77 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpCore.go
@@ -32,7 +32,7 @@ type KnxNetIpCore struct {
 // The corresponding interface
 type IKnxNetIpCore interface {
 	IServiceId
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KnxNetIpCoreParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
 	return NewKnxNetIpCore(version), nil
 }
 
-func (m KnxNetIpCore) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KnxNetIpCore) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (version)
 		version := uint8(m.version)
-		io.WriteUint8(8, (version))
+		_versionErr := io.WriteUint8(8, (version))
+		if _versionErr != nil {
+			return errors.New("Error serializing 'version' field " + _versionErr.Error())
+		}
 
+		return nil
 	}
-	ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
+	return ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
index 86687c2..8e1bc7b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpDeviceManagement.go
@@ -32,7 +32,7 @@ type KnxNetIpDeviceManagement struct {
 // The corresponding interface
 type IKnxNetIpDeviceManagement interface {
 	IServiceId
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KnxNetIpDeviceManagementParse(io *spi.ReadBuffer) (ServiceIdInitializer, er
 	return NewKnxNetIpDeviceManagement(version), nil
 }
 
-func (m KnxNetIpDeviceManagement) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KnxNetIpDeviceManagement) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (version)
 		version := uint8(m.version)
-		io.WriteUint8(8, (version))
+		_versionErr := io.WriteUint8(8, (version))
+		if _versionErr != nil {
+			return errors.New("Error serializing 'version' field " + _versionErr.Error())
+		}
 
+		return nil
 	}
-	ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
+	return ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
index c729b2a..0bbeab6 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetIpTunneling.go
@@ -32,7 +32,7 @@ type KnxNetIpTunneling struct {
 // The corresponding interface
 type IKnxNetIpTunneling interface {
 	IServiceId
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KnxNetIpTunnelingParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
 	return NewKnxNetIpTunneling(version), nil
 }
 
-func (m KnxNetIpTunneling) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KnxNetIpTunneling) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (version)
 		version := uint8(m.version)
-		io.WriteUint8(8, (version))
+		_versionErr := io.WriteUint8(8, (version))
+		if _versionErr != nil {
+			return errors.New("Error serializing 'version' field " + _versionErr.Error())
+		}
 
+		return nil
 	}
-	ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
+	return ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
index c7af8ae..7e7872b 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetObjectServer.go
@@ -32,7 +32,7 @@ type KnxNetObjectServer struct {
 // The corresponding interface
 type IKnxNetObjectServer interface {
 	IServiceId
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KnxNetObjectServerParse(io *spi.ReadBuffer) (ServiceIdInitializer, error) {
 	return NewKnxNetObjectServer(version), nil
 }
 
-func (m KnxNetObjectServer) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KnxNetObjectServer) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (version)
 		version := uint8(m.version)
-		io.WriteUint8(8, (version))
+		_versionErr := io.WriteUint8(8, (version))
+		if _versionErr != nil {
+			return errors.New("Error serializing 'version' field " + _versionErr.Error())
+		}
 
+		return nil
 	}
-	ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
+	return ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
index 21bdea8..0929ef9 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteConfigurationAndDiagnosis.go
@@ -32,7 +32,7 @@ type KnxNetRemoteConfigurationAndDiagnosis struct {
 // The corresponding interface
 type IKnxNetRemoteConfigurationAndDiagnosis interface {
 	IServiceId
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KnxNetRemoteConfigurationAndDiagnosisParse(io *spi.ReadBuffer) (ServiceIdIn
 	return NewKnxNetRemoteConfigurationAndDiagnosis(version), nil
 }
 
-func (m KnxNetRemoteConfigurationAndDiagnosis) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KnxNetRemoteConfigurationAndDiagnosis) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (version)
 		version := uint8(m.version)
-		io.WriteUint8(8, (version))
+		_versionErr := io.WriteUint8(8, (version))
+		if _versionErr != nil {
+			return errors.New("Error serializing 'version' field " + _versionErr.Error())
+		}
 
+		return nil
 	}
-	ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
+	return ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
index 8ee20c1..9b97131 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/KnxNetRemoteLogging.go
@@ -32,7 +32,7 @@ type KnxNetRemoteLogging struct {
 // The corresponding interface
 type IKnxNetRemoteLogging interface {
 	IServiceId
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -93,13 +93,17 @@ func KnxNetRemoteLoggingParse(io *spi.ReadBuffer) (ServiceIdInitializer, error)
 	return NewKnxNetRemoteLogging(version), nil
 }
 
-func (m KnxNetRemoteLogging) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m KnxNetRemoteLogging) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (version)
 		version := uint8(m.version)
-		io.WriteUint8(8, (version))
+		_versionErr := io.WriteUint8(8, (version))
+		if _versionErr != nil {
+			return errors.New("Error serializing 'version' field " + _versionErr.Error())
+		}
 
+		return nil
 	}
-	ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
+	return ServiceIdSerialize(io, m.ServiceId, CastIServiceId(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
index f0e8b65..ee80810 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/MACAddress.go
@@ -31,7 +31,7 @@ type MACAddress struct {
 // The corresponding interface
 type IMACAddress interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewMACAddress(addr []int8) spi.Message {
@@ -91,13 +91,17 @@ func MACAddressParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewMACAddress(addr), nil
 }
 
-func (m MACAddress) Serialize(io spi.WriteBuffer) {
+func (m MACAddress) Serialize(io spi.WriteBuffer) error {
 
 	// Array Field (addr)
 	if m.addr != nil {
 		for _, _element := range m.addr {
-			io.WriteInt8(8, _element)
+			_elementErr := io.WriteInt8(8, _element)
+			if _elementErr != nil {
+				return errors.New("Error serializing 'addr' field " + _elementErr.Error())
+			}
 		}
 	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
index 9f5ce74..f3aeb48 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ProjectInstallationIdentifier.go
@@ -32,7 +32,7 @@ type ProjectInstallationIdentifier struct {
 // The corresponding interface
 type IProjectInstallationIdentifier interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewProjectInstallationIdentifier(projectNumber uint8, installationNumber uint8) spi.Message {
@@ -93,14 +93,21 @@ func ProjectInstallationIdentifierParse(io *spi.ReadBuffer) (spi.Message, error)
 	return NewProjectInstallationIdentifier(projectNumber, installationNumber), nil
 }
 
-func (m ProjectInstallationIdentifier) Serialize(io spi.WriteBuffer) {
+func (m ProjectInstallationIdentifier) Serialize(io spi.WriteBuffer) error {
 
 	// Simple Field (projectNumber)
 	projectNumber := uint8(m.projectNumber)
-	io.WriteUint8(8, (projectNumber))
+	_projectNumberErr := io.WriteUint8(8, (projectNumber))
+	if _projectNumberErr != nil {
+		return errors.New("Error serializing 'projectNumber' field " + _projectNumberErr.Error())
+	}
 
 	// Simple Field (installationNumber)
 	installationNumber := uint8(m.installationNumber)
-	io.WriteUint8(8, (installationNumber))
+	_installationNumberErr := io.WriteUint8(8, (installationNumber))
+	if _installationNumberErr != nil {
+		return errors.New("Error serializing 'installationNumber' field " + _installationNumberErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
index 419862a..3dc0265 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RelativeTimestamp.go
@@ -31,7 +31,7 @@ type RelativeTimestamp struct {
 // The corresponding interface
 type IRelativeTimestamp interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewRelativeTimestamp(timestamp uint16) spi.Message {
@@ -83,10 +83,14 @@ func RelativeTimestampParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewRelativeTimestamp(timestamp), nil
 }
 
-func (m RelativeTimestamp) Serialize(io spi.WriteBuffer) {
+func (m RelativeTimestamp) Serialize(io spi.WriteBuffer) error {
 
 	// Simple Field (timestamp)
 	timestamp := uint16(m.timestamp)
-	io.WriteUint16(16, (timestamp))
+	_timestampErr := io.WriteUint16(16, (timestamp))
+	if _timestampErr != nil {
+		return errors.New("Error serializing 'timestamp' field " + _timestampErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
index 63fe800..bd2c505 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/RoutingIndication.go
@@ -30,7 +30,7 @@ type RoutingIndication struct {
 // The corresponding interface
 type IRoutingIndication interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -82,9 +82,10 @@ func RoutingIndicationParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
 	return NewRoutingIndication(), nil
 }
 
-func (m RoutingIndication) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m RoutingIndication) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
index 85d0bec..35360b1 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchRequest.go
@@ -33,7 +33,7 @@ type SearchRequest struct {
 // The corresponding interface
 type ISearchRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func SearchRequestParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error)
 	return NewSearchRequest(hpaiIDiscoveryEndpoint), nil
 }
 
-func (m SearchRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m SearchRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (hpaiIDiscoveryEndpoint)
 		hpaiIDiscoveryEndpoint := CastIHPAIDiscoveryEndpoint(m.hpaiIDiscoveryEndpoint)
-		hpaiIDiscoveryEndpoint.Serialize(io)
+		_hpaiIDiscoveryEndpointErr := hpaiIDiscoveryEndpoint.Serialize(io)
+		if _hpaiIDiscoveryEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiIDiscoveryEndpoint' field " + _hpaiIDiscoveryEndpointErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
index 8ca5ae6..a9b0997 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/SearchResponse.go
@@ -35,7 +35,7 @@ type SearchResponse struct {
 // The corresponding interface
 type ISearchResponse interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -129,21 +129,31 @@ func SearchResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, error)
 	return NewSearchResponse(hpaiControlEndpoint, dibDeviceInfo, dibSuppSvcFamilies), nil
 }
 
-func (m SearchResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m SearchResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (hpaiControlEndpoint)
 		hpaiControlEndpoint := CastIHPAIControlEndpoint(m.hpaiControlEndpoint)
-		hpaiControlEndpoint.Serialize(io)
+		_hpaiControlEndpointErr := hpaiControlEndpoint.Serialize(io)
+		if _hpaiControlEndpointErr != nil {
+			return errors.New("Error serializing 'hpaiControlEndpoint' field " + _hpaiControlEndpointErr.Error())
+		}
 
 		// Simple Field (dibDeviceInfo)
 		dibDeviceInfo := CastIDIBDeviceInfo(m.dibDeviceInfo)
-		dibDeviceInfo.Serialize(io)
+		_dibDeviceInfoErr := dibDeviceInfo.Serialize(io)
+		if _dibDeviceInfoErr != nil {
+			return errors.New("Error serializing 'dibDeviceInfo' field " + _dibDeviceInfoErr.Error())
+		}
 
 		// Simple Field (dibSuppSvcFamilies)
 		dibSuppSvcFamilies := CastIDIBSuppSvcFamilies(m.dibSuppSvcFamilies)
-		dibSuppSvcFamilies.Serialize(io)
+		_dibSuppSvcFamiliesErr := dibSuppSvcFamilies.Serialize(io)
+		if _dibSuppSvcFamiliesErr != nil {
+			return errors.New("Error serializing 'dibSuppSvcFamilies' field " + _dibSuppSvcFamiliesErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
index 5730045..31b6bc3 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/ServiceId.go
@@ -31,7 +31,7 @@ type ServiceId struct {
 type IServiceId interface {
 	spi.Message
 	ServiceType() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type ServiceIdInitializer interface {
@@ -110,13 +110,20 @@ func ServiceIdParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func ServiceIdSerialize(io spi.WriteBuffer, m ServiceId, i IServiceId, childSerialize func()) {
+func ServiceIdSerialize(io spi.WriteBuffer, m ServiceId, i IServiceId, childSerialize func() error) error {
 
 	// Discriminator Field (serviceType) (Used as input to a switch field)
 	serviceType := uint8(i.ServiceType())
-	io.WriteUint8(8, (serviceType))
+	_serviceTypeErr := io.WriteUint8(8, (serviceType))
+	if _serviceTypeErr != nil {
+		return errors.New("Error serializing 'serviceType' field " + _serviceTypeErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
index adfa770..a4f557a 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/Status.go
@@ -24,7 +24,7 @@ type Status uint8
 
 type IStatus interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -65,6 +65,7 @@ func StatusParse(io *spi.ReadBuffer) (Status, error) {
 	return 0, nil
 }
 
-func (e Status) Serialize(io spi.WriteBuffer) {
+func (e Status) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go
index 82aeb61..cf0750a 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TPCI.go
@@ -24,7 +24,7 @@ type TPCI uint8
 
 type ITPCI interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -57,6 +57,7 @@ func TPCIParse(io *spi.ReadBuffer) (TPCI, error) {
 	return 0, nil
 }
 
-func (e TPCI) Serialize(io spi.WriteBuffer) {
+func (e TPCI) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
index addb627..3bd174f 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequest.go
@@ -34,7 +34,7 @@ type TunnelingRequest struct {
 // The corresponding interface
 type ITunnelingRequest interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -114,17 +114,24 @@ func TunnelingRequestParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMess
 	return NewTunnelingRequest(tunnelingRequestDataBlock, cemi), nil
 }
 
-func (m TunnelingRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m TunnelingRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (tunnelingRequestDataBlock)
 		tunnelingRequestDataBlock := CastITunnelingRequestDataBlock(m.tunnelingRequestDataBlock)
-		tunnelingRequestDataBlock.Serialize(io)
+		_tunnelingRequestDataBlockErr := tunnelingRequestDataBlock.Serialize(io)
+		if _tunnelingRequestDataBlockErr != nil {
+			return errors.New("Error serializing 'tunnelingRequestDataBlock' field " + _tunnelingRequestDataBlockErr.Error())
+		}
 
 		// Simple Field (cemi)
 		cemi := CastICEMI(m.cemi)
-		cemi.Serialize(io)
+		_cemiErr := cemi.Serialize(io)
+		if _cemiErr != nil {
+			return errors.New("Error serializing 'cemi' field " + _cemiErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
index 4e565aa..4312f0d 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingRequestDataBlock.go
@@ -33,7 +33,7 @@ type TunnelingRequestDataBlock struct {
 // The corresponding interface
 type ITunnelingRequestDataBlock interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewTunnelingRequestDataBlock(communicationChannelId uint8, sequenceCounter uint8) spi.Message {
@@ -120,21 +120,36 @@ func TunnelingRequestDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewTunnelingRequestDataBlock(communicationChannelId, sequenceCounter), nil
 }
 
-func (m TunnelingRequestDataBlock) Serialize(io spi.WriteBuffer) {
+func (m TunnelingRequestDataBlock) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Simple Field (communicationChannelId)
 	communicationChannelId := uint8(m.communicationChannelId)
-	io.WriteUint8(8, (communicationChannelId))
+	_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+	if _communicationChannelIdErr != nil {
+		return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+	}
 
 	// Simple Field (sequenceCounter)
 	sequenceCounter := uint8(m.sequenceCounter)
-	io.WriteUint8(8, (sequenceCounter))
+	_sequenceCounterErr := io.WriteUint8(8, (sequenceCounter))
+	if _sequenceCounterErr != nil {
+		return errors.New("Error serializing 'sequenceCounter' field " + _sequenceCounterErr.Error())
+	}
 
 	// Reserved Field (reserved)
-	io.WriteUint8(8, uint8(0x00))
+	{
+		_err := io.WriteUint8(8, uint8(0x00))
+		if _err != nil {
+			return errors.New("Error serializing 'reserved' field " + _err.Error())
+		}
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
index cebbc91..58cb43c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponse.go
@@ -33,7 +33,7 @@ type TunnelingResponse struct {
 // The corresponding interface
 type ITunnelingResponse interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -99,13 +99,17 @@ func TunnelingResponseParse(io *spi.ReadBuffer) (KNXNetIPMessageInitializer, err
 	return NewTunnelingResponse(tunnelingResponseDataBlock), nil
 }
 
-func (m TunnelingResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m TunnelingResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (tunnelingResponseDataBlock)
 		tunnelingResponseDataBlock := CastITunnelingResponseDataBlock(m.tunnelingResponseDataBlock)
-		tunnelingResponseDataBlock.Serialize(io)
+		_tunnelingResponseDataBlockErr := tunnelingResponseDataBlock.Serialize(io)
+		if _tunnelingResponseDataBlockErr != nil {
+			return errors.New("Error serializing 'tunnelingResponseDataBlock' field " + _tunnelingResponseDataBlockErr.Error())
+		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
index f101b99..0a6e6ef 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/TunnelingResponseDataBlock.go
@@ -33,7 +33,7 @@ type TunnelingResponseDataBlock struct {
 // The corresponding interface
 type ITunnelingResponseDataBlock interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewTunnelingResponseDataBlock(communicationChannelId uint8, sequenceCounter uint8, status IStatus) spi.Message {
@@ -112,22 +112,35 @@ func TunnelingResponseDataBlockParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewTunnelingResponseDataBlock(communicationChannelId, sequenceCounter, status), nil
 }
 
-func (m TunnelingResponseDataBlock) Serialize(io spi.WriteBuffer) {
+func (m TunnelingResponseDataBlock) Serialize(io spi.WriteBuffer) error {
 
 	// Implicit Field (structureLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 	structureLength := uint8(uint8(m.LengthInBytes()))
-	io.WriteUint8(8, (structureLength))
+	_structureLengthErr := io.WriteUint8(8, (structureLength))
+	if _structureLengthErr != nil {
+		return errors.New("Error serializing 'structureLength' field " + _structureLengthErr.Error())
+	}
 
 	// Simple Field (communicationChannelId)
 	communicationChannelId := uint8(m.communicationChannelId)
-	io.WriteUint8(8, (communicationChannelId))
+	_communicationChannelIdErr := io.WriteUint8(8, (communicationChannelId))
+	if _communicationChannelIdErr != nil {
+		return errors.New("Error serializing 'communicationChannelId' field " + _communicationChannelIdErr.Error())
+	}
 
 	// Simple Field (sequenceCounter)
 	sequenceCounter := uint8(m.sequenceCounter)
-	io.WriteUint8(8, (sequenceCounter))
+	_sequenceCounterErr := io.WriteUint8(8, (sequenceCounter))
+	if _sequenceCounterErr != nil {
+		return errors.New("Error serializing 'sequenceCounter' field " + _sequenceCounterErr.Error())
+	}
 
 	// Enum field (status)
 	status := CastStatus(m.status)
-	status.Serialize(io)
+	_statusErr := status.Serialize(io)
+	if _statusErr != nil {
+		return errors.New("Error serializing 'status' field " + _statusErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
index 8555ca5..429b56c 100644
--- a/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
+++ b/sandbox/plc4go/internal/plc4go/knxnetip/readwrite/model/UnknownMessage.go
@@ -32,7 +32,7 @@ type UnknownMessage struct {
 // The corresponding interface
 type IUnknownMessage interface {
 	IKNXNetIPMessage
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -101,16 +101,20 @@ func UnknownMessageParse(io *spi.ReadBuffer, totalLength uint16) (KNXNetIPMessag
 	return NewUnknownMessage(unknownData), nil
 }
 
-func (m UnknownMessage) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m UnknownMessage) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Array Field (unknownData)
 		if m.unknownData != nil {
 			for _, _element := range m.unknownData {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'unknownData' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
+	return KNXNetIPMessageSerialize(io, m.KNXNetIPMessage, CastIKNXNetIPMessage(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
index 0889afc..2f50284 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusConstants.go
@@ -34,7 +34,7 @@ type ModbusConstants struct {
 // The corresponding interface
 type IModbusConstants interface {
 	spi.Message
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 func NewModbusConstants() spi.Message {
@@ -89,9 +89,13 @@ func ModbusConstantsParse(io *spi.ReadBuffer) (spi.Message, error) {
 	return NewModbusConstants(), nil
 }
 
-func (m ModbusConstants) Serialize(io spi.WriteBuffer) {
+func (m ModbusConstants) Serialize(io spi.WriteBuffer) error {
 
 	// Const Field (modbusTcpDefaultPort)
-	io.WriteUint16(16, 502)
+	_modbusTcpDefaultPortErr := io.WriteUint16(16, 502)
+	if _modbusTcpDefaultPortErr != nil {
+		return errors.New("Error serializing 'modbusTcpDefaultPort' field " + _modbusTcpDefaultPortErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
index b66a4de..8b06fbf 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusDataType.go
@@ -25,7 +25,7 @@ type ModbusDataType uint8
 type IModbusDataType interface {
 	spi.Message
 	DataTypeSize() uint8
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 const (
@@ -203,6 +203,7 @@ func ModbusDataTypeParse(io *spi.ReadBuffer) (ModbusDataType, error) {
 	return 0, nil
 }
 
-func (e ModbusDataType) Serialize(io spi.WriteBuffer) {
+func (e ModbusDataType) Serialize(io spi.WriteBuffer) error {
 	// TODO: Implement ...
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
index 396f0b7..3fdad11 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDU.go
@@ -33,7 +33,7 @@ type IModbusPDU interface {
 	ErrorFlag() bool
 	FunctionFlag() uint8
 	Response() bool
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 type ModbusPDUInitializer interface {
@@ -189,17 +189,27 @@ func ModbusPDUParse(io *spi.ReadBuffer, response bool) (spi.Message, error) {
 	return initializer.initialize(), nil
 }
 
-func ModbusPDUSerialize(io spi.WriteBuffer, m ModbusPDU, i IModbusPDU, childSerialize func()) {
+func ModbusPDUSerialize(io spi.WriteBuffer, m ModbusPDU, i IModbusPDU, childSerialize func() error) error {
 
 	// Discriminator Field (errorFlag) (Used as input to a switch field)
 	errorFlag := bool(i.ErrorFlag())
-	io.WriteBit((bool)(errorFlag))
+	_errorFlagErr := io.WriteBit((bool)(errorFlag))
+	if _errorFlagErr != nil {
+		return errors.New("Error serializing 'errorFlag' field " + _errorFlagErr.Error())
+	}
 
 	// Discriminator Field (functionFlag) (Used as input to a switch field)
 	functionFlag := uint8(i.FunctionFlag())
-	io.WriteUint8(7, (functionFlag))
+	_functionFlagErr := io.WriteUint8(7, (functionFlag))
+	if _functionFlagErr != nil {
+		return errors.New("Error serializing 'functionFlag' field " + _functionFlagErr.Error())
+	}
 
 	// Switch field (Depending on the discriminator values, passes the serialization to a sub-type)
-	childSerialize()
+	_typeSwitchErr := childSerialize()
+	if _typeSwitchErr != nil {
+		return errors.New("Error serializing sub-type field " + _typeSwitchErr.Error())
+	}
 
+	return nil
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
index 253f2af..41a9112 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUDiagnosticRequest.go
@@ -33,7 +33,7 @@ type ModbusPDUDiagnosticRequest struct {
 // The corresponding interface
 type IModbusPDUDiagnosticRequest interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -111,17 +111,24 @@ func ModbusPDUDiagnosticRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer,
 	return NewModbusPDUDiagnosticRequest(status, eventCount), nil
 }
 
-func (m ModbusPDUDiagnosticRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUDiagnosticRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (status)
 		status := uint16(m.status)
-		io.WriteUint16(16, (status))
+		_statusErr := io.WriteUint16(16, (status))
+		if _statusErr != nil {
+			return errors.New("Error serializing 'status' field " + _statusErr.Error())
+		}
 
 		// Simple Field (eventCount)
 		eventCount := uint16(m.eventCount)
-		io.WriteUint16(16, (eventCount))
+		_eventCountErr := io.WriteUint16(16, (eventCount))
+		if _eventCountErr != nil {
+			return errors.New("Error serializing 'eventCount' field " + _eventCountErr.Error())
+		}
 
+		return nil
 	}
-	ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
+	return ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
index 2a3da8e..270ef7b 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUError.go
@@ -32,7 +32,7 @@ type ModbusPDUError struct {
 // The corresponding interface
 type IModbusPDUError interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -101,13 +101,17 @@ func ModbusPDUErrorParse(io *spi.ReadBuffer) (ModbusPDUInitializer, error) {
 	return NewModbusPDUError(exceptionCode), nil
 }
 
-func (m ModbusPDUError) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUError) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (exceptionCode)
 		exceptionCode := uint8(m.exceptionCode)
-		io.WriteUint8(8, (exceptionCode))
+		_exceptionCodeErr := io.WriteUint8(8, (exceptionCode))
+		if _exceptionCodeErr != nil {
+			return errors.New("Error serializing 'exceptionCode' field " + _exceptionCodeErr.Error())
+		}
 
+		return nil
 	}
-	ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
+	return ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
index c209035..5aadb25 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogRequest.go
@@ -30,7 +30,7 @@ type ModbusPDUGetComEventLogRequest struct {
 // The corresponding interface
 type IModbusPDUGetComEventLogRequest interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -90,9 +90,10 @@ func ModbusPDUGetComEventLogRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializ
 	return NewModbusPDUGetComEventLogRequest(), nil
 }
 
-func (m ModbusPDUGetComEventLogRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUGetComEventLogRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
+		return nil
 	}
-	ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
+	return ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
index 7ddfd6b..f79a04c 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUGetComEventLogResponse.go
@@ -35,7 +35,7 @@ type ModbusPDUGetComEventLogResponse struct {
 // The corresponding interface
 type IModbusPDUGetComEventLogResponse interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -148,32 +148,48 @@ func ModbusPDUGetComEventLogResponseParse(io *spi.ReadBuffer) (ModbusPDUInitiali
 	return NewModbusPDUGetComEventLogResponse(status, eventCount, messageCount, events), nil
 }
 
-func (m ModbusPDUGetComEventLogResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUGetComEventLogResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
 		byteCount := uint8(uint8(uint8(len(m.events))) + uint8(uint8(6)))
-		io.WriteUint8(8, (byteCount))
+		_byteCountErr := io.WriteUint8(8, (byteCount))
+		if _byteCountErr != nil {
+			return errors.New("Error serializing 'byteCount' field " + _byteCountErr.Error())
+		}
 
 		// Simple Field (status)
 		status := uint16(m.status)
-		io.WriteUint16(16, (status))
+		_statusErr := io.WriteUint16(16, (status))
+		if _statusErr != nil {
+			return errors.New("Error serializing 'status' field " + _statusErr.Error())
+		}
 
 		// Simple Field (eventCount)
 		eventCount := uint16(m.eventCount)
-		io.WriteUint16(16, (eventCount))
+		_eventCountErr := io.WriteUint16(16, (eventCount))
+		if _eventCountErr != nil {
+			return errors.New("Error serializing 'eventCount' field " + _eventCountErr.Error())
+		}
 
 		// Simple Field (messageCount)
 		messageCount := uint16(m.messageCount)
-		io.WriteUint16(16, (messageCount))
+		_messageCountErr := io.WriteUint16(16, (messageCount))
+		if _messageCountErr != nil {
+			return errors.New("Error serializing 'messageCount' field " + _messageCountErr.Error())
+		}
 
 		// Array Field (events)
 		if m.events != nil {
 			for _, _element := range m.events {
-				io.WriteInt8(8, _element)
+				_elementErr := io.WriteInt8(8, _element)
+				if _elementErr != nil {
+					return errors.New("Error serializing 'events' field " + _elementErr.Error())
+				}
 			}
 		}
 
+		return nil
 	}
-	ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
+	return ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
index e14e25e..60a5b4d 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterRequest.go
@@ -34,7 +34,7 @@ type ModbusPDUMaskWriteHoldingRegisterRequest struct {
 // The corresponding interface
 type IModbusPDUMaskWriteHoldingRegisterRequest interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -121,21 +121,31 @@ func ModbusPDUMaskWriteHoldingRegisterRequestParse(io *spi.ReadBuffer) (ModbusPD
 	return NewModbusPDUMaskWriteHoldingRegisterRequest(referenceAddress, andMask, orMask), nil
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUMaskWriteHoldingRegisterRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (referenceAddress)
 		referenceAddress := uint16(m.referenceAddress)
-		io.WriteUint16(16, (referenceAddress))
+		_referenceAddressErr := io.WriteUint16(16, (referenceAddress))
+		if _referenceAddressErr != nil {
+			return errors.New("Error serializing 'referenceAddress' field " + _referenceAddressErr.Error())
+		}
 
 		// Simple Field (andMask)
 		andMask := uint16(m.andMask)
-		io.WriteUint16(16, (andMask))
+		_andMaskErr := io.WriteUint16(16, (andMask))
+		if _andMaskErr != nil {
+			return errors.New("Error serializing 'andMask' field " + _andMaskErr.Error())
+		}
 
 		// Simple Field (orMask)
 		orMask := uint16(m.orMask)
-		io.WriteUint16(16, (orMask))
+		_orMaskErr := io.WriteUint16(16, (orMask))
+		if _orMaskErr != nil {
+			return errors.New("Error serializing 'orMask' field " + _orMaskErr.Error())
+		}
 
+		return nil
 	}
-	ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
+	return ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
index e8fc0fd..21f7044 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUMaskWriteHoldingRegisterResponse.go
@@ -34,7 +34,7 @@ type ModbusPDUMaskWriteHoldingRegisterResponse struct {
 // The corresponding interface
 type IModbusPDUMaskWriteHoldingRegisterResponse interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -121,21 +121,31 @@ func ModbusPDUMaskWriteHoldingRegisterResponseParse(io *spi.ReadBuffer) (ModbusP
 	return NewModbusPDUMaskWriteHoldingRegisterResponse(referenceAddress, andMask, orMask), nil
 }
 
-func (m ModbusPDUMaskWriteHoldingRegisterResponse) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUMaskWriteHoldingRegisterResponse) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (referenceAddress)
 		referenceAddress := uint16(m.referenceAddress)
-		io.WriteUint16(16, (referenceAddress))
+		_referenceAddressErr := io.WriteUint16(16, (referenceAddress))
+		if _referenceAddressErr != nil {
+			return errors.New("Error serializing 'referenceAddress' field " + _referenceAddressErr.Error())
+		}
 
 		// Simple Field (andMask)
 		andMask := uint16(m.andMask)
-		io.WriteUint16(16, (andMask))
+		_andMaskErr := io.WriteUint16(16, (andMask))
+		if _andMaskErr != nil {
+			return errors.New("Error serializing 'andMask' field " + _andMaskErr.Error())
+		}
 
 		// Simple Field (orMask)
 		orMask := uint16(m.orMask)
-		io.WriteUint16(16, (orMask))
+		_orMaskErr := io.WriteUint16(16, (orMask))
+		if _orMaskErr != nil {
+			return errors.New("Error serializing 'orMask' field " + _orMaskErr.Error())
+		}
 
+		return nil
 	}
-	ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
+	return ModbusPDUSerialize(io, m.ModbusPDU, CastIModbusPDU(m), ser)
 }
diff --git a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
index c9bc8f0..f8e4267 100644
--- a/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
+++ b/sandbox/plc4go/internal/plc4go/modbus/readwrite/model/ModbusPDUReadCoilsRequest.go
@@ -33,7 +33,7 @@ type ModbusPDUReadCoilsRequest struct {
 // The corresponding interface
 type IModbusPDUReadCoilsRequest interface {
 	IModbusPDU
-	Serialize(io spi.WriteBuffer)
+	Serialize(io spi.WriteBuffer) error
 }
 
 // Accessors for discriminator values.
@@ -111,17 +111,24 @@ func ModbusPDUReadCoilsRequestParse(io *spi.ReadBuffer) (ModbusPDUInitializer, e
 	return NewModbusPDUReadCoilsRequest(startingAddress, quantity), nil
 }
 
-func (m ModbusPDUReadCoilsRequest) Serialize(io spi.WriteBuffer) {
-	ser := func() {
+func (m ModbusPDUReadCoilsRequest) Serialize(io spi.WriteBuffer) error {
+	ser := func() error {
 
 		// Simple Field (startingAddress)
 		startingAddress := uint16(m.startingAddress)
-		io.WriteUint16(16, (startingAddress))
+		_startingAddressErr := io.WriteUint16(16, (startingAddress))
+		if _startingAddressErr != nil {
+			return errors.New("Error serializing 'startingAddress' field " + _startingAddressErr.Error())
+		}
 
 		// Simple Field (quantity)
 		quantity := uint16(m.quantity)
-		io.WriteUint16(16, (quantity))
+		_quantityErr := io.WriteUint16(16, (quantity))
+		if _quantityErr != nil {
+			return errors.New("Error serializing 'quantity' field " + _quantityErr.Error())
+		}
 
+		return nil
 	}
... 3931 lines suppressed ...