You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2024/09/04 10:37:01 UTC

(plc4x) branch develop updated (73aab1ea86 -> 83f7524468)

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

sruehl pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


    from 73aab1ea86 feat(plc4go/bacnetip): progressed implementation with a ton of bugfixes
     new 3e0171b7a3 feat(plc4go/bacnetip): add wait groups to ensure async shutdowns
     new 3604991e16 feat(plc4go/plx4xgenerator): add support for pointer types serializable
     new f98d0a7ddd feat(plc4go/plx4xgenerator): add support for empty elements
     new 2666383804 feat(plc4go/plx4xgenerator): add support for non pointer/non interface elements
     new 8c7f35caae refactor(plc4go/bacnetip): move bacgopes part into sub directory
     new 83f7524468 feat(plc4go/plx4xgenerator): add prefix support

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


Summary of changes:
 .../ads/model/AdsSubscriptionHandle_plc4xgen.go    |   12 +-
 ...ageCodec.go => ApplicationLayerMessageCodec.go} |  117 +-
 .../ApplicationLayerMessageCodec_plc4xgen.go       |   40 +-
 plc4go/internal/bacnetip/MessageCodec.go           |  179 --
 plc4go/internal/bacnetip/Subscriber_plc4xgen.go    |    4 +-
 plc4go/internal/bacnetip/{ => bacgopes}/apdu.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_APCI.go  |    5 +-
 .../bacnetip/{ => bacgopes}/apdu_APCISequence.go   |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_APDU.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_AbortPDU.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_AbortReason.go    |    2 +-
 .../{ => bacgopes}/apdu_AcknowledgeAlarmRequest.go |    2 +-
 .../{ => bacgopes}/apdu_AddListElementRequest.go   |    2 +-
 .../apdu_AtomicReadFileACKAccessMethodChoice.go    |    2 +-
 ...du_AtomicReadFileACKAccessMethodRecordAccess.go |    2 +-
 ...du_AtomicReadFileACKAccessMethodStreamAccess.go |    2 +-
 .../{ => bacgopes}/apdu_AtomicReadFileRequest.go   |    2 +-
 ...apdu_AtomicReadFileRequestAccessMethodChoice.go |    2 +-
 ...eadFileRequestAccessMethodChoiceRecordAccess.go |    2 +-
 ...eadFileRequestAccessMethodChoiceStreamAccess.go |    2 +-
 .../{ => bacgopes}/apdu_AtomicWriteFileACK.go      |    2 +-
 .../{ => bacgopes}/apdu_AtomicWriteFileRequest.go  |    2 +-
 ...pdu_AtomicWriteFileRequestAccessMethodChoice.go |    2 +-
 ...iteFileRequestAccessMethodChoiceRecordAccess.go |    2 +-
 ...iteFileRequestAccessMethodChoiceStreamAccess.go |    2 +-
 .../{ => bacgopes}/apdu_AuthenticateACK.go         |    2 +-
 .../{ => bacgopes}/apdu_AuthenticateRequest.go     |    2 +-
 .../apdu_COVNotificationParameters.go              |    2 +-
 .../{ => bacgopes}/apdu_ChangeListError.go         |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ComplexAckPDU.go  |    2 +-
 .../{ => bacgopes}/apdu_ComplexAckSequence.go      |    2 +-
 .../apdu_ConfirmedCOVNotificationRequest.go        |    2 +-
 .../apdu_ConfirmedEventNotificationRequest.go      |    2 +-
 .../apdu_ConfirmedPrivateTransferACK.go            |    2 +-
 .../apdu_ConfirmedPrivateTransferError.go          |    2 +-
 .../apdu_ConfirmedPrivateTransferRequest.go        |    2 +-
 .../{ => bacgopes}/apdu_ConfirmedRequestPDU.go     |    2 +-
 .../apdu_ConfirmedRequestSequence.go               |    2 +-
 .../{ => bacgopes}/apdu_ConfirmedServiceChoice.go  |    2 +-
 .../apdu_ConfirmedTextMessageRequest.go            |    2 +-
 ...apdu_ConfirmedTextMessageRequestMessageClass.go |    2 +-
 ...u_ConfirmedTextMessageRequestMessagePriority.go |    2 +-
 .../{ => bacgopes}/apdu_CreateObjectACK.go         |    2 +-
 .../{ => bacgopes}/apdu_CreateObjectError.go       |    2 +-
 .../{ => bacgopes}/apdu_CreateObjectRequest.go     |    2 +-
 .../apdu_CreateObjectRequestObjectSpecifier.go     |    2 +-
 .../{ => bacgopes}/apdu_DeleteObjectRequest.go     |    2 +-
 .../apdu_DeviceCommunicationControlRequest.go      |    2 +-
 ...viceCommunicationControlRequestEnableDisable.go |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_Error.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ErrorPDU.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ErrorSequence.go  |    2 +-
 .../apdu_EventNotificationParameters.go            |    2 +-
 .../{ => bacgopes}/apdu_GetAlarmSummaryACK.go      |    2 +-
 .../apdu_GetAlarmSummaryAlarmSummary.go            |    2 +-
 .../{ => bacgopes}/apdu_GetAlarmSummaryRequest.go  |    2 +-
 .../{ => bacgopes}/apdu_GetEnrollmentSummaryACK.go |    2 +-
 .../apdu_GetEnrollmentSummaryEnrollmentSummary.go  |    2 +-
 .../apdu_GetEnrollmentSummaryRequest.go            |    2 +-
 ...llmentSummaryRequestAcknowledgmentFilterType.go |    2 +-
 ...EnrollmentSummaryRequestEventStateFilterType.go |    2 +-
 ...etEnrollmentSummaryRequestPriorityFilterType.go |    2 +-
 .../{ => bacgopes}/apdu_GetEventInformationACK.go  |    2 +-
 .../apdu_GetEventInformationEventSummary.go        |    2 +-
 .../apdu_GetEventInformationRequest.go             |    2 +-
 .../{ => bacgopes}/apdu_GroupChannelValue.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_IAmRequest.go     |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_IHaveRequest.go   |    2 +-
 .../apdu_LifeSafetyOperationRequest.go             |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_Range.go |    2 +-
 .../{ => bacgopes}/apdu_RangeByPosition.go         |    2 +-
 .../{ => bacgopes}/apdu_RangeBySequenceNumber.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_RangeByTime.go    |    2 +-
 .../{ => bacgopes}/apdu_ReadAccessResult.go        |    2 +-
 .../{ => bacgopes}/apdu_ReadAccessResultElement.go |    2 +-
 .../apdu_ReadAccessResultElementChoice.go          |    2 +-
 .../{ => bacgopes}/apdu_ReadAccessSpecification.go |    2 +-
 .../{ => bacgopes}/apdu_ReadPropertyACK.go         |    2 +-
 .../{ => bacgopes}/apdu_ReadPropertyMultipleACK.go |    2 +-
 .../apdu_ReadPropertyMultipleRequest.go            |    2 +-
 .../{ => bacgopes}/apdu_ReadPropertyRequest.go     |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ReadRangeACK.go   |    2 +-
 .../{ => bacgopes}/apdu_ReadRangeRequest.go        |    2 +-
 .../apdu_ReinitializeDeviceRequest.go              |    2 +-
 ...alizeDeviceRequestReinitializedStateOfDevice.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_RejectPDU.go      |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_RejectReason.go   |    2 +-
 .../apdu_RemoveListElementRequest.go               |    2 +-
 .../{ => bacgopes}/apdu_RequestKeyRequest.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_SegmentAckPDU.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_SimpleAckPDU.go   |    2 +-
 .../apdu_SubscribeCOVPropertyRequest.go            |    2 +-
 .../{ => bacgopes}/apdu_SubscribeCOVRequest.go     |    2 +-
 .../apdu_TimeSynchronizationRequest.go             |    2 +-
 .../apdu_UTCTimeSynchronizationRequest.go          |    2 +-
 .../apdu_UnconfirmedCOVNotificationRequest.go      |    2 +-
 .../apdu_UnconfirmedEventNotificationRequest.go    |    2 +-
 .../apdu_UnconfirmedPrivateTransferRequest.go      |    2 +-
 .../{ => bacgopes}/apdu_UnconfirmedRequestPDU.go   |    2 +-
 .../apdu_UnconfirmedRequestPDUAtomicReadFileACK.go |    2 +-
 .../apdu_UnconfirmedRequestSequence.go             |    2 +-
 .../apdu_UnconfirmedServiceChoice.go               |    2 +-
 .../apdu_UnconfirmedTextMessageRequest.go          |    2 +-
 ...du_UnconfirmedTextMessageRequestMessageClass.go |    2 +-
 ...UnconfirmedTextMessageRequestMessagePriority.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTCloseError.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTCloseRequest.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTDataACK.go      |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTDataRequest.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTOpenACK.go      |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTOpenRequest.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoHasLimits.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoHasObject.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoHasRequest.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoIsRequest.go   |    2 +-
 .../apdu_WriteAccessSpecification.go               |    2 +-
 .../{ => bacgopes}/apdu_WriteGroupRequest.go       |    2 +-
 .../apdu_WritePropertyMultipleError.go             |    2 +-
 .../apdu_WritePropertyMultipleRequest.go           |    2 +-
 .../{ => bacgopes}/apdu_WritePropertyRequest.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu__APDU.go |    5 +-
 plc4go/internal/bacnetip/{ => bacgopes}/app.go     |    2 +-
 .../bacnetip/{ => bacgopes}/app_Application.go     |    2 +-
 .../{ => bacgopes}/app_ApplicationIOController.go  |   22 +-
 .../{ => bacgopes}/app_BIPForeignApplication.go    |    8 +-
 .../{ => bacgopes}/app_BIPNetworkApplication.go    |    2 +-
 .../{ => bacgopes}/app_BIPSimpleApplication.go     |   11 +-
 .../bacgopes/app_BIPSimpleApplication_plc4xgen.go  |  122 +
 .../bacnetip/{ => bacgopes}/app_DeviceInfo.go      |    4 +-
 .../bacnetip/{ => bacgopes}/app_DeviceInfoCache.go |    2 +-
 .../app_DeviceInfo_plc4xgen.go}                    |    8 +-
 .../internal/bacnetip/{ => bacgopes}/appservice.go |    2 +-
 .../appservice_ApplicationServiceAccessPoint.go    |    2 +-
 .../{ => bacgopes}/appservice_ClientSSM.go         |    2 +-
 .../bacnetip/{ => bacgopes}/appservice_SSM.go      |    2 +-
 .../{ => bacgopes}/appservice_ServerSSM.go         |    2 +-
 .../appservice_StateMachineAccessPoint.go          |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/bvll.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/bvll_BVLCI.go |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_BVLPDU.go         |    4 +-
 .../bvll_DeleteForeignDeviceTableEntry.go          |    2 +-
 .../bvll_DistributeBroadcastToNetwork.go           |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_FDTEntry.go       |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_ForwardedNPDU.go  |    2 +-
 .../{ => bacgopes}/bvll_OriginalBroadcastNPDU.go   |    2 +-
 .../{ => bacgopes}/bvll_OriginalUnicastNPDU.go     |    2 +-
 .../bvll_ReadBroadcastDistributionTable.go         |    2 +-
 .../bvll_ReadBroadcastDistributionTableAck.go      |    2 +-
 .../{ => bacgopes}/bvll_ReadForeignDeviceTable.go  |    2 +-
 .../bvll_ReadForeignDeviceTableAck.go              |    2 +-
 .../{ => bacgopes}/bvll_RegisterForeignDevice.go   |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_Result.go         |    2 +-
 .../bvll_WriteBroadcastDistributionTable.go        |    2 +-
 .../bacnetip/{ => bacgopes}/bvllservice.go         |    2 +-
 .../{ => bacgopes}/bvllservice_AnnexJCodec.go      |    2 +-
 .../bacnetip/{ => bacgopes}/bvllservice_BIPBBMD.go |    2 +-
 .../{ => bacgopes}/bvllservice_BIPForeign.go       |    2 +-
 .../bacnetip/{ => bacgopes}/bvllservice_BIPSAP.go  |    2 +-
 .../{ => bacgopes}/bvllservice_BIPSimple.go        |    2 +-
 .../{ => bacgopes}/bvllservice_UDPMultiplexer.go   |    2 +-
 .../{ => bacgopes}/bvllservice__MultiplexClient.go |    2 +-
 .../{ => bacgopes}/bvllservice__MultiplexServer.go |    2 +-
 .../internal/bacnetip/{ => bacgopes}/capability.go |    8 +-
 .../capability_Capability_plc4xgen.go}             |   18 +-
 plc4go/internal/bacnetip/{ => bacgopes}/comm.go    |    2 +-
 .../comm_ApplicationServiceElement.go              |    2 +-
 .../bacnetip/{ => bacgopes}/comm_Client.go         |    2 +-
 .../bacnetip/{ => bacgopes}/comm_Server.go         |    2 +-
 .../{ => bacgopes}/comm_ServiceAccessPoint.go      |    2 +-
 .../internal/bacnetip/{ => bacgopes}/comm__PCI.go  |    5 +-
 plc4go/internal/bacnetip/{ => bacgopes}/comp.go    |    2 +-
 .../bacnetip/{ => bacgopes}/constructeddata.go     |    2 +-
 .../bacnetip/{ => bacgopes}/constructors/apdu.go   |    8 +-
 .../bacnetip/bacgopes/constructors/bvll.go         |  125 +
 .../{ => bacgopes}/constructors/constructeddata.go |    6 +-
 .../bacnetip/{ => bacgopes}/constructors/npdu.go   |   61 +-
 .../bacnetip/{ => bacgopes}/constructors/pdu.go    |   16 +-
 .../{ => bacgopes}/constructors/primitivedata.go   |  114 +-
 plc4go/internal/bacnetip/{ => bacgopes}/core.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/debugging.go  |    2 +-
 .../device_WhoIsIAmServices_plc4xgen.go}           |   29 +-
 .../bacnetip/{ => bacgopes}/globals/settings.go    |    0
 plc4go/internal/bacnetip/{ => bacgopes}/iocb.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/iocb_IOCB.go  |   26 +-
 .../iocb_IOCB_plc4xgen.go}                         |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_IOController.go   |    4 +-
 .../iocb_IOController_plc4xgen.go}                 |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_IOQController.go  |   11 +-
 .../iocb_IOQController_plc4xgen.go}                |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_IOQueue.go        |   18 +-
 .../iocb_IOQueue_plc4xgen.go}                      |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_SieveQueue.go     |    4 +-
 .../iocb_SieveQueue_plc4xgen.go}                   |    4 +-
 .../{ => bacgopes}/local_device_LocalDevice.go     |    2 +-
 .../internal/bacnetip/{ => bacgopes}/netservice.go |    2 +-
 .../{ => bacgopes}/netservice_NetworkAdapter.go    |    2 +-
 .../netservice_NetworkServiceAccessPoint.go        |    2 +-
 .../netservice_NetworkServiceElement.go            |    2 +-
 .../{ => bacgopes}/netservice_RouterInfoCache.go   |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/npdu.go    |    2 +-
 .../npdu_DisconnectConnectionToNetwork.go          |    2 +-
 .../npdu_EstablishConnectionToNetwork.go           |    2 +-
 .../{ => bacgopes}/npdu_IAmRouterToNetwork.go      |    2 +-
 .../{ => bacgopes}/npdu_ICouldBeRouterToNetwork.go |    2 +-
 .../{ => bacgopes}/npdu_InitializeRoutingTable.go  |    2 +-
 .../npdu_InitializeRoutingTableAck.go              |    2 +-
 .../internal/bacnetip/{ => bacgopes}/npdu_NPCI.go  |    2 +-
 .../internal/bacnetip/{ => bacgopes}/npdu_NPDU.go  |    4 +-
 .../{ => bacgopes}/npdu_NetworkNumberIs.go         |    2 +-
 .../{ => bacgopes}/npdu_RejectMessageToNetwork.go  |    2 +-
 .../npdu_RouterAvailableToNetwork.go               |    2 +-
 .../{ => bacgopes}/npdu_RouterBusyToNetwork.go     |    2 +-
 .../{ => bacgopes}/npdu_RoutingTableEntry.go       |    2 +-
 .../{ => bacgopes}/npdu_WhatIsNetworkNumber.go     |    2 +-
 .../{ => bacgopes}/npdu_WhoIsRouterToNetwork.go    |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/object.go  |    2 +-
 .../bacnetip/{ => bacgopes}/object_Property.go     |    2 +-
 .../object_ReadWritePropertyServices.go            |    3 +-
 .../object_ReadWritePropertyServices_plc4xgen.go}  |   18 +-
 plc4go/internal/bacnetip/{ => bacgopes}/pdu.go     |    2 +-
 .../bacnetip/{ => bacgopes}/pdu_Address.go         |    6 +-
 plc4go/internal/bacnetip/{ => bacgopes}/pdu_PCI.go |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/pdu_PDU.go |    5 +-
 .../bacnetip/{ => bacgopes}/pdu_PDUData.go         |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata.go       |    2 +-
 .../{ => bacgopes}/primitivedata_ApplicationTag.go |    2 +-
 .../{ => bacgopes}/primitivedata_Atomic.go         |    2 +-
 .../{ => bacgopes}/primitivedata_BitString.go      |    2 +-
 .../{ => bacgopes}/primitivedata_Boolean.go        |    2 +-
 .../primitivedata_CharacterString.go               |    2 +-
 .../{ => bacgopes}/primitivedata_ClosingTag.go     |    2 +-
 .../{ => bacgopes}/primitivedata_CommonMath.go     |    2 +-
 .../{ => bacgopes}/primitivedata_ContextTag.go     |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Date.go  |    2 +-
 .../{ => bacgopes}/primitivedata_Double.go         |    2 +-
 .../{ => bacgopes}/primitivedata_Enumeration.go    |    2 +-
 .../{ => bacgopes}/primitivedata_Integer.go        |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Null.go  |    2 +-
 .../primitivedata_ObjectIdentifier.go              |    2 +-
 .../{ => bacgopes}/primitivedata_ObjectType.go     |    2 +-
 .../{ => bacgopes}/primitivedata_OctetString.go    |    2 +-
 .../{ => bacgopes}/primitivedata_OpeningTag.go     |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Real.go  |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Tag.go   |    2 +-
 .../{ => bacgopes}/primitivedata_TagList.go        |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Time.go  |    2 +-
 .../{ => bacgopes}/primitivedata_Unsigned.go       |    2 +-
 .../{ => bacgopes}/primitivedata_Unsigned16.go     |    2 +-
 .../{ => bacgopes}/primitivedata_Unsigned8.go      |    2 +-
 .../{ => bacgopes}/service/Subscription.go         |    6 +-
 .../bacnetip/{ => bacgopes}/service/cov.go         |    0
 .../service/cov_AccessDoorCriteria.go              |    0
 .../service/cov_AccessPointCriteria.go             |    0
 .../service/cov_ActiveCOVSubscription.go           |    4 +-
 .../{ => bacgopes}/service/cov_COVDetection.go     |    0
 .../service/cov_COVIncrementCriteria.go            |    0
 .../service/cov_ChangeOfValuesServices.go          |    4 +-
 .../service/cov_CredentialDataInputCriteria.go     |    0
 .../{ => bacgopes}/service/cov_GenericCriteria.go  |    0
 .../service/cov_LoadControlCriteria.go             |    0
 .../service/cov_PulseConverterCriteria.go          |    0
 .../{ => bacgopes}/service/cov_SubscriptionList.go |    0
 .../bacnetip/{ => bacgopes}/service/detect.go      |    0
 .../{ => bacgopes}/service_device_Device.go        |   13 +-
 .../internal/bacnetip/{ => bacgopes}/settings.go   |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/task.go    |    2 +-
 .../{ => bacgopes}/task_OneShotDeleteTask.go       |    2 +-
 .../{ => bacgopes}/task_OneShotFunctionTask.go     |    2 +-
 .../bacnetip/{ => bacgopes}/task_OneShotTask.go    |    2 +-
 .../{ => bacgopes}/task_RecurringFunctionTask.go   |    2 +-
 .../bacnetip/{ => bacgopes}/task_RecurringTask.go  |    2 +-
 .../internal/bacnetip/{ => bacgopes}/task_Task.go  |    2 +-
 .../bacnetip/{ => bacgopes}/task_TaskManager.go    |    2 +-
 .../bacnetip/{ => bacgopes}/tests/state_machine.go |  151 +-
 .../tests/state_machine_ClientStateMachine.go      |   18 +-
 .../tests/state_machine_ServerStateMachine.go      |   10 +-
 .../{ => bacgopes}/tests/state_machine_State.go    |   42 +-
 .../tests/state_machine_StateMachine.go            |   50 +-
 .../tests/state_machine_StateMachineGroup.go       |    0
 .../tests/state_machine_TrafficLog.go              |   12 +-
 .../test_max_apdu_length_accepted_test.go          |    0
 .../test_apdu/test_max_segments_accepted_test.go   |    0
 .../tests/test_base_types/test_name_value_test.go  |    0
 .../{ => bacgopes}/tests/test_bvll/helpers.go      |  238 +-
 .../tests/test_bvll/test_bbmd_test.go              |   51 +-
 .../tests/test_bvll/test_codec_test.go             |  199 +-
 .../tests/test_bvll/test_foreign_test.go           |   91 +-
 .../tests/test_bvll/test_simple_test.go            |   43 +-
 .../tests/test_comm/test_capability_test.go        |   17 +-
 .../tests/test_comm/test_client_test.go            |    0
 .../tests/test_comm/test_pci_test.go               |    0
 .../tests/test_comm/test_pdu_test.go               |    0
 .../tests/test_comm/test_pdudata_test.go           |    0
 .../tests/test_comm/test_server_test.go            |    0
 .../tests/test_constructed_data/helpers.go         |    2 +-
 .../test_constructed_data/test_any_atomic_test.go  |    0
 .../tests/test_constructed_data/test_any_test.go   |    0
 .../test_constructed_data/test_array_of_test.go    |    0
 .../test_constructed_data/test_choice_test.go      |    0
 .../test_constructed_data/test_sequence_test.go    |    2 +-
 .../tests_sequence_of_test.go                      |    0
 .../tests/test_iocb/test_clientcontroller_test.go  |    0
 .../tests/test_iocb/test_iocb_test.go              |    0
 .../tests/test_iocb/test_iochain_test.go           |    0
 .../tests/test_iocb/test_iocontroller_test.go      |    0
 .../tests/test_iocb/test_iogroup_test.go           |    0
 .../tests/test_iocb/test_ioqcontroller_test.go     |    0
 .../tests/test_iocb/test_ioqueue_test.go           |    0
 .../test_iocb/test_sieveclientcontroller_test.go   |    0
 .../tests/test_local/test_local_schedule_1_test.go |    0
 .../tests/test_local/test_local_schedule_2_test.go |    0
 .../{ => bacgopes}/tests/test_network/helpers.go   |  144 +-
 .../tests/test_network/test_net_1_test.go          |    5 +-
 .../tests/test_network/test_net_2_test.go          |    5 +-
 .../tests/test_network/test_net_3_test.go          |    5 +-
 .../tests/test_network/test_net_4_test.go          |    0
 .../tests/test_network/test_net_5_test.go          |    0
 .../tests/test_network/test_net_6_test.go          |    0
 .../tests/test_network/test_net_7_test.go          |    0
 .../{ => bacgopes}/tests/test_npdu/helpers.go      |   26 +-
 .../tests/test_npdu/test_codec_test.go             |  213 +-
 .../tests/test_pdu/test_address_test.go            |  351 ++-
 .../{ => bacgopes}/tests/test_pdu/test_pci_test.go |    0
 .../{ => bacgopes}/tests/test_pdu/test_pdu_test.go |    0
 .../tests/test_primitive_data/common_test.go       |    8 +-
 .../test_primitive_data/test_bit_string_test.go    |   29 +-
 .../tests/test_primitive_data/test_boolean_test.go |   13 +-
 .../test_character_string_test.go                  |   13 +-
 .../tests/test_primitive_data/test_date_test.go    |   23 +-
 .../tests/test_primitive_data/test_double_test.go  |   13 +-
 .../test_primitive_data/test_enumerated_test.go    |   19 +-
 .../tests/test_primitive_data/test_integer_test.go |   15 +-
 .../tests/test_primitive_data/test_null_test.go    |   13 +-
 .../test_object_identifier_test.go                 |   39 +-
 .../test_primitive_data/test_object_type_test.go   |   19 +-
 .../test_primitive_data/test_octet_string_test.go  |   13 +-
 .../tests/test_primitive_data/test_real_test.go    |   13 +-
 .../tests/test_primitive_data/test_tag_test.go     |   57 +-
 .../tests/test_primitive_data/test_time_test.go    |   47 +-
 .../test_primitive_data/test_unsigned_test.go      |   13 +-
 .../tests/test_segmentation/test_1_test.go         |   87 +-
 .../{ => bacgopes}/tests/test_service/helpers.go   |  127 +-
 .../tests/test_service/test_cov_av_test.go         |    0
 .../tests/test_service/test_cov_bv_test.go         |    0
 .../tests/test_service/test_cov_pc_test.go         |    0
 .../tests/test_service/test_cov_test.go            |    8 +-
 .../tests/test_service/test_device_2_test.go       |    0
 .../tests/test_service/test_device_test.go         |    0
 .../tests/test_service/test_file_test.go           |    0
 .../tests/test_service/test_object_test.go         |    0
 .../test_client_state_machine_test.go              |    9 +-
 .../test_server_state_machine_test.go              |    9 +-
 .../test_service_access_point_test.go              |   49 +-
 .../test_utilities/test_state_machine_test.go      |   65 +-
 .../tests/test_utilities/test_time_machine_test.go |   41 +-
 .../tests/test_vlan/test_ipnetwork_test.go         |  125 +-
 .../tests/test_vlan/test_network_test.go           |   95 +-
 .../bacnetip/{ => bacgopes}/tests/time_machine.go  |   33 +-
 .../{ => bacgopes}/tests/trapped_classes.go        |    0
 ...ped_classes_TrappedApplicationServiceElement.go |   36 +-
 .../tests/trapped_classes_TrappedClient.go         |   22 +-
 .../tests/trapped_classes_TrappedServer.go         |   22 +-
 .../trapped_classes_TrappedServerStateMachine.go   |    6 +-
 .../trapped_classes_TrappedServiceAccessPoint.go   |   34 +-
 .../tests/trapped_classes_TrappedState.go          |   12 +-
 .../tests/trapped_classes_TrappedStateMachine.go   |   18 +-
 .../tests/trapped_classes_Trapper.go               |   42 +-
 .../internal/bacnetip/{ => bacgopes}/tests/util.go |    6 +-
 plc4go/internal/bacnetip/{ => bacgopes}/udp.go     |    2 +-
 .../bacnetip/{ => bacgopes}/udp_UDPActor.go        |    4 +-
 .../udp_UDPActor_plc4xgen.go}                      |    4 +-
 .../bacnetip/{ => bacgopes}/udp_UDPDirector.go     |   17 +-
 plc4go/internal/bacnetip/{ => bacgopes}/vlan.go    |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPNetwork.go      |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPNode.go         |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPRouter.go       |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPRouterNode.go   |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_Network.go        |    2 +-
 .../internal/bacnetip/{ => bacgopes}/vlan_Node.go  |    4 +-
 .../bacnetip/{ => bacgopes}/vlan_TrafficLogger.go  |    2 +-
 plc4go/internal/bacnetip/constructors/bvll.go      |  126 -
 plc4go/internal/bacnetip/mock_APCI_test.go         | 1009 -------
 plc4go/internal/bacnetip/mock_APDU_test.go         | 1502 ----------
 plc4go/internal/bacnetip/mock_AnyContract_test.go  |  235 --
 .../bacnetip/mock_ApplicationRequirements_test.go  |   98 -
 .../mock_ApplicationServiceElementContract_test.go |  272 --
 ...k_ApplicationServiceElementRequirements_test.go |   98 -
 .../internal/bacnetip/mock_AtomicContract_test.go  |  234 --
 .../bacnetip/mock_AtomicRequirements_test.go       |   97 -
 .../bacnetip/mock_BIPSAPRequirements_test.go       |  491 ----
 plc4go/internal/bacnetip/mock_BVLCI_test.go        |  882 ------
 plc4go/internal/bacnetip/mock_BVLPDU_test.go       | 1500 ----------
 plc4go/internal/bacnetip/mock_BacNetPlcTag_test.go |  330 ---
 .../bacnetip/mock_BitStringExtension_test.go       |  188 --
 .../internal/bacnetip/mock_ClientContract_test.go  |  270 --
 .../bacnetip/mock_ClientRequirements_test.go       |   51 -
 plc4go/internal/bacnetip/mock_Client_test.go       |  270 --
 .../bacnetip/mock_ComparableAndOrdered_test.go     |   51 -
 plc4go/internal/bacnetip/mock_Copyable_test.go     |   98 -
 .../bacnetip/mock_EnumeratedContract_test.go       |  178 --
 .../bacnetip/mock_IOControllerRequirements_test.go |  237 --
 .../mock_IOQControllerRequirements_test.go         |  237 --
 plc4go/internal/bacnetip/mock_IPCI_test.go         |  632 -----
 plc4go/internal/bacnetip/mock_IsAnyAtomic_test.go  |   96 -
 plc4go/internal/bacnetip/mock_IsAtomic_test.go     |   96 -
 .../internal/bacnetip/mock_MessageBridge_test.go   |  745 -----
 plc4go/internal/bacnetip/mock_NPCI_test.go         | 1725 ------------
 plc4go/internal/bacnetip/mock_NPDU_test.go         | 2870 --------------------
 plc4go/internal/bacnetip/mock_NetworkNode_test.go  |  346 ---
 .../bacnetip/mock_NodeNetworkReference_test.go     |  130 -
 .../bacnetip/mock_ObjectTypeContract_test.go       |  211 --
 .../bacnetip/mock_OneShotTaskRequirements_test.go  |   96 -
 plc4go/internal/bacnetip/mock_PCI_test.go          |  790 ------
 plc4go/internal/bacnetip/mock_PDUContract_test.go  |   96 -
 plc4go/internal/bacnetip/mock_PDUData_test.go      |  499 ----
 plc4go/internal/bacnetip/mock_PDUOption_test.go    |   84 -
 plc4go/internal/bacnetip/mock_PDU_test.go          | 1285 ---------
 .../mock_RecurringTaskRequirements_test.go         |   96 -
 .../mock_SSMProcessingRequirements_test.go         |   96 -
 .../bacnetip/mock_SSMSAPRequirements_test.go       | 1063 --------
 .../mock_SequenceContractRequirement_test.go       |  131 -
 .../bacnetip/mock_SequenceContract_test.go         |   98 -
 .../internal/bacnetip/mock_ServerContract_test.go  |  315 ---
 .../bacnetip/mock_ServerRequirements_test.go       |   51 -
 plc4go/internal/bacnetip/mock_Server_test.go       |  315 ---
 .../mock_ServiceAccessPointContract_test.go        |  317 ---
 .../mock_ServiceAccessPointRequirements_test.go    |  272 --
 plc4go/internal/bacnetip/mock_Tag_test.go          |  555 ----
 plc4go/internal/bacnetip/mock_TaskManager_test.go  |  507 ----
 .../bacnetip/mock_TaskRequirements_test.go         |  303 ---
 .../internal/bacnetip/mock_TrafficLogger_test.go   |   84 -
 .../mock_WhoIsIAmServicesRequirements_test.go      |   98 -
 plc4go/internal/bacnetip/mock__APDU_test.go        | 1502 ----------
 plc4go/internal/bacnetip/mock__IOCB_test.go        |  522 ----
 .../internal/bacnetip/mock__IOController_test.go   |  237 --
 .../internal/bacnetip/mock__IOQController_test.go  |   97 -
 .../bacnetip/mock__PDUDataRequirements_test.go     |   98 -
 plc4go/internal/bacnetip/mock__PDU_test.go         |  364 ---
 .../bacnetip/mock__TaskRequirements_test.go        |  259 --
 plc4go/internal/bacnetip/mock_option_test.go       |   97 -
 .../tests/mock_ClientStateMachineContract_test.go  | 1266 ---------
 .../bacnetip/tests/mock_StateInterceptor_test.go   |  219 --
 .../tests/mock_StateMachineContract_test.go        | 1045 -------
 .../tests/mock_StateMachineRequirements_test.go    | 1092 --------
 .../bacnetip/tests/mock_StateMachine_test.go       | 1092 --------
 plc4go/internal/bacnetip/tests/mock_State_test.go  | 1350 ---------
 ...edApplicationServiceElementRequirements_test.go |  242 --
 .../tests/mock_TrappedClientContract_test.go       |  148 -
 .../tests/mock_TrappedServerContract_test.go       |  148 -
 ...k_TrappedServiceAccessPointRequirements_test.go |  242 --
 .../tests/mock_TrapperRequirements_test.go         |  219 --
 .../mock_SequenceEqualityRequirements_test.go      |  101 -
 .../mock_ApplicationNetworkRequirements_test.go    |  148 -
 ...ock_ApplicationStateMachineRequirements_test.go |  148 -
 .../mock_COVTestClientServicesRequirements_test.go |   51 -
 plc4go/internal/cbus/Connection_plc4xgen.go        |   12 +-
 plc4go/internal/cbus/MessageCodec_plc4xgen.go      |    8 +-
 plc4go/internal/knxnetip/Subscriber_plc4xgen.go    |    4 +-
 plc4go/internal/opcua/Configuration_plc4xgen.go    |    4 +-
 plc4go/internal/opcua/Connection_plc4xgen.go       |    8 +-
 plc4go/internal/opcua/SecureChannel_plc4xgen.go    |   24 +-
 plc4go/spi/default/defaultCodec_plc4xgen.go        |    8 +-
 plc4go/spi/default/defaultConnection_plc4xgen.go   |    8 +-
 .../defaultPlcConnectionCloseResult_plc4xgen.go    |    8 +-
 .../defaultPlcConnectionConnectResult_plc4xgen.go  |    4 +-
 .../interceptedPlcReadRequestResult_plc4xgen.go    |    8 +-
 .../interceptedPlcWriteRequestResult_plc4xgen.go   |    8 +-
 plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go  |    4 +-
 .../DefaultPlcBrowseRequestResult_plc4xgen.go      |    8 +-
 .../spi/model/DefaultPlcBrowseRequest_plc4xgen.go  |    4 +-
 .../model/DefaultPlcBrowseResponseItem_plc4xgen.go |    4 +-
 .../spi/model/DefaultPlcBrowseResponse_plc4xgen.go |    4 +-
 .../DefaultPlcConsumerRegistration_plc4xgen.go     |    4 +-
 .../model/DefaultPlcReadRequestResult_plc4xgen.go  |    8 +-
 .../spi/model/DefaultPlcReadResponse_plc4xgen.go   |    4 +-
 .../DefaultPlcSubscriptionEventItem_plc4xgen.go    |    8 +-
 ...DefaultPlcSubscriptionRequestResult_plc4xgen.go |    8 +-
 .../DefaultPlcSubscriptionRequest_plc4xgen.go      |    4 +-
 .../DefaultPlcSubscriptionResponseItem_plc4xgen.go |    4 +-
 .../DefaultPlcSubscriptionResponse_plc4xgen.go     |    4 +-
 ...aultPlcUnsubscriptionRequestBuilder_plc4xgen.go |    4 +-
 ...faultPlcUnsubscriptionRequestResult_plc4xgen.go |    8 +-
 .../DefaultPlcUnsubscriptionRequest_plc4xgen.go    |    4 +-
 .../model/DefaultPlcWriteRequestResult_plc4xgen.go |    8 +-
 .../spi/model/DefaultPlcWriteResponse_plc4xgen.go  |    4 +-
 plc4go/spi/model/ResponseItem_plc4xgen.go          |    4 +-
 plc4go/spi/pool/executor_plc4xgen.go               |    4 +-
 plc4go/spi/pool/future_plc4xgen.go                 |    4 +-
 plc4go/spi/pool/worker_plc4xgen.go                 |    4 +-
 .../requestTransactionManager_plc4xgen.go          |    8 +-
 plc4go/tools/plc4xgenerator/gen.go                 |   11 +-
 491 files changed, 2358 insertions(+), 35446 deletions(-)
 copy plc4go/internal/bacnetip/{MessageCodec.go => ApplicationLayerMessageCodec.go} (59%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_APCI.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_APCISequence.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_APDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AbortPDU.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AbortReason.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AcknowledgeAlarmRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AddListElementRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileACKAccessMethodChoice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileACKAccessMethodRecordAccess.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileACKAccessMethodStreamAccess.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileRequestAccessMethodChoice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicWriteFileACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicWriteFileRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicWriteFileRequestAccessMethodChoice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AuthenticateACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_AuthenticateRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_COVNotificationParameters.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ChangeListError.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ComplexAckPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ComplexAckSequence.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedCOVNotificationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedEventNotificationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedPrivateTransferACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedPrivateTransferError.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedPrivateTransferRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedRequestPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedRequestSequence.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedServiceChoice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedTextMessageRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedTextMessageRequestMessageClass.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ConfirmedTextMessageRequestMessagePriority.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_CreateObjectACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_CreateObjectError.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_CreateObjectRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_CreateObjectRequestObjectSpecifier.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_DeleteObjectRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_DeviceCommunicationControlRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_DeviceCommunicationControlRequestEnableDisable.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_Error.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ErrorPDU.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ErrorSequence.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_EventNotificationParameters.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetAlarmSummaryACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetAlarmSummaryAlarmSummary.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetAlarmSummaryRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEnrollmentSummaryACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEnrollmentSummaryEnrollmentSummary.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEnrollmentSummaryRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEventInformationACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEventInformationEventSummary.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GetEventInformationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_GroupChannelValue.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_IAmRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_IHaveRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_LifeSafetyOperationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_Range.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RangeByPosition.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RangeBySequenceNumber.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RangeByTime.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadAccessResult.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadAccessResultElement.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadAccessResultElementChoice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadAccessSpecification.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadPropertyACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadPropertyMultipleACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadPropertyMultipleRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadPropertyRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadRangeACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReadRangeRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReinitializeDeviceRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RejectPDU.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RejectReason.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RemoveListElementRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_RequestKeyRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_SegmentAckPDU.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_SimpleAckPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_SubscribeCOVPropertyRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_SubscribeCOVRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_TimeSynchronizationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UTCTimeSynchronizationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedCOVNotificationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedEventNotificationRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedPrivateTransferRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedRequestPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedRequestSequence.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedServiceChoice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedTextMessageRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedTextMessageRequestMessageClass.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_UnconfirmedTextMessageRequestMessagePriority.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_VTCloseError.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_VTCloseRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_VTDataACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_VTDataRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_VTOpenACK.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_VTOpenRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WhoHasLimits.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WhoHasObject.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WhoHasRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WhoIsRequest.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WriteAccessSpecification.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WriteGroupRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WritePropertyMultipleError.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WritePropertyMultipleRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu_WritePropertyRequest.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/apdu__APDU.go (96%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_Application.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_ApplicationIOController.go (90%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_BIPForeignApplication.go (95%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_BIPNetworkApplication.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_BIPSimpleApplication.go (93%)
 create mode 100644 plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication_plc4xgen.go
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_DeviceInfo.go (94%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/app_DeviceInfoCache.go (99%)
 rename plc4go/internal/bacnetip/{DeviceInfo_plc4xgen.go => bacgopes/app_DeviceInfo_plc4xgen.go} (94%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/appservice.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/appservice_ApplicationServiceAccessPoint.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/appservice_ClientSSM.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/appservice_SSM.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/appservice_ServerSSM.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/appservice_StateMachineAccessPoint.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_BVLCI.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_BVLPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_DeleteForeignDeviceTableEntry.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_DistributeBroadcastToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_FDTEntry.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_ForwardedNPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_OriginalBroadcastNPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_OriginalUnicastNPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_ReadBroadcastDistributionTable.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_ReadBroadcastDistributionTableAck.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_ReadForeignDeviceTable.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_ReadForeignDeviceTableAck.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_RegisterForeignDevice.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_Result.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvll_WriteBroadcastDistributionTable.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice_AnnexJCodec.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice_BIPBBMD.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice_BIPForeign.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice_BIPSAP.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice_BIPSimple.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice_UDPMultiplexer.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice__MultiplexClient.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/bvllservice__MultiplexServer.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/capability.go (94%)
 copy plc4go/internal/bacnetip/{IOQueue_plc4xgen.go => bacgopes/capability_Capability_plc4xgen.go} (74%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comm.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comm_ApplicationServiceElement.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comm_Client.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comm_Server.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comm_ServiceAccessPoint.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comm__PCI.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/comp.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/constructeddata.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/constructors/apdu.go (76%)
 create mode 100644 plc4go/internal/bacnetip/bacgopes/constructors/bvll.go
 rename plc4go/internal/bacnetip/{ => bacgopes}/constructors/constructeddata.go (86%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/constructors/npdu.go (50%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/constructors/pdu.go (68%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/constructors/primitivedata.go (52%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/core.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/debugging.go (98%)
 copy plc4go/internal/bacnetip/{UDPActor_plc4xgen.go => bacgopes/device_WhoIsIAmServices_plc4xgen.go} (63%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/globals/settings.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/iocb.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/iocb_IOCB.go (92%)
 rename plc4go/internal/bacnetip/{IOCB_plc4xgen.go => bacgopes/iocb_IOCB_plc4xgen.go} (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/iocb_IOController.go (97%)
 rename plc4go/internal/bacnetip/{IOController_plc4xgen.go => bacgopes/iocb_IOController_plc4xgen.go} (95%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/iocb_IOQController.go (97%)
 rename plc4go/internal/bacnetip/{IOQController_plc4xgen.go => bacgopes/iocb_IOQController_plc4xgen.go} (95%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/iocb_IOQueue.go (90%)
 copy plc4go/internal/bacnetip/{IOQueue_plc4xgen.go => bacgopes/iocb_IOQueue_plc4xgen.go} (94%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/iocb_SieveQueue.go (94%)
 rename plc4go/internal/bacnetip/{SieveQueue_plc4xgen.go => bacgopes/iocb_SieveQueue_plc4xgen.go} (95%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/local_device_LocalDevice.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/netservice.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/netservice_NetworkAdapter.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/netservice_NetworkServiceAccessPoint.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/netservice_NetworkServiceElement.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/netservice_RouterInfoCache.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_DisconnectConnectionToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_EstablishConnectionToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_IAmRouterToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_ICouldBeRouterToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_InitializeRoutingTable.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_InitializeRoutingTableAck.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_NPCI.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_NPDU.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_NetworkNumberIs.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_RejectMessageToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_RouterAvailableToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_RouterBusyToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_RoutingTableEntry.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_WhatIsNetworkNumber.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/npdu_WhoIsRouterToNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/object.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/object_Property.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/object_ReadWritePropertyServices.go (89%)
 rename plc4go/internal/bacnetip/{IOQueue_plc4xgen.go => bacgopes/object_ReadWritePropertyServices_plc4xgen.go} (73%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/pdu.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/pdu_Address.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/pdu_PCI.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/pdu_PDU.go (96%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/pdu_PDUData.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_ApplicationTag.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Atomic.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_BitString.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Boolean.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_CharacterString.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_ClosingTag.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_CommonMath.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_ContextTag.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Date.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Double.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Enumeration.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Integer.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Null.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_ObjectIdentifier.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_ObjectType.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_OctetString.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_OpeningTag.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Real.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Tag.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_TagList.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Time.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Unsigned.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Unsigned16.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/primitivedata_Unsigned8.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/Subscription.go (88%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_AccessDoorCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_AccessPointCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_ActiveCOVSubscription.go (91%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_COVDetection.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_COVIncrementCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_ChangeOfValuesServices.go (90%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_CredentialDataInputCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_GenericCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_LoadControlCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_PulseConverterCriteria.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/cov_SubscriptionList.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service/detect.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/service_device_Device.go (93%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/settings.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_OneShotDeleteTask.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_OneShotFunctionTask.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_OneShotTask.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_RecurringFunctionTask.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_RecurringTask.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_Task.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/task_TaskManager.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine.go (74%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine_ClientStateMachine.go (83%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine_ServerStateMachine.go (86%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine_State.go (91%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine_StateMachine.go (91%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine_StateMachineGroup.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/state_machine_TrafficLog.go (86%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_apdu/test_max_apdu_length_accepted_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_apdu/test_max_segments_accepted_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_base_types/test_name_value_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_bvll/helpers.go (72%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_bvll/test_bbmd_test.go (80%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_bvll/test_codec_test.go (59%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_bvll/test_foreign_test.go (69%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_bvll/test_simple_test.go (75%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_comm/test_capability_test.go (92%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_comm/test_client_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_comm/test_pci_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_comm/test_pdu_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_comm/test_pdudata_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_comm/test_server_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/helpers.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/test_any_atomic_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/test_any_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/test_array_of_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/test_choice_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/test_sequence_test.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_constructed_data/tests_sequence_of_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_clientcontroller_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_iocb_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_iochain_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_iocontroller_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_iogroup_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_ioqcontroller_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_ioqueue_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_iocb/test_sieveclientcontroller_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_local/test_local_schedule_1_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_local/test_local_schedule_2_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/helpers.go (74%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_1_test.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_2_test.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_3_test.go (98%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_4_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_5_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_6_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_network/test_net_7_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_npdu/helpers.go (78%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_npdu/test_codec_test.go (60%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_pdu/test_address_test.go (56%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_pdu/test_pci_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_pdu/test_pdu_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/common_test.go (84%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_bit_string_test.go (82%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_boolean_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_character_string_test.go (91%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_date_test.go (81%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_double_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_enumerated_test.go (88%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_integer_test.go (90%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_null_test.go (88%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_object_identifier_test.go (76%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_object_type_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_octet_string_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_real_test.go (90%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_tag_test.go (87%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_time_test.go (67%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_primitive_data/test_unsigned_test.go (91%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_segmentation/test_1_test.go (81%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/helpers.go (75%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_cov_av_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_cov_bv_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_cov_pc_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_cov_test.go (88%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_device_2_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_device_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_file_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_service/test_object_test.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_utilities/test_client_state_machine_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_utilities/test_server_state_machine_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_utilities/test_service_access_point_test.go (74%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_utilities/test_state_machine_test.go (91%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_utilities/test_time_machine_test.go (89%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_vlan/test_ipnetwork_test.go (72%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/test_vlan/test_network_test.go (72%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/time_machine.go (90%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes.go (100%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedApplicationServiceElement.go (78%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedClient.go (79%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedServer.go (79%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedServerStateMachine.go (86%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedServiceAccessPoint.go (75%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedState.go (84%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_TrappedStateMachine.go (80%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/trapped_classes_Trapper.go (75%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/tests/util.go (88%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/udp.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/udp_UDPActor.go (96%)
 rename plc4go/internal/bacnetip/{UDPActor_plc4xgen.go => bacgopes/udp_UDPActor_plc4xgen.go} (95%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/udp_UDPDirector.go (95%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_IPNetwork.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_IPNode.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_IPRouter.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_IPRouterNode.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_Network.go (99%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_Node.go (97%)
 rename plc4go/internal/bacnetip/{ => bacgopes}/vlan_TrafficLogger.go (98%)
 delete mode 100644 plc4go/internal/bacnetip/constructors/bvll.go
 delete mode 100644 plc4go/internal/bacnetip/mock_APCI_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_APDU_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_AnyContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ApplicationRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ApplicationServiceElementContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ApplicationServiceElementRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_AtomicContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_AtomicRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_BIPSAPRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_BVLCI_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_BVLPDU_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_BacNetPlcTag_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_BitStringExtension_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ClientContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ClientRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_Client_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ComparableAndOrdered_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_Copyable_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_EnumeratedContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_IOControllerRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_IOQControllerRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_IPCI_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_IsAnyAtomic_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_IsAtomic_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_MessageBridge_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_NPCI_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_NPDU_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_NetworkNode_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_NodeNetworkReference_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ObjectTypeContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_OneShotTaskRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_PCI_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_PDUContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_PDUData_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_PDUOption_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_PDU_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_RecurringTaskRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_SSMProcessingRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_SSMSAPRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_SequenceContractRequirement_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_SequenceContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ServerContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ServerRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_Server_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ServiceAccessPointContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_ServiceAccessPointRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_Tag_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_TaskManager_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_TaskRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_TrafficLogger_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_WhoIsIAmServicesRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__APDU_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__IOCB_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__IOController_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__IOQController_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__PDUDataRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__PDU_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock__TaskRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/mock_option_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_ClientStateMachineContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_StateInterceptor_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_StateMachineContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_StateMachineRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_StateMachine_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_State_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_TrappedApplicationServiceElementRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_TrappedClientContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_TrappedServerContract_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_TrappedServiceAccessPointRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/mock_TrapperRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/test_constructed_data/mock_SequenceEqualityRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/test_service/mock_ApplicationNetworkRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/test_service/mock_ApplicationStateMachineRequirements_test.go
 delete mode 100644 plc4go/internal/bacnetip/tests/test_service/mock_COVTestClientServicesRequirements_test.go


(plc4x) 05/06: refactor(plc4go/bacnetip): move bacgopes part into sub directory

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 8c7f35caae6253bec09efd0b47252969eeb2d859
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Sep 4 12:24:53 2024 +0200

    refactor(plc4go/bacnetip): move bacgopes part into sub directory
---
 ...ageCodec.go => ApplicationLayerMessageCodec.go} |  117 +-
 .../ApplicationLayerMessageCodec_plc4xgen.go       |   40 +-
 plc4go/internal/bacnetip/MessageCodec.go           |  179 --
 plc4go/internal/bacnetip/Subscriber_plc4xgen.go    |    4 +-
 .../bacgopes/BIPSimpleApplication_plc4xgen.go      |  122 +
 .../Capability_plc4xgen.go}                        |   18 +-
 .../bacnetip/{ => bacgopes}/DeviceInfo_plc4xgen.go |    6 +-
 .../bacnetip/{ => bacgopes}/IOCB_plc4xgen.go       |    2 +-
 .../{ => bacgopes}/IOController_plc4xgen.go        |    2 +-
 .../{ => bacgopes}/IOQController_plc4xgen.go       |    2 +-
 .../bacnetip/{ => bacgopes}/IOQueue_plc4xgen.go    |    2 +-
 .../ReadWritePropertyServices_plc4xgen.go}         |   18 +-
 .../bacnetip/{ => bacgopes}/SieveQueue_plc4xgen.go |    2 +-
 .../bacnetip/{ => bacgopes}/UDPActor_plc4xgen.go   |    2 +-
 .../WhoIsIAmServices_plc4xgen.go}                  |   29 +-
 plc4go/internal/bacnetip/{ => bacgopes}/apdu.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_APCI.go  |    5 +-
 .../bacnetip/{ => bacgopes}/apdu_APCISequence.go   |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_APDU.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_AbortPDU.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_AbortReason.go    |    2 +-
 .../{ => bacgopes}/apdu_AcknowledgeAlarmRequest.go |    2 +-
 .../{ => bacgopes}/apdu_AddListElementRequest.go   |    2 +-
 .../apdu_AtomicReadFileACKAccessMethodChoice.go    |    2 +-
 ...du_AtomicReadFileACKAccessMethodRecordAccess.go |    2 +-
 ...du_AtomicReadFileACKAccessMethodStreamAccess.go |    2 +-
 .../{ => bacgopes}/apdu_AtomicReadFileRequest.go   |    2 +-
 ...apdu_AtomicReadFileRequestAccessMethodChoice.go |    2 +-
 ...eadFileRequestAccessMethodChoiceRecordAccess.go |    2 +-
 ...eadFileRequestAccessMethodChoiceStreamAccess.go |    2 +-
 .../{ => bacgopes}/apdu_AtomicWriteFileACK.go      |    2 +-
 .../{ => bacgopes}/apdu_AtomicWriteFileRequest.go  |    2 +-
 ...pdu_AtomicWriteFileRequestAccessMethodChoice.go |    2 +-
 ...iteFileRequestAccessMethodChoiceRecordAccess.go |    2 +-
 ...iteFileRequestAccessMethodChoiceStreamAccess.go |    2 +-
 .../{ => bacgopes}/apdu_AuthenticateACK.go         |    2 +-
 .../{ => bacgopes}/apdu_AuthenticateRequest.go     |    2 +-
 .../apdu_COVNotificationParameters.go              |    2 +-
 .../{ => bacgopes}/apdu_ChangeListError.go         |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ComplexAckPDU.go  |    2 +-
 .../{ => bacgopes}/apdu_ComplexAckSequence.go      |    2 +-
 .../apdu_ConfirmedCOVNotificationRequest.go        |    2 +-
 .../apdu_ConfirmedEventNotificationRequest.go      |    2 +-
 .../apdu_ConfirmedPrivateTransferACK.go            |    2 +-
 .../apdu_ConfirmedPrivateTransferError.go          |    2 +-
 .../apdu_ConfirmedPrivateTransferRequest.go        |    2 +-
 .../{ => bacgopes}/apdu_ConfirmedRequestPDU.go     |    2 +-
 .../apdu_ConfirmedRequestSequence.go               |    2 +-
 .../{ => bacgopes}/apdu_ConfirmedServiceChoice.go  |    2 +-
 .../apdu_ConfirmedTextMessageRequest.go            |    2 +-
 ...apdu_ConfirmedTextMessageRequestMessageClass.go |    2 +-
 ...u_ConfirmedTextMessageRequestMessagePriority.go |    2 +-
 .../{ => bacgopes}/apdu_CreateObjectACK.go         |    2 +-
 .../{ => bacgopes}/apdu_CreateObjectError.go       |    2 +-
 .../{ => bacgopes}/apdu_CreateObjectRequest.go     |    2 +-
 .../apdu_CreateObjectRequestObjectSpecifier.go     |    2 +-
 .../{ => bacgopes}/apdu_DeleteObjectRequest.go     |    2 +-
 .../apdu_DeviceCommunicationControlRequest.go      |    2 +-
 ...viceCommunicationControlRequestEnableDisable.go |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_Error.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ErrorPDU.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ErrorSequence.go  |    2 +-
 .../apdu_EventNotificationParameters.go            |    2 +-
 .../{ => bacgopes}/apdu_GetAlarmSummaryACK.go      |    2 +-
 .../apdu_GetAlarmSummaryAlarmSummary.go            |    2 +-
 .../{ => bacgopes}/apdu_GetAlarmSummaryRequest.go  |    2 +-
 .../{ => bacgopes}/apdu_GetEnrollmentSummaryACK.go |    2 +-
 .../apdu_GetEnrollmentSummaryEnrollmentSummary.go  |    2 +-
 .../apdu_GetEnrollmentSummaryRequest.go            |    2 +-
 ...llmentSummaryRequestAcknowledgmentFilterType.go |    2 +-
 ...EnrollmentSummaryRequestEventStateFilterType.go |    2 +-
 ...etEnrollmentSummaryRequestPriorityFilterType.go |    2 +-
 .../{ => bacgopes}/apdu_GetEventInformationACK.go  |    2 +-
 .../apdu_GetEventInformationEventSummary.go        |    2 +-
 .../apdu_GetEventInformationRequest.go             |    2 +-
 .../{ => bacgopes}/apdu_GroupChannelValue.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_IAmRequest.go     |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_IHaveRequest.go   |    2 +-
 .../apdu_LifeSafetyOperationRequest.go             |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu_Range.go |    2 +-
 .../{ => bacgopes}/apdu_RangeByPosition.go         |    2 +-
 .../{ => bacgopes}/apdu_RangeBySequenceNumber.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_RangeByTime.go    |    2 +-
 .../{ => bacgopes}/apdu_ReadAccessResult.go        |    2 +-
 .../{ => bacgopes}/apdu_ReadAccessResultElement.go |    2 +-
 .../apdu_ReadAccessResultElementChoice.go          |    2 +-
 .../{ => bacgopes}/apdu_ReadAccessSpecification.go |    2 +-
 .../{ => bacgopes}/apdu_ReadPropertyACK.go         |    2 +-
 .../{ => bacgopes}/apdu_ReadPropertyMultipleACK.go |    2 +-
 .../apdu_ReadPropertyMultipleRequest.go            |    2 +-
 .../{ => bacgopes}/apdu_ReadPropertyRequest.go     |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_ReadRangeACK.go   |    2 +-
 .../{ => bacgopes}/apdu_ReadRangeRequest.go        |    2 +-
 .../apdu_ReinitializeDeviceRequest.go              |    2 +-
 ...alizeDeviceRequestReinitializedStateOfDevice.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_RejectPDU.go      |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_RejectReason.go   |    2 +-
 .../apdu_RemoveListElementRequest.go               |    2 +-
 .../{ => bacgopes}/apdu_RequestKeyRequest.go       |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_SegmentAckPDU.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_SimpleAckPDU.go   |    2 +-
 .../apdu_SubscribeCOVPropertyRequest.go            |    2 +-
 .../{ => bacgopes}/apdu_SubscribeCOVRequest.go     |    2 +-
 .../apdu_TimeSynchronizationRequest.go             |    2 +-
 .../apdu_UTCTimeSynchronizationRequest.go          |    2 +-
 .../apdu_UnconfirmedCOVNotificationRequest.go      |    2 +-
 .../apdu_UnconfirmedEventNotificationRequest.go    |    2 +-
 .../apdu_UnconfirmedPrivateTransferRequest.go      |    2 +-
 .../{ => bacgopes}/apdu_UnconfirmedRequestPDU.go   |    2 +-
 .../apdu_UnconfirmedRequestPDUAtomicReadFileACK.go |    2 +-
 .../apdu_UnconfirmedRequestSequence.go             |    2 +-
 .../apdu_UnconfirmedServiceChoice.go               |    2 +-
 .../apdu_UnconfirmedTextMessageRequest.go          |    2 +-
 ...du_UnconfirmedTextMessageRequestMessageClass.go |    2 +-
 ...UnconfirmedTextMessageRequestMessagePriority.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTCloseError.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTCloseRequest.go |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTDataACK.go      |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTDataRequest.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTOpenACK.go      |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_VTOpenRequest.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoHasLimits.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoHasObject.go   |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoHasRequest.go  |    2 +-
 .../bacnetip/{ => bacgopes}/apdu_WhoIsRequest.go   |    2 +-
 .../apdu_WriteAccessSpecification.go               |    2 +-
 .../{ => bacgopes}/apdu_WriteGroupRequest.go       |    2 +-
 .../apdu_WritePropertyMultipleError.go             |    2 +-
 .../apdu_WritePropertyMultipleRequest.go           |    2 +-
 .../{ => bacgopes}/apdu_WritePropertyRequest.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/apdu__APDU.go |    5 +-
 plc4go/internal/bacnetip/{ => bacgopes}/app.go     |    2 +-
 .../bacnetip/{ => bacgopes}/app_Application.go     |    2 +-
 .../{ => bacgopes}/app_ApplicationIOController.go  |    2 +-
 .../{ => bacgopes}/app_BIPForeignApplication.go    |    2 +-
 .../{ => bacgopes}/app_BIPNetworkApplication.go    |    2 +-
 .../{ => bacgopes}/app_BIPSimpleApplication.go     |    5 +-
 .../bacnetip/{ => bacgopes}/app_DeviceInfo.go      |    4 +-
 .../bacnetip/{ => bacgopes}/app_DeviceInfoCache.go |    2 +-
 .../internal/bacnetip/{ => bacgopes}/appservice.go |    2 +-
 .../appservice_ApplicationServiceAccessPoint.go    |    2 +-
 .../{ => bacgopes}/appservice_ClientSSM.go         |    2 +-
 .../bacnetip/{ => bacgopes}/appservice_SSM.go      |    2 +-
 .../{ => bacgopes}/appservice_ServerSSM.go         |    2 +-
 .../appservice_StateMachineAccessPoint.go          |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/bvll.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/bvll_BVLCI.go |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_BVLPDU.go         |    4 +-
 .../bvll_DeleteForeignDeviceTableEntry.go          |    2 +-
 .../bvll_DistributeBroadcastToNetwork.go           |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_FDTEntry.go       |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_ForwardedNPDU.go  |    2 +-
 .../{ => bacgopes}/bvll_OriginalBroadcastNPDU.go   |    2 +-
 .../{ => bacgopes}/bvll_OriginalUnicastNPDU.go     |    2 +-
 .../bvll_ReadBroadcastDistributionTable.go         |    2 +-
 .../bvll_ReadBroadcastDistributionTableAck.go      |    2 +-
 .../{ => bacgopes}/bvll_ReadForeignDeviceTable.go  |    2 +-
 .../bvll_ReadForeignDeviceTableAck.go              |    2 +-
 .../{ => bacgopes}/bvll_RegisterForeignDevice.go   |    2 +-
 .../bacnetip/{ => bacgopes}/bvll_Result.go         |    2 +-
 .../bvll_WriteBroadcastDistributionTable.go        |    2 +-
 .../bacnetip/{ => bacgopes}/bvllservice.go         |    2 +-
 .../{ => bacgopes}/bvllservice_AnnexJCodec.go      |    2 +-
 .../bacnetip/{ => bacgopes}/bvllservice_BIPBBMD.go |    2 +-
 .../{ => bacgopes}/bvllservice_BIPForeign.go       |    2 +-
 .../bacnetip/{ => bacgopes}/bvllservice_BIPSAP.go  |    2 +-
 .../{ => bacgopes}/bvllservice_BIPSimple.go        |    2 +-
 .../{ => bacgopes}/bvllservice_UDPMultiplexer.go   |    2 +-
 .../{ => bacgopes}/bvllservice__MultiplexClient.go |    2 +-
 .../{ => bacgopes}/bvllservice__MultiplexServer.go |    2 +-
 .../internal/bacnetip/{ => bacgopes}/capability.go |    8 +-
 plc4go/internal/bacnetip/{ => bacgopes}/comm.go    |    2 +-
 .../comm_ApplicationServiceElement.go              |    2 +-
 .../bacnetip/{ => bacgopes}/comm_Client.go         |    2 +-
 .../bacnetip/{ => bacgopes}/comm_Server.go         |    2 +-
 .../{ => bacgopes}/comm_ServiceAccessPoint.go      |    2 +-
 .../internal/bacnetip/{ => bacgopes}/comm__PCI.go  |    5 +-
 plc4go/internal/bacnetip/{ => bacgopes}/comp.go    |    2 +-
 .../bacnetip/{ => bacgopes}/constructeddata.go     |    2 +-
 .../bacnetip/{ => bacgopes}/constructors/apdu.go   |    8 +-
 .../bacnetip/bacgopes/constructors/bvll.go         |  125 +
 .../{ => bacgopes}/constructors/constructeddata.go |    6 +-
 .../bacnetip/{ => bacgopes}/constructors/npdu.go   |   61 +-
 .../bacnetip/{ => bacgopes}/constructors/pdu.go    |   16 +-
 .../{ => bacgopes}/constructors/primitivedata.go   |  114 +-
 plc4go/internal/bacnetip/{ => bacgopes}/core.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/debugging.go  |    2 +-
 .../bacnetip/{ => bacgopes}/globals/settings.go    |    0
 plc4go/internal/bacnetip/{ => bacgopes}/iocb.go    |    2 +-
 .../internal/bacnetip/{ => bacgopes}/iocb_IOCB.go  |   12 +-
 .../bacnetip/{ => bacgopes}/iocb_IOController.go   |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_IOQController.go  |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_IOQueue.go        |    4 +-
 .../bacnetip/{ => bacgopes}/iocb_SieveQueue.go     |    4 +-
 .../{ => bacgopes}/local_device_LocalDevice.go     |    2 +-
 .../internal/bacnetip/{ => bacgopes}/netservice.go |    2 +-
 .../{ => bacgopes}/netservice_NetworkAdapter.go    |    2 +-
 .../netservice_NetworkServiceAccessPoint.go        |    2 +-
 .../netservice_NetworkServiceElement.go            |    2 +-
 .../{ => bacgopes}/netservice_RouterInfoCache.go   |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/npdu.go    |    2 +-
 .../npdu_DisconnectConnectionToNetwork.go          |    2 +-
 .../npdu_EstablishConnectionToNetwork.go           |    2 +-
 .../{ => bacgopes}/npdu_IAmRouterToNetwork.go      |    2 +-
 .../{ => bacgopes}/npdu_ICouldBeRouterToNetwork.go |    2 +-
 .../{ => bacgopes}/npdu_InitializeRoutingTable.go  |    2 +-
 .../npdu_InitializeRoutingTableAck.go              |    2 +-
 .../internal/bacnetip/{ => bacgopes}/npdu_NPCI.go  |    2 +-
 .../internal/bacnetip/{ => bacgopes}/npdu_NPDU.go  |    4 +-
 .../{ => bacgopes}/npdu_NetworkNumberIs.go         |    2 +-
 .../{ => bacgopes}/npdu_RejectMessageToNetwork.go  |    2 +-
 .../npdu_RouterAvailableToNetwork.go               |    2 +-
 .../{ => bacgopes}/npdu_RouterBusyToNetwork.go     |    2 +-
 .../{ => bacgopes}/npdu_RoutingTableEntry.go       |    2 +-
 .../{ => bacgopes}/npdu_WhatIsNetworkNumber.go     |    2 +-
 .../{ => bacgopes}/npdu_WhoIsRouterToNetwork.go    |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/object.go  |    2 +-
 .../bacnetip/{ => bacgopes}/object_Property.go     |    2 +-
 .../object_ReadWritePropertyServices.go            |    3 +-
 plc4go/internal/bacnetip/{ => bacgopes}/pdu.go     |    2 +-
 .../bacnetip/{ => bacgopes}/pdu_Address.go         |    6 +-
 plc4go/internal/bacnetip/{ => bacgopes}/pdu_PCI.go |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/pdu_PDU.go |    5 +-
 .../bacnetip/{ => bacgopes}/pdu_PDUData.go         |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata.go       |    2 +-
 .../{ => bacgopes}/primitivedata_ApplicationTag.go |    2 +-
 .../{ => bacgopes}/primitivedata_Atomic.go         |    2 +-
 .../{ => bacgopes}/primitivedata_BitString.go      |    2 +-
 .../{ => bacgopes}/primitivedata_Boolean.go        |    2 +-
 .../primitivedata_CharacterString.go               |    2 +-
 .../{ => bacgopes}/primitivedata_ClosingTag.go     |    2 +-
 .../{ => bacgopes}/primitivedata_CommonMath.go     |    2 +-
 .../{ => bacgopes}/primitivedata_ContextTag.go     |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Date.go  |    2 +-
 .../{ => bacgopes}/primitivedata_Double.go         |    2 +-
 .../{ => bacgopes}/primitivedata_Enumeration.go    |    2 +-
 .../{ => bacgopes}/primitivedata_Integer.go        |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Null.go  |    2 +-
 .../primitivedata_ObjectIdentifier.go              |    2 +-
 .../{ => bacgopes}/primitivedata_ObjectType.go     |    2 +-
 .../{ => bacgopes}/primitivedata_OctetString.go    |    2 +-
 .../{ => bacgopes}/primitivedata_OpeningTag.go     |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Real.go  |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Tag.go   |    2 +-
 .../{ => bacgopes}/primitivedata_TagList.go        |    2 +-
 .../bacnetip/{ => bacgopes}/primitivedata_Time.go  |    2 +-
 .../{ => bacgopes}/primitivedata_Unsigned.go       |    2 +-
 .../{ => bacgopes}/primitivedata_Unsigned16.go     |    2 +-
 .../{ => bacgopes}/primitivedata_Unsigned8.go      |    2 +-
 .../{ => bacgopes}/service/Subscription.go         |    6 +-
 .../bacnetip/{ => bacgopes}/service/cov.go         |    0
 .../service/cov_AccessDoorCriteria.go              |    0
 .../service/cov_AccessPointCriteria.go             |    0
 .../service/cov_ActiveCOVSubscription.go           |    4 +-
 .../{ => bacgopes}/service/cov_COVDetection.go     |    0
 .../service/cov_COVIncrementCriteria.go            |    0
 .../service/cov_ChangeOfValuesServices.go          |    4 +-
 .../service/cov_CredentialDataInputCriteria.go     |    0
 .../{ => bacgopes}/service/cov_GenericCriteria.go  |    0
 .../service/cov_LoadControlCriteria.go             |    0
 .../service/cov_PulseConverterCriteria.go          |    0
 .../{ => bacgopes}/service/cov_SubscriptionList.go |    0
 .../bacnetip/{ => bacgopes}/service/detect.go      |    0
 .../{ => bacgopes}/service_device_Device.go        |   13 +-
 .../internal/bacnetip/{ => bacgopes}/settings.go   |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/task.go    |    2 +-
 .../{ => bacgopes}/task_OneShotDeleteTask.go       |    2 +-
 .../{ => bacgopes}/task_OneShotFunctionTask.go     |    2 +-
 .../bacnetip/{ => bacgopes}/task_OneShotTask.go    |    2 +-
 .../{ => bacgopes}/task_RecurringFunctionTask.go   |    2 +-
 .../bacnetip/{ => bacgopes}/task_RecurringTask.go  |    2 +-
 .../internal/bacnetip/{ => bacgopes}/task_Task.go  |    2 +-
 .../bacnetip/{ => bacgopes}/task_TaskManager.go    |    2 +-
 .../bacnetip/{ => bacgopes}/tests/state_machine.go |  151 +-
 .../tests/state_machine_ClientStateMachine.go      |   18 +-
 .../tests/state_machine_ServerStateMachine.go      |   10 +-
 .../{ => bacgopes}/tests/state_machine_State.go    |   42 +-
 .../tests/state_machine_StateMachine.go            |   50 +-
 .../tests/state_machine_StateMachineGroup.go       |    0
 .../tests/state_machine_TrafficLog.go              |   12 +-
 .../test_max_apdu_length_accepted_test.go          |    0
 .../test_apdu/test_max_segments_accepted_test.go   |    0
 .../tests/test_base_types/test_name_value_test.go  |    0
 .../{ => bacgopes}/tests/test_bvll/helpers.go      |  238 +-
 .../tests/test_bvll/test_bbmd_test.go              |   51 +-
 .../tests/test_bvll/test_codec_test.go             |  199 +-
 .../tests/test_bvll/test_foreign_test.go           |   91 +-
 .../tests/test_bvll/test_simple_test.go            |   43 +-
 .../tests/test_comm/test_capability_test.go        |   17 +-
 .../tests/test_comm/test_client_test.go            |    0
 .../tests/test_comm/test_pci_test.go               |    0
 .../tests/test_comm/test_pdu_test.go               |    0
 .../tests/test_comm/test_pdudata_test.go           |    0
 .../tests/test_comm/test_server_test.go            |    0
 .../tests/test_constructed_data/helpers.go         |    2 +-
 .../test_constructed_data/test_any_atomic_test.go  |    0
 .../tests/test_constructed_data/test_any_test.go   |    0
 .../test_constructed_data/test_array_of_test.go    |    0
 .../test_constructed_data/test_choice_test.go      |    0
 .../test_constructed_data/test_sequence_test.go    |    2 +-
 .../tests_sequence_of_test.go                      |    0
 .../tests/test_iocb/test_clientcontroller_test.go  |    0
 .../tests/test_iocb/test_iocb_test.go              |    0
 .../tests/test_iocb/test_iochain_test.go           |    0
 .../tests/test_iocb/test_iocontroller_test.go      |    0
 .../tests/test_iocb/test_iogroup_test.go           |    0
 .../tests/test_iocb/test_ioqcontroller_test.go     |    0
 .../tests/test_iocb/test_ioqueue_test.go           |    0
 .../test_iocb/test_sieveclientcontroller_test.go   |    0
 .../tests/test_local/test_local_schedule_1_test.go |    0
 .../tests/test_local/test_local_schedule_2_test.go |    0
 .../{ => bacgopes}/tests/test_network/helpers.go   |  144 +-
 .../tests/test_network/test_net_1_test.go          |    5 +-
 .../tests/test_network/test_net_2_test.go          |    5 +-
 .../tests/test_network/test_net_3_test.go          |    5 +-
 .../tests/test_network/test_net_4_test.go          |    0
 .../tests/test_network/test_net_5_test.go          |    0
 .../tests/test_network/test_net_6_test.go          |    0
 .../tests/test_network/test_net_7_test.go          |    0
 .../{ => bacgopes}/tests/test_npdu/helpers.go      |   26 +-
 .../tests/test_npdu/test_codec_test.go             |  213 +-
 .../tests/test_pdu/test_address_test.go            |  351 ++-
 .../{ => bacgopes}/tests/test_pdu/test_pci_test.go |    0
 .../{ => bacgopes}/tests/test_pdu/test_pdu_test.go |    0
 .../tests/test_primitive_data/common_test.go       |    8 +-
 .../test_primitive_data/test_bit_string_test.go    |   29 +-
 .../tests/test_primitive_data/test_boolean_test.go |   13 +-
 .../test_character_string_test.go                  |   13 +-
 .../tests/test_primitive_data/test_date_test.go    |   23 +-
 .../tests/test_primitive_data/test_double_test.go  |   13 +-
 .../test_primitive_data/test_enumerated_test.go    |   19 +-
 .../tests/test_primitive_data/test_integer_test.go |   15 +-
 .../tests/test_primitive_data/test_null_test.go    |   13 +-
 .../test_object_identifier_test.go                 |   39 +-
 .../test_primitive_data/test_object_type_test.go   |   19 +-
 .../test_primitive_data/test_octet_string_test.go  |   13 +-
 .../tests/test_primitive_data/test_real_test.go    |   13 +-
 .../tests/test_primitive_data/test_tag_test.go     |   57 +-
 .../tests/test_primitive_data/test_time_test.go    |   47 +-
 .../test_primitive_data/test_unsigned_test.go      |   13 +-
 .../tests/test_segmentation/test_1_test.go         |   87 +-
 .../{ => bacgopes}/tests/test_service/helpers.go   |  117 +-
 .../tests/test_service/test_cov_av_test.go         |    0
 .../tests/test_service/test_cov_bv_test.go         |    0
 .../tests/test_service/test_cov_pc_test.go         |    0
 .../tests/test_service/test_cov_test.go            |    5 +-
 .../tests/test_service/test_device_2_test.go       |    0
 .../tests/test_service/test_device_test.go         |    0
 .../tests/test_service/test_file_test.go           |    0
 .../tests/test_service/test_object_test.go         |    0
 .../test_client_state_machine_test.go              |    9 +-
 .../test_server_state_machine_test.go              |    9 +-
 .../test_service_access_point_test.go              |   49 +-
 .../test_utilities/test_state_machine_test.go      |   65 +-
 .../tests/test_utilities/test_time_machine_test.go |   41 +-
 .../tests/test_vlan/test_ipnetwork_test.go         |  125 +-
 .../tests/test_vlan/test_network_test.go           |   95 +-
 .../bacnetip/{ => bacgopes}/tests/time_machine.go  |   33 +-
 .../{ => bacgopes}/tests/trapped_classes.go        |    0
 ...ped_classes_TrappedApplicationServiceElement.go |   36 +-
 .../tests/trapped_classes_TrappedClient.go         |   22 +-
 .../tests/trapped_classes_TrappedServer.go         |   22 +-
 .../trapped_classes_TrappedServerStateMachine.go   |    6 +-
 .../trapped_classes_TrappedServiceAccessPoint.go   |   34 +-
 .../tests/trapped_classes_TrappedState.go          |   12 +-
 .../tests/trapped_classes_TrappedStateMachine.go   |   18 +-
 .../tests/trapped_classes_Trapper.go               |   42 +-
 .../internal/bacnetip/{ => bacgopes}/tests/util.go |    6 +-
 plc4go/internal/bacnetip/{ => bacgopes}/udp.go     |    2 +-
 .../bacnetip/{ => bacgopes}/udp_UDPActor.go        |    4 +-
 .../bacnetip/{ => bacgopes}/udp_UDPDirector.go     |    2 +-
 plc4go/internal/bacnetip/{ => bacgopes}/vlan.go    |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPNetwork.go      |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPNode.go         |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPRouter.go       |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_IPRouterNode.go   |    2 +-
 .../bacnetip/{ => bacgopes}/vlan_Network.go        |    2 +-
 .../internal/bacnetip/{ => bacgopes}/vlan_Node.go  |    4 +-
 .../bacnetip/{ => bacgopes}/vlan_TrafficLogger.go  |    2 +-
 plc4go/internal/bacnetip/constructors/bvll.go      |  126 -
 plc4go/internal/bacnetip/mock_APCI_test.go         | 1009 -------
 plc4go/internal/bacnetip/mock_APDU_test.go         | 1502 ----------
 plc4go/internal/bacnetip/mock_AnyContract_test.go  |  235 --
 .../bacnetip/mock_ApplicationRequirements_test.go  |   98 -
 .../mock_ApplicationServiceElementContract_test.go |  272 --
 ...k_ApplicationServiceElementRequirements_test.go |   98 -
 .../internal/bacnetip/mock_AtomicContract_test.go  |  234 --
 .../bacnetip/mock_AtomicRequirements_test.go       |   97 -
 .../bacnetip/mock_BIPSAPRequirements_test.go       |  491 ----
 plc4go/internal/bacnetip/mock_BVLCI_test.go        |  882 ------
 plc4go/internal/bacnetip/mock_BVLPDU_test.go       | 1500 ----------
 plc4go/internal/bacnetip/mock_BacNetPlcTag_test.go |  330 ---
 .../bacnetip/mock_BitStringExtension_test.go       |  188 --
 .../internal/bacnetip/mock_ClientContract_test.go  |  270 --
 .../bacnetip/mock_ClientRequirements_test.go       |   51 -
 plc4go/internal/bacnetip/mock_Client_test.go       |  270 --
 .../bacnetip/mock_ComparableAndOrdered_test.go     |   51 -
 plc4go/internal/bacnetip/mock_Copyable_test.go     |   98 -
 .../bacnetip/mock_EnumeratedContract_test.go       |  178 --
 .../bacnetip/mock_IOControllerRequirements_test.go |  237 --
 .../mock_IOQControllerRequirements_test.go         |  237 --
 plc4go/internal/bacnetip/mock_IPCI_test.go         |  632 -----
 plc4go/internal/bacnetip/mock_IsAnyAtomic_test.go  |   96 -
 plc4go/internal/bacnetip/mock_IsAtomic_test.go     |   96 -
 .../internal/bacnetip/mock_MessageBridge_test.go   |  745 -----
 plc4go/internal/bacnetip/mock_NPCI_test.go         | 1725 ------------
 plc4go/internal/bacnetip/mock_NPDU_test.go         | 2870 --------------------
 plc4go/internal/bacnetip/mock_NetworkNode_test.go  |  346 ---
 .../bacnetip/mock_NodeNetworkReference_test.go     |  130 -
 .../bacnetip/mock_ObjectTypeContract_test.go       |  211 --
 .../bacnetip/mock_OneShotTaskRequirements_test.go  |   96 -
 plc4go/internal/bacnetip/mock_PCI_test.go          |  790 ------
 plc4go/internal/bacnetip/mock_PDUContract_test.go  |   96 -
 plc4go/internal/bacnetip/mock_PDUData_test.go      |  499 ----
 plc4go/internal/bacnetip/mock_PDUOption_test.go    |   84 -
 plc4go/internal/bacnetip/mock_PDU_test.go          | 1285 ---------
 .../mock_RecurringTaskRequirements_test.go         |   96 -
 .../mock_SSMProcessingRequirements_test.go         |   96 -
 .../bacnetip/mock_SSMSAPRequirements_test.go       | 1063 --------
 .../mock_SequenceContractRequirement_test.go       |  131 -
 .../bacnetip/mock_SequenceContract_test.go         |   98 -
 .../internal/bacnetip/mock_ServerContract_test.go  |  315 ---
 .../bacnetip/mock_ServerRequirements_test.go       |   51 -
 plc4go/internal/bacnetip/mock_Server_test.go       |  315 ---
 .../mock_ServiceAccessPointContract_test.go        |  317 ---
 .../mock_ServiceAccessPointRequirements_test.go    |  272 --
 plc4go/internal/bacnetip/mock_Tag_test.go          |  555 ----
 plc4go/internal/bacnetip/mock_TaskManager_test.go  |  507 ----
 .../bacnetip/mock_TaskRequirements_test.go         |  303 ---
 .../internal/bacnetip/mock_TrafficLogger_test.go   |   84 -
 .../mock_WhoIsIAmServicesRequirements_test.go      |   98 -
 plc4go/internal/bacnetip/mock__APDU_test.go        | 1502 ----------
 plc4go/internal/bacnetip/mock__IOCB_test.go        |  522 ----
 .../internal/bacnetip/mock__IOController_test.go   |  237 --
 .../internal/bacnetip/mock__IOQController_test.go  |   97 -
 .../bacnetip/mock__PDUDataRequirements_test.go     |   98 -
 plc4go/internal/bacnetip/mock__PDU_test.go         |  364 ---
 .../bacnetip/mock__TaskRequirements_test.go        |  259 --
 plc4go/internal/bacnetip/mock_option_test.go       |   97 -
 .../tests/mock_ClientStateMachineContract_test.go  | 1266 ---------
 .../bacnetip/tests/mock_StateInterceptor_test.go   |  219 --
 .../tests/mock_StateMachineContract_test.go        | 1045 -------
 .../tests/mock_StateMachineRequirements_test.go    | 1092 --------
 .../bacnetip/tests/mock_StateMachine_test.go       | 1092 --------
 plc4go/internal/bacnetip/tests/mock_State_test.go  | 1350 ---------
 ...edApplicationServiceElementRequirements_test.go |  242 --
 .../tests/mock_TrappedClientContract_test.go       |  148 -
 .../tests/mock_TrappedServerContract_test.go       |  148 -
 ...k_TrappedServiceAccessPointRequirements_test.go |  242 --
 .../tests/mock_TrapperRequirements_test.go         |  219 --
 .../mock_SequenceEqualityRequirements_test.go      |  101 -
 .../mock_ApplicationNetworkRequirements_test.go    |  148 -
 ...ock_ApplicationStateMachineRequirements_test.go |  148 -
 .../mock_COVTestClientServicesRequirements_test.go |   51 -
 454 files changed, 2135 insertions(+), 35313 deletions(-)

diff --git a/plc4go/internal/bacnetip/MessageCodec.go b/plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go
similarity index 59%
copy from plc4go/internal/bacnetip/MessageCodec.go
copy to plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go
index 293c5d30b7..7ddf86812c 100644
--- a/plc4go/internal/bacnetip/MessageCodec.go
+++ b/plc4go/internal/bacnetip/ApplicationLayerMessageCodec.go
@@ -29,11 +29,9 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 	"github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi"
-	"github.com/apache/plc4x/plc4go/spi/default"
-	"github.com/apache/plc4x/plc4go/spi/options"
-	"github.com/apache/plc4x/plc4go/spi/transports"
 	"github.com/apache/plc4x/plc4go/spi/transports/udp"
 )
 
@@ -41,9 +39,9 @@ import (
 //
 //go:generate go run ../../tools/plc4xgenerator/gen.go -type=ApplicationLayerMessageCodec
 type ApplicationLayerMessageCodec struct {
-	bipSimpleApplication *BIPSimpleApplication
+	bipSimpleApplication *bacgopes.BIPSimpleApplication
 	messageCode          *MessageCodec
-	deviceInfoCache      DeviceInfoCache
+	deviceInfoCache      bacgopes.DeviceInfoCache
 
 	localAddress  *net.UDPAddr `stringer:"true"`
 	remoteAddress *net.UDPAddr `stringer:"true"`
@@ -64,14 +62,13 @@ func NewApplicationLayerMessageCodec(localLog zerolog.Logger, udpTransport *udp.
 
 		log: localLog,
 	}
-	address, err := NewAddress(localLog, localAddress)
+	address, err := bacgopes.NewAddress(localLog, localAddress)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating address")
 	}
 	// TODO: workaround for strange address parsing
-	at := AddressTuple[string, uint16]{fmt.Sprintf("%d.%d.%d.%d", address.AddrAddress[0], address.AddrAddress[1], address.AddrAddress[2], address.AddrAddress[3]), *address.AddrPort}
-	address.AddrTuple = &at
-	application, err := NewBIPSimpleApplication(localLog, &LocalDeviceObject{
+	address.AddrTuple = bacgopes.NewAddressTuple(fmt.Sprintf("%d.%d.%d.%d", address.AddrAddress[0], address.AddrAddress[1], address.AddrAddress[2], address.AddrAddress[3]), *address.AddrPort)
+	application, err := bacgopes.NewBIPSimpleApplication(localLog, &bacgopes.LocalDeviceObject{
 		NumberOfAPDURetries: func() *uint { retries := uint(10); return &retries }(),
 	}, *address, &a.deviceInfoCache, nil)
 	if err != nil {
@@ -111,11 +108,11 @@ func (m *ApplicationLayerMessageCodec) IsRunning() bool {
 }
 
 func (m *ApplicationLayerMessageCodec) Send(message spi.Message) error {
-	address, err := NewAddress(m.log, m.remoteAddress)
+	address, err := bacgopes.NewAddress(m.log, m.remoteAddress)
 	if err != nil {
 		return err
 	}
-	iocb, err := NewIOCB(m.log, NewPDU(message, WithPDUDestination(address)), address)
+	iocb, err := bacgopes.NewIOCB(m.log, bacgopes.NewPDU(message, bacgopes.WithPDUDestination(address)), address)
 	if err != nil {
 		return errors.Wrap(err, "error creating IOCB")
 	}
@@ -126,12 +123,12 @@ func (m *ApplicationLayerMessageCodec) Send(message spi.Message) error {
 			}
 		}()
 		iocb.Wait()
-		if iocb.ioError != nil {
+		if err := iocb.GetIOError(); err != nil {
 			// TODO: handle error
-			fmt.Printf("Err: %v\n", iocb.ioError)
-		} else if iocb.ioResponse != nil {
+			fmt.Printf("Err: %v\n", err)
+		} else if iocb.GetIOResponse() != nil {
 			// TODO: response?
-			fmt.Printf("Response: %v\n", iocb.ioResponse)
+			fmt.Printf("Response: %v\n", iocb.GetIOResponse())
 		} else {
 			// TODO: what now?
 		}
@@ -145,11 +142,11 @@ func (m *ApplicationLayerMessageCodec) Expect(ctx context.Context, acceptsMessag
 }
 
 func (m *ApplicationLayerMessageCodec) SendRequest(ctx context.Context, message spi.Message, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
-	address, err := NewAddress(m.log, m.remoteAddress)
+	address, err := bacgopes.NewAddress(m.log, m.remoteAddress)
 	if err != nil {
 		return err
 	}
-	iocb, err := NewIOCB(m.log, NewPDU(message, WithPDUDestination(address)), address)
+	iocb, err := bacgopes.NewIOCB(m.log, bacgopes.NewPDU(message, bacgopes.WithPDUDestination(address)), address)
 	if err != nil {
 		return errors.Wrap(err, "error creating IOCB")
 	}
@@ -160,12 +157,12 @@ func (m *ApplicationLayerMessageCodec) SendRequest(ctx context.Context, message
 			}
 		}()
 		iocb.Wait()
-		if err := iocb.ioError; err != nil {
+		if err := iocb.GetIOError(); err != nil {
 			if err := handleError(err); err != nil {
 				m.log.Debug().Err(err).Msg("error handling error")
 				return
 			}
-		} else if response := iocb.ioResponse; response != nil {
+		} else if response := iocb.GetIOResponse(); response != nil {
 			// TODO: we wrap it into a BVLC for now. Once we change the Readers etc. to accept apdus we can remove that
 			tempBVLC := model.NewBVLCOriginalUnicastNPDU(
 				model.NewNPDU(
@@ -210,85 +207,3 @@ func (m *ApplicationLayerMessageCodec) GetDefaultIncomingMessageChannel() chan s
 	//return m.messageCode.GetDefaultIncomingMessageChannel()
 	return make(chan spi.Message)
 }
-
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=MessageCodec
-type MessageCodec struct {
-	_default.DefaultCodec
-
-	passLogToModel bool
-	log            zerolog.Logger `ignore:"true"`
-}
-
-func NewMessageCodec(transportInstance transports.TransportInstance) *MessageCodec {
-	codec := &MessageCodec{}
-	codec.DefaultCodec = _default.NewDefaultCodec(codec, transportInstance, _default.WithCustomMessageHandler(codec.handleCustomMessage))
-	return codec
-}
-
-func (m *MessageCodec) GetCodec() spi.MessageCodec {
-	return m
-}
-
-func (m *MessageCodec) Send(message spi.Message) error {
-	m.log.Trace().Msg("Sending message")
-	// Cast the message to the correct type of struct
-	bvlcPacket := message.(model.BVLC)
-	// Serialize the request
-	theBytes, err := bvlcPacket.Serialize()
-	if err != nil {
-		return errors.Wrap(err, "error serializing request")
-	}
-
-	// Send it to the PLC
-	err = m.GetTransportInstance().Write(theBytes)
-	if err != nil {
-		return errors.Wrap(err, "error sending request")
-	}
-	return nil
-}
-
-func (m *MessageCodec) Receive() (spi.Message, error) {
-	// We need at least 6 bytes in order to know how big the packet is in total
-	if num, err := m.GetTransportInstance().GetNumBytesAvailableInBuffer(); (err == nil) && (num >= 4) {
-		m.log.Debug().Uint32("num", num).Msg("we got num readable bytes")
-		data, err := m.GetTransportInstance().PeekReadableBytes(4)
-		if err != nil {
-			m.log.Warn().Err(err).Msg("error peeking")
-			// TODO: Possibly clean up ...
-			return nil, nil
-		}
-		packetSize := uint32((uint16(data[2]) << 8) + uint16(data[3]))
-		if num < packetSize {
-			m.log.Debug().
-				Uint32("num", num).
-				Uint32("packetSize", packetSize).
-				Msg("Not enough bytes. Got: num Need: packetSize")
-			return nil, nil
-		}
-		data, err = m.GetTransportInstance().Read(packetSize)
-		if err != nil {
-			m.log.Debug().Err(err).Msg("Error reading")
-			// TODO: Possibly clean up ...
-			return nil, nil
-		}
-		ctxForModel := options.GetLoggerContextForModel(context.TODO(), m.log, options.WithPassLoggerToModel(m.passLogToModel))
-		bvlcPacket, err := model.BVLCParse[model.BVLC](ctxForModel, data)
-		if err != nil {
-			m.log.Warn().Err(err).Msg("error parsing")
-			// TODO: Possibly clean up ...
-			return nil, nil
-		}
-		return bvlcPacket, nil
-	} else if err != nil {
-		m.log.Warn().Err(err).Msg("Got error reading")
-		return nil, nil
-	}
-	// TODO: maybe we return here a not enough error error
-	return nil, nil
-}
-
-func (m *MessageCodec) handleCustomMessage(_ _default.DefaultCodecRequirements, message spi.Message) bool {
-	// For now, we just put them in the incoming channel
-	m.GetDefaultIncomingMessageChannel() <- message
-	return true
-}
diff --git a/plc4go/internal/bacnetip/ApplicationLayerMessageCodec_plc4xgen.go b/plc4go/internal/bacnetip/ApplicationLayerMessageCodec_plc4xgen.go
index e2f4347c7a..0d47b085bf 100644
--- a/plc4go/internal/bacnetip/ApplicationLayerMessageCodec_plc4xgen.go
+++ b/plc4go/internal/bacnetip/ApplicationLayerMessageCodec_plc4xgen.go
@@ -42,11 +42,23 @@ func (d *ApplicationLayerMessageCodec) SerializeWithWriteBuffer(ctx context.Cont
 	if err := writeBuffer.PushContext("ApplicationLayerMessageCodec"); err != nil {
 		return err
 	}
-	{
-		_value := fmt.Sprintf("%v", d.bipSimpleApplication)
 
-		if err := writeBuffer.WriteString("bipSimpleApplication", uint32(len(_value)*8), _value); err != nil {
-			return err
+	if any(d.bipSimpleApplication) != nil {
+		if serializableField, ok := any(d.bipSimpleApplication).(utils.Serializable); ok {
+			if err := writeBuffer.PushContext("bipSimpleApplication"); err != nil {
+				return err
+			}
+			if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+				return err
+			}
+			if err := writeBuffer.PopContext("bipSimpleApplication"); err != nil {
+				return err
+			}
+		} else {
+			stringValue := fmt.Sprintf("%v", d.bipSimpleApplication)
+			if err := writeBuffer.WriteString("bipSimpleApplication", uint32(len(stringValue)*8), stringValue); err != nil {
+				return err
+			}
 		}
 	}
 	{
@@ -56,11 +68,23 @@ func (d *ApplicationLayerMessageCodec) SerializeWithWriteBuffer(ctx context.Cont
 			return err
 		}
 	}
-	{
-		_value := fmt.Sprintf("%v", d.deviceInfoCache)
 
-		if err := writeBuffer.WriteString("deviceInfoCache", uint32(len(_value)*8), _value); err != nil {
-			return err
+	if any(d.deviceInfoCache) != nil {
+		if serializableField, ok := any(d.deviceInfoCache).(utils.Serializable); ok {
+			if err := writeBuffer.PushContext("deviceInfoCache"); err != nil {
+				return err
+			}
+			if err := serializableField.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+				return err
+			}
+			if err := writeBuffer.PopContext("deviceInfoCache"); err != nil {
+				return err
+			}
+		} else {
+			stringValue := fmt.Sprintf("%v", d.deviceInfoCache)
+			if err := writeBuffer.WriteString("deviceInfoCache", uint32(len(stringValue)*8), stringValue); err != nil {
+				return err
+			}
 		}
 	}
 	if d.localAddress != nil {
diff --git a/plc4go/internal/bacnetip/MessageCodec.go b/plc4go/internal/bacnetip/MessageCodec.go
index 293c5d30b7..1c5955b580 100644
--- a/plc4go/internal/bacnetip/MessageCodec.go
+++ b/plc4go/internal/bacnetip/MessageCodec.go
@@ -21,10 +21,6 @@ package bacnetip
 
 import (
 	"context"
-	"fmt"
-	"net"
-	"net/url"
-	"time"
 
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
@@ -34,183 +30,8 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/default"
 	"github.com/apache/plc4x/plc4go/spi/options"
 	"github.com/apache/plc4x/plc4go/spi/transports"
-	"github.com/apache/plc4x/plc4go/spi/transports/udp"
 )
 
-// ApplicationLayerMessageCodec is a wrapper for MessageCodec which takes care of segmentation, retries etc.
-//
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=ApplicationLayerMessageCodec
-type ApplicationLayerMessageCodec struct {
-	bipSimpleApplication *BIPSimpleApplication
-	messageCode          *MessageCodec
-	deviceInfoCache      DeviceInfoCache
-
-	localAddress  *net.UDPAddr `stringer:"true"`
-	remoteAddress *net.UDPAddr `stringer:"true"`
-
-	log zerolog.Logger `ignore:"true"`
-}
-
-func NewApplicationLayerMessageCodec(localLog zerolog.Logger, udpTransport *udp.Transport, transportUrl url.URL, options map[string][]string, localAddress *net.UDPAddr, remoteAddress *net.UDPAddr) (*ApplicationLayerMessageCodec, error) {
-	// TODO: currently this is done by the BIP down below
-	// Have the transport create a new transport-instance.
-	//transportInstance, err := udpTransport.CreateTransportInstanceForLocalAddress(transportUrl, options, localAddress)
-	//if err != nil {
-	//	return nil, errors.Wrap(err, "error creating transport instance")
-	//}
-	a := &ApplicationLayerMessageCodec{
-		localAddress:  localAddress,
-		remoteAddress: remoteAddress,
-
-		log: localLog,
-	}
-	address, err := NewAddress(localLog, localAddress)
-	if err != nil {
-		return nil, errors.Wrap(err, "error creating address")
-	}
-	// TODO: workaround for strange address parsing
-	at := AddressTuple[string, uint16]{fmt.Sprintf("%d.%d.%d.%d", address.AddrAddress[0], address.AddrAddress[1], address.AddrAddress[2], address.AddrAddress[3]), *address.AddrPort}
-	address.AddrTuple = &at
-	application, err := NewBIPSimpleApplication(localLog, &LocalDeviceObject{
-		NumberOfAPDURetries: func() *uint { retries := uint(10); return &retries }(),
-	}, *address, &a.deviceInfoCache, nil)
-	if err != nil {
-		return nil, err
-	}
-	a.bipSimpleApplication = application
-	// TODO: this is currently done by the BIP
-	//a.messageCode = NewMessageCodec(transportInstance)
-	return a, nil
-}
-
-func (m *ApplicationLayerMessageCodec) GetCodec() spi.MessageCodec {
-	return m
-}
-
-func (m *ApplicationLayerMessageCodec) Connect() error {
-	// TODO: this is currently done by the BIP
-	//	return m.messageCode.Connect()
-	return nil
-}
-
-func (m *ApplicationLayerMessageCodec) ConnectWithContext(ctx context.Context) error {
-	// TODO: this is currently done by the BIP
-	//	return m.messageCode.ConnectWithContext(ctx)
-	return nil
-}
-
-func (m *ApplicationLayerMessageCodec) Disconnect() error {
-	if err := m.bipSimpleApplication.Close(); err != nil {
-		m.log.Error().Err(err).Msg("error closing application")
-	}
-	return m.messageCode.Disconnect()
-}
-
-func (m *ApplicationLayerMessageCodec) IsRunning() bool {
-	return m.messageCode.IsRunning()
-}
-
-func (m *ApplicationLayerMessageCodec) Send(message spi.Message) error {
-	address, err := NewAddress(m.log, m.remoteAddress)
-	if err != nil {
-		return err
-	}
-	iocb, err := NewIOCB(m.log, NewPDU(message, WithPDUDestination(address)), address)
-	if err != nil {
-		return errors.Wrap(err, "error creating IOCB")
-	}
-	go func() {
-		go func() {
-			if err := m.bipSimpleApplication.RequestIO(iocb); err != nil {
-				m.log.Debug().Err(err).Msg("errored")
-			}
-		}()
-		iocb.Wait()
-		if iocb.ioError != nil {
-			// TODO: handle error
-			fmt.Printf("Err: %v\n", iocb.ioError)
-		} else if iocb.ioResponse != nil {
-			// TODO: response?
-			fmt.Printf("Response: %v\n", iocb.ioResponse)
-		} else {
-			// TODO: what now?
-		}
-	}()
-	return nil
-}
-
-func (m *ApplicationLayerMessageCodec) Expect(ctx context.Context, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
-	// TODO: implement me
-	panic("not yet implemented")
-}
-
-func (m *ApplicationLayerMessageCodec) SendRequest(ctx context.Context, message spi.Message, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
-	address, err := NewAddress(m.log, m.remoteAddress)
-	if err != nil {
-		return err
-	}
-	iocb, err := NewIOCB(m.log, NewPDU(message, WithPDUDestination(address)), address)
-	if err != nil {
-		return errors.Wrap(err, "error creating IOCB")
-	}
-	go func() {
-		go func() {
-			if err := m.bipSimpleApplication.RequestIO(iocb); err != nil {
-
-			}
-		}()
-		iocb.Wait()
-		if err := iocb.ioError; err != nil {
-			if err := handleError(err); err != nil {
-				m.log.Debug().Err(err).Msg("error handling error")
-				return
-			}
-		} else if response := iocb.ioResponse; response != nil {
-			// TODO: we wrap it into a BVLC for now. Once we change the Readers etc. to accept apdus we can remove that
-			tempBVLC := model.NewBVLCOriginalUnicastNPDU(
-				model.NewNPDU(
-					0,
-					model.NewNPDUControl(
-						false,
-						false,
-						false,
-						false,
-						model.NPDUNetworkPriority_NORMAL_MESSAGE,
-					),
-					nil,
-					nil,
-					nil,
-					nil,
-					nil,
-					nil,
-					nil,
-					nil,
-					response.GetRootMessage().(model.APDU),
-					0,
-				),
-				0,
-			)
-			if acceptsMessage(tempBVLC) {
-				if err := handleMessage(
-					tempBVLC,
-				); err != nil {
-					m.log.Debug().Err(err).Msg("error handling message")
-					return
-				}
-			}
-		} else {
-			// TODO: what now?
-		}
-	}()
-	return nil
-}
-
-func (m *ApplicationLayerMessageCodec) GetDefaultIncomingMessageChannel() chan spi.Message {
-	// TODO: this is currently done by the BIP
-	//return m.messageCode.GetDefaultIncomingMessageChannel()
-	return make(chan spi.Message)
-}
-
 //go:generate go run ../../tools/plc4xgenerator/gen.go -type=MessageCodec
 type MessageCodec struct {
 	_default.DefaultCodec
diff --git a/plc4go/internal/bacnetip/Subscriber_plc4xgen.go b/plc4go/internal/bacnetip/Subscriber_plc4xgen.go
index d4eace4731..d638cab514 100644
--- a/plc4go/internal/bacnetip/Subscriber_plc4xgen.go
+++ b/plc4go/internal/bacnetip/Subscriber_plc4xgen.go
@@ -82,8 +82,8 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 	for _, elem := range d._options {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/internal/bacnetip/bacgopes/BIPSimpleApplication_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/BIPSimpleApplication_plc4xgen.go
new file mode 100644
index 0000000000..1d9cf6ee23
--- /dev/null
+++ b/plc4go/internal/bacnetip/bacgopes/BIPSimpleApplication_plc4xgen.go
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// Code generated by "plc4xgenerator -type=BIPSimpleApplication"; DO NOT EDIT.
+
+package bacgopes
+
+import (
+	"context"
+	"encoding/binary"
+	"fmt"
+	"github.com/apache/plc4x/plc4go/spi/utils"
+)
+
+var _ = fmt.Printf
+
+func (d *BIPSimpleApplication) Serialize() ([]byte, error) {
+	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
+	if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
+		return nil, err
+	}
+	return wb.GetBytes(), nil
+}
+
+func (d *BIPSimpleApplication) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	if err := writeBuffer.PushContext("BIPSimpleApplication"); err != nil {
+		return err
+	}
+	if err := d.ApplicationIOController.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+		return err
+	}
+	if err := d.WhoIsIAmServices.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+		return err
+	}
+	if err := d.ReadWritePropertyServices.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
+		return err
+	}
+	{
+		_value := fmt.Sprintf("%v", d.localAddress)
+
+		if err := writeBuffer.WriteString("localAddress", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.asap)
+
+		if err := writeBuffer.WriteString("asap", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.smap)
+
+		if err := writeBuffer.WriteString("smap", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.nsap)
+
+		if err := writeBuffer.WriteString("nsap", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.nse)
+
+		if err := writeBuffer.WriteString("nse", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.bip)
+
+		if err := writeBuffer.WriteString("bip", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.annexj)
+
+		if err := writeBuffer.WriteString("annexj", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	{
+		_value := fmt.Sprintf("%v", d.mux)
+
+		if err := writeBuffer.WriteString("mux", uint32(len(_value)*8), _value); err != nil {
+			return err
+		}
+	}
+	if err := writeBuffer.PopContext("BIPSimpleApplication"); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (d *BIPSimpleApplication) String() string {
+	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
+	if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
+		return err.Error()
+	}
+	return writeBuffer.GetBox().String()
+}
diff --git a/plc4go/internal/bacnetip/IOQueue_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/Capability_plc4xgen.go
similarity index 74%
copy from plc4go/internal/bacnetip/IOQueue_plc4xgen.go
copy to plc4go/internal/bacnetip/bacgopes/Capability_plc4xgen.go
index d1dbbabe14..df95b9145f 100644
--- a/plc4go/internal/bacnetip/IOQueue_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/Capability_plc4xgen.go
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=IOQueue"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=Capability"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
@@ -30,7 +30,7 @@ import (
 
 var _ = fmt.Printf
 
-func (d *IOQueue) Serialize() ([]byte, error) {
+func (d *Capability) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
 	if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
@@ -38,21 +38,17 @@ func (d *IOQueue) Serialize() ([]byte, error) {
 	return wb.GetBytes(), nil
 }
 
-func (d *IOQueue) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
-	if err := writeBuffer.PushContext("IOQueue"); err != nil {
+func (d *Capability) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	if err := writeBuffer.PushContext("Capability"); err != nil {
 		return err
 	}
-
-	if err := writeBuffer.WriteString("name", uint32(len(d.name)*8), d.name); err != nil {
-		return err
-	}
-	if err := writeBuffer.PopContext("IOQueue"); err != nil {
+	if err := writeBuffer.PopContext("Capability"); err != nil {
 		return err
 	}
 	return nil
 }
 
-func (d *IOQueue) String() string {
+func (d *Capability) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
 	if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
 		return err.Error()
diff --git a/plc4go/internal/bacnetip/DeviceInfo_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/DeviceInfo_plc4xgen.go
similarity index 96%
rename from plc4go/internal/bacnetip/DeviceInfo_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/DeviceInfo_plc4xgen.go
index a05a31109d..72d3623618 100644
--- a/plc4go/internal/bacnetip/DeviceInfo_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/DeviceInfo_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=DeviceInfo"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
@@ -43,8 +43,8 @@ func (d *DeviceInfo) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		return err
 	}
 
-	if d.DeviceIdentifier != nil {
-		if serializableField, ok := d.DeviceIdentifier.(utils.Serializable); ok {
+	if any(d.DeviceIdentifier) != nil {
+		if serializableField, ok := any(d.DeviceIdentifier).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("deviceIdentifier"); err != nil {
 				return err
 			}
diff --git a/plc4go/internal/bacnetip/IOCB_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/IOCB_plc4xgen.go
similarity index 99%
rename from plc4go/internal/bacnetip/IOCB_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/IOCB_plc4xgen.go
index 740fb67018..9c38076254 100644
--- a/plc4go/internal/bacnetip/IOCB_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/IOCB_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=IOCB"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/IOController_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/IOController_plc4xgen.go
similarity index 99%
rename from plc4go/internal/bacnetip/IOController_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/IOController_plc4xgen.go
index 6c4e8413de..05c322f737 100644
--- a/plc4go/internal/bacnetip/IOController_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/IOController_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=IOController"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/IOQController_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/IOQController_plc4xgen.go
similarity index 99%
rename from plc4go/internal/bacnetip/IOQController_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/IOQController_plc4xgen.go
index 051d87b85c..1425ec7aed 100644
--- a/plc4go/internal/bacnetip/IOQController_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/IOQController_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=IOQController"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/IOQueue_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/IOQueue_plc4xgen.go
similarity index 99%
copy from plc4go/internal/bacnetip/IOQueue_plc4xgen.go
copy to plc4go/internal/bacnetip/bacgopes/IOQueue_plc4xgen.go
index d1dbbabe14..75e44bb3cf 100644
--- a/plc4go/internal/bacnetip/IOQueue_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/IOQueue_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=IOQueue"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/IOQueue_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/ReadWritePropertyServices_plc4xgen.go
similarity index 73%
rename from plc4go/internal/bacnetip/IOQueue_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/ReadWritePropertyServices_plc4xgen.go
index d1dbbabe14..ab7c1d3a82 100644
--- a/plc4go/internal/bacnetip/IOQueue_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/ReadWritePropertyServices_plc4xgen.go
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=IOQueue"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=ReadWritePropertyServices"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
@@ -30,7 +30,7 @@ import (
 
 var _ = fmt.Printf
 
-func (d *IOQueue) Serialize() ([]byte, error) {
+func (d *ReadWritePropertyServices) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
 	if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
@@ -38,21 +38,17 @@ func (d *IOQueue) Serialize() ([]byte, error) {
 	return wb.GetBytes(), nil
 }
 
-func (d *IOQueue) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
-	if err := writeBuffer.PushContext("IOQueue"); err != nil {
+func (d *ReadWritePropertyServices) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	if err := writeBuffer.PushContext("ReadWritePropertyServices"); err != nil {
 		return err
 	}
-
-	if err := writeBuffer.WriteString("name", uint32(len(d.name)*8), d.name); err != nil {
-		return err
-	}
-	if err := writeBuffer.PopContext("IOQueue"); err != nil {
+	if err := writeBuffer.PopContext("ReadWritePropertyServices"); err != nil {
 		return err
 	}
 	return nil
 }
 
-func (d *IOQueue) String() string {
+func (d *ReadWritePropertyServices) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
 	if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
 		return err.Error()
diff --git a/plc4go/internal/bacnetip/SieveQueue_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/SieveQueue_plc4xgen.go
similarity index 99%
rename from plc4go/internal/bacnetip/SieveQueue_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/SieveQueue_plc4xgen.go
index 59875cb620..c3ae682d78 100644
--- a/plc4go/internal/bacnetip/SieveQueue_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/SieveQueue_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=SieveQueue"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/UDPActor_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/UDPActor_plc4xgen.go
similarity index 99%
copy from plc4go/internal/bacnetip/UDPActor_plc4xgen.go
copy to plc4go/internal/bacnetip/bacgopes/UDPActor_plc4xgen.go
index f164def31c..372a5f6d74 100644
--- a/plc4go/internal/bacnetip/UDPActor_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/UDPActor_plc4xgen.go
@@ -19,7 +19,7 @@
 
 // Code generated by "plc4xgenerator -type=UDPActor"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/UDPActor_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/WhoIsIAmServices_plc4xgen.go
similarity index 63%
rename from plc4go/internal/bacnetip/UDPActor_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/WhoIsIAmServices_plc4xgen.go
index f164def31c..7633f452cf 100644
--- a/plc4go/internal/bacnetip/UDPActor_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/WhoIsIAmServices_plc4xgen.go
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=UDPActor"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=WhoIsIAmServices"; DO NOT EDIT.
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
@@ -30,7 +30,7 @@ import (
 
 var _ = fmt.Printf
 
-func (d *UDPActor) Serialize() ([]byte, error) {
+func (d *WhoIsIAmServices) Serialize() ([]byte, error) {
 	wb := utils.NewWriteBufferByteBased(utils.WithByteOrderForByteBasedBuffer(binary.BigEndian))
 	if err := d.SerializeWithWriteBuffer(context.Background(), wb); err != nil {
 		return nil, err
@@ -38,39 +38,34 @@ func (d *UDPActor) Serialize() ([]byte, error) {
 	return wb.GetBytes(), nil
 }
 
-func (d *UDPActor) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
-	if err := writeBuffer.PushContext("UDPActor"); err != nil {
+func (d *WhoIsIAmServices) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils.WriteBuffer) error {
+	if err := writeBuffer.PushContext("WhoIsIAmServices"); err != nil {
 		return err
 	}
 	{
-		_value := fmt.Sprintf("%v", d.director)
+		_value := fmt.Sprintf("%v", d._requirements)
 
-		if err := writeBuffer.WriteString("director", uint32(len(_value)*8), _value); err != nil {
+		if err := writeBuffer.WriteString("_requirements", uint32(len(_value)*8), _value); err != nil {
 			return err
 		}
 	}
-
-	if err := writeBuffer.WriteUint32("timeout", 32, d.timeout); err != nil {
+	if err := d.Capability.SerializeWithWriteBuffer(ctx, writeBuffer); err != nil {
 		return err
 	}
 	{
-		_value := fmt.Sprintf("%v", d.timer)
+		_value := fmt.Sprintf("%v", d.localDevice)
 
-		if err := writeBuffer.WriteString("timer", uint32(len(_value)*8), _value); err != nil {
+		if err := writeBuffer.WriteString("localDevice", uint32(len(_value)*8), _value); err != nil {
 			return err
 		}
 	}
-
-	if err := writeBuffer.WriteString("peer", uint32(len(d.peer)*8), d.peer); err != nil {
-		return err
-	}
-	if err := writeBuffer.PopContext("UDPActor"); err != nil {
+	if err := writeBuffer.PopContext("WhoIsIAmServices"); err != nil {
 		return err
 	}
 	return nil
 }
 
-func (d *UDPActor) String() string {
+func (d *WhoIsIAmServices) String() string {
 	writeBuffer := utils.NewWriteBufferBoxBasedWithOptions(true, true)
 	if err := writeBuffer.WriteSerializable(context.Background(), d); err != nil {
 		return err.Error()
diff --git a/plc4go/internal/bacnetip/apdu.go b/plc4go/internal/bacnetip/bacgopes/apdu.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu.go
rename to plc4go/internal/bacnetip/bacgopes/apdu.go
index 535ba30bee..4a9db1c859 100644
--- a/plc4go/internal/bacnetip/apdu.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 
diff --git a/plc4go/internal/bacnetip/apdu_APCI.go b/plc4go/internal/bacnetip/bacgopes/apdu_APCI.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_APCI.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_APCI.go
index 034d4c6d3a..9e807b5202 100644
--- a/plc4go/internal/bacnetip/apdu_APCI.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_APCI.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
@@ -26,9 +26,8 @@ import (
 
 	"github.com/pkg/errors"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
 )
 
 type APCI interface {
diff --git a/plc4go/internal/bacnetip/apdu_APCISequence.go b/plc4go/internal/bacnetip/bacgopes/apdu_APCISequence.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_APCISequence.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_APCISequence.go
index fc08d07bd7..67b9dc9c4c 100644
--- a/plc4go/internal/bacnetip/apdu_APCISequence.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_APCISequence.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/apdu_APDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_APDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_APDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_APDU.go
index 95389aba2a..fdf55d164e 100644
--- a/plc4go/internal/bacnetip/apdu_APDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_APDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/apdu_AbortPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_AbortPDU.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AbortPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AbortPDU.go
index 2d7c0d6282..2a3ea1761a 100644
--- a/plc4go/internal/bacnetip/apdu_AbortPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AbortPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AbortPDU struct {
diff --git a/plc4go/internal/bacnetip/apdu_AbortReason.go b/plc4go/internal/bacnetip/bacgopes/apdu_AbortReason.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AbortReason.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AbortReason.go
index 60cf98a6fd..f8ec216c9a 100644
--- a/plc4go/internal/bacnetip/apdu_AbortReason.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AbortReason.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AbortReason struct {
diff --git a/plc4go/internal/bacnetip/apdu_AcknowledgeAlarmRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_AcknowledgeAlarmRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AcknowledgeAlarmRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AcknowledgeAlarmRequest.go
index 0b39aee23c..8e641eda1d 100644
--- a/plc4go/internal/bacnetip/apdu_AcknowledgeAlarmRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AcknowledgeAlarmRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AcknowledgeAlarmRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_AddListElementRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_AddListElementRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AddListElementRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AddListElementRequest.go
index b4147cc868..3db1aef47d 100644
--- a/plc4go/internal/bacnetip/apdu_AddListElementRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AddListElementRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AddListElementRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodChoice.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodChoice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodChoice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodChoice.go
index 073079632c..d5a0a960eb 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodChoice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodChoice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileACKAccessMethodChoice struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodRecordAccess.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodRecordAccess.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodRecordAccess.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodRecordAccess.go
index ffc7de96b9..00d6363f25 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodRecordAccess.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodRecordAccess.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileACKAccessMethodRecordAccess struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodStreamAccess.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodStreamAccess.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodStreamAccess.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodStreamAccess.go
index e06aeb8b2e..9d6879644c 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileACKAccessMethodStreamAccess.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileACKAccessMethodStreamAccess.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileACKAccessMethodStreamAccess struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequest.go
index cf2d225e7d..60c8259dd7 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoice.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoice.go
index 8a95e33aed..5fb29bfb48 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileRequestAccessMethodChoice struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go
index 5e6b74871d..7890c2a7ad 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoiceRecordAccess.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileRequestAccessMethodChoiceRecordAccess struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go
index a18b606251..855563e242 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicReadFileRequestAccessMethodChoiceStreamAccess.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileRequestAccessMethodChoiceStreamAccess struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicWriteFileACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicWriteFileACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileACK.go
index 654c75c029..e0b20d4c29 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicWriteFileACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicWriteFileACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicWriteFileRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequest.go
index d6f1269e45..a80ee89b9d 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicWriteFileRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoice.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoice.go
index ca2a69a4b1..5f5637a662 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicWriteFileRequestAccessMethodChoice struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go
index 81ddb57f91..2c9e0155b7 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoiceRecordAccess.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicWriteFileRequestAccessMethodChoiceRecordAccess struct {
diff --git a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go
index 5600c990e2..10cd2e850a 100644
--- a/plc4go/internal/bacnetip/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AtomicWriteFileRequestAccessMethodChoiceStreamAccess.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicWriteFileRequestAccessMethodChoiceStreamAccess struct {
diff --git a/plc4go/internal/bacnetip/apdu_AuthenticateACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_AuthenticateACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AuthenticateACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AuthenticateACK.go
index 0a6fe63de9..782a4f1974 100644
--- a/plc4go/internal/bacnetip/apdu_AuthenticateACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AuthenticateACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AuthenticateACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_AuthenticateRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_AuthenticateRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_AuthenticateRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_AuthenticateRequest.go
index 5c2eae83f8..56d32c2c69 100644
--- a/plc4go/internal/bacnetip/apdu_AuthenticateRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_AuthenticateRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AuthenticateRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_COVNotificationParameters.go b/plc4go/internal/bacnetip/bacgopes/apdu_COVNotificationParameters.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_COVNotificationParameters.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_COVNotificationParameters.go
index d915042c56..8f62a589d3 100644
--- a/plc4go/internal/bacnetip/apdu_COVNotificationParameters.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_COVNotificationParameters.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type COVNotificationParameters struct {
diff --git a/plc4go/internal/bacnetip/apdu_ChangeListError.go b/plc4go/internal/bacnetip/bacgopes/apdu_ChangeListError.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ChangeListError.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ChangeListError.go
index c6741f9b10..642d38d0a1 100644
--- a/plc4go/internal/bacnetip/apdu_ChangeListError.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ChangeListError.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ChangeListError struct {
diff --git a/plc4go/internal/bacnetip/apdu_ComplexAckPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_ComplexAckPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_ComplexAckPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ComplexAckPDU.go
index 7b583c34d7..60e92ff1af 100644
--- a/plc4go/internal/bacnetip/apdu_ComplexAckPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ComplexAckPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 
diff --git a/plc4go/internal/bacnetip/apdu_ComplexAckSequence.go b/plc4go/internal/bacnetip/bacgopes/apdu_ComplexAckSequence.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ComplexAckSequence.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ComplexAckSequence.go
index 7c41890f96..722c66490d 100644
--- a/plc4go/internal/bacnetip/apdu_ComplexAckSequence.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ComplexAckSequence.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ComplexAckSequence struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedCOVNotificationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedCOVNotificationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedCOVNotificationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedCOVNotificationRequest.go
index 3d9f0ab8bb..8601110ff4 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedCOVNotificationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedCOVNotificationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedCOVNotificationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedEventNotificationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedEventNotificationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedEventNotificationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedEventNotificationRequest.go
index fcf02d3e47..b610f2fcb2 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedEventNotificationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedEventNotificationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedEventNotificationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferACK.go
index 25b6ec3517..e94bc7cdbc 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedPrivateTransferACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferError.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferError.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferError.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferError.go
index f4f0309ed1..cf4505b6b0 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferError.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferError.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedPrivateTransferError struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferRequest.go
index 779d7e36a5..104f2de06d 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedPrivateTransferRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedPrivateTransferRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import "fmt"
 
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedRequestPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedRequestPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_ConfirmedRequestPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedRequestPDU.go
index 59eca5bcbc..fc46330ea8 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedRequestPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedRequestPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedRequestSequence.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedRequestSequence.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedRequestSequence.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedRequestSequence.go
index e23b61c20d..3e62ea68f4 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedRequestSequence.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedRequestSequence.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedRequestSequence struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedServiceChoice.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedServiceChoice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedServiceChoice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedServiceChoice.go
index 978e958a6a..0e0d710874 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedServiceChoice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedServiceChoice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedServiceChoice struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequest.go
index 9d4c6c0003..aceb39d03c 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedTextMessageRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequestMessageClass.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequestMessageClass.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequestMessageClass.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequestMessageClass.go
index e3431e8a65..35cafc962f 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequestMessageClass.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequestMessageClass.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedTextMessageRequestMessageClass struct {
diff --git a/plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequestMessagePriority.go b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequestMessagePriority.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequestMessagePriority.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequestMessagePriority.go
index 5ee21ee9e0..7d0104d313 100644
--- a/plc4go/internal/bacnetip/apdu_ConfirmedTextMessageRequestMessagePriority.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ConfirmedTextMessageRequestMessagePriority.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ConfirmedTextMessageRequestMessagePriority struct {
diff --git a/plc4go/internal/bacnetip/apdu_CreateObjectACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_CreateObjectACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectACK.go
index f62c145c07..082642e5cb 100644
--- a/plc4go/internal/bacnetip/apdu_CreateObjectACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type CreateObjectACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_CreateObjectError.go b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectError.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_CreateObjectError.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectError.go
index f8db5d81b8..6bdd77a817 100644
--- a/plc4go/internal/bacnetip/apdu_CreateObjectError.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectError.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type CreateObjectError struct {
diff --git a/plc4go/internal/bacnetip/apdu_CreateObjectRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_CreateObjectRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectRequest.go
index 0364a4e61a..6386989893 100644
--- a/plc4go/internal/bacnetip/apdu_CreateObjectRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type CreateObjectRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_CreateObjectRequestObjectSpecifier.go b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectRequestObjectSpecifier.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_CreateObjectRequestObjectSpecifier.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectRequestObjectSpecifier.go
index 69460f068e..0077c501dd 100644
--- a/plc4go/internal/bacnetip/apdu_CreateObjectRequestObjectSpecifier.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_CreateObjectRequestObjectSpecifier.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type CreateObjectRequestObjectSpecifier struct {
diff --git a/plc4go/internal/bacnetip/apdu_DeleteObjectRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_DeleteObjectRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_DeleteObjectRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_DeleteObjectRequest.go
index 43f36e64c0..2790a91e0a 100644
--- a/plc4go/internal/bacnetip/apdu_DeleteObjectRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_DeleteObjectRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type DeleteObjectRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_DeviceCommunicationControlRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_DeviceCommunicationControlRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_DeviceCommunicationControlRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_DeviceCommunicationControlRequest.go
index 3db46bd09b..82e3df8e5b 100644
--- a/plc4go/internal/bacnetip/apdu_DeviceCommunicationControlRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_DeviceCommunicationControlRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type DeviceCommunicationControlRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_DeviceCommunicationControlRequestEnableDisable.go b/plc4go/internal/bacnetip/bacgopes/apdu_DeviceCommunicationControlRequestEnableDisable.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_DeviceCommunicationControlRequestEnableDisable.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_DeviceCommunicationControlRequestEnableDisable.go
index 8981df59ee..525fea6809 100644
--- a/plc4go/internal/bacnetip/apdu_DeviceCommunicationControlRequestEnableDisable.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_DeviceCommunicationControlRequestEnableDisable.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type DeviceCommunicationControlRequestEnableDisable struct {
diff --git a/plc4go/internal/bacnetip/apdu_Error.go b/plc4go/internal/bacnetip/bacgopes/apdu_Error.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_Error.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_Error.go
index 8c12570579..909837bcec 100644
--- a/plc4go/internal/bacnetip/apdu_Error.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_Error.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type Error struct {
diff --git a/plc4go/internal/bacnetip/apdu_ErrorPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_ErrorPDU.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ErrorPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ErrorPDU.go
index 61b13f2a55..834f9d42c8 100644
--- a/plc4go/internal/bacnetip/apdu_ErrorPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ErrorPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ErrorPDU struct {
diff --git a/plc4go/internal/bacnetip/apdu_ErrorSequence.go b/plc4go/internal/bacnetip/bacgopes/apdu_ErrorSequence.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ErrorSequence.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ErrorSequence.go
index ef8e7720b2..22826e0a76 100644
--- a/plc4go/internal/bacnetip/apdu_ErrorSequence.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ErrorSequence.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ErrorSequence struct {
diff --git a/plc4go/internal/bacnetip/apdu_EventNotificationParameters.go b/plc4go/internal/bacnetip/bacgopes/apdu_EventNotificationParameters.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_EventNotificationParameters.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_EventNotificationParameters.go
index f0a739d834..75ce764793 100644
--- a/plc4go/internal/bacnetip/apdu_EventNotificationParameters.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_EventNotificationParameters.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type EventNotificationParameters struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetAlarmSummaryACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetAlarmSummaryACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryACK.go
index 3ba1b2a49c..ab02682d33 100644
--- a/plc4go/internal/bacnetip/apdu_GetAlarmSummaryACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetAlarmSummaryACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetAlarmSummaryAlarmSummary.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryAlarmSummary.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetAlarmSummaryAlarmSummary.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryAlarmSummary.go
index 53542b7c40..8dae0149ee 100644
--- a/plc4go/internal/bacnetip/apdu_GetAlarmSummaryAlarmSummary.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryAlarmSummary.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetAlarmSummaryAlarmSummary struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetAlarmSummaryRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetAlarmSummaryRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryRequest.go
index acb053d06c..1d70a23bc4 100644
--- a/plc4go/internal/bacnetip/apdu_GetAlarmSummaryRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetAlarmSummaryRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetAlarmSummaryRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryACK.go
index 2ae4807a39..003b7f84e1 100644
--- a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEnrollmentSummaryACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryEnrollmentSummary.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryEnrollmentSummary.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryEnrollmentSummary.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryEnrollmentSummary.go
index 60f05197d4..35b0c727fe 100644
--- a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryEnrollmentSummary.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryEnrollmentSummary.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEnrollmentSummaryEnrollmentSummary struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequest.go
index 289e704197..cb729f915c 100644
--- a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEnrollmentSummaryRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go
index c1ebe1cc32..9828e1ed13 100644
--- a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestAcknowledgmentFilterType.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEnrollmentSummaryRequestAcknowledgmentFilterType struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go
index b39c721b91..4b20411413 100644
--- a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestEventStateFilterType.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEnrollmentSummaryRequestEventStateFilterType struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go
index 21431ff12d..98da49f33e 100644
--- a/plc4go/internal/bacnetip/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEnrollmentSummaryRequestPriorityFilterType.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEnrollmentSummaryRequestPriorityFilterType struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEventInformationACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEventInformationACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationACK.go
index 7aa7808420..537516b6fc 100644
--- a/plc4go/internal/bacnetip/apdu_GetEventInformationACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEventInformationACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEventInformationEventSummary.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationEventSummary.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEventInformationEventSummary.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationEventSummary.go
index 9d68848544..2d8173127a 100644
--- a/plc4go/internal/bacnetip/apdu_GetEventInformationEventSummary.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationEventSummary.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEventInformationEventSummary struct {
diff --git a/plc4go/internal/bacnetip/apdu_GetEventInformationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GetEventInformationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationRequest.go
index 67371d37b4..383c938e40 100644
--- a/plc4go/internal/bacnetip/apdu_GetEventInformationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GetEventInformationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GetEventInformationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_GroupChannelValue.go b/plc4go/internal/bacnetip/bacgopes/apdu_GroupChannelValue.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_GroupChannelValue.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_GroupChannelValue.go
index bb579dfe86..368c9852ad 100644
--- a/plc4go/internal/bacnetip/apdu_GroupChannelValue.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_GroupChannelValue.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type GroupChannelValue struct {
diff --git a/plc4go/internal/bacnetip/apdu_IAmRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_IAmRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_IAmRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_IAmRequest.go
index f0a2232552..2392cf6200 100644
--- a/plc4go/internal/bacnetip/apdu_IAmRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_IAmRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type IAmRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_IHaveRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_IHaveRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_IHaveRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_IHaveRequest.go
index 79e7cf35f0..2a9cf9acf1 100644
--- a/plc4go/internal/bacnetip/apdu_IHaveRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_IHaveRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type IHaveRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_LifeSafetyOperationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_LifeSafetyOperationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_LifeSafetyOperationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_LifeSafetyOperationRequest.go
index 3c90938e9c..34ad9f0872 100644
--- a/plc4go/internal/bacnetip/apdu_LifeSafetyOperationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_LifeSafetyOperationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type LifeSafetyOperationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_Range.go b/plc4go/internal/bacnetip/bacgopes/apdu_Range.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_Range.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_Range.go
index 30bfe5f0d2..0501c4f5c7 100644
--- a/plc4go/internal/bacnetip/apdu_Range.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_Range.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type Range struct {
diff --git a/plc4go/internal/bacnetip/apdu_RangeByPosition.go b/plc4go/internal/bacnetip/bacgopes/apdu_RangeByPosition.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RangeByPosition.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RangeByPosition.go
index b7c05c0d05..c4900f08dd 100644
--- a/plc4go/internal/bacnetip/apdu_RangeByPosition.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RangeByPosition.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RangeByPosition struct {
diff --git a/plc4go/internal/bacnetip/apdu_RangeBySequenceNumber.go b/plc4go/internal/bacnetip/bacgopes/apdu_RangeBySequenceNumber.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RangeBySequenceNumber.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RangeBySequenceNumber.go
index a603c1eacf..dde568bbb4 100644
--- a/plc4go/internal/bacnetip/apdu_RangeBySequenceNumber.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RangeBySequenceNumber.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RangeBySequenceNumber struct {
diff --git a/plc4go/internal/bacnetip/apdu_RangeByTime.go b/plc4go/internal/bacnetip/bacgopes/apdu_RangeByTime.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RangeByTime.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RangeByTime.go
index e527e64da8..08be135a2e 100644
--- a/plc4go/internal/bacnetip/apdu_RangeByTime.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RangeByTime.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RangeByTime struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadAccessResult.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResult.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadAccessResult.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResult.go
index 8ade9109d9..2e73a01717 100644
--- a/plc4go/internal/bacnetip/apdu_ReadAccessResult.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResult.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadAccessResult struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadAccessResultElement.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResultElement.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadAccessResultElement.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResultElement.go
index 6f90f05742..775252a53a 100644
--- a/plc4go/internal/bacnetip/apdu_ReadAccessResultElement.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResultElement.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadAccessResultElement struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadAccessResultElementChoice.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResultElementChoice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadAccessResultElementChoice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResultElementChoice.go
index 655d476698..df8c2fc598 100644
--- a/plc4go/internal/bacnetip/apdu_ReadAccessResultElementChoice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessResultElementChoice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadAccessResultElementChoice struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadAccessSpecification.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessSpecification.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadAccessSpecification.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessSpecification.go
index 70a5c68aa1..dee28c8555 100644
--- a/plc4go/internal/bacnetip/apdu_ReadAccessSpecification.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadAccessSpecification.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadAccessSpecification struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadPropertyACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadPropertyACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyACK.go
index 1625acd335..3c6de16a3d 100644
--- a/plc4go/internal/bacnetip/apdu_ReadPropertyACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadPropertyACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadPropertyMultipleACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyMultipleACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadPropertyMultipleACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyMultipleACK.go
index fa27f82cc3..c85a585549 100644
--- a/plc4go/internal/bacnetip/apdu_ReadPropertyMultipleACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyMultipleACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadPropertyMultipleACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadPropertyMultipleRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyMultipleRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadPropertyMultipleRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyMultipleRequest.go
index 3ba456f22a..dcbb170171 100644
--- a/plc4go/internal/bacnetip/apdu_ReadPropertyMultipleRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyMultipleRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadPropertyMultipleRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadPropertyRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadPropertyRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyRequest.go
index c014ef023f..794a8e4b6c 100644
--- a/plc4go/internal/bacnetip/apdu_ReadPropertyRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadPropertyRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadPropertyRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadRangeACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadRangeACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadRangeACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadRangeACK.go
index 0d52265189..99a8c31037 100644
--- a/plc4go/internal/bacnetip/apdu_ReadRangeACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadRangeACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadRangeACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReadRangeRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReadRangeRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReadRangeRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReadRangeRequest.go
index 07ce5ce1be..593475f75c 100644
--- a/plc4go/internal/bacnetip/apdu_ReadRangeRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReadRangeRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReadRangeRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReinitializeDeviceRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReinitializeDeviceRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReinitializeDeviceRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReinitializeDeviceRequest.go
index 076379df06..ed4dd054bb 100644
--- a/plc4go/internal/bacnetip/apdu_ReinitializeDeviceRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReinitializeDeviceRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReinitializeDeviceRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go b/plc4go/internal/bacnetip/bacgopes/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go
index 2688c04ee6..edf4a5087c 100644
--- a/plc4go/internal/bacnetip/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_ReinitializeDeviceRequestReinitializedStateOfDevice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type ReinitializeDeviceRequestReinitializedStateOfDevice struct {
diff --git a/plc4go/internal/bacnetip/apdu_RejectPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_RejectPDU.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RejectPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RejectPDU.go
index a5abaaa3ab..6b7adfd330 100644
--- a/plc4go/internal/bacnetip/apdu_RejectPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RejectPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RejectPDU struct {
diff --git a/plc4go/internal/bacnetip/apdu_RejectReason.go b/plc4go/internal/bacnetip/bacgopes/apdu_RejectReason.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RejectReason.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RejectReason.go
index b4a8a92969..5bb22cfbe0 100644
--- a/plc4go/internal/bacnetip/apdu_RejectReason.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RejectReason.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RejectReason struct {
diff --git a/plc4go/internal/bacnetip/apdu_RemoveListElementRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_RemoveListElementRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RemoveListElementRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RemoveListElementRequest.go
index 3036ba0c2b..1c613b3910 100644
--- a/plc4go/internal/bacnetip/apdu_RemoveListElementRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RemoveListElementRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RemoveListElementRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_RequestKeyRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_RequestKeyRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_RequestKeyRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_RequestKeyRequest.go
index 904b315310..0aceaa5abf 100644
--- a/plc4go/internal/bacnetip/apdu_RequestKeyRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_RequestKeyRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type RequestKeyRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_SegmentAckPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_SegmentAckPDU.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_SegmentAckPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_SegmentAckPDU.go
index 0ab190b9a4..680af8b9be 100644
--- a/plc4go/internal/bacnetip/apdu_SegmentAckPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_SegmentAckPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type SegmentAckPDU struct {
diff --git a/plc4go/internal/bacnetip/apdu_SimpleAckPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_SimpleAckPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_SimpleAckPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_SimpleAckPDU.go
index 3a8c4bbf3c..7326393ed5 100644
--- a/plc4go/internal/bacnetip/apdu_SimpleAckPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_SimpleAckPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 
diff --git a/plc4go/internal/bacnetip/apdu_SubscribeCOVPropertyRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_SubscribeCOVPropertyRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_SubscribeCOVPropertyRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_SubscribeCOVPropertyRequest.go
index 9360688715..379f09b9ac 100644
--- a/plc4go/internal/bacnetip/apdu_SubscribeCOVPropertyRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_SubscribeCOVPropertyRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type SubscribeCOVPropertyRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_SubscribeCOVRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_SubscribeCOVRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_SubscribeCOVRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_SubscribeCOVRequest.go
index 071cbd8d04..a85a28e2ea 100644
--- a/plc4go/internal/bacnetip/apdu_SubscribeCOVRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_SubscribeCOVRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type SubscribeCOVRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_TimeSynchronizationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_TimeSynchronizationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_TimeSynchronizationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_TimeSynchronizationRequest.go
index df0bbb1626..0236386345 100644
--- a/plc4go/internal/bacnetip/apdu_TimeSynchronizationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_TimeSynchronizationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type TimeSynchronizationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_UTCTimeSynchronizationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_UTCTimeSynchronizationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UTCTimeSynchronizationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UTCTimeSynchronizationRequest.go
index 954342efe7..0cfe270740 100644
--- a/plc4go/internal/bacnetip/apdu_UTCTimeSynchronizationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UTCTimeSynchronizationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UTCTimeSynchronizationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedCOVNotificationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedCOVNotificationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedCOVNotificationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedCOVNotificationRequest.go
index ec6bb87529..87174b7e95 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedCOVNotificationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedCOVNotificationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedCOVNotificationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedEventNotificationRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedEventNotificationRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedEventNotificationRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedEventNotificationRequest.go
index e1a3cf6436..e05aa804d8 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedEventNotificationRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedEventNotificationRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedEventNotificationRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedPrivateTransferRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedPrivateTransferRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedPrivateTransferRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedPrivateTransferRequest.go
index cef009b835..b40058359e 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedPrivateTransferRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedPrivateTransferRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedPrivateTransferRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedRequestPDU.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedRequestPDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestPDU.go
index 33d7ba93fa..382b7b43de 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedRequestPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go
index fad671c2e3..75851f369c 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestPDUAtomicReadFileACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type AtomicReadFileACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedRequestSequence.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestSequence.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedRequestSequence.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestSequence.go
index c653daab79..61da101c63 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedRequestSequence.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedRequestSequence.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedServiceChoice.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedServiceChoice.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedServiceChoice.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedServiceChoice.go
index 5e64ca5f60..eed1a37598 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedServiceChoice.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedServiceChoice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedServiceChoice struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequest.go
index 9e4af2d91d..a55caad93a 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedTextMessageRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequestMessageClass.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequestMessageClass.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequestMessageClass.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequestMessageClass.go
index d0983e31e1..d9a4553f58 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequestMessageClass.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequestMessageClass.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedTextMessageRequestMessageClass struct {
diff --git a/plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequestMessagePriority.go b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequestMessagePriority.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequestMessagePriority.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequestMessagePriority.go
index 29ac74a7fa..ccbc36b584 100644
--- a/plc4go/internal/bacnetip/apdu_UnconfirmedTextMessageRequestMessagePriority.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_UnconfirmedTextMessageRequestMessagePriority.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type UnconfirmedTextMessageRequestMessagePriority struct {
diff --git a/plc4go/internal/bacnetip/apdu_VTCloseError.go b/plc4go/internal/bacnetip/bacgopes/apdu_VTCloseError.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_VTCloseError.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_VTCloseError.go
index 0f297507fa..52df32af15 100644
--- a/plc4go/internal/bacnetip/apdu_VTCloseError.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_VTCloseError.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type VTCloseError struct {
diff --git a/plc4go/internal/bacnetip/apdu_VTCloseRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_VTCloseRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_VTCloseRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_VTCloseRequest.go
index 146c814bb6..291b88db0b 100644
--- a/plc4go/internal/bacnetip/apdu_VTCloseRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_VTCloseRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type VTCloseRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_VTDataACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_VTDataACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_VTDataACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_VTDataACK.go
index 057ce89891..8dec978bf6 100644
--- a/plc4go/internal/bacnetip/apdu_VTDataACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_VTDataACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type VTDataACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_VTDataRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_VTDataRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_VTDataRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_VTDataRequest.go
index 3a5903a402..307a4e5351 100644
--- a/plc4go/internal/bacnetip/apdu_VTDataRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_VTDataRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type VTDataRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_VTOpenACK.go b/plc4go/internal/bacnetip/bacgopes/apdu_VTOpenACK.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_VTOpenACK.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_VTOpenACK.go
index 27f5380ab5..141cbc9649 100644
--- a/plc4go/internal/bacnetip/apdu_VTOpenACK.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_VTOpenACK.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type VTOpenACK struct {
diff --git a/plc4go/internal/bacnetip/apdu_VTOpenRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_VTOpenRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_VTOpenRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_VTOpenRequest.go
index 4be2298a7b..d07516807d 100644
--- a/plc4go/internal/bacnetip/apdu_VTOpenRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_VTOpenRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type VTOpenRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_WhoHasLimits.go b/plc4go/internal/bacnetip/bacgopes/apdu_WhoHasLimits.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WhoHasLimits.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WhoHasLimits.go
index d507f84c18..71c35ed1ee 100644
--- a/plc4go/internal/bacnetip/apdu_WhoHasLimits.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WhoHasLimits.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WhoHasLimits struct {
diff --git a/plc4go/internal/bacnetip/apdu_WhoHasObject.go b/plc4go/internal/bacnetip/bacgopes/apdu_WhoHasObject.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WhoHasObject.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WhoHasObject.go
index c651dd5cf5..f1fa8142ce 100644
--- a/plc4go/internal/bacnetip/apdu_WhoHasObject.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WhoHasObject.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WhoHasObject struct {
diff --git a/plc4go/internal/bacnetip/apdu_WhoHasRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_WhoHasRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WhoHasRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WhoHasRequest.go
index b708c50078..316b35f2a7 100644
--- a/plc4go/internal/bacnetip/apdu_WhoHasRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WhoHasRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WhoHasRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_WhoIsRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_WhoIsRequest.go
similarity index 99%
rename from plc4go/internal/bacnetip/apdu_WhoIsRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WhoIsRequest.go
index c3dfbd4e7a..459695705e 100644
--- a/plc4go/internal/bacnetip/apdu_WhoIsRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WhoIsRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/apdu_WriteAccessSpecification.go b/plc4go/internal/bacnetip/bacgopes/apdu_WriteAccessSpecification.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WriteAccessSpecification.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WriteAccessSpecification.go
index 37dd2fdd95..9ecb71f70e 100644
--- a/plc4go/internal/bacnetip/apdu_WriteAccessSpecification.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WriteAccessSpecification.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WriteAccessSpecification struct {
diff --git a/plc4go/internal/bacnetip/apdu_WriteGroupRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_WriteGroupRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WriteGroupRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WriteGroupRequest.go
index bd627dc62f..45cde0ccb8 100644
--- a/plc4go/internal/bacnetip/apdu_WriteGroupRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WriteGroupRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WriteGroupRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_WritePropertyMultipleError.go b/plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyMultipleError.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WritePropertyMultipleError.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyMultipleError.go
index ded6bc5a15..c7b155ee5d 100644
--- a/plc4go/internal/bacnetip/apdu_WritePropertyMultipleError.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyMultipleError.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WritePropertyMultipleError struct {
diff --git a/plc4go/internal/bacnetip/apdu_WritePropertyMultipleRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyMultipleRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WritePropertyMultipleRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyMultipleRequest.go
index deae1b06d3..33e4581729 100644
--- a/plc4go/internal/bacnetip/apdu_WritePropertyMultipleRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyMultipleRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WritePropertyMultipleRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu_WritePropertyRequest.go b/plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyRequest.go
similarity index 98%
rename from plc4go/internal/bacnetip/apdu_WritePropertyRequest.go
rename to plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyRequest.go
index 94b8acaba0..134fe7be2d 100644
--- a/plc4go/internal/bacnetip/apdu_WritePropertyRequest.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu_WritePropertyRequest.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // TODO: implement it...
 type WritePropertyRequest struct {
diff --git a/plc4go/internal/bacnetip/apdu__APDU.go b/plc4go/internal/bacnetip/bacgopes/apdu__APDU.go
similarity index 96%
rename from plc4go/internal/bacnetip/apdu__APDU.go
rename to plc4go/internal/bacnetip/bacgopes/apdu__APDU.go
index 73ca2a2ed9..637a76ff50 100644
--- a/plc4go/internal/bacnetip/apdu__APDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/apdu__APDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
@@ -25,9 +25,8 @@ import (
 
 	"github.com/pkg/errors"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
 )
 
 // _APDU masks the Encode() and Decode() functions of the APDU
diff --git a/plc4go/internal/bacnetip/app.go b/plc4go/internal/bacnetip/bacgopes/app.go
similarity index 97%
rename from plc4go/internal/bacnetip/app.go
rename to plc4go/internal/bacnetip/bacgopes/app.go
index 1c9b86f6c6..b3432951fd 100644
--- a/plc4go/internal/bacnetip/app.go
+++ b/plc4go/internal/bacnetip/bacgopes/app.go
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
diff --git a/plc4go/internal/bacnetip/app_Application.go b/plc4go/internal/bacnetip/bacgopes/app_Application.go
similarity index 99%
rename from plc4go/internal/bacnetip/app_Application.go
rename to plc4go/internal/bacnetip/bacgopes/app_Application.go
index d093871cb4..cc77862788 100644
--- a/plc4go/internal/bacnetip/app_Application.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_Application.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/app_ApplicationIOController.go b/plc4go/internal/bacnetip/bacgopes/app_ApplicationIOController.go
similarity index 99%
rename from plc4go/internal/bacnetip/app_ApplicationIOController.go
rename to plc4go/internal/bacnetip/bacgopes/app_ApplicationIOController.go
index 8b0ea299c0..4583197ba4 100644
--- a/plc4go/internal/bacnetip/app_ApplicationIOController.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_ApplicationIOController.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/app_BIPForeignApplication.go b/plc4go/internal/bacnetip/bacgopes/app_BIPForeignApplication.go
similarity index 99%
rename from plc4go/internal/bacnetip/app_BIPForeignApplication.go
rename to plc4go/internal/bacnetip/bacgopes/app_BIPForeignApplication.go
index eb8111e992..816e257e50 100644
--- a/plc4go/internal/bacnetip/app_BIPForeignApplication.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_BIPForeignApplication.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/app_BIPNetworkApplication.go b/plc4go/internal/bacnetip/bacgopes/app_BIPNetworkApplication.go
similarity index 99%
rename from plc4go/internal/bacnetip/app_BIPNetworkApplication.go
rename to plc4go/internal/bacnetip/bacgopes/app_BIPNetworkApplication.go
index cf96708570..6649304953 100644
--- a/plc4go/internal/bacnetip/app_BIPNetworkApplication.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_BIPNetworkApplication.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/app_BIPSimpleApplication.go b/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go
similarity index 97%
rename from plc4go/internal/bacnetip/app_BIPSimpleApplication.go
rename to plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go
index 37722db18c..18a6e65c15 100644
--- a/plc4go/internal/bacnetip/app_BIPSimpleApplication.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go
@@ -17,13 +17,14 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 )
 
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=BIPSimpleApplication
 type BIPSimpleApplication struct {
 	*ApplicationIOController
 	*WhoIsIAmServices
@@ -38,7 +39,7 @@ type BIPSimpleApplication struct {
 	annexj       *AnnexJCodec
 	mux          *UDPMultiplexer
 
-	log zerolog.Logger
+	log zerolog.Logger `ignore:"true"`
 }
 
 func NewBIPSimpleApplication(localLog zerolog.Logger, localDevice *LocalDeviceObject, localAddress Address, deviceInfoCache *DeviceInfoCache, aseID *int) (*BIPSimpleApplication, error) {
diff --git a/plc4go/internal/bacnetip/app_DeviceInfo.go b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go
similarity index 95%
rename from plc4go/internal/bacnetip/app_DeviceInfo.go
rename to plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go
index 3407b226c6..78d9fdb51c 100644
--- a/plc4go/internal/bacnetip/app_DeviceInfo.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=DeviceInfo
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=DeviceInfo
 type DeviceInfo struct {
 	DeviceIdentifier readWriteModel.BACnetTagPayloadObjectIdentifier
 	Address          Address
diff --git a/plc4go/internal/bacnetip/app_DeviceInfoCache.go b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfoCache.go
similarity index 99%
rename from plc4go/internal/bacnetip/app_DeviceInfoCache.go
rename to plc4go/internal/bacnetip/bacgopes/app_DeviceInfoCache.go
index 7465fccc44..080705001a 100644
--- a/plc4go/internal/bacnetip/app_DeviceInfoCache.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfoCache.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/appservice.go b/plc4go/internal/bacnetip/bacgopes/appservice.go
similarity index 97%
rename from plc4go/internal/bacnetip/appservice.go
rename to plc4go/internal/bacnetip/bacgopes/appservice.go
index 1c9b86f6c6..b3432951fd 100644
--- a/plc4go/internal/bacnetip/appservice.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice.go
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
diff --git a/plc4go/internal/bacnetip/appservice_ApplicationServiceAccessPoint.go b/plc4go/internal/bacnetip/bacgopes/appservice_ApplicationServiceAccessPoint.go
similarity index 99%
rename from plc4go/internal/bacnetip/appservice_ApplicationServiceAccessPoint.go
rename to plc4go/internal/bacnetip/bacgopes/appservice_ApplicationServiceAccessPoint.go
index 15f58ef02c..4b89f83488 100644
--- a/plc4go/internal/bacnetip/appservice_ApplicationServiceAccessPoint.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice_ApplicationServiceAccessPoint.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/appservice_ClientSSM.go b/plc4go/internal/bacnetip/bacgopes/appservice_ClientSSM.go
similarity index 99%
rename from plc4go/internal/bacnetip/appservice_ClientSSM.go
rename to plc4go/internal/bacnetip/bacgopes/appservice_ClientSSM.go
index de2f78eff4..87c9fc0737 100644
--- a/plc4go/internal/bacnetip/appservice_ClientSSM.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice_ClientSSM.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/appservice_SSM.go b/plc4go/internal/bacnetip/bacgopes/appservice_SSM.go
similarity index 99%
rename from plc4go/internal/bacnetip/appservice_SSM.go
rename to plc4go/internal/bacnetip/bacgopes/appservice_SSM.go
index 4a0ff5fb52..4960a64547 100644
--- a/plc4go/internal/bacnetip/appservice_SSM.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice_SSM.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"time"
diff --git a/plc4go/internal/bacnetip/appservice_ServerSSM.go b/plc4go/internal/bacnetip/bacgopes/appservice_ServerSSM.go
similarity index 99%
rename from plc4go/internal/bacnetip/appservice_ServerSSM.go
rename to plc4go/internal/bacnetip/bacgopes/appservice_ServerSSM.go
index 00212d2978..6ed9b1c6b7 100644
--- a/plc4go/internal/bacnetip/appservice_ServerSSM.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice_ServerSSM.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/appservice_StateMachineAccessPoint.go b/plc4go/internal/bacnetip/bacgopes/appservice_StateMachineAccessPoint.go
similarity index 99%
rename from plc4go/internal/bacnetip/appservice_StateMachineAccessPoint.go
rename to plc4go/internal/bacnetip/bacgopes/appservice_StateMachineAccessPoint.go
index 545090b984..fa2b8cbf79 100644
--- a/plc4go/internal/bacnetip/appservice_StateMachineAccessPoint.go
+++ b/plc4go/internal/bacnetip/bacgopes/appservice_StateMachineAccessPoint.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvll.go b/plc4go/internal/bacnetip/bacgopes/bvll.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll.go
rename to plc4go/internal/bacnetip/bacgopes/bvll.go
index 1a2324e31a..86ed8831b9 100644
--- a/plc4go/internal/bacnetip/bvll.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // BVLPDUTypes is a dictionary of message type values and structs
 var BVLPDUTypes map[uint8]func() interface{ Decode(Arg) error }
diff --git a/plc4go/internal/bacnetip/bvll_BVLCI.go b/plc4go/internal/bacnetip/bacgopes/bvll_BVLCI.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_BVLCI.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_BVLCI.go
index 20d4fcb8fe..a9373eff32 100644
--- a/plc4go/internal/bacnetip/bvll_BVLCI.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_BVLCI.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/bvll_BVLPDU.go b/plc4go/internal/bacnetip/bacgopes/bvll_BVLPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_BVLPDU.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_BVLPDU.go
index 2f4c3e8c43..65472cd222 100644
--- a/plc4go/internal/bacnetip/bvll_BVLPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_BVLPDU.go
@@ -17,16 +17,16 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
 	"fmt"
-	"github.com/apache/plc4x/plc4go/spi"
 
 	"github.com/pkg/errors"
 
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
+	"github.com/apache/plc4x/plc4go/spi"
 )
 
 type BVLPDU interface {
diff --git a/plc4go/internal/bacnetip/bvll_DeleteForeignDeviceTableEntry.go b/plc4go/internal/bacnetip/bacgopes/bvll_DeleteForeignDeviceTableEntry.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_DeleteForeignDeviceTableEntry.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_DeleteForeignDeviceTableEntry.go
index df17ea33b0..bfa4dc1b53 100644
--- a/plc4go/internal/bacnetip/bvll_DeleteForeignDeviceTableEntry.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_DeleteForeignDeviceTableEntry.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/bvll_DistributeBroadcastToNetwork.go b/plc4go/internal/bacnetip/bacgopes/bvll_DistributeBroadcastToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_DistributeBroadcastToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_DistributeBroadcastToNetwork.go
index 7e3d26c92b..d491798416 100644
--- a/plc4go/internal/bacnetip/bvll_DistributeBroadcastToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_DistributeBroadcastToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/bvll_FDTEntry.go b/plc4go/internal/bacnetip/bacgopes/bvll_FDTEntry.go
similarity index 98%
rename from plc4go/internal/bacnetip/bvll_FDTEntry.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_FDTEntry.go
index 71bef26abc..c588fd2006 100644
--- a/plc4go/internal/bacnetip/bvll_FDTEntry.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_FDTEntry.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import "fmt"
 
diff --git a/plc4go/internal/bacnetip/bvll_ForwardedNPDU.go b/plc4go/internal/bacnetip/bacgopes/bvll_ForwardedNPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_ForwardedNPDU.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_ForwardedNPDU.go
index a929bf4d9e..657ebfcc26 100644
--- a/plc4go/internal/bacnetip/bvll_ForwardedNPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_ForwardedNPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/bvll_OriginalBroadcastNPDU.go b/plc4go/internal/bacnetip/bacgopes/bvll_OriginalBroadcastNPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_OriginalBroadcastNPDU.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_OriginalBroadcastNPDU.go
index 09092895b0..2345bbd9be 100644
--- a/plc4go/internal/bacnetip/bvll_OriginalBroadcastNPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_OriginalBroadcastNPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/bvll_OriginalUnicastNPDU.go b/plc4go/internal/bacnetip/bacgopes/bvll_OriginalUnicastNPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_OriginalUnicastNPDU.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_OriginalUnicastNPDU.go
index 271f8a369b..fa8cccad33 100644
--- a/plc4go/internal/bacnetip/bvll_OriginalUnicastNPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_OriginalUnicastNPDU.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/bvll_ReadBroadcastDistributionTable.go b/plc4go/internal/bacnetip/bacgopes/bvll_ReadBroadcastDistributionTable.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_ReadBroadcastDistributionTable.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_ReadBroadcastDistributionTable.go
index abc4fba69d..9080f2f126 100644
--- a/plc4go/internal/bacnetip/bvll_ReadBroadcastDistributionTable.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_ReadBroadcastDistributionTable.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvll_ReadBroadcastDistributionTableAck.go b/plc4go/internal/bacnetip/bacgopes/bvll_ReadBroadcastDistributionTableAck.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_ReadBroadcastDistributionTableAck.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_ReadBroadcastDistributionTableAck.go
index 506a46b656..62ff53e263 100644
--- a/plc4go/internal/bacnetip/bvll_ReadBroadcastDistributionTableAck.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_ReadBroadcastDistributionTableAck.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/bvll_ReadForeignDeviceTable.go b/plc4go/internal/bacnetip/bacgopes/bvll_ReadForeignDeviceTable.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_ReadForeignDeviceTable.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_ReadForeignDeviceTable.go
index 2ed3a457f2..1d6b2e4a52 100644
--- a/plc4go/internal/bacnetip/bvll_ReadForeignDeviceTable.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_ReadForeignDeviceTable.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvll_ReadForeignDeviceTableAck.go b/plc4go/internal/bacnetip/bacgopes/bvll_ReadForeignDeviceTableAck.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_ReadForeignDeviceTableAck.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_ReadForeignDeviceTableAck.go
index 6b093442a1..a8d67c96b7 100644
--- a/plc4go/internal/bacnetip/bvll_ReadForeignDeviceTableAck.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_ReadForeignDeviceTableAck.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/bvll_RegisterForeignDevice.go b/plc4go/internal/bacnetip/bacgopes/bvll_RegisterForeignDevice.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_RegisterForeignDevice.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_RegisterForeignDevice.go
index ed681b6b71..803801eaff 100644
--- a/plc4go/internal/bacnetip/bvll_RegisterForeignDevice.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_RegisterForeignDevice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvll_Result.go b/plc4go/internal/bacnetip/bacgopes/bvll_Result.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_Result.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_Result.go
index 0762a7aba2..d247604c16 100644
--- a/plc4go/internal/bacnetip/bvll_Result.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_Result.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvll_WriteBroadcastDistributionTable.go b/plc4go/internal/bacnetip/bacgopes/bvll_WriteBroadcastDistributionTable.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvll_WriteBroadcastDistributionTable.go
rename to plc4go/internal/bacnetip/bacgopes/bvll_WriteBroadcastDistributionTable.go
index 27ec9e3127..924f75fbc0 100644
--- a/plc4go/internal/bacnetip/bvll_WriteBroadcastDistributionTable.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvll_WriteBroadcastDistributionTable.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/bvllservice.go b/plc4go/internal/bacnetip/bacgopes/bvllservice.go
similarity index 97%
rename from plc4go/internal/bacnetip/bvllservice.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice.go
index 1c9b86f6c6..b3432951fd 100644
--- a/plc4go/internal/bacnetip/bvllservice.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice.go
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
diff --git a/plc4go/internal/bacnetip/bvllservice_AnnexJCodec.go b/plc4go/internal/bacnetip/bacgopes/bvllservice_AnnexJCodec.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvllservice_AnnexJCodec.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice_AnnexJCodec.go
index 0f59ea1c46..288a3d8bbc 100644
--- a/plc4go/internal/bacnetip/bvllservice_AnnexJCodec.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice_AnnexJCodec.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvllservice_BIPBBMD.go b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPBBMD.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvllservice_BIPBBMD.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice_BIPBBMD.go
index f1eca0eb7a..5a0eaa2996 100644
--- a/plc4go/internal/bacnetip/bvllservice_BIPBBMD.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPBBMD.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"slices"
diff --git a/plc4go/internal/bacnetip/bvllservice_BIPForeign.go b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPForeign.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvllservice_BIPForeign.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice_BIPForeign.go
index 9d6e1dc5ce..cf5322147f 100644
--- a/plc4go/internal/bacnetip/bvllservice_BIPForeign.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPForeign.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvllservice_BIPSAP.go b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPSAP.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvllservice_BIPSAP.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice_BIPSAP.go
index 8ae8911b23..c30dbb827b 100644
--- a/plc4go/internal/bacnetip/bvllservice_BIPSAP.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPSAP.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvllservice_BIPSimple.go b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPSimple.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvllservice_BIPSimple.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice_BIPSimple.go
index e37f6c284b..c14014917c 100644
--- a/plc4go/internal/bacnetip/bvllservice_BIPSimple.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice_BIPSimple.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/bvllservice_UDPMultiplexer.go b/plc4go/internal/bacnetip/bacgopes/bvllservice_UDPMultiplexer.go
similarity index 99%
rename from plc4go/internal/bacnetip/bvllservice_UDPMultiplexer.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice_UDPMultiplexer.go
index 113dd49ffd..823d86e6a9 100644
--- a/plc4go/internal/bacnetip/bvllservice_UDPMultiplexer.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice_UDPMultiplexer.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/bvllservice__MultiplexClient.go b/plc4go/internal/bacnetip/bacgopes/bvllservice__MultiplexClient.go
similarity index 98%
rename from plc4go/internal/bacnetip/bvllservice__MultiplexClient.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice__MultiplexClient.go
index 3c0fed5119..29addd8d2e 100644
--- a/plc4go/internal/bacnetip/bvllservice__MultiplexClient.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice__MultiplexClient.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/bvllservice__MultiplexServer.go b/plc4go/internal/bacnetip/bacgopes/bvllservice__MultiplexServer.go
similarity index 98%
rename from plc4go/internal/bacnetip/bvllservice__MultiplexServer.go
rename to plc4go/internal/bacnetip/bacgopes/bvllservice__MultiplexServer.go
index 91a5c43aca..4ccd672ee9 100644
--- a/plc4go/internal/bacnetip/bvllservice__MultiplexServer.go
+++ b/plc4go/internal/bacnetip/bacgopes/bvllservice__MultiplexServer.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/capability.go b/plc4go/internal/bacnetip/bacgopes/capability.go
similarity index 95%
rename from plc4go/internal/bacnetip/capability.go
rename to plc4go/internal/bacnetip/bacgopes/capability.go
index 56c51b34cf..4e36f77ac3 100644
--- a/plc4go/internal/bacnetip/capability.go
+++ b/plc4go/internal/bacnetip/bacgopes/capability.go
@@ -17,11 +17,13 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import "github.com/rs/zerolog"
 
 // TODO: implement
+//
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=Capability
 type Capability struct {
 }
 
@@ -33,10 +35,6 @@ func (c *Capability) getFN(fn string) func(args Args, kwargs KWArgs) error {
 	panic("implement me")
 }
 
-func (c *Capability) String() string {
-	panic("implement me")
-}
-
 // TODO: implement
 type Collector struct {
 	capabilities []*Capability
diff --git a/plc4go/internal/bacnetip/comm.go b/plc4go/internal/bacnetip/bacgopes/comm.go
similarity index 99%
rename from plc4go/internal/bacnetip/comm.go
rename to plc4go/internal/bacnetip/bacgopes/comm.go
index 70b56cf3e5..c85f889ad4 100644
--- a/plc4go/internal/bacnetip/comm.go
+++ b/plc4go/internal/bacnetip/bacgopes/comm.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/comm_ApplicationServiceElement.go b/plc4go/internal/bacnetip/bacgopes/comm_ApplicationServiceElement.go
similarity index 99%
rename from plc4go/internal/bacnetip/comm_ApplicationServiceElement.go
rename to plc4go/internal/bacnetip/bacgopes/comm_ApplicationServiceElement.go
index b7bdab3b94..8f02543fdc 100644
--- a/plc4go/internal/bacnetip/comm_ApplicationServiceElement.go
+++ b/plc4go/internal/bacnetip/bacgopes/comm_ApplicationServiceElement.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/comm_Client.go b/plc4go/internal/bacnetip/bacgopes/comm_Client.go
similarity index 99%
rename from plc4go/internal/bacnetip/comm_Client.go
rename to plc4go/internal/bacnetip/bacgopes/comm_Client.go
index ac7a2e767c..b7e57dc4ff 100644
--- a/plc4go/internal/bacnetip/comm_Client.go
+++ b/plc4go/internal/bacnetip/bacgopes/comm_Client.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/comm_Server.go b/plc4go/internal/bacnetip/bacgopes/comm_Server.go
similarity index 99%
rename from plc4go/internal/bacnetip/comm_Server.go
rename to plc4go/internal/bacnetip/bacgopes/comm_Server.go
index a4456214c6..d712947476 100644
--- a/plc4go/internal/bacnetip/comm_Server.go
+++ b/plc4go/internal/bacnetip/bacgopes/comm_Server.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/comm_ServiceAccessPoint.go b/plc4go/internal/bacnetip/bacgopes/comm_ServiceAccessPoint.go
similarity index 99%
rename from plc4go/internal/bacnetip/comm_ServiceAccessPoint.go
rename to plc4go/internal/bacnetip/bacgopes/comm_ServiceAccessPoint.go
index 2aefa7e9a3..c74e1285ee 100644
--- a/plc4go/internal/bacnetip/comm_ServiceAccessPoint.go
+++ b/plc4go/internal/bacnetip/bacgopes/comm_ServiceAccessPoint.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/comm__PCI.go b/plc4go/internal/bacnetip/bacgopes/comm__PCI.go
similarity index 98%
rename from plc4go/internal/bacnetip/comm__PCI.go
rename to plc4go/internal/bacnetip/bacgopes/comm__PCI.go
index bd90db14ed..92d8c8a09d 100644
--- a/plc4go/internal/bacnetip/comm__PCI.go
+++ b/plc4go/internal/bacnetip/bacgopes/comm__PCI.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
@@ -26,10 +26,9 @@ import (
 
 	"github.com/pkg/errors"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 	"github.com/apache/plc4x/plc4go/spi"
 	"github.com/apache/plc4x/plc4go/spi/utils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
 )
 
 type IPCI interface {
diff --git a/plc4go/internal/bacnetip/comp.go b/plc4go/internal/bacnetip/bacgopes/comp.go
similarity index 99%
rename from plc4go/internal/bacnetip/comp.go
rename to plc4go/internal/bacnetip/bacgopes/comp.go
index a646d470b7..92c9e7a619 100644
--- a/plc4go/internal/bacnetip/comp.go
+++ b/plc4go/internal/bacnetip/bacgopes/comp.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"cmp"
diff --git a/plc4go/internal/bacnetip/constructeddata.go b/plc4go/internal/bacnetip/bacgopes/constructeddata.go
similarity index 99%
rename from plc4go/internal/bacnetip/constructeddata.go
rename to plc4go/internal/bacnetip/bacgopes/constructeddata.go
index 96e1919e56..2535546a5c 100644
--- a/plc4go/internal/bacnetip/constructeddata.go
+++ b/plc4go/internal/bacnetip/bacgopes/constructeddata.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"reflect"
diff --git a/plc4go/internal/bacnetip/constructors/apdu.go b/plc4go/internal/bacnetip/bacgopes/constructors/apdu.go
similarity index 76%
rename from plc4go/internal/bacnetip/constructors/apdu.go
rename to plc4go/internal/bacnetip/bacgopes/constructors/apdu.go
index 2e54ced009..98a7d484cd 100644
--- a/plc4go/internal/bacnetip/constructors/apdu.go
+++ b/plc4go/internal/bacnetip/bacgopes/constructors/apdu.go
@@ -19,14 +19,14 @@
 
 package constructors
 
-import "github.com/apache/plc4x/plc4go/internal/bacnetip"
+import "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 
-func ConfirmedPrivateTransferRequest(kwargs bacnetip.KWArgs) *bacnetip.ConfirmedPrivateTransferRequest {
+func ConfirmedPrivateTransferRequest(kwargs bacgopes.KWArgs) *bacgopes.ConfirmedPrivateTransferRequest {
 	panic("implement me")
 }
 
-func WhoIsRequest(kwargs bacnetip.KWArgs) *bacnetip.WhoIsRequest {
-	whoIsRequest, err := bacnetip.NewWhoIsRequest()
+func WhoIsRequest(kwargs bacgopes.KWArgs) *bacgopes.WhoIsRequest {
+	whoIsRequest, err := bacgopes.NewWhoIsRequest()
 	if err != nil {
 		panic(err)
 	}
diff --git a/plc4go/internal/bacnetip/bacgopes/constructors/bvll.go b/plc4go/internal/bacnetip/bacgopes/constructors/bvll.go
new file mode 100644
index 0000000000..8bc580ccd5
--- /dev/null
+++ b/plc4go/internal/bacnetip/bacgopes/constructors/bvll.go
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package constructors
+
+import (
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
+)
+
+func Result(i uint16) *bacgopes.Result {
+	result, err := bacgopes.NewResult(bacgopes.WithResultBvlciResultCode(readWriteModel.BVLCResultCode(i)))
+	if err != nil {
+		panic(err)
+	}
+	return result
+}
+
+func WriteBroadcastDistributionTable(bdt ...*bacgopes.Address) *bacgopes.WriteBroadcastDistributionTable {
+	writeBroadcastDistributionTable, err := bacgopes.NewWriteBroadcastDistributionTable(bacgopes.WithWriteBroadcastDistributionTableBDT(bdt...))
+	if err != nil {
+		panic(err)
+	}
+	return writeBroadcastDistributionTable
+}
+
+func ReadBroadcastDistributionTable() *bacgopes.ReadBroadcastDistributionTable {
+	readBroadcastDistributionTable, err := bacgopes.NewReadBroadcastDistributionTable()
+	if err != nil {
+		panic(err)
+	}
+	return readBroadcastDistributionTable
+}
+
+func ReadBroadcastDistributionTableAck(bdt ...*bacgopes.Address) *bacgopes.ReadBroadcastDistributionTableAck {
+	readBroadcastDistributionTable, err := bacgopes.NewReadBroadcastDistributionTableAck(bacgopes.WithReadBroadcastDistributionTableAckBDT(bdt...))
+	if err != nil {
+		panic(err)
+	}
+	return readBroadcastDistributionTable
+}
+
+func ForwardedNPDU(addr *bacgopes.Address, pduBytes []byte) *bacgopes.ForwardedNPDU {
+	npdu, err := bacgopes.NewForwardedNPDU(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...)), bacgopes.WithForwardedNPDUAddress(addr))
+	if err != nil {
+		panic(err)
+	}
+	return npdu
+}
+
+func RegisterForeignDevice(ttl uint16) *bacgopes.RegisterForeignDevice {
+	registerForeignDevice, err := bacgopes.NewRegisterForeignDevice(bacgopes.WithRegisterForeignDeviceBvlciTimeToLive(ttl))
+	if err != nil {
+		panic(err)
+	}
+	return registerForeignDevice
+}
+
+func ReadForeignDeviceTable() *bacgopes.ReadForeignDeviceTable {
+	readForeignDeviceTable, err := bacgopes.NewReadForeignDeviceTable()
+	if err != nil {
+		panic(err)
+	}
+	return readForeignDeviceTable
+}
+
+func FDTEntry() (entry *bacgopes.FDTEntry) {
+	return &bacgopes.FDTEntry{}
+}
+
+func ReadForeignDeviceTableAck(fdts ...*bacgopes.FDTEntry) *bacgopes.ReadForeignDeviceTableAck {
+	readForeignDeviceTableAck, err := bacgopes.NewReadForeignDeviceTableAck(bacgopes.WithReadForeignDeviceTableAckFDT(fdts...))
+	if err != nil {
+		panic(err)
+	}
+	return readForeignDeviceTableAck
+}
+
+func DeleteForeignDeviceTableEntry(address *bacgopes.Address) *bacgopes.DeleteForeignDeviceTableEntry {
+	deleteForeignDeviceTableEntry, err := bacgopes.NewDeleteForeignDeviceTableEntry(bacgopes.WithDeleteForeignDeviceTableEntryAddress(address))
+	if err != nil {
+		panic(err)
+	}
+	return deleteForeignDeviceTableEntry
+}
+
+func DistributeBroadcastToNetwork(pduBytes []byte) *bacgopes.DistributeBroadcastToNetwork {
+	distributeBroadcastToNetwork, err := bacgopes.NewDistributeBroadcastToNetwork(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...)))
+	if err != nil {
+		panic(err)
+	}
+	return distributeBroadcastToNetwork
+}
+
+func OriginalUnicastNPDU(pduBytes []byte) *bacgopes.OriginalUnicastNPDU {
+	npdu, err := bacgopes.NewOriginalUnicastNPDU(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...)))
+	if err != nil {
+		panic(err)
+	}
+	return npdu
+}
+
+func OriginalBroadcastNPDU(pduBytes []byte) *bacgopes.OriginalBroadcastNPDU {
+	npdu, err := bacgopes.NewOriginalBroadcastNPDU(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...)))
+	if err != nil {
+		panic(err)
+	}
+	return npdu
+}
diff --git a/plc4go/internal/bacnetip/constructors/constructeddata.go b/plc4go/internal/bacnetip/bacgopes/constructors/constructeddata.go
similarity index 86%
rename from plc4go/internal/bacnetip/constructors/constructeddata.go
rename to plc4go/internal/bacnetip/bacgopes/constructors/constructeddata.go
index 3768b859c3..08cdae70da 100644
--- a/plc4go/internal/bacnetip/constructors/constructeddata.go
+++ b/plc4go/internal/bacnetip/bacgopes/constructors/constructeddata.go
@@ -19,10 +19,10 @@
 
 package constructors
 
-import "github.com/apache/plc4x/plc4go/internal/bacnetip"
+import "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 
-func Any(args ...any) *bacnetip.Any {
-	newAny, err := bacnetip.NewAny(args)
+func Any(args ...any) *bacgopes.Any {
+	newAny, err := bacgopes.NewAny(args)
 	if err != nil {
 		panic(err)
 	}
diff --git a/plc4go/internal/bacnetip/constructors/npdu.go b/plc4go/internal/bacnetip/bacgopes/constructors/npdu.go
similarity index 50%
rename from plc4go/internal/bacnetip/constructors/npdu.go
rename to plc4go/internal/bacnetip/bacgopes/constructors/npdu.go
index bff9e2e6de..47964823ad 100644
--- a/plc4go/internal/bacnetip/constructors/npdu.go
+++ b/plc4go/internal/bacnetip/bacgopes/constructors/npdu.go
@@ -20,109 +20,108 @@
 package constructors
 
 import (
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
 )
 
-func WhoIsRouterToNetwork(net uint16) *bacnetip.WhoIsRouterToNetwork {
-	network, err := bacnetip.NewWhoIsRouterToNetwork(bacnetip.WithWhoIsRouterToNetworkNet(net))
+func WhoIsRouterToNetwork(net uint16) *bacgopes.WhoIsRouterToNetwork {
+	network, err := bacgopes.NewWhoIsRouterToNetwork(bacgopes.WithWhoIsRouterToNetworkNet(net))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func IAmRouterToNetwork(netList ...uint16) *bacnetip.IAmRouterToNetwork {
-	network, err := bacnetip.NewIAmRouterToNetwork(bacnetip.WithIAmRouterToNetworkNetworkList(netList...))
+func IAmRouterToNetwork(netList ...uint16) *bacgopes.IAmRouterToNetwork {
+	network, err := bacgopes.NewIAmRouterToNetwork(bacgopes.WithIAmRouterToNetworkNetworkList(netList...))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func ICouldBeRouterToNetwork(net uint16, perf uint8) *bacnetip.ICouldBeRouterToNetwork {
-	network, err := bacnetip.NewICouldBeRouterToNetwork(bacnetip.WithICouldBeRouterToNetworkNetwork(net), bacnetip.WithICouldBeRouterToNetworkPerformanceIndex(perf))
+func ICouldBeRouterToNetwork(net uint16, perf uint8) *bacgopes.ICouldBeRouterToNetwork {
+	network, err := bacgopes.NewICouldBeRouterToNetwork(bacgopes.WithICouldBeRouterToNetworkNetwork(net), bacgopes.WithICouldBeRouterToNetworkPerformanceIndex(perf))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func RejectMessageToNetwork(reason uint8, dnet uint16) *bacnetip.RejectMessageToNetwork {
-	network, err := bacnetip.NewRejectMessageToNetwork(bacnetip.WithRejectMessageToNetworkRejectionReason(readWriteModel.NLMRejectMessageToNetworkRejectReason(reason)), bacnetip.WithRejectMessageToNetworkDnet(dnet))
+func RejectMessageToNetwork(reason uint8, dnet uint16) *bacgopes.RejectMessageToNetwork {
+	network, err := bacgopes.NewRejectMessageToNetwork(bacgopes.WithRejectMessageToNetworkRejectionReason(readWriteModel.NLMRejectMessageToNetworkRejectReason(reason)), bacgopes.WithRejectMessageToNetworkDnet(dnet))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func RouterBusyToNetwork(netList ...uint16) *bacnetip.RouterBusyToNetwork {
-	network, err := bacnetip.NewRouterBusyToNetwork(bacnetip.WithRouterBusyToNetworkDnet(netList))
+func RouterBusyToNetwork(netList ...uint16) *bacgopes.RouterBusyToNetwork {
+	network, err := bacgopes.NewRouterBusyToNetwork(bacgopes.WithRouterBusyToNetworkDnet(netList))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func RouterAvailableToNetwork(netList ...uint16) *bacnetip.RouterAvailableToNetwork {
-	network, err := bacnetip.NewRouterAvailableToNetwork(bacnetip.WithRouterAvailableToNetworkDnet(netList))
+func RouterAvailableToNetwork(netList ...uint16) *bacgopes.RouterAvailableToNetwork {
+	network, err := bacgopes.NewRouterAvailableToNetwork(bacgopes.WithRouterAvailableToNetworkDnet(netList))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func InitializeRoutingTable(irtTable ...*bacnetip.RoutingTableEntry) *bacnetip.InitializeRoutingTable {
-	network, err := bacnetip.NewInitializeRoutingTable(bacnetip.WithInitializeRoutingTableIrtTable(irtTable...))
+func InitializeRoutingTable(irtTable ...*bacgopes.RoutingTableEntry) *bacgopes.InitializeRoutingTable {
+	network, err := bacgopes.NewInitializeRoutingTable(bacgopes.WithInitializeRoutingTableIrtTable(irtTable...))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func RoutingTableEntry(address uint16, portId uint8, portInfo []byte) *bacnetip.RoutingTableEntry {
-	return bacnetip.NewRoutingTableEntry(
-		bacnetip.WithRoutingTableEntryDestinationNetworkAddress(address),
-		bacnetip.WithRoutingTableEntryPortId(portId),
-		bacnetip.WithRoutingTableEntryPortInfo(portInfo),
+func RoutingTableEntry(address uint16, portId uint8, portInfo []byte) *bacgopes.RoutingTableEntry {
+	return bacgopes.NewRoutingTableEntry(
+		bacgopes.WithRoutingTableEntryDestinationNetworkAddress(address),
+		bacgopes.WithRoutingTableEntryPortId(portId),
+		bacgopes.WithRoutingTableEntryPortInfo(portInfo),
 	)
 }
 
-func InitializeRoutingTableAck(irtaTable ...*bacnetip.RoutingTableEntry) *bacnetip.InitializeRoutingTableAck {
-	network, err := bacnetip.NewInitializeRoutingTableAck(bacnetip.WithInitializeRoutingTableAckIrtaTable(irtaTable...))
+func InitializeRoutingTableAck(irtaTable ...*bacgopes.RoutingTableEntry) *bacgopes.InitializeRoutingTableAck {
+	network, err := bacgopes.NewInitializeRoutingTableAck(bacgopes.WithInitializeRoutingTableAckIrtaTable(irtaTable...))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func EstablishConnectionToNetwork(dnet uint16, terminationTime uint8) *bacnetip.EstablishConnectionToNetwork {
-	network, err := bacnetip.NewEstablishConnectionToNetwork(bacnetip.WithEstablishConnectionToNetworkDNET(dnet), bacnetip.WithEstablishConnectionToNetworkTerminationTime(terminationTime))
+func EstablishConnectionToNetwork(dnet uint16, terminationTime uint8) *bacgopes.EstablishConnectionToNetwork {
+	network, err := bacgopes.NewEstablishConnectionToNetwork(bacgopes.WithEstablishConnectionToNetworkDNET(dnet), bacgopes.WithEstablishConnectionToNetworkTerminationTime(terminationTime))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func DisconnectConnectionToNetwork(dnet uint16) *bacnetip.DisconnectConnectionToNetwork {
-	network, err := bacnetip.NewDisconnectConnectionToNetwork(bacnetip.WithDisconnectConnectionToNetworkDNET(dnet))
+func DisconnectConnectionToNetwork(dnet uint16) *bacgopes.DisconnectConnectionToNetwork {
+	network, err := bacgopes.NewDisconnectConnectionToNetwork(bacgopes.WithDisconnectConnectionToNetworkDNET(dnet))
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func WhatIsNetworkNumber(dnet uint16) *bacnetip.WhatIsNetworkNumber {
-	network, err := bacnetip.NewWhatIsNetworkNumber()
+func WhatIsNetworkNumber(dnet uint16) *bacgopes.WhatIsNetworkNumber {
+	network, err := bacgopes.NewWhatIsNetworkNumber()
 	if err != nil {
 		panic(err)
 	}
 	return network
 }
 
-func NetworkNumberIs(net uint16, flag bool) *bacnetip.NetworkNumberIs {
-	network, err := bacnetip.NewNetworkNumberIs(bacnetip.WithNetworkNumberIsNET(net), bacnetip.WithNetworkNumberIsTerminationConfigured(flag))
+func NetworkNumberIs(net uint16, flag bool) *bacgopes.NetworkNumberIs {
+	network, err := bacgopes.NewNetworkNumberIs(bacgopes.WithNetworkNumberIsNET(net), bacgopes.WithNetworkNumberIsTerminationConfigured(flag))
 	if err != nil {
 		panic(err)
 	}
diff --git a/plc4go/internal/bacnetip/constructors/pdu.go b/plc4go/internal/bacnetip/bacgopes/constructors/pdu.go
similarity index 68%
rename from plc4go/internal/bacnetip/constructors/pdu.go
rename to plc4go/internal/bacnetip/bacgopes/constructors/pdu.go
index 3e7e24ef30..4c0c6278f9 100644
--- a/plc4go/internal/bacnetip/constructors/pdu.go
+++ b/plc4go/internal/bacnetip/bacgopes/constructors/pdu.go
@@ -22,25 +22,25 @@ package constructors
 import (
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
-func Address(args ...any) *bacnetip.Address {
-	address, err := bacnetip.NewAddress(zerolog.Nop(), args...)
+func Address(args ...any) *bacgopes.Address {
+	address, err := bacgopes.NewAddress(zerolog.Nop(), args...)
 	if err != nil {
 		panic(err)
 	}
 	return address
 }
 
-func AddressTuple[L any, R any](l L, r R) *bacnetip.AddressTuple[L, R] {
-	return &bacnetip.AddressTuple[L, R]{Left: l, Right: r}
+func AddressTuple[L any, R any](l L, r R) *bacgopes.AddressTuple[L, R] {
+	return &bacgopes.AddressTuple[L, R]{Left: l, Right: r}
 }
 
-func PDUData(args ...any) bacnetip.PDUData {
+func PDUData(args ...any) bacgopes.PDUData {
 	if args == nil {
-		return bacnetip.NewPDUData(bacnetip.NewArgs(bacnetip.NewMessageBridge()))
+		return bacgopes.NewPDUData(bacgopes.NewArgs(bacgopes.NewMessageBridge()))
 	} else {
-		return bacnetip.NewPDUData(bacnetip.NewArgs(bacnetip.NewMessageBridge(args[0].([]byte)...)))
+		return bacgopes.NewPDUData(bacgopes.NewArgs(bacgopes.NewMessageBridge(args[0].([]byte)...)))
 	}
 }
diff --git a/plc4go/internal/bacnetip/constructors/primitivedata.go b/plc4go/internal/bacnetip/bacgopes/constructors/primitivedata.go
similarity index 52%
rename from plc4go/internal/bacnetip/constructors/primitivedata.go
rename to plc4go/internal/bacnetip/bacgopes/constructors/primitivedata.go
index b1204a9ff9..5c773005d0 100644
--- a/plc4go/internal/bacnetip/constructors/primitivedata.go
+++ b/plc4go/internal/bacnetip/bacgopes/constructors/primitivedata.go
@@ -20,265 +20,265 @@
 package constructors
 
 import (
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
-func BitString(args ...any) *bacnetip.BitString {
-	bitString, err := bacnetip.NewBitString(args)
+func BitString(args ...any) *bacgopes.BitString {
+	bitString, err := bacgopes.NewBitString(args)
 	if err != nil {
 		panic(err)
 	}
 	return bitString
 }
 
-func Boolean(arg ...any) *bacnetip.Boolean {
+func Boolean(arg ...any) *bacgopes.Boolean {
 	if len(arg) == 0 {
-		boolean, err := bacnetip.NewBoolean(nil)
+		boolean, err := bacgopes.NewBoolean(nil)
 		if err != nil {
 			panic(err)
 		}
 		return boolean
 	}
-	boolean, err := bacnetip.NewBoolean(arg[0])
+	boolean, err := bacgopes.NewBoolean(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return boolean
 }
 
-func CharacterString(arg ...any) *bacnetip.CharacterString {
+func CharacterString(arg ...any) *bacgopes.CharacterString {
 	if len(arg) == 0 {
-		CharacterString, err := bacnetip.NewCharacterString(nil)
+		CharacterString, err := bacgopes.NewCharacterString(nil)
 		if err != nil {
 			panic(err)
 		}
 		return CharacterString
 	}
-	CharacterString, err := bacnetip.NewCharacterString(arg[0])
+	CharacterString, err := bacgopes.NewCharacterString(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return CharacterString
 }
 
-func Date(arg ...any) *bacnetip.Date {
+func Date(arg ...any) *bacgopes.Date {
 	if len(arg) == 0 {
-		Date, err := bacnetip.NewDate(nil, nil)
+		Date, err := bacgopes.NewDate(nil, nil)
 		if err != nil {
 			panic(err)
 		}
 		return Date
 	}
-	Date, err := bacnetip.NewDate(arg[0], nil)
+	Date, err := bacgopes.NewDate(arg[0], nil)
 	if err != nil {
 		panic(err)
 	}
 	return Date
 }
 
-func Double(arg ...any) *bacnetip.Double {
+func Double(arg ...any) *bacgopes.Double {
 	if len(arg) == 0 {
-		Double, err := bacnetip.NewDouble(nil)
+		Double, err := bacgopes.NewDouble(nil)
 		if err != nil {
 			panic(err)
 		}
 		return Double
 	}
-	Double, err := bacnetip.NewDouble(arg[0])
+	Double, err := bacgopes.NewDouble(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return Double
 }
 
-func Enumerated(arg ...any) *bacnetip.Enumerated {
-	Enumerated, err := bacnetip.NewEnumerated(arg...)
+func Enumerated(arg ...any) *bacgopes.Enumerated {
+	Enumerated, err := bacgopes.NewEnumerated(arg...)
 	if err != nil {
 		panic(err)
 	}
 	return Enumerated
 }
 
-func Integer(arg ...any) *bacnetip.Integer {
+func Integer(arg ...any) *bacgopes.Integer {
 	if len(arg) == 0 {
-		Integer, err := bacnetip.NewInteger(nil)
+		Integer, err := bacgopes.NewInteger(nil)
 		if err != nil {
 			panic(err)
 		}
 		return Integer
 	}
-	Integer, err := bacnetip.NewInteger(arg[0])
+	Integer, err := bacgopes.NewInteger(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return Integer
 }
 
-func Null(arg ...any) *bacnetip.Null {
+func Null(arg ...any) *bacgopes.Null {
 	if len(arg) == 0 {
-		Null, err := bacnetip.NewNull(nil)
+		Null, err := bacgopes.NewNull(nil)
 		if err != nil {
 			panic(err)
 		}
 		return Null
 	}
-	Null, err := bacnetip.NewNull(arg[0])
+	Null, err := bacgopes.NewNull(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return Null
 }
 
-func ObjectIdentifier(args ...any) *bacnetip.ObjectIdentifier {
+func ObjectIdentifier(args ...any) *bacgopes.ObjectIdentifier {
 	if len(args) == 0 {
-		ObjectIdentifier, err := bacnetip.NewObjectIdentifier(nil)
+		ObjectIdentifier, err := bacgopes.NewObjectIdentifier(nil)
 		if err != nil {
 			panic(err)
 		}
 		return ObjectIdentifier
 	}
-	ObjectIdentifier, err := bacnetip.NewObjectIdentifier(args)
+	ObjectIdentifier, err := bacgopes.NewObjectIdentifier(args)
 	if err != nil {
 		panic(err)
 	}
 	return ObjectIdentifier
 }
 
-func ObjectType(args ...any) *bacnetip.ObjectType {
+func ObjectType(args ...any) *bacgopes.ObjectType {
 	if len(args) == 0 {
-		ObjectType, err := bacnetip.NewObjectType(nil)
+		ObjectType, err := bacgopes.NewObjectType(nil)
 		if err != nil {
 			panic(err)
 		}
 		return ObjectType
 	}
-	ObjectType, err := bacnetip.NewObjectType(args)
+	ObjectType, err := bacgopes.NewObjectType(args)
 	if err != nil {
 		panic(err)
 	}
 	return ObjectType
 }
 
-func OctetString(args ...any) *bacnetip.OctetString {
+func OctetString(args ...any) *bacgopes.OctetString {
 	if len(args) == 0 {
-		OctetString, err := bacnetip.NewOctetString(nil)
+		OctetString, err := bacgopes.NewOctetString(nil)
 		if err != nil {
 			panic(err)
 		}
 		return OctetString
 	}
-	OctetString, err := bacnetip.NewOctetString(args[0])
+	OctetString, err := bacgopes.NewOctetString(args[0])
 	if err != nil {
 		panic(err)
 	}
 	return OctetString
 }
 
-func Real(arg ...any) *bacnetip.Real {
+func Real(arg ...any) *bacgopes.Real {
 	if len(arg) == 0 {
-		Real, err := bacnetip.NewReal(nil)
+		Real, err := bacgopes.NewReal(nil)
 		if err != nil {
 			panic(err)
 		}
 		return Real
 	}
-	Real, err := bacnetip.NewReal(arg[0])
+	Real, err := bacgopes.NewReal(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return Real
 }
 
-func ApplicationTag(args ...any) *bacnetip.ApplicationTag {
-	tag, err := bacnetip.NewApplicationTag(args)
+func ApplicationTag(args ...any) *bacgopes.ApplicationTag {
+	tag, err := bacgopes.NewApplicationTag(args)
 	if err != nil {
 		panic(err)
 	}
 	return tag
 }
 
-func ContextTag(args ...any) *bacnetip.ContextTag {
-	tag, err := bacnetip.NewContextTag(args)
+func ContextTag(args ...any) *bacgopes.ContextTag {
+	tag, err := bacgopes.NewContextTag(args)
 	if err != nil {
 		panic(err)
 	}
 	return tag
 }
 
-func OpeningTag(context any) *bacnetip.OpeningTag {
-	openingTag, err := bacnetip.NewOpeningTag(context)
+func OpeningTag(context any) *bacgopes.OpeningTag {
+	openingTag, err := bacgopes.NewOpeningTag(context)
 	if err != nil {
 		panic(err)
 	}
 	return openingTag
 }
 
-func ClosingTag(context any) *bacnetip.ClosingTag {
-	closingTag, err := bacnetip.NewClosingTag(context)
+func ClosingTag(context any) *bacgopes.ClosingTag {
+	closingTag, err := bacgopes.NewClosingTag(context)
 	if err != nil {
 		panic(err)
 	}
 	return closingTag
 }
 
-func TagList(tags ...bacnetip.Tag) *bacnetip.TagList {
-	return bacnetip.NewTagList(tags)
+func TagList(tags ...bacgopes.Tag) *bacgopes.TagList {
+	return bacgopes.NewTagList(tags)
 }
 
-func Time(arg ...any) *bacnetip.Time {
+func Time(arg ...any) *bacgopes.Time {
 	if len(arg) == 0 {
-		Time, err := bacnetip.NewTime(nil, nil)
+		Time, err := bacgopes.NewTime(nil, nil)
 		if err != nil {
 			panic(err)
 		}
 		return Time
 	}
-	Time, err := bacnetip.NewTime(arg[0], nil)
+	Time, err := bacgopes.NewTime(arg[0], nil)
 	if err != nil {
 		panic(err)
 	}
 	return Time
 }
 
-func Unsigned(arg ...any) *bacnetip.Unsigned {
+func Unsigned(arg ...any) *bacgopes.Unsigned {
 	if len(arg) == 0 {
-		unsigned, err := bacnetip.NewUnsigned(nil)
+		unsigned, err := bacgopes.NewUnsigned(nil)
 		if err != nil {
 			panic(err)
 		}
 		return unsigned
 	}
-	unsigned, err := bacnetip.NewUnsigned(arg[0])
+	unsigned, err := bacgopes.NewUnsigned(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return unsigned
 }
 
-func Unsigned8(arg ...any) *bacnetip.Unsigned8 {
+func Unsigned8(arg ...any) *bacgopes.Unsigned8 {
 	if len(arg) == 0 {
-		unsigned, err := bacnetip.NewUnsigned8(nil)
+		unsigned, err := bacgopes.NewUnsigned8(nil)
 		if err != nil {
 			panic(err)
 		}
 		return unsigned
 	}
-	unsigned, err := bacnetip.NewUnsigned8(arg[0])
+	unsigned, err := bacgopes.NewUnsigned8(arg[0])
 	if err != nil {
 		panic(err)
 	}
 	return unsigned
 }
 
-func Unsigned16(arg ...any) *bacnetip.Unsigned16 {
+func Unsigned16(arg ...any) *bacgopes.Unsigned16 {
 	if len(arg) == 0 {
-		unsigned, err := bacnetip.NewUnsigned16(nil)
+		unsigned, err := bacgopes.NewUnsigned16(nil)
 		if err != nil {
 			panic(err)
 		}
 		return unsigned
 	}
-	unsigned, err := bacnetip.NewUnsigned16(arg[0])
+	unsigned, err := bacgopes.NewUnsigned16(arg[0])
 	if err != nil {
 		panic(err)
 	}
diff --git a/plc4go/internal/bacnetip/core.go b/plc4go/internal/bacnetip/bacgopes/core.go
similarity index 99%
rename from plc4go/internal/bacnetip/core.go
rename to plc4go/internal/bacnetip/bacgopes/core.go
index a01500b50c..f34645b8a9 100644
--- a/plc4go/internal/bacnetip/core.go
+++ b/plc4go/internal/bacnetip/bacgopes/core.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"math"
diff --git a/plc4go/internal/bacnetip/debugging.go b/plc4go/internal/bacnetip/bacgopes/debugging.go
similarity index 98%
rename from plc4go/internal/bacnetip/debugging.go
rename to plc4go/internal/bacnetip/bacgopes/debugging.go
index 19687025bb..c82a123523 100644
--- a/plc4go/internal/bacnetip/debugging.go
+++ b/plc4go/internal/bacnetip/bacgopes/debugging.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/hex"
diff --git a/plc4go/internal/bacnetip/globals/settings.go b/plc4go/internal/bacnetip/bacgopes/globals/settings.go
similarity index 100%
rename from plc4go/internal/bacnetip/globals/settings.go
rename to plc4go/internal/bacnetip/bacgopes/globals/settings.go
diff --git a/plc4go/internal/bacnetip/iocb.go b/plc4go/internal/bacnetip/bacgopes/iocb.go
similarity index 97%
rename from plc4go/internal/bacnetip/iocb.go
rename to plc4go/internal/bacnetip/bacgopes/iocb.go
index 1c9b86f6c6..b3432951fd 100644
--- a/plc4go/internal/bacnetip/iocb.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb.go
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
diff --git a/plc4go/internal/bacnetip/iocb_IOCB.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go
similarity index 96%
rename from plc4go/internal/bacnetip/iocb_IOCB.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go
index f97c9e2e85..2ec68a92fa 100644
--- a/plc4go/internal/bacnetip/iocb_IOCB.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
@@ -74,7 +74,7 @@ type _IOCB interface {
 var _identNext = 1
 var _identLock sync.Mutex
 
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=IOCB
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOCB
 type IOCB struct {
 	ioID           int
 	request        PDU
@@ -127,6 +127,14 @@ func NewIOCB(localLog zerolog.Logger, request PDU, destination *Address) (*IOCB,
 	}, nil
 }
 
+func (i *IOCB) GetIOResponse() PDU {
+	return i.ioResponse
+}
+
+func (i *IOCB) GetIOError() error {
+	return i.ioError
+}
+
 // AddCallback Pass a function to be called when IO is complete.
 func (i *IOCB) AddCallback(fn func()) {
 	i.log.Debug().
diff --git a/plc4go/internal/bacnetip/iocb_IOController.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOController.go
similarity index 97%
rename from plc4go/internal/bacnetip/iocb_IOController.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOController.go
index 754158f13e..643b73bcce 100644
--- a/plc4go/internal/bacnetip/iocb_IOController.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOController.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
@@ -52,7 +52,7 @@ type IOControllerRequirements interface {
 	AbortIO(iocb _IOCB, err error) error
 }
 
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=IOController
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOController
 type IOController struct {
 	name         string
 	requirements IOControllerRequirements
diff --git a/plc4go/internal/bacnetip/iocb_IOQController.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go
similarity index 98%
rename from plc4go/internal/bacnetip/iocb_IOQController.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go
index ff63bc09a8..ae67803b9b 100644
--- a/plc4go/internal/bacnetip/iocb_IOQController.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"time"
@@ -31,7 +31,7 @@ type IOQControllerRequirements interface {
 	ProcessIO(iocb _IOCB) error
 }
 
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=IOQController
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOQController
 type IOQController struct {
 	*IOController
 	state      IOQControllerStates
diff --git a/plc4go/internal/bacnetip/iocb_IOQueue.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go
similarity index 97%
rename from plc4go/internal/bacnetip/iocb_IOQueue.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go
index e779221cde..1996e118c0 100644
--- a/plc4go/internal/bacnetip/iocb_IOQueue.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"container/heap"
@@ -30,7 +30,7 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=IOQueue
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOQueue
 type IOQueue struct {
 	name     string
 	notEmpty sync.Cond
diff --git a/plc4go/internal/bacnetip/iocb_SieveQueue.go b/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go
similarity index 94%
rename from plc4go/internal/bacnetip/iocb_SieveQueue.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go
index 83206c16d0..f4044cc628 100644
--- a/plc4go/internal/bacnetip/iocb_SieveQueue.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 )
 
-//go:generate go run ../../tools/plc4xgenerator/gen.go -type=SieveQueue
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=SieveQueue
 type SieveQueue struct {
 	*IOQController
 	requestFn func(apdu PDU)
diff --git a/plc4go/internal/bacnetip/local_device_LocalDevice.go b/plc4go/internal/bacnetip/bacgopes/local_device_LocalDevice.go
similarity index 99%
rename from plc4go/internal/bacnetip/local_device_LocalDevice.go
rename to plc4go/internal/bacnetip/bacgopes/local_device_LocalDevice.go
index 807294ea73..8b649cb927 100644
--- a/plc4go/internal/bacnetip/local_device_LocalDevice.go
+++ b/plc4go/internal/bacnetip/bacgopes/local_device_LocalDevice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/netservice.go b/plc4go/internal/bacnetip/bacgopes/netservice.go
similarity index 98%
rename from plc4go/internal/bacnetip/netservice.go
rename to plc4go/internal/bacnetip/bacgopes/netservice.go
index c7c70af324..291b9b6c31 100644
--- a/plc4go/internal/bacnetip/netservice.go
+++ b/plc4go/internal/bacnetip/bacgopes/netservice.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // used for net keys like snet and dnet (tri state)
 type netKey = NillableKey[uint16]
diff --git a/plc4go/internal/bacnetip/netservice_NetworkAdapter.go b/plc4go/internal/bacnetip/bacgopes/netservice_NetworkAdapter.go
similarity index 99%
rename from plc4go/internal/bacnetip/netservice_NetworkAdapter.go
rename to plc4go/internal/bacnetip/bacgopes/netservice_NetworkAdapter.go
index 9a7da2cd77..e3f056da37 100644
--- a/plc4go/internal/bacnetip/netservice_NetworkAdapter.go
+++ b/plc4go/internal/bacnetip/bacgopes/netservice_NetworkAdapter.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/netservice_NetworkServiceAccessPoint.go b/plc4go/internal/bacnetip/bacgopes/netservice_NetworkServiceAccessPoint.go
similarity index 99%
rename from plc4go/internal/bacnetip/netservice_NetworkServiceAccessPoint.go
rename to plc4go/internal/bacnetip/bacgopes/netservice_NetworkServiceAccessPoint.go
index 0865c1a4df..b4aaf19fbc 100644
--- a/plc4go/internal/bacnetip/netservice_NetworkServiceAccessPoint.go
+++ b/plc4go/internal/bacnetip/bacgopes/netservice_NetworkServiceAccessPoint.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"bytes"
diff --git a/plc4go/internal/bacnetip/netservice_NetworkServiceElement.go b/plc4go/internal/bacnetip/bacgopes/netservice_NetworkServiceElement.go
similarity index 99%
rename from plc4go/internal/bacnetip/netservice_NetworkServiceElement.go
rename to plc4go/internal/bacnetip/bacgopes/netservice_NetworkServiceElement.go
index 024e0a3e54..859b78e9ba 100644
--- a/plc4go/internal/bacnetip/netservice_NetworkServiceElement.go
+++ b/plc4go/internal/bacnetip/bacgopes/netservice_NetworkServiceElement.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/netservice_RouterInfoCache.go b/plc4go/internal/bacnetip/bacgopes/netservice_RouterInfoCache.go
similarity index 99%
rename from plc4go/internal/bacnetip/netservice_RouterInfoCache.go
rename to plc4go/internal/bacnetip/bacgopes/netservice_RouterInfoCache.go
index 16cb7d3e57..43870dabf5 100644
--- a/plc4go/internal/bacnetip/netservice_RouterInfoCache.go
+++ b/plc4go/internal/bacnetip/bacgopes/netservice_RouterInfoCache.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu.go b/plc4go/internal/bacnetip/bacgopes/npdu.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu.go
rename to plc4go/internal/bacnetip/bacgopes/npdu.go
index 7194d657c7..0cb456f37b 100644
--- a/plc4go/internal/bacnetip/npdu.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 // NPDUTypes is a dictionary of message type values and structs
 var NPDUTypes map[uint8]func() interface{ Decode(Arg) error }
diff --git a/plc4go/internal/bacnetip/npdu_DisconnectConnectionToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_DisconnectConnectionToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_DisconnectConnectionToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_DisconnectConnectionToNetwork.go
index 85408b202a..17d721561c 100644
--- a/plc4go/internal/bacnetip/npdu_DisconnectConnectionToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_DisconnectConnectionToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_EstablishConnectionToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_EstablishConnectionToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_EstablishConnectionToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_EstablishConnectionToNetwork.go
index e87a9b1985..e51f4445b7 100644
--- a/plc4go/internal/bacnetip/npdu_EstablishConnectionToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_EstablishConnectionToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_IAmRouterToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_IAmRouterToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_IAmRouterToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_IAmRouterToNetwork.go
index b20c72ad25..67e4e3535f 100644
--- a/plc4go/internal/bacnetip/npdu_IAmRouterToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_IAmRouterToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_ICouldBeRouterToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_ICouldBeRouterToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_ICouldBeRouterToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_ICouldBeRouterToNetwork.go
index dad6af4967..25a2739191 100644
--- a/plc4go/internal/bacnetip/npdu_ICouldBeRouterToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_ICouldBeRouterToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_InitializeRoutingTable.go b/plc4go/internal/bacnetip/bacgopes/npdu_InitializeRoutingTable.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_InitializeRoutingTable.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_InitializeRoutingTable.go
index f193a68b7b..6083aabb26 100644
--- a/plc4go/internal/bacnetip/npdu_InitializeRoutingTable.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_InitializeRoutingTable.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_InitializeRoutingTableAck.go b/plc4go/internal/bacnetip/bacgopes/npdu_InitializeRoutingTableAck.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_InitializeRoutingTableAck.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_InitializeRoutingTableAck.go
index b1a313bce5..ff347c7d1e 100644
--- a/plc4go/internal/bacnetip/npdu_InitializeRoutingTableAck.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_InitializeRoutingTableAck.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_NPCI.go b/plc4go/internal/bacnetip/bacgopes/npdu_NPCI.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_NPCI.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_NPCI.go
index bb8ab35962..fc02d427b3 100644
--- a/plc4go/internal/bacnetip/npdu_NPCI.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_NPCI.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
diff --git a/plc4go/internal/bacnetip/npdu_NPDU.go b/plc4go/internal/bacnetip/bacgopes/npdu_NPDU.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_NPDU.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_NPDU.go
index 99d32c8771..f676dbe41b 100644
--- a/plc4go/internal/bacnetip/npdu_NPDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_NPDU.go
@@ -17,16 +17,16 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"context"
 	"fmt"
-	"github.com/apache/plc4x/plc4go/spi"
 
 	"github.com/pkg/errors"
 
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
+	"github.com/apache/plc4x/plc4go/spi"
 )
 
 type NPDU interface {
diff --git a/plc4go/internal/bacnetip/npdu_NetworkNumberIs.go b/plc4go/internal/bacnetip/bacgopes/npdu_NetworkNumberIs.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_NetworkNumberIs.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_NetworkNumberIs.go
index 46fc7b7f89..7728ed7371 100644
--- a/plc4go/internal/bacnetip/npdu_NetworkNumberIs.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_NetworkNumberIs.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_RejectMessageToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_RejectMessageToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_RejectMessageToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_RejectMessageToNetwork.go
index 1a1ef93753..55999dcc80 100644
--- a/plc4go/internal/bacnetip/npdu_RejectMessageToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_RejectMessageToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_RouterAvailableToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_RouterAvailableToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_RouterAvailableToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_RouterAvailableToNetwork.go
index bd012273d3..2c977c701f 100644
--- a/plc4go/internal/bacnetip/npdu_RouterAvailableToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_RouterAvailableToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_RouterBusyToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_RouterBusyToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_RouterBusyToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_RouterBusyToNetwork.go
index 9ca975f2fc..ed65281115 100644
--- a/plc4go/internal/bacnetip/npdu_RouterBusyToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_RouterBusyToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_RoutingTableEntry.go b/plc4go/internal/bacnetip/bacgopes/npdu_RoutingTableEntry.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_RoutingTableEntry.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_RoutingTableEntry.go
index 49d656f8d8..80d7b32567 100644
--- a/plc4go/internal/bacnetip/npdu_RoutingTableEntry.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_RoutingTableEntry.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"bytes"
diff --git a/plc4go/internal/bacnetip/npdu_WhatIsNetworkNumber.go b/plc4go/internal/bacnetip/bacgopes/npdu_WhatIsNetworkNumber.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_WhatIsNetworkNumber.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_WhatIsNetworkNumber.go
index 8b869ab4e7..6b179c819d 100644
--- a/plc4go/internal/bacnetip/npdu_WhatIsNetworkNumber.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_WhatIsNetworkNumber.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/npdu_WhoIsRouterToNetwork.go b/plc4go/internal/bacnetip/bacgopes/npdu_WhoIsRouterToNetwork.go
similarity index 99%
rename from plc4go/internal/bacnetip/npdu_WhoIsRouterToNetwork.go
rename to plc4go/internal/bacnetip/bacgopes/npdu_WhoIsRouterToNetwork.go
index 63d9580a35..8b5d4dbe0e 100644
--- a/plc4go/internal/bacnetip/npdu_WhoIsRouterToNetwork.go
+++ b/plc4go/internal/bacnetip/bacgopes/npdu_WhoIsRouterToNetwork.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/object.go b/plc4go/internal/bacnetip/bacgopes/object.go
similarity index 97%
rename from plc4go/internal/bacnetip/object.go
rename to plc4go/internal/bacnetip/bacgopes/object.go
index 1c9b86f6c6..b3432951fd 100644
--- a/plc4go/internal/bacnetip/object.go
+++ b/plc4go/internal/bacnetip/bacgopes/object.go
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
diff --git a/plc4go/internal/bacnetip/object_Property.go b/plc4go/internal/bacnetip/bacgopes/object_Property.go
similarity index 98%
rename from plc4go/internal/bacnetip/object_Property.go
rename to plc4go/internal/bacnetip/bacgopes/object_Property.go
index 23879156c1..34b4d280b6 100644
--- a/plc4go/internal/bacnetip/object_Property.go
+++ b/plc4go/internal/bacnetip/bacgopes/object_Property.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 type Property struct {
 	//TODO: implement me
diff --git a/plc4go/internal/bacnetip/object_ReadWritePropertyServices.go b/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go
similarity index 90%
rename from plc4go/internal/bacnetip/object_ReadWritePropertyServices.go
rename to plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go
index e7670e8b7d..e8ab63b511 100644
--- a/plc4go/internal/bacnetip/object_ReadWritePropertyServices.go
+++ b/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=ReadWritePropertyServices
 type ReadWritePropertyServices struct {
 }
 
diff --git a/plc4go/internal/bacnetip/pdu.go b/plc4go/internal/bacnetip/bacgopes/pdu.go
similarity index 99%
rename from plc4go/internal/bacnetip/pdu.go
rename to plc4go/internal/bacnetip/bacgopes/pdu.go
index 94c1a7712c..e9b7fa669a 100644
--- a/plc4go/internal/bacnetip/pdu.go
+++ b/plc4go/internal/bacnetip/bacgopes/pdu.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/pdu_Address.go b/plc4go/internal/bacnetip/bacgopes/pdu_Address.go
similarity index 99%
rename from plc4go/internal/bacnetip/pdu_Address.go
rename to plc4go/internal/bacnetip/bacgopes/pdu_Address.go
index f07fcf57bf..223be4daf6 100644
--- a/plc4go/internal/bacnetip/pdu_Address.go
+++ b/plc4go/internal/bacnetip/bacgopes/pdu_Address.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"bytes"
@@ -68,6 +68,10 @@ type AddressTuple[L any, R any] struct {
 	Right R
 }
 
+func NewAddressTuple[L any, R any](l L, r R) *AddressTuple[L, R] {
+	return &AddressTuple[L, R]{l, r}
+}
+
 func (a *AddressTuple[L, R]) deepCopy() *AddressTuple[L, R] {
 	// TODO: check if that works like intended (might just fail for pointer types)
 	return &AddressTuple[L, R]{*CopyPtr[L](&a.Left), *CopyPtr[R](&a.Right)}
diff --git a/plc4go/internal/bacnetip/pdu_PCI.go b/plc4go/internal/bacnetip/bacgopes/pdu_PCI.go
similarity index 99%
rename from plc4go/internal/bacnetip/pdu_PCI.go
rename to plc4go/internal/bacnetip/bacgopes/pdu_PCI.go
index 07bcd0bc7f..ebe1d9b6ab 100644
--- a/plc4go/internal/bacnetip/pdu_PCI.go
+++ b/plc4go/internal/bacnetip/bacgopes/pdu_PCI.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/pdu_PDU.go b/plc4go/internal/bacnetip/bacgopes/pdu_PDU.go
similarity index 96%
rename from plc4go/internal/bacnetip/pdu_PDU.go
rename to plc4go/internal/bacnetip/bacgopes/pdu_PDU.go
index b6a1a4f579..c78c006b89 100644
--- a/plc4go/internal/bacnetip/pdu_PDU.go
+++ b/plc4go/internal/bacnetip/bacgopes/pdu_PDU.go
@@ -17,15 +17,14 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 	"github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
 )
 
 type PDU interface {
diff --git a/plc4go/internal/bacnetip/pdu_PDUData.go b/plc4go/internal/bacnetip/bacgopes/pdu_PDUData.go
similarity index 99%
rename from plc4go/internal/bacnetip/pdu_PDUData.go
rename to plc4go/internal/bacnetip/bacgopes/pdu_PDUData.go
index 4b990bc3d8..df5a34d27a 100644
--- a/plc4go/internal/bacnetip/pdu_PDUData.go
+++ b/plc4go/internal/bacnetip/bacgopes/pdu_PDUData.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata.go b/plc4go/internal/bacnetip/bacgopes/primitivedata.go
similarity index 97%
rename from plc4go/internal/bacnetip/primitivedata.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata.go
index 1c9b86f6c6..b3432951fd 100644
--- a/plc4go/internal/bacnetip/primitivedata.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata.go
@@ -17,4 +17,4 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
diff --git a/plc4go/internal/bacnetip/primitivedata_ApplicationTag.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_ApplicationTag.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_ApplicationTag.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_ApplicationTag.go
index 0fafd3b1d0..c993e4ff1e 100644
--- a/plc4go/internal/bacnetip/primitivedata_ApplicationTag.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_ApplicationTag.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/primitivedata_Atomic.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Atomic.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Atomic.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Atomic.go
index 8d67ae783c..f18fae26ec 100644
--- a/plc4go/internal/bacnetip/primitivedata_Atomic.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Atomic.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"cmp"
diff --git a/plc4go/internal/bacnetip/primitivedata_BitString.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_BitString.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_BitString.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_BitString.go
index a8321c3eb7..7038df0c1f 100644
--- a/plc4go/internal/bacnetip/primitivedata_BitString.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_BitString.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_Boolean.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Boolean.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Boolean.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Boolean.go
index 2e942c8f1e..1d972de11b 100644
--- a/plc4go/internal/bacnetip/primitivedata_Boolean.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Boolean.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_CharacterString.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_CharacterString.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_CharacterString.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_CharacterString.go
index 8527d53d31..71ddf99965 100644
--- a/plc4go/internal/bacnetip/primitivedata_CharacterString.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_CharacterString.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_ClosingTag.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_ClosingTag.go
similarity index 98%
rename from plc4go/internal/bacnetip/primitivedata_ClosingTag.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_ClosingTag.go
index b2feeb6757..966f2abe6b 100644
--- a/plc4go/internal/bacnetip/primitivedata_ClosingTag.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_ClosingTag.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import "github.com/pkg/errors"
 
diff --git a/plc4go/internal/bacnetip/primitivedata_CommonMath.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_CommonMath.go
similarity index 98%
rename from plc4go/internal/bacnetip/primitivedata_CommonMath.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_CommonMath.go
index 7574af9979..8f45b58077 100644
--- a/plc4go/internal/bacnetip/primitivedata_CommonMath.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_CommonMath.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 type CommonMath struct {
 	// TODO: implement me
diff --git a/plc4go/internal/bacnetip/primitivedata_ContextTag.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_ContextTag.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_ContextTag.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_ContextTag.go
index 3a68eda829..9c7596cb24 100644
--- a/plc4go/internal/bacnetip/primitivedata_ContextTag.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_ContextTag.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/primitivedata_Date.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Date.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Date.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Date.go
index 3d33d18572..8c996d81ba 100644
--- a/plc4go/internal/bacnetip/primitivedata_Date.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Date.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_Double.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Double.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Double.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Double.go
index d1fc6f438e..5c61332aa0 100644
--- a/plc4go/internal/bacnetip/primitivedata_Double.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Double.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_Enumeration.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Enumeration.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Enumeration.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Enumeration.go
index da67326fbf..986d3b6f59 100644
--- a/plc4go/internal/bacnetip/primitivedata_Enumeration.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Enumeration.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_Integer.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Integer.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Integer.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Integer.go
index bfedd16302..c7388923cf 100644
--- a/plc4go/internal/bacnetip/primitivedata_Integer.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Integer.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_Null.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Null.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Null.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Null.go
index b9c0411745..4c475f5c72 100644
--- a/plc4go/internal/bacnetip/primitivedata_Null.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Null.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_ObjectIdentifier.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_ObjectIdentifier.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_ObjectIdentifier.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_ObjectIdentifier.go
index c873aa2020..348a8297d7 100644
--- a/plc4go/internal/bacnetip/primitivedata_ObjectIdentifier.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_ObjectIdentifier.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_ObjectType.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_ObjectType.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_ObjectType.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_ObjectType.go
index ad3b54bd70..7173c98ce5 100644
--- a/plc4go/internal/bacnetip/primitivedata_ObjectType.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_ObjectType.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_OctetString.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_OctetString.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_OctetString.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_OctetString.go
index 019ef9411c..5b47d8e892 100644
--- a/plc4go/internal/bacnetip/primitivedata_OctetString.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_OctetString.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"bytes"
diff --git a/plc4go/internal/bacnetip/primitivedata_OpeningTag.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_OpeningTag.go
similarity index 98%
rename from plc4go/internal/bacnetip/primitivedata_OpeningTag.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_OpeningTag.go
index 8014b76582..0187fed4b0 100644
--- a/plc4go/internal/bacnetip/primitivedata_OpeningTag.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_OpeningTag.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import "github.com/pkg/errors"
 
diff --git a/plc4go/internal/bacnetip/primitivedata_Real.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Real.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Real.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Real.go
index 05d97d26e6..cb709640e7 100644
--- a/plc4go/internal/bacnetip/primitivedata_Real.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Real.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_Tag.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Tag.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Tag.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Tag.go
index 7302c772a8..329a91305d 100644
--- a/plc4go/internal/bacnetip/primitivedata_Tag.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Tag.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"bytes"
diff --git a/plc4go/internal/bacnetip/primitivedata_TagList.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_TagList.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_TagList.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_TagList.go
index 695a167b46..d3c7ac1441 100644
--- a/plc4go/internal/bacnetip/primitivedata_TagList.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_TagList.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"github.com/pkg/errors"
diff --git a/plc4go/internal/bacnetip/primitivedata_Time.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Time.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Time.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Time.go
index 41fc778411..c2e54920fd 100644
--- a/plc4go/internal/bacnetip/primitivedata_Time.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Time.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/primitivedata_Unsigned.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Unsigned.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned.go
index abc461f69e..082413678d 100644
--- a/plc4go/internal/bacnetip/primitivedata_Unsigned.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_Unsigned16.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned16.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Unsigned16.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned16.go
index a3028ddcac..4a0366ed41 100644
--- a/plc4go/internal/bacnetip/primitivedata_Unsigned16.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned16.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/primitivedata_Unsigned8.go b/plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned8.go
similarity index 99%
rename from plc4go/internal/bacnetip/primitivedata_Unsigned8.go
rename to plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned8.go
index 7bc1258fc4..b586735b45 100644
--- a/plc4go/internal/bacnetip/primitivedata_Unsigned8.go
+++ b/plc4go/internal/bacnetip/bacgopes/primitivedata_Unsigned8.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"encoding/binary"
diff --git a/plc4go/internal/bacnetip/service/Subscription.go b/plc4go/internal/bacnetip/bacgopes/service/Subscription.go
similarity index 88%
rename from plc4go/internal/bacnetip/service/Subscription.go
rename to plc4go/internal/bacnetip/bacgopes/service/Subscription.go
index 3aa3f0679a..751aa414ae 100644
--- a/plc4go/internal/bacnetip/service/Subscription.go
+++ b/plc4go/internal/bacnetip/bacgopes/service/Subscription.go
@@ -19,10 +19,10 @@
 
 package service
 
-import "github.com/apache/plc4x/plc4go/internal/bacnetip"
+import "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 
 type Subscription struct {
-	*bacnetip.OneShotTask
-	*bacnetip.DebugContents
+	*bacgopes.OneShotTask
+	*bacgopes.DebugContents
 	//TODO: implement me
 }
diff --git a/plc4go/internal/bacnetip/service/cov.go b/plc4go/internal/bacnetip/bacgopes/service/cov.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov.go
diff --git a/plc4go/internal/bacnetip/service/cov_AccessDoorCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_AccessDoorCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_AccessDoorCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_AccessDoorCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_AccessPointCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_AccessPointCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_AccessPointCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_AccessPointCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_ActiveCOVSubscription.go b/plc4go/internal/bacnetip/bacgopes/service/cov_ActiveCOVSubscription.go
similarity index 91%
rename from plc4go/internal/bacnetip/service/cov_ActiveCOVSubscription.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_ActiveCOVSubscription.go
index 3c8504bff4..3284fcbb96 100644
--- a/plc4go/internal/bacnetip/service/cov_ActiveCOVSubscription.go
+++ b/plc4go/internal/bacnetip/bacgopes/service/cov_ActiveCOVSubscription.go
@@ -19,9 +19,9 @@
 
 package service
 
-import "github.com/apache/plc4x/plc4go/internal/bacnetip"
+import "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 
 type ActiveCOVSubscription struct {
-	*bacnetip.Property
+	*bacgopes.Property
 	//TODO: implement me
 }
diff --git a/plc4go/internal/bacnetip/service/cov_COVDetection.go b/plc4go/internal/bacnetip/bacgopes/service/cov_COVDetection.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_COVDetection.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_COVDetection.go
diff --git a/plc4go/internal/bacnetip/service/cov_COVIncrementCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_COVIncrementCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_COVIncrementCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_COVIncrementCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_ChangeOfValuesServices.go b/plc4go/internal/bacnetip/bacgopes/service/cov_ChangeOfValuesServices.go
similarity index 90%
rename from plc4go/internal/bacnetip/service/cov_ChangeOfValuesServices.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_ChangeOfValuesServices.go
index 5dc83b6d51..5051c36b7a 100644
--- a/plc4go/internal/bacnetip/service/cov_ChangeOfValuesServices.go
+++ b/plc4go/internal/bacnetip/bacgopes/service/cov_ChangeOfValuesServices.go
@@ -19,9 +19,9 @@
 
 package service
 
-import "github.com/apache/plc4x/plc4go/internal/bacnetip"
+import "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 
 type ChangeOfValuesServices struct {
-	*bacnetip.Capability
+	*bacgopes.Capability
 	//TODO: implement me
 }
diff --git a/plc4go/internal/bacnetip/service/cov_CredentialDataInputCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_CredentialDataInputCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_CredentialDataInputCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_CredentialDataInputCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_GenericCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_GenericCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_GenericCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_GenericCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_LoadControlCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_LoadControlCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_LoadControlCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_LoadControlCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_PulseConverterCriteria.go b/plc4go/internal/bacnetip/bacgopes/service/cov_PulseConverterCriteria.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_PulseConverterCriteria.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_PulseConverterCriteria.go
diff --git a/plc4go/internal/bacnetip/service/cov_SubscriptionList.go b/plc4go/internal/bacnetip/bacgopes/service/cov_SubscriptionList.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/cov_SubscriptionList.go
rename to plc4go/internal/bacnetip/bacgopes/service/cov_SubscriptionList.go
diff --git a/plc4go/internal/bacnetip/service/detect.go b/plc4go/internal/bacnetip/bacgopes/service/detect.go
similarity index 100%
rename from plc4go/internal/bacnetip/service/detect.go
rename to plc4go/internal/bacnetip/bacgopes/service/detect.go
diff --git a/plc4go/internal/bacnetip/service_device_Device.go b/plc4go/internal/bacnetip/bacgopes/service_device_Device.go
similarity index 93%
rename from plc4go/internal/bacnetip/service_device_Device.go
rename to plc4go/internal/bacnetip/bacgopes/service_device_Device.go
index 3b6012616a..1a10f1de2e 100644
--- a/plc4go/internal/bacnetip/service_device_Device.go
+++ b/plc4go/internal/bacnetip/bacgopes/service_device_Device.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"strconv"
@@ -33,19 +33,20 @@ type WhoIsIAmServicesRequirements interface {
 	Request(args Args, kwargs KWArgs) error
 }
 
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=WhoIsIAmServices
 type WhoIsIAmServices struct {
-	WhoIsIAmServicesRequirements
+	_requirements WhoIsIAmServicesRequirements
 	*Capability
 	localDevice *LocalDeviceObject
 
-	log zerolog.Logger
+	log zerolog.Logger `ignore:"true"`
 }
 
 func NewWhoIsIAmServices(localLog zerolog.Logger, whoIsIAmServicesRequirements WhoIsIAmServicesRequirements) (*WhoIsIAmServices, error) {
 	w := &WhoIsIAmServices{
 		log: localLog,
 	}
-	w.WhoIsIAmServicesRequirements = whoIsIAmServicesRequirements
+	w._requirements = whoIsIAmServicesRequirements
 	w.Capability = NewCapability()
 	return w, nil
 }
@@ -89,7 +90,7 @@ func (w *WhoIsIAmServices) WhoIs(lowLimit, highLimit *uint, address *Address) er
 
 	w.log.Debug().Stringer("whoIs", whoIs).Msg("WhoIs")
 
-	return w.Request(NewArgs(NewPDU(whoIs, WithPDUDestination(address))), NoKWArgs)
+	return w._requirements.Request(NewArgs(NewPDU(whoIs, WithPDUDestination(address))), NoKWArgs)
 }
 
 // DoWhoIsRequest respond to a Who-Is request.
@@ -168,7 +169,7 @@ func (w *WhoIsIAmServices) IAm(address *Address) error {
 	}
 	w.log.Debug().Stringer("iAm", iAm).Msg("IAm")
 
-	return w.Request(NewArgs(NewPDU(iAm, WithPDUDestination(address))), NoKWArgs)
+	return w._requirements.Request(NewArgs(NewPDU(iAm, WithPDUDestination(address))), NoKWArgs)
 }
 
 // DoIAmRequest responds to an I-Am request.
diff --git a/plc4go/internal/bacnetip/settings.go b/plc4go/internal/bacnetip/bacgopes/settings.go
similarity index 98%
rename from plc4go/internal/bacnetip/settings.go
rename to plc4go/internal/bacnetip/bacgopes/settings.go
index 96b894e277..f65cfbe9c9 100644
--- a/plc4go/internal/bacnetip/settings.go
+++ b/plc4go/internal/bacnetip/bacgopes/settings.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 type settings struct {
 	Debug       bool
diff --git a/plc4go/internal/bacnetip/task.go b/plc4go/internal/bacnetip/bacgopes/task.go
similarity index 99%
rename from plc4go/internal/bacnetip/task.go
rename to plc4go/internal/bacnetip/bacgopes/task.go
index 4eb9d885c2..2fe14f3965 100644
--- a/plc4go/internal/bacnetip/task.go
+++ b/plc4go/internal/bacnetip/bacgopes/task.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"time"
diff --git a/plc4go/internal/bacnetip/task_OneShotDeleteTask.go b/plc4go/internal/bacnetip/bacgopes/task_OneShotDeleteTask.go
similarity index 98%
rename from plc4go/internal/bacnetip/task_OneShotDeleteTask.go
rename to plc4go/internal/bacnetip/bacgopes/task_OneShotDeleteTask.go
index 1c054c52ae..ae57a5ec4e 100644
--- a/plc4go/internal/bacnetip/task_OneShotDeleteTask.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_OneShotDeleteTask.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/task_OneShotFunctionTask.go b/plc4go/internal/bacnetip/bacgopes/task_OneShotFunctionTask.go
similarity index 99%
rename from plc4go/internal/bacnetip/task_OneShotFunctionTask.go
rename to plc4go/internal/bacnetip/bacgopes/task_OneShotFunctionTask.go
index c85d6dd958..5dd4932bed 100644
--- a/plc4go/internal/bacnetip/task_OneShotFunctionTask.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_OneShotFunctionTask.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import "fmt"
 
diff --git a/plc4go/internal/bacnetip/task_OneShotTask.go b/plc4go/internal/bacnetip/bacgopes/task_OneShotTask.go
similarity index 98%
rename from plc4go/internal/bacnetip/task_OneShotTask.go
rename to plc4go/internal/bacnetip/bacgopes/task_OneShotTask.go
index 8fae4d0c47..c5ea424fd6 100644
--- a/plc4go/internal/bacnetip/task_OneShotTask.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_OneShotTask.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/task_RecurringFunctionTask.go b/plc4go/internal/bacnetip/bacgopes/task_RecurringFunctionTask.go
similarity index 99%
rename from plc4go/internal/bacnetip/task_RecurringFunctionTask.go
rename to plc4go/internal/bacnetip/bacgopes/task_RecurringFunctionTask.go
index 669aa0dde9..fc21f3be39 100644
--- a/plc4go/internal/bacnetip/task_RecurringFunctionTask.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_RecurringFunctionTask.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/task_RecurringTask.go b/plc4go/internal/bacnetip/bacgopes/task_RecurringTask.go
similarity index 99%
rename from plc4go/internal/bacnetip/task_RecurringTask.go
rename to plc4go/internal/bacnetip/bacgopes/task_RecurringTask.go
index 2c12ad903a..33e49ff89d 100644
--- a/plc4go/internal/bacnetip/task_RecurringTask.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_RecurringTask.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/task_Task.go b/plc4go/internal/bacnetip/bacgopes/task_Task.go
similarity index 99%
rename from plc4go/internal/bacnetip/task_Task.go
rename to plc4go/internal/bacnetip/bacgopes/task_Task.go
index 73a6661a57..68a2c7e759 100644
--- a/plc4go/internal/bacnetip/task_Task.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_Task.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"fmt"
diff --git a/plc4go/internal/bacnetip/task_TaskManager.go b/plc4go/internal/bacnetip/bacgopes/task_TaskManager.go
similarity index 99%
rename from plc4go/internal/bacnetip/task_TaskManager.go
rename to plc4go/internal/bacnetip/bacgopes/task_TaskManager.go
index 43f15a253d..285eb01989 100644
--- a/plc4go/internal/bacnetip/task_TaskManager.go
+++ b/plc4go/internal/bacnetip/bacgopes/task_TaskManager.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package bacnetip
+package bacgopes
 
 import (
 	"container/heap"
diff --git a/plc4go/internal/bacnetip/tests/state_machine.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine.go
similarity index 74%
rename from plc4go/internal/bacnetip/tests/state_machine.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine.go
index bc5e305f41..758083b6f9 100644
--- a/plc4go/internal/bacnetip/tests/state_machine.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/state_machine.go
@@ -27,9 +27,8 @@ import (
 
 	"github.com/rs/zerolog"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 	"github.com/apache/plc4x/plc4go/spi/utils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
 )
 
 // Transition Instances of this class are transitions betweeen getStates of a state machine.
@@ -43,7 +42,7 @@ func (t Transition) String() string {
 
 type SendTransition struct {
 	Transition
-	pdu bacnetip.PDU
+	pdu bacgopes.PDU
 }
 
 func (t SendTransition) String() string {
@@ -52,7 +51,7 @@ func (t SendTransition) String() string {
 
 type criteria struct {
 	pduType  any
-	pduAttrs map[bacnetip.KnownKey]any
+	pduAttrs map[bacgopes.KnownKey]any
 }
 
 func (c criteria) String() string {
@@ -87,9 +86,9 @@ func (t TimeoutTransition) String() string {
 }
 
 type fnargs struct {
-	fn     func(args bacnetip.Args, kwargs bacnetip.KWArgs) error
-	args   bacnetip.Args
-	kwargs bacnetip.KWArgs
+	fn     func(args bacgopes.Args, kwargs bacgopes.KWArgs) error
+	args   bacgopes.Args
+	kwargs bacgopes.KWArgs
 }
 
 func (f fnargs) String() string {
@@ -105,7 +104,7 @@ func (t CallTransition) String() string {
 	return fmt.Sprintf("CallTransition{Transition: %s, fnargs: %s}", t.Transition, t.fnargs)
 }
 
-func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnetip.KnownKey]any) (matches bool) {
+func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacgopes.KnownKey]any) (matches bool) {
 	// check the type
 	if pduType != nil && fmt.Sprintf("%T", pdu) != fmt.Sprintf("%T", pduType) {
 		localLog.Debug().Type("got", pdu).Type("want", pduType).Msg("failed match, wrong type")
@@ -114,14 +113,14 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 	for attrName, attrValue := range pduAttrs {
 		attrLog := localLog.With().Str("attrName", string(attrName)).Interface("attrValue", attrValue).Logger()
 		switch attrName {
-		case bacnetip.KWPPDUSource:
-			equals := pdu.(bacnetip.PDU).GetPDUSource().Equals(attrValue)
+		case bacgopes.KWPPDUSource:
+			equals := pdu.(bacgopes.PDU).GetPDUSource().Equals(attrValue)
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWPDUDestination:
-			equals := pdu.(bacnetip.PDU).GetPDUDestination().Equals(attrValue)
+		case bacgopes.KWPDUDestination:
+			equals := pdu.(bacgopes.PDU).GetPDUDestination().Equals(attrValue)
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -154,13 +153,13 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWPDUData:
-			got := pdu.(bacnetip.PDU).GetPduData()
+		case bacgopes.KWPDUData:
+			got := pdu.(bacgopes.PDU).GetPduData()
 			var want []byte
 			switch attrValue := attrValue.(type) {
 			case []byte:
 				want = attrValue
-			case bacnetip.PDUData:
+			case bacgopes.PDUData:
 				want = attrValue.GetPduData()
 			default:
 				attrLog.Debug().Type("type", attrValue).Msg("mismatch, attr unhandled")
@@ -173,8 +172,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Debug().Msg("pduData doesn't match")
 				return false
 			}
-		case bacnetip.KWWirtnNetwork:
-			wirtn, ok := pdu.(*bacnetip.WhoIsRouterToNetwork)
+		case bacgopes.KWWirtnNetwork:
+			wirtn, ok := pdu.(*bacgopes.WhoIsRouterToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -188,8 +187,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWIartnNetworkList:
-			iamrtn, ok := pdu.(*bacnetip.IAmRouterToNetwork)
+		case bacgopes.KWIartnNetworkList:
+			iamrtn, ok := pdu.(*bacgopes.IAmRouterToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -205,8 +204,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWIcbrtnNetwork:
-			iamrtn, ok := pdu.(*bacnetip.ICouldBeRouterToNetwork)
+		case bacgopes.KWIcbrtnNetwork:
+			iamrtn, ok := pdu.(*bacgopes.ICouldBeRouterToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -216,8 +215,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWIcbrtnPerformanceIndex:
-			iamrtn, ok := pdu.(*bacnetip.ICouldBeRouterToNetwork)
+		case bacgopes.KWIcbrtnPerformanceIndex:
+			iamrtn, ok := pdu.(*bacgopes.ICouldBeRouterToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -227,8 +226,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWRmtnRejectionReason:
-			iamrtn, ok := pdu.(*bacnetip.RejectMessageToNetwork)
+		case bacgopes.KWRmtnRejectionReason:
+			iamrtn, ok := pdu.(*bacgopes.RejectMessageToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -238,8 +237,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWRmtnDNET:
-			iamrtn, ok := pdu.(*bacnetip.RejectMessageToNetwork)
+		case bacgopes.KWRmtnDNET:
+			iamrtn, ok := pdu.(*bacgopes.RejectMessageToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -249,8 +248,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWRbtnNetworkList:
-			rbtn, ok := pdu.(*bacnetip.RouterBusyToNetwork)
+		case bacgopes.KWRbtnNetworkList:
+			rbtn, ok := pdu.(*bacgopes.RouterBusyToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -266,8 +265,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWRatnNetworkList:
-			ratn, ok := pdu.(*bacnetip.RouterAvailableToNetwork)
+		case bacgopes.KWRatnNetworkList:
+			ratn, ok := pdu.(*bacgopes.RouterAvailableToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -283,46 +282,46 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWIrtTable:
-			irt, ok := pdu.(*bacnetip.InitializeRoutingTable)
+		case bacgopes.KWIrtTable:
+			irt, ok := pdu.(*bacgopes.InitializeRoutingTable)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
 			irts := irt.GetIrtTable()
-			oirts, ok := attrValue.([]*bacnetip.RoutingTableEntry)
+			oirts, ok := attrValue.([]*bacgopes.RoutingTableEntry)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-			equals := slices.EqualFunc(irts, oirts, func(entry *bacnetip.RoutingTableEntry, entry2 *bacnetip.RoutingTableEntry) bool {
+			equals := slices.EqualFunc(irts, oirts, func(entry *bacgopes.RoutingTableEntry, entry2 *bacgopes.RoutingTableEntry) bool {
 				return entry.Equals(entry2)
 			})
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWIrtaTable:
-			irta, ok := pdu.(*bacnetip.InitializeRoutingTableAck)
+		case bacgopes.KWIrtaTable:
+			irta, ok := pdu.(*bacgopes.InitializeRoutingTableAck)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
 			irts := irta.GetIrtaTable()
-			oirts, ok := attrValue.([]*bacnetip.RoutingTableEntry)
+			oirts, ok := attrValue.([]*bacgopes.RoutingTableEntry)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-			equals := slices.EqualFunc(irts, oirts, func(entry *bacnetip.RoutingTableEntry, entry2 *bacnetip.RoutingTableEntry) bool {
+			equals := slices.EqualFunc(irts, oirts, func(entry *bacgopes.RoutingTableEntry, entry2 *bacgopes.RoutingTableEntry) bool {
 				return entry.Equals(entry2)
 			})
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWEctnDNET:
-			ectn, ok := pdu.(*bacnetip.EstablishConnectionToNetwork)
+		case bacgopes.KWEctnDNET:
+			ectn, ok := pdu.(*bacgopes.EstablishConnectionToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -332,8 +331,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWEctnTerminationTime:
-			ectn, ok := pdu.(*bacnetip.EstablishConnectionToNetwork)
+		case bacgopes.KWEctnTerminationTime:
+			ectn, ok := pdu.(*bacgopes.EstablishConnectionToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -343,8 +342,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWDctnDNET:
-			dctn, ok := pdu.(*bacnetip.DisconnectConnectionToNetwork)
+		case bacgopes.KWDctnDNET:
+			dctn, ok := pdu.(*bacgopes.DisconnectConnectionToNetwork)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -354,8 +353,8 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWNniNet:
-			nni, ok := pdu.(*bacnetip.NetworkNumberIs)
+		case bacgopes.KWNniNet:
+			nni, ok := pdu.(*bacgopes.NetworkNumberIs)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -365,15 +364,15 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWNniFlag:
-			nni, ok := pdu.(*bacnetip.NetworkNumberIs)
+		case bacgopes.KWNniFlag:
+			nni, ok := pdu.(*bacgopes.NetworkNumberIs)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
 			return nni.GetNniFlag() == attrValue
-		case bacnetip.KWBvlciResultCode:
-			r, ok := pdu.(*bacnetip.Result)
+		case bacgopes.KWBvlciResultCode:
+			r, ok := pdu.(*bacgopes.Result)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -383,35 +382,35 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWBvlciBDT:
-			var iwbdt []*bacnetip.Address
+		case bacgopes.KWBvlciBDT:
+			var iwbdt []*bacgopes.Address
 			switch pdu := pdu.(type) {
-			case *bacnetip.WriteBroadcastDistributionTable:
+			case *bacgopes.WriteBroadcastDistributionTable:
 				iwbdt = pdu.GetBvlciBDT()
-			case *bacnetip.ReadBroadcastDistributionTableAck:
+			case *bacgopes.ReadBroadcastDistributionTableAck:
 				iwbdt = pdu.GetBvlciBDT()
 			default:
 				attrLog.Trace().Type("type", pdu).Msg("doesn't match")
 				return false
 			}
-			owbdt, ok := attrValue.([]*bacnetip.Address)
+			owbdt, ok := attrValue.([]*bacgopes.Address)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-			equals := slices.EqualFunc(iwbdt, owbdt, func(a *bacnetip.Address, b *bacnetip.Address) bool {
+			equals := slices.EqualFunc(iwbdt, owbdt, func(a *bacgopes.Address, b *bacgopes.Address) bool {
 				return a.Equals(b)
 			})
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWBvlciAddress:
-			var address *bacnetip.Address
+		case bacgopes.KWBvlciAddress:
+			var address *bacgopes.Address
 			switch pdu := pdu.(type) {
-			case *bacnetip.ForwardedNPDU:
+			case *bacgopes.ForwardedNPDU:
 				address = pdu.GetBvlciAddress()
-			case *bacnetip.DeleteForeignDeviceTableEntry:
+			case *bacgopes.DeleteForeignDeviceTableEntry:
 				address = pdu.GetBvlciAddress()
 			default:
 				attrLog.Trace().Type("type", pdu).Msg("doesn't match")
@@ -422,29 +421,29 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWFdAddress:
+		case bacgopes.KWFdAddress:
 			panic("implement me")
 			equals := true // TODO temporary
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWFdTTL:
+		case bacgopes.KWFdTTL:
 			panic("implement me")
 			equals := true // TODO temporary
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWFdRemain:
+		case bacgopes.KWFdRemain:
 			panic("implement me")
 			equals := true // TODO temporary
 			if !equals {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWBvlciTimeToLive:
-			rfd, ok := pdu.(*bacnetip.RegisterForeignDevice)
+		case bacgopes.KWBvlciTimeToLive:
+			rfd, ok := pdu.(*bacgopes.RegisterForeignDevice)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
@@ -454,19 +453,19 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-		case bacnetip.KWBvlciFDT:
-			rfdta, ok := pdu.(*bacnetip.ReadForeignDeviceTableAck)
+		case bacgopes.KWBvlciFDT:
+			rfdta, ok := pdu.(*bacgopes.ReadForeignDeviceTableAck)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
 			ifdt := rfdta.GetBvlciFDT()
-			oifdt, ok := attrValue.([]*bacnetip.FDTEntry)
+			oifdt, ok := attrValue.([]*bacgopes.FDTEntry)
 			if !ok {
 				attrLog.Trace().Msg("doesn't match")
 				return false
 			}
-			equals := slices.EqualFunc(ifdt, oifdt, func(a *bacnetip.FDTEntry, b *bacnetip.FDTEntry) bool {
+			equals := slices.EqualFunc(ifdt, oifdt, func(a *bacgopes.FDTEntry, b *bacgopes.FDTEntry) bool {
 				equals := a.Equals(b)
 				if !equals {
 					attrLog.Trace().Stringer("a", a).Stringer("b", b).Msg("doesn't match")
@@ -486,20 +485,20 @@ func MatchPdu(localLog zerolog.Logger, pdu any, pduType any, pduAttrs map[bacnet
 }
 
 type TimeoutTask struct {
-	*bacnetip.OneShotTask
+	*bacgopes.OneShotTask
 
-	fn     func(args bacnetip.Args, kwargs bacnetip.KWArgs) error
-	args   bacnetip.Args
-	kwargs bacnetip.KWArgs
+	fn     func(args bacgopes.Args, kwargs bacgopes.KWArgs) error
+	args   bacgopes.Args
+	kwargs bacgopes.KWArgs
 }
 
-func NewTimeoutTask(fn func(args bacnetip.Args, kwargs bacnetip.KWArgs) error, args bacnetip.Args, kwargs bacnetip.KWArgs, when *time.Time) *TimeoutTask {
+func NewTimeoutTask(fn func(args bacgopes.Args, kwargs bacgopes.KWArgs) error, args bacgopes.Args, kwargs bacgopes.KWArgs, when *time.Time) *TimeoutTask {
 	task := &TimeoutTask{
 		fn:     fn,
 		args:   args,
 		kwargs: kwargs,
 	}
-	task.OneShotTask = bacnetip.NewOneShotTask(task, when)
+	task.OneShotTask = bacgopes.NewOneShotTask(task, when)
 	return task
 }
 
diff --git a/plc4go/internal/bacnetip/tests/state_machine_ClientStateMachine.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_ClientStateMachine.go
similarity index 83%
rename from plc4go/internal/bacnetip/tests/state_machine_ClientStateMachine.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine_ClientStateMachine.go
index db5005cef4..b752b002d2 100644
--- a/plc4go/internal/bacnetip/tests/state_machine_ClientStateMachine.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_ClientStateMachine.go
@@ -25,16 +25,16 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 )
 
 type ClientStateMachineContract interface {
 	fmt.Stringer
-	bacnetip.Client
+	bacgopes.Client
 	StateMachineContract
-	Send(args bacnetip.Args, kwargs bacnetip.KWArgs) error
-	Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error
+	Send(args bacgopes.Args, kwargs bacgopes.KWArgs) error
+	Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error
 }
 
 // ClientStateMachine An instance of this class sits at the top of a stack.  tPDU's that the
@@ -42,7 +42,7 @@ type ClientStateMachineContract interface {
 //	state machine sends are sent down the stack and tPDU's coming up the
 //	stack are fed as received tPDU's.
 type ClientStateMachine struct {
-	bacnetip.Client
+	bacgopes.Client
 	StateMachineContract
 
 	contract ClientStateMachineContract
@@ -68,7 +68,7 @@ func NewClientStateMachine(localLog zerolog.Logger, opts ...func(*ClientStateMac
 		c.log = c.log.With().Str("name", c.name).Logger()
 	}
 	var err error
-	c.Client, err = bacnetip.NewClient(localLog, c.contract)
+	c.Client, err = bacgopes.NewClient(localLog, c.contract)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating client")
 	}
@@ -90,12 +90,12 @@ func WithClientStateMachineExtension(contract ClientStateMachineContract) func(*
 	}
 }
 
-func (s *ClientStateMachine) Send(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *ClientStateMachine) Send(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Trace().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Send")
 	return s.contract.Request(args, kwargs)
 }
 
-func (s *ClientStateMachine) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *ClientStateMachine) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Trace().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Confirmation")
 	return s.contract.Receive(args, kwargs)
 }
diff --git a/plc4go/internal/bacnetip/tests/state_machine_ServerStateMachine.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_ServerStateMachine.go
similarity index 86%
rename from plc4go/internal/bacnetip/tests/state_machine_ServerStateMachine.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine_ServerStateMachine.go
index c2e4bd7b93..636c3bdd7f 100644
--- a/plc4go/internal/bacnetip/tests/state_machine_ServerStateMachine.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_ServerStateMachine.go
@@ -25,11 +25,11 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
 type ServerStateMachine struct {
-	bacnetip.Server
+	bacgopes.Server
 	StateMachineContract
 
 	name string
@@ -45,7 +45,7 @@ func NewServerStateMachine(localLog zerolog.Logger, opts ...func(*ServerStateMac
 		opt(c)
 	}
 	var err error
-	c.Server, err = bacnetip.NewServer(localLog, c)
+	c.Server, err = bacgopes.NewServer(localLog, c)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating Server")
 	}
@@ -61,12 +61,12 @@ func WithServerStateMachineName(name string) func(*ServerStateMachine) {
 	}
 }
 
-func (s *ServerStateMachine) Send(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *ServerStateMachine) Send(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Trace().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Send")
 	return s.Response(args, kwargs)
 }
 
-func (s *ServerStateMachine) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *ServerStateMachine) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Trace().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Indication")
 	return s.Receive(args, kwargs)
 }
diff --git a/plc4go/internal/bacnetip/tests/state_machine_State.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_State.go
similarity index 91%
rename from plc4go/internal/bacnetip/tests/state_machine_State.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine_State.go
index 18c9e81b08..32b92e295e 100644
--- a/plc4go/internal/bacnetip/tests/state_machine_State.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_State.go
@@ -26,23 +26,23 @@ import (
 
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 )
 
 type StateInterceptor interface {
-	BeforeSend(pdu bacnetip.PDU)
-	AfterSend(pdu bacnetip.PDU)
-	BeforeReceive(pdu bacnetip.PDU)
-	AfterReceive(pdu bacnetip.PDU)
-	UnexpectedReceive(pdu bacnetip.PDU)
+	BeforeSend(pdu bacgopes.PDU)
+	AfterSend(pdu bacgopes.PDU)
+	BeforeReceive(pdu bacgopes.PDU)
+	AfterReceive(pdu bacgopes.PDU)
+	UnexpectedReceive(pdu bacgopes.PDU)
 }
 
 type State interface {
 	fmt.Stringer
 
-	Send(pdu bacnetip.PDU, nextState State) State
-	Receive(args bacnetip.Args, kwargs bacnetip.KWArgs) State
+	Send(pdu bacgopes.PDU, nextState State) State
+	Receive(args bacgopes.Args, kwargs bacgopes.KWArgs) State
 	Reset()
 	Fail(docstring string) State
 	Success(docstring string) State
@@ -54,7 +54,7 @@ type State interface {
 	SetEvent(eventId string) State
 	Doc(docstring string) State
 	DocString() string
-	Call(fn func(args bacnetip.Args, kwargs bacnetip.KWArgs) error, args bacnetip.Args, kwargs bacnetip.KWArgs) State
+	Call(fn func(args bacgopes.Args, kwargs bacgopes.KWArgs) error, args bacgopes.Args, kwargs bacgopes.KWArgs) State
 
 	getStateMachine() StateMachine
 	setStateMachine(StateMachine)
@@ -245,7 +245,7 @@ func (s *state) EnterState() {
 	s.log.Debug().Msg("EnterState")
 	if s.timeoutTransition != nil {
 		s.log.Debug().Time("timeout", s.timeoutTransition.timeout).Msg("waiting")
-		s.stateMachine.getStateTimeoutTask().InstallTask(bacnetip.WithInstallTaskOptionsWhen(s.timeoutTransition.timeout))
+		s.stateMachine.getStateTimeoutTask().InstallTask(bacgopes.WithInstallTaskOptionsWhen(s.timeoutTransition.timeout))
 	} else {
 		s.log.Trace().Msg("no timeout")
 	}
@@ -263,7 +263,7 @@ func (s *state) ExitState() {
 // Send Create a SendTransition from this state to another, possibly new, state.  The next state is returned for method
 //
 //	chaining. pdu tPDU to send nextState state to transition to after sending
-func (s *state) Send(pdu bacnetip.PDU, nextState State) State {
+func (s *state) Send(pdu bacgopes.PDU, nextState State) State {
 	s.log.Debug().Stringer("pdu", pdu).Msg("Send")
 	if nextState == nil {
 		nextState = s.stateMachine.NewState("")
@@ -280,12 +280,12 @@ func (s *state) Send(pdu bacnetip.PDU, nextState State) State {
 }
 
 // BeforeSend Called before each tPDU about to be sent.
-func (s *state) BeforeSend(pdu bacnetip.PDU) {
+func (s *state) BeforeSend(pdu bacgopes.PDU) {
 	s.stateMachine.BeforeSend(pdu)
 }
 
 // AfterSend Called after each tPDU about to be sent.
-func (s *state) AfterSend(pdu bacnetip.PDU) {
+func (s *state) AfterSend(pdu bacgopes.PDU) {
 	s.stateMachine.AfterSend(pdu)
 }
 
@@ -295,7 +295,7 @@ func (s *state) AfterSend(pdu bacnetip.PDU) {
 //
 //	criteria tPDU to match
 //	 next_state destination state after a successful match
-func (s *state) Receive(args bacnetip.Args, kwargs bacnetip.KWArgs) State {
+func (s *state) Receive(args bacgopes.Args, kwargs bacgopes.KWArgs) State {
 	s.log.Debug().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Receive")
 	pduType := args[0]
 	pduAttrs := kwargs
@@ -327,19 +327,19 @@ func (s *state) Receive(args bacnetip.Args, kwargs bacnetip.KWArgs) State {
 }
 
 // BeforeReceive Called with each tPDU received before matching.
-func (s *state) BeforeReceive(pdu bacnetip.PDU) {
+func (s *state) BeforeReceive(pdu bacgopes.PDU) {
 	s.stateMachine.BeforeReceive(pdu)
 }
 
 // AfterReceive Called with tPDU received after match.
-func (s *state) AfterReceive(pdu bacnetip.PDU) {
+func (s *state) AfterReceive(pdu bacgopes.PDU) {
 	s.stateMachine.AfterReceive(pdu)
 }
 
 // Ignore Create a ReceiveTransition from this state to itself, if match is successful the effect is to Ignore the tPDU.
 //
 //	criteria tPDU to match
-func (s *state) Ignore(pduType any, pduAttrs map[bacnetip.KnownKey]any) State {
+func (s *state) Ignore(pduType any, pduAttrs map[bacgopes.KnownKey]any) State {
 	s.log.Debug().Interface("pduType", pduType).Interface("pduAttrs", pduAttrs).Msg("Ignore")
 	s.receiveTransitions = append(s.receiveTransitions, ReceiveTransition{
 		Transition: Transition{},
@@ -355,7 +355,7 @@ func (s *state) Ignore(pduType any, pduAttrs map[bacnetip.KnownKey]any) State {
 // UnexpectedReceive Called with PDU that did not match.
 //
 // Unless this is trapped by the state, the default behaviour is to fail.
-func (s *state) UnexpectedReceive(pdu bacnetip.PDU) {
+func (s *state) UnexpectedReceive(pdu bacgopes.PDU) {
 	s.log.Debug().Stringer("pdu", pdu).Msg("UnexpectedReceive")
 	s.stateMachine.UnexpectedReceive(pdu)
 }
@@ -430,7 +430,7 @@ func (s *state) Timeout(delay time.Duration, nextState State) State {
 		panic("off the rails")
 	}
 
-	now := bacnetip.GetTaskManagerTime()
+	now := bacgopes.GetTaskManagerTime()
 
 	s.timeoutTransition = &TimeoutTransition{
 		Transition: Transition{nextState: nextState},
@@ -442,7 +442,7 @@ func (s *state) Timeout(delay time.Duration, nextState State) State {
 // Call Create a CallTransition from this state to another, possibly new, state.  The next state is returned for method
 //
 //	chaining. criteria tPDU to match next_state destination state after a successful match
-func (s *state) Call(fn func(args bacnetip.Args, kwargs bacnetip.KWArgs) error, args bacnetip.Args, kwargs bacnetip.KWArgs) State {
+func (s *state) Call(fn func(args bacgopes.Args, kwargs bacgopes.KWArgs) error, args bacgopes.Args, kwargs bacgopes.KWArgs) State {
 	s.log.Debug().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Call")
 	if s.callTransition != nil {
 		panic("state already has a 'Call' per state")
diff --git a/plc4go/internal/bacnetip/tests/state_machine_StateMachine.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_StateMachine.go
similarity index 91%
rename from plc4go/internal/bacnetip/tests/state_machine_StateMachine.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine_StateMachine.go
index 10eb61b161..f54775e62e 100644
--- a/plc4go/internal/bacnetip/tests/state_machine_StateMachine.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_StateMachine.go
@@ -29,8 +29,8 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/globals"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/globals"
 )
 
 // StateMachine A state machine consisting of states.  Every state machine has a start
@@ -47,12 +47,12 @@ type StateMachine interface {
 type StateMachineContract interface {
 	fmt.Stringer
 	NewState(string) State
-	UnexpectedReceive(pdu bacnetip.PDU)
-	BeforeSend(pdu bacnetip.PDU)
-	AfterSend(pdu bacnetip.PDU)
-	BeforeReceive(pdu bacnetip.PDU)
-	Receive(args bacnetip.Args, kwargs bacnetip.KWArgs) error
-	AfterReceive(pdu bacnetip.PDU)
+	UnexpectedReceive(pdu bacgopes.PDU)
+	BeforeSend(pdu bacgopes.PDU)
+	AfterSend(pdu bacgopes.PDU)
+	BeforeReceive(pdu bacgopes.PDU)
+	Receive(args bacgopes.Args, kwargs bacgopes.KWArgs) error
+	AfterReceive(pdu bacgopes.PDU)
 	EventSet(id string)
 	Run() error
 	Reset()
@@ -75,7 +75,7 @@ type StateMachineContract interface {
 // StateMachineRequirements provides a set of functions which must be overwritten by a sub struct
 type StateMachineRequirements interface {
 	StateMachineContract
-	Send(args bacnetip.Args, kwargs bacnetip.KWArgs) error
+	Send(args bacgopes.Args, kwargs bacgopes.KWArgs) error
 }
 
 type stateMachine struct {
@@ -90,7 +90,7 @@ type stateMachine struct {
 	stateSubStruct         any
 	startState             State
 	unexpectedReceiveState State
-	transitionQueue        chan bacnetip.PDU
+	transitionQueue        chan bacgopes.PDU
 	stateTimeoutTask       *TimeoutTask
 	timeout                time.Duration
 	timeoutState           State
@@ -152,13 +152,13 @@ func NewStateMachine(localLog zerolog.Logger, requirements StateMachineRequireme
 			s.unexpectedReceiveState = s.stateDecorator(s.unexpectedReceiveState)
 		}
 
-		s.transitionQueue = make(chan bacnetip.PDU, 100)
+		s.transitionQueue = make(chan bacgopes.PDU, 100)
 
-		s.stateTimeoutTask = NewTimeoutTask(s.StateTimeout, bacnetip.NoArgs, bacnetip.NoKWArgs, nil)
+		s.stateTimeoutTask = NewTimeoutTask(s.StateTimeout, bacgopes.NoArgs, bacgopes.NoKWArgs, nil)
 
 		if s.timeout != 0 {
 			s.timeoutState = s.NewState("state machine timeout").Fail("")
-			s.timeoutTask = NewTimeoutTask(s.StateMachineTimeout, bacnetip.NoArgs, bacnetip.NoKWArgs, s.stateMachineTimeout)
+			s.timeoutTask = NewTimeoutTask(s.StateMachineTimeout, bacgopes.NoArgs, bacgopes.NoKWArgs, s.stateMachineTimeout)
 		}
 	}
 }
@@ -280,7 +280,7 @@ func (s *stateMachine) Run() error {
 
 	if s.timeoutTask != nil {
 		s.log.Debug().Msg("schedule runtime limit")
-		s.timeoutTask.InstallTask(bacnetip.WithInstallTaskOptionsDelta(s.timeout))
+		s.timeoutTask.InstallTask(bacgopes.WithInstallTaskOptionsDelta(s.timeout))
 	}
 
 	// we are starting up
@@ -457,7 +457,7 @@ func (s *stateMachine) gotoState(state State) error {
 		for _, transition := range currentState.getSendTransitions() {
 			s.log.Debug().Stringer("transition", transition).Msg("sending transition")
 			currentState.getInterceptor().BeforeSend(transition.pdu)
-			if err := s.requirements.Send(bacnetip.NewArgs(transition.pdu), bacnetip.NewKWArgs()); err != nil {
+			if err := s.requirements.Send(bacgopes.NewArgs(transition.pdu), bacgopes.NewKWArgs()); err != nil {
 				return errors.Wrap(err, "failed to send")
 			}
 			currentState.getInterceptor().AfterSend(transition.pdu)
@@ -489,7 +489,7 @@ func (s *stateMachine) gotoState(state State) error {
 		for s.running {
 			select {
 			case pdu := <-s.transitionQueue:
-				if err := s.Receive(bacnetip.NewArgs(pdu), bacnetip.NewKWArgs()); err != nil {
+				if err := s.Receive(bacgopes.NewArgs(pdu), bacgopes.NewKWArgs()); err != nil {
 					return errors.Wrap(err, "failed to receive")
 				}
 			default:
@@ -500,18 +500,18 @@ func (s *stateMachine) gotoState(state State) error {
 	return nil
 }
 
-func (s *stateMachine) BeforeSend(pdu bacnetip.PDU) {
+func (s *stateMachine) BeforeSend(pdu bacgopes.PDU) {
 	s.transactionLog = append(s.transactionLog, fmt.Sprintf("<<<%v", pdu))
 }
 
-func (s *stateMachine) AfterSend(pdu bacnetip.PDU) {
+func (s *stateMachine) AfterSend(pdu bacgopes.PDU) {
 }
 
-func (s *stateMachine) BeforeReceive(pdu bacnetip.PDU) {
+func (s *stateMachine) BeforeReceive(pdu bacgopes.PDU) {
 	s.transactionLog = append(s.transactionLog, fmt.Sprintf(">>>%v", pdu))
 }
 
-func (s *stateMachine) Receive(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *stateMachine) Receive(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Trace().Stringer("args", args).Stringer("kwargs", kwargs).Msg("Receive")
 	pdu := args.Get0PDU()
 	if s.currentState == nil || s.stateTransitioning != 0 {
@@ -560,11 +560,11 @@ func (s *stateMachine) Receive(args bacnetip.Args, kwargs bacnetip.KWArgs) error
 	return nil
 }
 
-func (s *stateMachine) AfterReceive(pdu bacnetip.PDU) {
+func (s *stateMachine) AfterReceive(pdu bacgopes.PDU) {
 	s.log.Trace().Stringer("pdu", pdu).Msg("AfterReceive")
 }
 
-func (s *stateMachine) UnexpectedReceive(pdu bacnetip.PDU) {
+func (s *stateMachine) UnexpectedReceive(pdu bacgopes.PDU) {
 	s.log.Trace().Stringer("pdu", pdu).Msg("UnexpectedReceive")
 	s.log.Trace().Stringer("currentState", s.currentState).Msg("currentState")
 	if err := s.gotoState(s.unexpectedReceiveState); err != nil {
@@ -621,7 +621,7 @@ func (s *stateMachine) EventSet(eventId string) {
 	}
 }
 
-func (s *stateMachine) StateTimeout(_ bacnetip.Args, _ bacnetip.KWArgs) error {
+func (s *stateMachine) StateTimeout(_ bacgopes.Args, _ bacgopes.KWArgs) error {
 	s.log.Trace().Msg("StateTimeout")
 	if !s.running {
 		return errors.New("state machine is not running")
@@ -635,7 +635,7 @@ func (s *stateMachine) StateTimeout(_ bacnetip.Args, _ bacnetip.KWArgs) error {
 	return nil
 }
 
-func (s *stateMachine) StateMachineTimeout(_ bacnetip.Args, _ bacnetip.KWArgs) error {
+func (s *stateMachine) StateMachineTimeout(_ bacgopes.Args, _ bacgopes.KWArgs) error {
 	s.log.Trace().Msg("StateMachineTimeout")
 	if !s.running {
 		return errors.New("state machine is not running")
@@ -646,7 +646,7 @@ func (s *stateMachine) StateMachineTimeout(_ bacnetip.Args, _ bacnetip.KWArgs) e
 	return nil
 }
 
-func (s *stateMachine) MatchPDU(pdu bacnetip.PDU, criteria criteria) bool {
+func (s *stateMachine) MatchPDU(pdu bacgopes.PDU, criteria criteria) bool {
 	s.log.Debug().Stringer("pdu", pdu).Stringer("criteria", criteria).Msg("MatchPDU")
 	return MatchPdu(s.log, pdu, criteria.pduType, criteria.pduAttrs)
 }
diff --git a/plc4go/internal/bacnetip/tests/state_machine_StateMachineGroup.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_StateMachineGroup.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/state_machine_StateMachineGroup.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine_StateMachineGroup.go
diff --git a/plc4go/internal/bacnetip/tests/state_machine_TrafficLog.go b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_TrafficLog.go
similarity index 86%
rename from plc4go/internal/bacnetip/tests/state_machine_TrafficLog.go
rename to plc4go/internal/bacnetip/bacgopes/tests/state_machine_TrafficLog.go
index c2a09f7904..7f42cba0b8 100644
--- a/plc4go/internal/bacnetip/tests/state_machine_TrafficLog.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/state_machine_TrafficLog.go
@@ -22,26 +22,26 @@ package tests
 import (
 	"time"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
 type TrafficLog struct {
 	traffic []struct {
 		time.Time
-		bacnetip.Args
+		bacgopes.Args
 	}
 }
 
 // Call Capture the current time and the arguments.
-func (t *TrafficLog) Call(args bacnetip.Args) {
+func (t *TrafficLog) Call(args bacgopes.Args) {
 	t.traffic = append(t.traffic, struct {
 		time.Time
-		bacnetip.Args
-	}{Time: bacnetip.GetTaskManagerTime(), Args: args})
+		bacgopes.Args
+	}{Time: bacgopes.GetTaskManagerTime(), Args: args})
 }
 
 // Dump the traffic, pass the correct handler like SomeClass._debug
-func (t *TrafficLog) Dump(handlerFn func(format string, args bacnetip.Args)) {
+func (t *TrafficLog) Dump(handlerFn func(format string, args bacgopes.Args)) {
 	if t == nil {
 		return
 	}
diff --git a/plc4go/internal/bacnetip/tests/test_apdu/test_max_apdu_length_accepted_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_apdu/test_max_apdu_length_accepted_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_apdu/test_max_apdu_length_accepted_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_apdu/test_max_apdu_length_accepted_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_apdu/test_max_segments_accepted_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_apdu/test_max_segments_accepted_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_apdu/test_max_segments_accepted_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_apdu/test_max_segments_accepted_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_base_types/test_name_value_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_base_types/test_name_value_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_base_types/test_name_value_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_base_types/test_name_value_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_bvll/helpers.go b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers.go
similarity index 72%
rename from plc4go/internal/bacnetip/tests/test_bvll/helpers.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers.go
index 1565076900..25c74be3f1 100644
--- a/plc4go/internal/bacnetip/tests/test_bvll/helpers.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/helpers.go
@@ -25,13 +25,13 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip/constructors"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/constructors"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 )
 
 type _NetworkServiceElement struct {
-	*bacnetip.NetworkServiceElement
+	*bacgopes.NetworkServiceElement
 }
 
 func new_NetworkServiceElement(localLog zerolog.Logger) (*_NetworkServiceElement, error) {
@@ -40,7 +40,7 @@ func new_NetworkServiceElement(localLog zerolog.Logger) (*_NetworkServiceElement
 	// This class turns off the deferred startup function call that broadcasts
 	// I-Am-Router-To-Network and Network-Number-Is messages.
 	var err error
-	i.NetworkServiceElement, err = bacnetip.NewNetworkServiceElement(localLog, bacnetip.WithNetworkServiceElementStartupDisabled(true))
+	i.NetworkServiceElement, err = bacgopes.NewNetworkServiceElement(localLog, bacgopes.WithNetworkServiceElementStartupDisabled(true))
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
@@ -48,29 +48,29 @@ func new_NetworkServiceElement(localLog zerolog.Logger) (*_NetworkServiceElement
 }
 
 type FauxMultiplexer struct {
-	bacnetip.Client
-	bacnetip.Server
+	bacgopes.Client
+	bacgopes.Server
 
-	address        *bacnetip.Address
-	unicastTuple   *bacnetip.AddressTuple[string, uint16]
-	broadcastTuple *bacnetip.AddressTuple[string, uint16]
+	address        *bacgopes.Address
+	unicastTuple   *bacgopes.AddressTuple[string, uint16]
+	broadcastTuple *bacgopes.AddressTuple[string, uint16]
 
-	node *bacnetip.IPNode
+	node *bacgopes.IPNode
 
 	log zerolog.Logger
 }
 
-func NewFauxMultiplexer(localLog zerolog.Logger, addr *bacnetip.Address, network *bacnetip.IPNetwork) (*FauxMultiplexer, error) {
+func NewFauxMultiplexer(localLog zerolog.Logger, addr *bacgopes.Address, network *bacgopes.IPNetwork) (*FauxMultiplexer, error) {
 	f := &FauxMultiplexer{
 		address: addr,
 		log:     localLog,
 	}
 	var err error
-	f.Client, err = bacnetip.NewClient(localLog, f)
+	f.Client, err = bacgopes.NewClient(localLog, f)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating client")
 	}
-	f.Server, err = bacnetip.NewServer(localLog, f)
+	f.Server, err = bacgopes.NewServer(localLog, f)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating server")
 	}
@@ -81,11 +81,11 @@ func NewFauxMultiplexer(localLog zerolog.Logger, addr *bacnetip.Address, network
 
 	// make an internal node and bind to it, this takes the place of
 	// both the direct port and broadcast port of the real UDPMultiplexer
-	f.node, err = bacnetip.NewIPNode(localLog, addr, network)
+	f.node, err = bacgopes.NewIPNode(localLog, addr, network)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating ip node")
 	}
-	if err := bacnetip.Bind(localLog, f, f.node); err != nil {
+	if err := bacgopes.Bind(localLog, f, f.node); err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 	return f, nil
@@ -95,23 +95,23 @@ func (s *FauxMultiplexer) String() string {
 	return fmt.Sprintf("FauxMultiplexer(TBD...)") // TODO: fill some info here
 }
 
-func (s *FauxMultiplexer) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *FauxMultiplexer) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	pdu := args.Get0PDU()
 
-	var dest *bacnetip.Address
+	var dest *bacgopes.Address
 	// check for a broadcast message
-	if pdu.GetPDUDestination().AddrType == bacnetip.LOCAL_BROADCAST_ADDRESS {
+	if pdu.GetPDUDestination().AddrType == bacgopes.LOCAL_BROADCAST_ADDRESS {
 		var err error
-		dest, err = bacnetip.NewAddress(s.log, s.broadcastTuple)
+		dest, err = bacgopes.NewAddress(s.log, s.broadcastTuple)
 		if err != nil {
 			return errors.Wrap(err, "error creating address")
 		}
 		s.log.Debug().Stringer("dest", dest).Msg("Requesting local broadcast")
-	} else if pdu.GetPDUDestination().AddrType == bacnetip.LOCAL_STATION_ADDRESS {
+	} else if pdu.GetPDUDestination().AddrType == bacgopes.LOCAL_STATION_ADDRESS {
 		var err error
-		dest, err = bacnetip.NewAddress(s.log, pdu.GetPDUDestination().AddrAddress)
+		dest, err = bacgopes.NewAddress(s.log, pdu.GetPDUDestination().AddrAddress)
 		if err != nil {
 			return errors.Wrap(err, "error creating address")
 		}
@@ -120,49 +120,49 @@ func (s *FauxMultiplexer) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs)
 		return errors.New("unknown destination type")
 	}
 
-	unicast, err := bacnetip.NewAddress(s.log, s.unicastTuple)
+	unicast, err := bacgopes.NewAddress(s.log, s.unicastTuple)
 	if err != nil {
 		return errors.Wrap(err, "error creating address")
 	}
-	return s.Request(bacnetip.NewArgs(bacnetip.NewPDU(pdu, bacnetip.WithPDUSource(unicast), bacnetip.WithPDUDestination(dest))), bacnetip.NoKWArgs)
+	return s.Request(bacgopes.NewArgs(bacgopes.NewPDU(pdu, bacgopes.WithPDUSource(unicast), bacgopes.WithPDUDestination(dest))), bacgopes.NoKWArgs)
 }
 
-func (s *FauxMultiplexer) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (s *FauxMultiplexer) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	s.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 	pdu := args.Get0PDU()
 
 	// the PDU source and destination are tuples, convert them to Address instances
 	src := pdu.GetPDUSource()
 
-	broadcast, err := bacnetip.NewAddress(s.log, s.broadcastTuple)
+	broadcast, err := bacgopes.NewAddress(s.log, s.broadcastTuple)
 	if err != nil {
 		return errors.Wrap(err, "error creating address")
 	}
-	var dest *bacnetip.Address
+	var dest *bacgopes.Address
 	// see if the destination was our broadcast address
 	if pdu.GetPDUDestination().Equals(broadcast) {
-		dest = bacnetip.NewLocalBroadcast(nil)
+		dest = bacgopes.NewLocalBroadcast(nil)
 	} else {
-		dest, err = bacnetip.NewAddress(s.log, pdu.GetPDUDestination().AddrAddress)
+		dest, err = bacgopes.NewAddress(s.log, pdu.GetPDUDestination().AddrAddress)
 		if err != nil {
 			return errors.Wrap(err, "error creating address")
 		}
 	}
 
-	return s.Response(bacnetip.NewArgs(bacnetip.NewPDU(pdu, bacnetip.WithPDUSource(src), bacnetip.WithPDUDestination(dest))), bacnetip.NoKWArgs)
+	return s.Response(bacgopes.NewArgs(bacgopes.NewPDU(pdu, bacgopes.WithPDUSource(src), bacgopes.WithPDUDestination(dest))), bacgopes.NoKWArgs)
 }
 
 type SnifferStateMachine struct {
 	*tests.ClientStateMachine
 
-	address *bacnetip.Address
-	annexj  *bacnetip.AnnexJCodec
+	address *bacgopes.Address
+	annexj  *bacgopes.AnnexJCodec
 	mux     *FauxMultiplexer
 
 	log zerolog.Logger
 }
 
-func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*SnifferStateMachine, error) {
+func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*SnifferStateMachine, error) {
 	s := &SnifferStateMachine{
 		log: localLog,
 	}
@@ -173,13 +173,13 @@ func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 	s.ClientStateMachine = machine
 
 	// save the name and address
-	s.address, err = bacnetip.NewAddress(localLog, address)
+	s.address, err = bacgopes.NewAddress(localLog, address)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating address")
 	}
 
 	// BACnet/IP interpreter
-	s.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	s.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating annexj")
 	}
@@ -195,7 +195,7 @@ func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 	s.mux.node.SetSpoofing(true)
 
 	// bind the stack together
-	if err := bacnetip.Bind(localLog, s, s.annexj, s.mux); err != nil {
+	if err := bacgopes.Bind(localLog, s, s.annexj, s.mux); err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
@@ -210,12 +210,12 @@ func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 type BIPStateMachine struct {
 	*tests.ClientStateMachine
 
-	address *bacnetip.Address
-	annexj  *bacnetip.AnnexJCodec
+	address *bacgopes.Address
+	annexj  *bacgopes.AnnexJCodec
 	mux     *FauxMultiplexer
 }
 
-func NewBIPStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPStateMachine, error) {
+func NewBIPStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPStateMachine, error) {
 	b := &BIPStateMachine{}
 	var err error
 	b.ClientStateMachine, err = tests.NewClientStateMachine(localLog, tests.WithClientStateMachineName(address), tests.WithClientStateMachineExtension(b))
@@ -227,7 +227,7 @@ func NewBIPStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.
 	b.address = Address(address)
 
 	// BACnet/IP interpreter
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating annexj")
 	}
@@ -236,7 +236,7 @@ func NewBIPStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.
 	b.mux, err = NewFauxMultiplexer(localLog, b.address, vlan)
 
 	// bind the stack together
-	err = bacnetip.Bind(localLog, b, b.annexj, b.mux)
+	err = bacgopes.Bind(localLog, b, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
@@ -247,16 +247,16 @@ type BIPSimpleStateMachine struct {
 	*tests.ClientStateMachine
 	name string
 
-	address *bacnetip.Address
+	address *bacgopes.Address
 
-	bip    *bacnetip.BIPSimple
-	annexj *bacnetip.AnnexJCodec
+	bip    *bacgopes.BIPSimple
+	annexj *bacgopes.AnnexJCodec
 	mux    *FauxMultiplexer
 
 	log zerolog.Logger
 }
 
-func NewBIPSimpleStateMachine(localLog zerolog.Logger, netstring string, vlan *bacnetip.IPNetwork) (*BIPSimpleStateMachine, error) {
+func NewBIPSimpleStateMachine(localLog zerolog.Logger, netstring string, vlan *bacgopes.IPNetwork) (*BIPSimpleStateMachine, error) {
 	b := &BIPSimpleStateMachine{
 		log: localLog,
 	}
@@ -270,11 +270,11 @@ func NewBIPSimpleStateMachine(localLog zerolog.Logger, netstring string, vlan *b
 	b.address = Address(netstring)
 
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPSimple(localLog)
+	b.bip, err = bacgopes.NewBIPSimple(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building bip simple")
 	}
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building annexj codec")
 	}
@@ -286,7 +286,7 @@ func NewBIPSimpleStateMachine(localLog zerolog.Logger, netstring string, vlan *b
 	}
 
 	// bind the stack together
-	if err := bacnetip.Bind(localLog, b, b.bip, b.annexj, b.mux); err != nil {
+	if err := bacgopes.Bind(localLog, b, b.bip, b.annexj, b.mux); err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
@@ -299,15 +299,15 @@ func NewBIPSimpleStateMachine(localLog zerolog.Logger, netstring string, vlan *b
 type BIPForeignStateMachine struct {
 	*tests.ClientStateMachine
 
-	address *bacnetip.Address
-	bip     *bacnetip.BIPForeign
-	annexj  *bacnetip.AnnexJCodec
+	address *bacgopes.Address
+	bip     *bacgopes.BIPForeign
+	annexj  *bacgopes.AnnexJCodec
 	mux     *FauxMultiplexer
 
 	log zerolog.Logger
 }
 
-func NewBIPForeignStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPForeignStateMachine, error) {
+func NewBIPForeignStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPForeignStateMachine, error) {
 	b := &BIPForeignStateMachine{
 		log: localLog,
 	}
@@ -321,11 +321,11 @@ func NewBIPForeignStateMachine(localLog zerolog.Logger, address string, vlan *ba
 	b.address = Address(address)
 
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPForeign(localLog)
+	b.bip, err = bacgopes.NewBIPForeign(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating BIPForeign")
 	}
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating AnnexJCodec")
 	}
@@ -337,7 +337,7 @@ func NewBIPForeignStateMachine(localLog zerolog.Logger, address string, vlan *ba
 	}
 
 	// bind the stack together
-	err = bacnetip.Bind(b.log, b, b.bip, b.annexj, b.mux)
+	err = bacgopes.Bind(b.log, b, b.bip, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
@@ -347,15 +347,15 @@ func NewBIPForeignStateMachine(localLog zerolog.Logger, address string, vlan *ba
 type BIPBBMDStateMachine struct {
 	*tests.ClientStateMachine
 
-	address *bacnetip.Address
-	bip     *bacnetip.BIPBBMD
-	annexj  *bacnetip.AnnexJCodec
+	address *bacgopes.Address
+	bip     *bacgopes.BIPBBMD
+	annexj  *bacgopes.AnnexJCodec
 	mux     *FauxMultiplexer
 
 	log zerolog.Logger
 }
 
-func NewBIPBBMDStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPBBMDStateMachine, error) {
+func NewBIPBBMDStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPBBMDStateMachine, error) {
 	b := &BIPBBMDStateMachine{
 		log: localLog,
 	}
@@ -369,8 +369,8 @@ func NewBIPBBMDStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 	b.address = Address(address)
 
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPBBMD(localLog, b.address)
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.bip, err = bacgopes.NewBIPBBMD(localLog, b.address)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 
 	// build an address, full mask
 	bdtAddress := fmt.Sprintf("%s/32:%d", b.address.AddrTuple.Left, b.address.AddrTuple.Right)
@@ -388,7 +388,7 @@ func NewBIPBBMDStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 	}
 
 	// bind the stack together
-	err = bacnetip.Bind(b.log, b, b.bip, b.annexj, b.mux)
+	err = bacgopes.Bind(b.log, b, b.bip, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
@@ -397,13 +397,13 @@ func NewBIPBBMDStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 
 type BIPSimpleNode struct {
 	name    string
-	address *bacnetip.Address
-	bip     *bacnetip.BIPSimple
-	annexj  *bacnetip.AnnexJCodec
+	address *bacgopes.Address
+	bip     *bacgopes.BIPSimple
+	annexj  *bacgopes.AnnexJCodec
 	mux     *FauxMultiplexer
 }
 
-func NewBIPSimpleNode(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPSimpleNode, error) {
+func NewBIPSimpleNode(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPSimpleNode, error) {
 	b := &BIPSimpleNode{}
 
 	// save the name and address
@@ -412,11 +412,11 @@ func NewBIPSimpleNode(localLog zerolog.Logger, address string, vlan *bacnetip.IP
 
 	var err error
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPSimple(localLog)
+	b.bip, err = bacgopes.NewBIPSimple(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building bip simple")
 	}
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building annexj codec")
 	}
@@ -425,7 +425,7 @@ func NewBIPSimpleNode(localLog zerolog.Logger, address string, vlan *bacnetip.IP
 	b.mux, err = NewFauxMultiplexer(localLog, b.address, vlan)
 
 	// bind the stack together
-	err = bacnetip.Bind(localLog, b.bip, b.annexj, b.mux)
+	err = bacgopes.Bind(localLog, b.bip, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
@@ -435,16 +435,16 @@ func NewBIPSimpleNode(localLog zerolog.Logger, address string, vlan *bacnetip.IP
 
 type BIPBBMDNode struct {
 	name    string
-	address *bacnetip.Address
+	address *bacgopes.Address
 
-	bip    *bacnetip.BIPBBMD
-	annexj *bacnetip.AnnexJCodec
+	bip    *bacgopes.BIPBBMD
+	annexj *bacgopes.AnnexJCodec
 	mux    *FauxMultiplexer
 
 	log zerolog.Logger
 }
 
-func NewBIPBBMDNode(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPBBMDNode, error) {
+func NewBIPBBMDNode(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPBBMDNode, error) {
 	b := &BIPBBMDNode{
 		log: localLog,
 	}
@@ -456,11 +456,11 @@ func NewBIPBBMDNode(localLog zerolog.Logger, address string, vlan *bacnetip.IPNe
 
 	var err error
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPBBMD(b.log, b.address)
+	b.bip, err = bacgopes.NewBIPBBMD(b.log, b.address)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building bip bbmd")
 	}
-	b.annexj, err = bacnetip.NewAnnexJCodec(b.log)
+	b.annexj, err = bacgopes.NewAnnexJCodec(b.log)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building annexj codec")
 	}
@@ -482,7 +482,7 @@ func NewBIPBBMDNode(localLog zerolog.Logger, address string, vlan *bacnetip.IPNe
 	}
 
 	// bind the stack together
-	err = bacnetip.Bind(b.log, b.bip, b.annexj, b.mux)
+	err = bacgopes.Bind(b.log, b.bip, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
@@ -491,27 +491,27 @@ func NewBIPBBMDNode(localLog zerolog.Logger, address string, vlan *bacnetip.IPNe
 }
 
 type TestDeviceObject struct {
-	*bacnetip.LocalDeviceObject
+	*bacgopes.LocalDeviceObject
 }
 
 type BIPSimpleApplicationLayerStateMachine struct {
-	bacnetip.ApplicationServiceElementContract
+	bacgopes.ApplicationServiceElementContract
 	*tests.ClientStateMachine
 
 	log zerolog.Logger // TODO: move down
 
 	name    string
-	address *bacnetip.Address
-	asap    *bacnetip.ApplicationServiceAccessPoint
-	smap    *bacnetip.StateMachineAccessPoint
-	nsap    *bacnetip.NetworkServiceAccessPoint
+	address *bacgopes.Address
+	asap    *bacgopes.ApplicationServiceAccessPoint
+	smap    *bacgopes.StateMachineAccessPoint
+	nsap    *bacgopes.NetworkServiceAccessPoint
 	nse     *_NetworkServiceElement
-	bip     *bacnetip.BIPSimple
-	annexj  *bacnetip.AnnexJCodec
+	bip     *bacgopes.BIPSimple
+	annexj  *bacgopes.AnnexJCodec
 	mux     *FauxMultiplexer
 }
 
-func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPSimpleApplicationLayerStateMachine, error) {
+func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPSimpleApplicationLayerStateMachine, error) {
 	b := &BIPSimpleApplicationLayerStateMachine{}
 	// build a name, save the address
 	b.name = fmt.Sprintf("app @ %s", address)
@@ -519,7 +519,7 @@ func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address s
 
 	// build a local device object
 	localDevice := &TestDeviceObject{
-		LocalDeviceObject: &bacnetip.LocalDeviceObject{
+		LocalDeviceObject: &bacgopes.LocalDeviceObject{
 			ObjectName:       b.name,
 			ObjectIdentifier: "device:998",
 			VendorIdentifier: 999,
@@ -528,14 +528,14 @@ func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address s
 
 	var err error
 	// continue with initialization
-	b.ApplicationServiceElementContract, err = bacnetip.NewApplicationServiceElement(localLog)
+	b.ApplicationServiceElementContract, err = bacgopes.NewApplicationServiceElement(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building application")
 	}
 	b.ClientStateMachine, err = tests.NewClientStateMachine(localLog, tests.WithClientStateMachineName(b.name), tests.WithClientStateMachineExtension(b))
 
 	// include a application decoder
-	b.asap, err = bacnetip.NewApplicationServiceAccessPoint(localLog)
+	b.asap, err = bacgopes.NewApplicationServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building application service access point")
 	}
@@ -544,13 +544,13 @@ func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address s
 	// can know if it should support segmentation
 	// the segmentation state machines need access to the same device
 	// information cache as the application
-	b.smap, err = bacnetip.NewStateMachineAccessPoint(localLog, localDevice.LocalDeviceObject, bacnetip.WithStateMachineAccessPointDeviceInfoCache(bacnetip.NewDeviceInfoCache(localLog))) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
+	b.smap, err = bacgopes.NewStateMachineAccessPoint(localLog, localDevice.LocalDeviceObject, bacgopes.WithStateMachineAccessPointDeviceInfoCache(bacgopes.NewDeviceInfoCache(localLog))) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
 	if err != nil {
 		return nil, errors.Wrap(err, "error building state machine access point")
 	}
 
 	// a network service access point will be needed
-	b.nsap, err = bacnetip.NewNetworkServiceAccessPoint(localLog)
+	b.nsap, err = bacgopes.NewNetworkServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service access point")
 	}
@@ -560,23 +560,23 @@ func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address s
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
-	err = bacnetip.Bind(localLog, b.nse, b.nsap)
+	err = bacgopes.Bind(localLog, b.nse, b.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	// bind the top layers
-	err = bacnetip.Bind(localLog, b, b.asap, b.smap, b.nsap)
+	err = bacgopes.Bind(localLog, b, b.asap, b.smap, b.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPSimple(localLog)
+	b.bip, err = bacgopes.NewBIPSimple(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building bip bbmd")
 	}
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building annexj codec")
 	}
@@ -588,7 +588,7 @@ func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address s
 	}
 
 	// bind the stack together
-	err = bacnetip.Bind(localLog, b.bip, b.annexj, b.mux)
+	err = bacgopes.Bind(localLog, b.bip, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
@@ -602,36 +602,36 @@ func NewBIPSimpleApplicationLayerStateMachine(localLog zerolog.Logger, address s
 	return b, nil
 }
 
-func (b *BIPSimpleApplicationLayerStateMachine) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (b *BIPSimpleApplicationLayerStateMachine) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	b.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
-	return b.Receive(args, bacnetip.NoKWArgs)
+	return b.Receive(args, bacgopes.NoKWArgs)
 }
 
-func (b *BIPSimpleApplicationLayerStateMachine) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (b *BIPSimpleApplicationLayerStateMachine) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	b.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Confirmation")
-	return b.Receive(args, bacnetip.NoKWArgs)
+	return b.Receive(args, bacgopes.NoKWArgs)
 }
 
 type BIPBBMDApplication struct {
-	*bacnetip.Application
-	*bacnetip.WhoIsIAmServices
-	*bacnetip.ReadWritePropertyServices
+	*bacgopes.Application
+	*bacgopes.WhoIsIAmServices
+	*bacgopes.ReadWritePropertyServices
 
 	name    string
-	address *bacnetip.Address
+	address *bacgopes.Address
 
-	asap   *bacnetip.ApplicationServiceAccessPoint
-	smap   *bacnetip.StateMachineAccessPoint
-	nsap   *bacnetip.NetworkServiceAccessPoint
+	asap   *bacgopes.ApplicationServiceAccessPoint
+	smap   *bacgopes.StateMachineAccessPoint
+	nsap   *bacgopes.NetworkServiceAccessPoint
 	nse    *_NetworkServiceElement
-	bip    *bacnetip.BIPBBMD
-	annexj *bacnetip.AnnexJCodec
+	bip    *bacgopes.BIPBBMD
+	annexj *bacgopes.AnnexJCodec
 	mux    *FauxMultiplexer
 
 	log zerolog.Logger
 }
 
-func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacnetip.IPNetwork) (*BIPBBMDApplication, error) {
+func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacgopes.IPNetwork) (*BIPBBMDApplication, error) {
 	b := &BIPBBMDApplication{
 		log: localLog,
 	}
@@ -642,7 +642,7 @@ func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacnet
 
 	// build a local device object
 	localDevice := &TestDeviceObject{
-		LocalDeviceObject: &bacnetip.LocalDeviceObject{
+		LocalDeviceObject: &bacgopes.LocalDeviceObject{
 			ObjectName:       b.name,
 			ObjectIdentifier: "device:999",
 			VendorIdentifier: 999,
@@ -651,13 +651,13 @@ func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacnet
 
 	var err error
 	// continue with initialization
-	b.Application, err = bacnetip.NewApplication(localLog, localDevice.LocalDeviceObject) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
+	b.Application, err = bacgopes.NewApplication(localLog, localDevice.LocalDeviceObject) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
 	if err != nil {
 		return nil, errors.Wrap(err, "error building application")
 	}
 
 	// include a application decoder
-	b.asap, err = bacnetip.NewApplicationServiceAccessPoint(localLog)
+	b.asap, err = bacgopes.NewApplicationServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building application service access point")
 	}
@@ -666,13 +666,13 @@ func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacnet
 	// can know if it should support segmentation
 	// the segmentation state machines need access to the same device
 	// information cache as the application
-	b.smap, err = bacnetip.NewStateMachineAccessPoint(localLog, localDevice.LocalDeviceObject, bacnetip.WithStateMachineAccessPointDeviceInfoCache(b.GetDeviceInfoCache())) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
+	b.smap, err = bacgopes.NewStateMachineAccessPoint(localLog, localDevice.LocalDeviceObject, bacgopes.WithStateMachineAccessPointDeviceInfoCache(b.GetDeviceInfoCache())) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
 	if err != nil {
 		return nil, errors.Wrap(err, "error building state machine access point")
 	}
 
 	// a network service access point will be needed
-	b.nsap, err = bacnetip.NewNetworkServiceAccessPoint(localLog)
+	b.nsap, err = bacgopes.NewNetworkServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service access point")
 	}
@@ -682,24 +682,24 @@ func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacnet
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
-	err = bacnetip.Bind(localLog, b.nse, b.nsap)
+	err = bacgopes.Bind(localLog, b.nse, b.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	// bind the top layers
-	err = bacnetip.Bind(localLog, b, b.asap, b.smap, b.nsap)
+	err = bacgopes.Bind(localLog, b, b.asap, b.smap, b.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	// BACnet/IP interpreter
-	b.bip, err = bacnetip.NewBIPBBMD(localLog, b.address)
+	b.bip, err = bacgopes.NewBIPBBMD(localLog, b.address)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building bip bbmd")
 	}
 
-	b.annexj, err = bacnetip.NewAnnexJCodec(localLog)
+	b.annexj, err = bacgopes.NewAnnexJCodec(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building annexj codec")
 	}
@@ -721,7 +721,7 @@ func NewBIPBBMDApplication(localLog zerolog.Logger, address string, vlan *bacnet
 	}
 
 	// bind the stack together
-	err = bacnetip.Bind(localLog, b.bip, b.annexj, b.mux)
+	err = bacgopes.Bind(localLog, b.bip, b.annexj, b.mux)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
diff --git a/plc4go/internal/bacnetip/tests/test_bvll/test_bbmd_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go
similarity index 80%
rename from plc4go/internal/bacnetip/tests/test_bvll/test_bbmd_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go
index 7e00bdcbde..adbe56e825 100644
--- a/plc4go/internal/bacnetip/tests/test_bvll/test_bbmd_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_bbmd_test.go
@@ -29,20 +29,19 @@ import (
 	"github.com/stretchr/testify/require"
 	"github.com/stretchr/testify/suite"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/constructors"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip/constructors"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TBNetwork struct {
 	*tests.StateMachineGroup
 
 	trafficLog *tests.TrafficLog
-	router     *bacnetip.IPRouter
-	vlan       []*bacnetip.IPNetwork
+	router     *bacgopes.IPRouter
+	vlan       []*bacgopes.IPNetwork
 
 	t *testing.T
 
@@ -65,12 +64,12 @@ func NewTBNetwork(t *testing.T, count int) *TBNetwork {
 	tbn.trafficLog = new(tests.TrafficLog)
 
 	// make a router
-	tbn.router = bacnetip.NewIPRouter(localLog)
+	tbn.router = bacgopes.NewIPRouter(localLog)
 
 	// make the networks
 	for net := range count {
 		// make a network and set the traffic log
-		ipNetwork := bacnetip.NewIPNetwork(localLog, bacnetip.WithNetworkName(fmt.Sprintf("192.168.%d.0/24", net+1)), bacnetip.WithNetworkTrafficLogger(tbn.trafficLog))
+		ipNetwork := bacgopes.NewIPNetwork(localLog, bacgopes.WithNetworkName(fmt.Sprintf("192.168.%d.0/24", net+1)), bacgopes.WithNetworkTrafficLogger(tbn.trafficLog))
 
 		// make a router
 		routerAddress := Address(fmt.Sprintf("192.168.%d.1/24", net+1))
@@ -143,7 +142,7 @@ func (suite *NonBBMDSuite) TestWriteBDTFail() {
 	writeBroadcastDistributionTable.SetPDUDestination(suite.iut.address) // TODO: upstream does this inline
 	suite.td.GetStartState().Doc("1-1-0").
 		Send(writeBroadcastDistributionTable, nil).Doc("1-1-1").
-		Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0010))).Doc("1-1-2").
+		Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0010))).Doc("1-1-2").
 		Success("")
 
 	// run group
@@ -156,7 +155,7 @@ func (suite *NonBBMDSuite) TestReadBDTFail() {
 	readBroadcastDistributionTable.SetPDUDestination(suite.iut.address) // TODO: upstream does this inline
 	suite.td.GetStartState().Doc("1-2-0").
 		Send(readBroadcastDistributionTable, nil).Doc("1-2-1").
-		Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0020))).Doc("1-2-2").
+		Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0020))).Doc("1-2-2").
 		Success("")
 
 	// run group
@@ -169,7 +168,7 @@ func (suite *NonBBMDSuite) TestRegisterFail() {
 	registerForeignDevice.SetPDUDestination(suite.iut.address) // TODO: upstream does this inline
 	suite.td.GetStartState().Doc("1-3-0").
 		Send(registerForeignDevice, nil).Doc("1-3-1").
-		Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0030))).Doc("1-3-2").
+		Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0030))).Doc("1-3-2").
 		Success("")
 
 	// run group
@@ -182,7 +181,7 @@ func (suite *NonBBMDSuite) TestReadFail() {
 	readForeignDeviceTable.SetPDUDestination(suite.iut.address) // TODO: upstream does this inline
 	suite.td.GetStartState().Doc("1-4-0").
 		Send(readForeignDeviceTable, nil).Doc("1-4-1").
-		Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0040))).Doc("1-4-2").
+		Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0040))).Doc("1-4-2").
 		Success("")
 
 	// run group
@@ -195,7 +194,7 @@ func (suite *NonBBMDSuite) TestDeleteFail() {
 	deleteForeignDeviceTableEntry.SetPDUDestination(suite.iut.address) // TODO: upstream does this inline
 	suite.td.GetStartState().Doc("1-5-0").
 		Send(deleteForeignDeviceTableEntry, nil).Doc("1-5-1").
-		Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0050))).Doc("1-5-2").
+		Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0050))).Doc("1-5-2").
 		Success("")
 
 	// run group
@@ -204,7 +203,7 @@ func (suite *NonBBMDSuite) TestDeleteFail() {
 
 func (suite *NonBBMDSuite) TestDistributeFail() {
 	// read the broadcast distribution table, get a nack
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
@@ -215,7 +214,7 @@ func (suite *NonBBMDSuite) TestDistributeFail() {
 	distributeBroadcastToNetwork.SetPDUDestination(suite.iut.address) // TODO: upstream does this inline
 	suite.td.GetStartState().Doc("1-6-0").
 		Send(distributeBroadcastToNetwork, nil).Doc("1-6-1").
-		Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0060))).Doc("1-6-2").
+		Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0060))).Doc("1-6-2").
 		Success("")
 
 	// run group
@@ -261,15 +260,15 @@ func TestBBMD(t *testing.T) {
 
 		// broadcast a forwarded NPDU
 		td.GetStartState().Doc("2-1-0").
-			Send(WhoIsRequest(bacnetip.NewKWArgs(bacnetip.KWPDUDestination, bacnetip.NewLocalBroadcast(nil))), nil).Doc("2-1-1").
-			Receive(bacnetip.NewArgs((*bacnetip.IAmRequest)(nil)), bacnetip.NoKWArgs).Doc("2-1-2").
+			Send(WhoIsRequest(bacgopes.NewKWArgs(bacgopes.KWPDUDestination, bacgopes.NewLocalBroadcast(nil))), nil).Doc("2-1-1").
+			Receive(bacgopes.NewArgs((*bacgopes.IAmRequest)(nil)), bacgopes.NoKWArgs).Doc("2-1-2").
 			Success("")
 
 		// listen for the directed broadcast, then the original unicast,
 		// then fail if there's anything else
 		listener.GetStartState().Doc("2-2-0").
-			Receive(bacnetip.NewArgs((*bacnetip.ForwardedNPDU)(nil)), bacnetip.NoKWArgs).Doc("2-2-1").
-			Receive(bacnetip.NewArgs((*bacnetip.OriginalUnicastNPDU)(nil)), bacnetip.NoKWArgs).Doc("2-2-2").
+			Receive(bacgopes.NewArgs((*bacgopes.ForwardedNPDU)(nil)), bacgopes.NoKWArgs).Doc("2-2-1").
+			Receive(bacgopes.NewArgs((*bacgopes.OriginalUnicastNPDU)(nil)), bacgopes.NoKWArgs).Doc("2-2-2").
 			Timeout(3*time.Second, nil).Doc("2-2-3").
 			Success("")
 
@@ -310,29 +309,29 @@ func TestBBMD(t *testing.T) {
 
 		// broadcast a forwarded NPDU
 		td.GetStartState().Doc("2-3-0").
-			Send(WhoIsRequest(bacnetip.NewKWArgs(bacnetip.KWPDUDestination, bacnetip.NewLocalBroadcast(nil))), nil).Doc("2-3-1").
-			Receive(bacnetip.NewArgs((*bacnetip.IAmRequest)(nil)), bacnetip.NoKWArgs).Doc("2-3-2").
+			Send(WhoIsRequest(bacgopes.NewKWArgs(bacgopes.KWPDUDestination, bacgopes.NewLocalBroadcast(nil))), nil).Doc("2-3-1").
+			Receive(bacgopes.NewArgs((*bacgopes.IAmRequest)(nil)), bacgopes.NoKWArgs).Doc("2-3-2").
 			Success("")
 
 		// listen for the forwarded NPDU.  The packet will be sent upstream which
 		// will generate the original unicast going back, then it will be
 		// re-broadcast on the local LAN.  Fail if there's anything after that.
 		s241 := listener.GetStartState().Doc("2-4-0").
-			Receive(bacnetip.NewArgs((*bacnetip.ForwardedNPDU)(nil)), bacnetip.NoKWArgs).Doc("2-4-1")
+			Receive(bacgopes.NewArgs((*bacgopes.ForwardedNPDU)(nil)), bacgopes.NoKWArgs).Doc("2-4-1")
 
 		// look for the original unicast going back, followed by the rebroadcast
 		// of the forwarded NPDU on the local LAN
 		both := s241.
-			Receive(bacnetip.NewArgs((*bacnetip.OriginalUnicastNPDU)(nil)), bacnetip.NoKWArgs).Doc("2-4-1-a").
-			Receive(bacnetip.NewArgs((*bacnetip.ForwardedNPDU)(nil)), bacnetip.NoKWArgs).Doc("2-4-1-b")
+			Receive(bacgopes.NewArgs((*bacgopes.OriginalUnicastNPDU)(nil)), bacgopes.NoKWArgs).Doc("2-4-1-a").
+			Receive(bacgopes.NewArgs((*bacgopes.ForwardedNPDU)(nil)), bacgopes.NoKWArgs).Doc("2-4-1-b")
 
 		// fail if anything is received after both packets
 		both.Timeout(3*time.Second, nil).Doc("2-4-4").
 			Success("")
 
 		// allow the two packets in either order
-		s241.Receive(bacnetip.NewArgs((*bacnetip.ForwardedNPDU)(nil)), bacnetip.NoKWArgs).Doc("2-4-2-a").
-			Receive(bacnetip.NewArgs((*bacnetip.OriginalUnicastNPDU)(nil)), bacnetip.NewKWArgs("nextState", both)).Doc("2-4-2-b")
+		s241.Receive(bacgopes.NewArgs((*bacgopes.ForwardedNPDU)(nil)), bacgopes.NoKWArgs).Doc("2-4-2-a").
+			Receive(bacgopes.NewArgs((*bacgopes.OriginalUnicastNPDU)(nil)), bacgopes.NewKWArgs("nextState", both)).Doc("2-4-2-b")
 
 		// run the group
 		tnet.Run(0)
diff --git a/plc4go/internal/bacnetip/tests/test_bvll/test_codec_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_codec_test.go
similarity index 59%
rename from plc4go/internal/bacnetip/tests/test_bvll/test_codec_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_codec_test.go
index 3961f63be2..05c15d9879 100644
--- a/plc4go/internal/bacnetip/tests/test_bvll/test_codec_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_codec_test.go
@@ -25,19 +25,18 @@ import (
 	"github.com/rs/zerolog"
 	"github.com/stretchr/testify/suite"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/constructors"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip/constructors"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TestAnnexJCodecSuite struct {
 	suite.Suite
 
 	client *tests.TrappedClient
-	codec  *bacnetip.AnnexJCodec
+	codec  *bacgopes.AnnexJCodec
 	server *tests.TrappedServer
 
 	log zerolog.Logger
@@ -47,25 +46,25 @@ func (suite *TestAnnexJCodecSuite) SetupTest() {
 	suite.log = testutils.ProduceTestingLogger(suite.T())
 	// minature trapped stack
 	var err error
-	suite.codec, err = bacnetip.NewAnnexJCodec(suite.log)
+	suite.codec, err = bacgopes.NewAnnexJCodec(suite.log)
 	suite.Require().NoError(err)
 	suite.client, err = tests.NewTrappedClient(suite.log)
 	suite.Require().NoError(err)
 	suite.server, err = tests.NewTrappedServer(suite.log)
 	suite.Require().NoError(err)
-	err = bacnetip.Bind(suite.log, suite.client, suite.codec, suite.server)
+	err = bacgopes.Bind(suite.log, suite.client, suite.codec, suite.server)
 	suite.Require().NoError(err)
 }
 
 // Pass the PDU to the client to send down the stack.
-func (suite *TestAnnexJCodecSuite) Request(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestAnnexJCodecSuite) Request(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Request")
 
 	return suite.client.Request(args, kwargs)
 }
 
 // Check what the server received.
-func (suite *TestAnnexJCodecSuite) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestAnnexJCodecSuite) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	var pduType any
@@ -78,14 +77,14 @@ func (suite *TestAnnexJCodecSuite) Indication(args bacnetip.Args, kwargs bacneti
 }
 
 // Check what the server received.
-func (suite *TestAnnexJCodecSuite) Response(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestAnnexJCodecSuite) Response(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Response")
 
 	return suite.server.Response(args, kwargs)
 }
 
 // Check what the server received.
-func (suite *TestAnnexJCodecSuite) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestAnnexJCodecSuite) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Confirmation")
 
 	pduType := args[0].(any)
@@ -96,7 +95,7 @@ func (suite *TestAnnexJCodecSuite) Confirmation(args bacnetip.Args, kwargs bacne
 
 func (suite *TestAnnexJCodecSuite) TestResult() {
 	// Request successful
-	pduBytes, err := bacnetip.Xtob("81.00.0006.0000")
+	pduBytes, err := bacgopes.Xtob("81.00.0006.0000")
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -106,17 +105,17 @@ func (suite *TestAnnexJCodecSuite) TestResult() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(Result(0)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(Result(0)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0)))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0)))
 
 	// Request error condition
-	pduBytes, err = bacnetip.Xtob("81.00.0006.0010") // TODO: check if this is right or if it should be 01 as there is no code for 1
+	pduBytes, err = bacgopes.Xtob("81.00.0006.0010") // TODO: check if this is right or if it should be 01 as there is no code for 1
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -126,19 +125,19 @@ func (suite *TestAnnexJCodecSuite) TestResult() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(Result(0x0010)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(Result(0x0010)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0010)))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciResultCode, readWriteModel.BVLCResultCode(0x0010)))
 }
 
 func (suite *TestAnnexJCodecSuite) TestWriteBroadcastDistributionTable() {
 	// write an empty table
-	pduBytes, err := bacnetip.Xtob("81.01.0004")
+	pduBytes, err := bacgopes.Xtob("81.01.0004")
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -148,18 +147,18 @@ func (suite *TestAnnexJCodecSuite) TestWriteBroadcastDistributionTable() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(WriteBroadcastDistributionTable()), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(WriteBroadcastDistributionTable()), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.WriteBroadcastDistributionTable)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciBDT, []*bacnetip.Address{}))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.WriteBroadcastDistributionTable)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciBDT, []*bacgopes.Address{}))
 
 	// write table with an element
-	addr, _ := bacnetip.NewAddress(zerolog.Nop(), "192.168.0.254/24")
-	pduBytes, err = bacnetip.Xtob("81.01.000e" +
+	addr, _ := bacgopes.NewAddress(zerolog.Nop(), "192.168.0.254/24")
+	pduBytes, err = bacgopes.Xtob("81.01.000e" +
 		"c0.a8.00.fe.ba.c0 ff.ff.ff.00") // address and mask
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
@@ -170,19 +169,19 @@ func (suite *TestAnnexJCodecSuite) TestWriteBroadcastDistributionTable() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(WriteBroadcastDistributionTable(addr)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(WriteBroadcastDistributionTable(addr)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.WriteBroadcastDistributionTable)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciBDT, []*bacnetip.Address{addr}))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.WriteBroadcastDistributionTable)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciBDT, []*bacgopes.Address{addr}))
 }
 
 func (suite *TestAnnexJCodecSuite) TestReadBroadcastDistributionTable() {
 	// Read an empty table
-	pduBytes, err := bacnetip.Xtob("81.02.0004")
+	pduBytes, err := bacgopes.Xtob("81.02.0004")
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -192,19 +191,19 @@ func (suite *TestAnnexJCodecSuite) TestReadBroadcastDistributionTable() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ReadBroadcastDistributionTable()), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ReadBroadcastDistributionTable()), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ReadBroadcastDistributionTable)(nil)), bacnetip.NoKWArgs)
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ReadBroadcastDistributionTable)(nil)), bacgopes.NoKWArgs)
 }
 
 func (suite *TestAnnexJCodecSuite) TestReadBroadcastDistributionTableAck() {
 	// Read an empty TableAck
-	pduBytes, err := bacnetip.Xtob("81.03.0004")
+	pduBytes, err := bacgopes.Xtob("81.03.0004")
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -214,18 +213,18 @@ func (suite *TestAnnexJCodecSuite) TestReadBroadcastDistributionTableAck() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ReadBroadcastDistributionTableAck()), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ReadBroadcastDistributionTableAck()), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ReadBroadcastDistributionTableAck)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciBDT, []*bacnetip.Address{}))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ReadBroadcastDistributionTableAck)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciBDT, []*bacgopes.Address{}))
 
 	// Read TableAck with an element
-	addr, _ := bacnetip.NewAddress(zerolog.Nop(), "192.168.0.254/24")
-	pduBytes, err = bacnetip.Xtob("81.03.000e" + //bvlci
+	addr, _ := bacgopes.NewAddress(zerolog.Nop(), "192.168.0.254/24")
+	pduBytes, err = bacgopes.Xtob("81.03.000e" + //bvlci
 		"c0.a8.00.fe.ba.c0 ff.ff.ff.00") // address and mask
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
@@ -236,26 +235,26 @@ func (suite *TestAnnexJCodecSuite) TestReadBroadcastDistributionTableAck() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ReadBroadcastDistributionTableAck(addr)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ReadBroadcastDistributionTableAck(addr)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ReadBroadcastDistributionTableAck)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciBDT, []*bacnetip.Address{addr}))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ReadBroadcastDistributionTableAck)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciBDT, []*bacgopes.Address{addr}))
 }
 
 func (suite *TestAnnexJCodecSuite) TestForwardNPDU() {
-	addr, err := bacnetip.NewAddress(zerolog.Nop(), "192.168.0.1")
-	xpdu, err := bacnetip.Xtob(
+	addr, err := bacgopes.NewAddress(zerolog.Nop(), "192.168.0.1")
+	xpdu, err := bacgopes.Xtob(
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
 			"01 0001 0002 0003", // message type and network list
 	)
 	suite.Require().NoError(err)
-	pduBytes, err := bacnetip.Xtob("81.04.0013" + //   bvlci // TODO: length was 0e before
+	pduBytes, err := bacgopes.Xtob("81.04.0013" + //   bvlci // TODO: length was 0e before
 		"c0.a8.00.01.ba.c0" + // original source address
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
@@ -271,20 +270,20 @@ func (suite *TestAnnexJCodecSuite) TestForwardNPDU() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ForwardedNPDU(addr, xpdu)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ForwardedNPDU(addr, xpdu)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ForwardedNPDU)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciAddress, addr, bacnetip.KWPDUData, xpdu))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ForwardedNPDU)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciAddress, addr, bacgopes.KWPDUData, xpdu))
 	suite.Assert().NoError(err)
 }
 
 func (suite *TestAnnexJCodecSuite) TestRegisterForeignDevice() {
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"81.05.0006" + // bvlci
 			"001e", //time-to-live
 	)
@@ -297,19 +296,19 @@ func (suite *TestAnnexJCodecSuite) TestRegisterForeignDevice() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(RegisterForeignDevice(30)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(RegisterForeignDevice(30)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciTimeToLive, uint16(30)))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciTimeToLive, uint16(30)))
 }
 
 func (suite *TestAnnexJCodecSuite) TestReadForeignDeviceTable() {
 	// Read an empty table
-	pduBytes, err := bacnetip.Xtob("81.06.0004")
+	pduBytes, err := bacgopes.Xtob("81.06.0004")
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -319,19 +318,19 @@ func (suite *TestAnnexJCodecSuite) TestReadForeignDeviceTable() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ReadForeignDeviceTable()), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ReadForeignDeviceTable()), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ReadForeignDeviceTable)(nil)), bacnetip.NoKWArgs)
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ReadForeignDeviceTable)(nil)), bacgopes.NoKWArgs)
 }
 
 func (suite *TestAnnexJCodecSuite) TestReadForeignDeviceTableAck() {
 	// Read an empty TableAck
-	pduBytes, err := bacnetip.Xtob("81.07.0004")
+	pduBytes, err := bacgopes.Xtob("81.07.0004")
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
 		parse, err := readWriteModel.BVLCParse[readWriteModel.BVLC](testutils.TestContext(suite.T()), pduBytes)
@@ -341,22 +340,22 @@ func (suite *TestAnnexJCodecSuite) TestReadForeignDeviceTableAck() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ReadForeignDeviceTableAck()), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ReadForeignDeviceTableAck()), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ReadForeignDeviceTableAck)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciFDT, []*bacnetip.FDTEntry{}))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ReadForeignDeviceTableAck)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciFDT, []*bacgopes.FDTEntry{}))
 
 	// Read TableAck with one entry
 	fdte := FDTEntry()
-	fdte.FDAddress, err = bacnetip.NewAddress(suite.log, "192.168.0.10")
+	fdte.FDAddress, err = bacgopes.NewAddress(suite.log, "192.168.0.10")
 	suite.Require().NoError(err)
 	fdte.FDTTL = 30
 	fdte.FDRemain = 15
-	pduBytes, err = bacnetip.Xtob(
+	pduBytes, err = bacgopes.Xtob(
 		"81.07.000e" + //bvlci
 			"c0.a8.00.0a.ba.c0" + // address
 			"001e.000f", // ttl and remaining
@@ -370,19 +369,19 @@ func (suite *TestAnnexJCodecSuite) TestReadForeignDeviceTableAck() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ReadForeignDeviceTableAck(fdte)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ReadForeignDeviceTableAck(fdte)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.ReadForeignDeviceTableAck)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciFDT, []*bacnetip.FDTEntry{fdte}))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.ReadForeignDeviceTableAck)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciFDT, []*bacgopes.FDTEntry{fdte}))
 }
 
 func (suite *TestAnnexJCodecSuite) TestDeleteForeignDeviceTableEntry() {
-	addr, _ := bacnetip.NewAddress(zerolog.Nop(), "192.168.0.11/24")
-	pduBytes, err := bacnetip.Xtob("81.08.000a" + // bvlci
+	addr, _ := bacgopes.NewAddress(zerolog.Nop(), "192.168.0.11/24")
+	pduBytes, err := bacgopes.Xtob("81.08.000a" + // bvlci
 		"c0.a8.00.0b.ba.c0") // address of entry to be deleted
 	suite.Require().NoError(err)
 	{ // Parse with plc4x parser to validate
@@ -393,14 +392,14 @@ func (suite *TestAnnexJCodecSuite) TestDeleteForeignDeviceTableEntry() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(DeleteForeignDeviceTableEntry(addr)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(DeleteForeignDeviceTableEntry(addr)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.DeleteForeignDeviceTableEntry)(nil)), bacnetip.NewKWArgs(bacnetip.KWBvlciAddress, addr))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.DeleteForeignDeviceTableEntry)(nil)), bacgopes.NewKWArgs(bacgopes.KWBvlciAddress, addr))
 }
 
 func (suite *TestAnnexJCodecSuite) TestDeleteForeignDeviceTableAck() {
@@ -409,14 +408,14 @@ func (suite *TestAnnexJCodecSuite) TestDeleteForeignDeviceTableAck() {
 }
 
 func (suite *TestAnnexJCodecSuite) TestDistributeBroadcastToNetwork() {
-	xpdu, err := bacnetip.Xtob(
+	xpdu, err := bacgopes.Xtob(
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
 			"01 0001 0002 0003", // message type and network list
 	)
 	suite.Require().NoError(err)
-	pduBytes, err := bacnetip.Xtob("81.09.000d" + //   bvlci // TODO: length was 08 before
+	pduBytes, err := bacgopes.Xtob("81.09.000d" + //   bvlci // TODO: length was 08 before
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
@@ -431,25 +430,25 @@ func (suite *TestAnnexJCodecSuite) TestDistributeBroadcastToNetwork() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(DistributeBroadcastToNetwork(xpdu)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(DistributeBroadcastToNetwork(xpdu)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.DistributeBroadcastToNetwork)(nil)), bacnetip.NewKWArgs(bacnetip.KWPDUData, xpdu))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.DistributeBroadcastToNetwork)(nil)), bacgopes.NewKWArgs(bacgopes.KWPDUData, xpdu))
 }
 
 func (suite *TestAnnexJCodecSuite) TestOriginalUnicastNPDU() {
-	xpdu, err := bacnetip.Xtob(
+	xpdu, err := bacgopes.Xtob(
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
 			"01 0001 0002 0003", // message type and network list
 	)
 	suite.Require().NoError(err)
-	pduBytes, err := bacnetip.Xtob("81.0a.000d" + //   bvlci // TODO: length was 08 before
+	pduBytes, err := bacgopes.Xtob("81.0a.000d" + //   bvlci // TODO: length was 08 before
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
@@ -464,25 +463,25 @@ func (suite *TestAnnexJCodecSuite) TestOriginalUnicastNPDU() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(OriginalUnicastNPDU(xpdu)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(OriginalUnicastNPDU(xpdu)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.OriginalUnicastNPDU)(nil)), bacnetip.NewKWArgs(bacnetip.KWPDUData, xpdu))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.OriginalUnicastNPDU)(nil)), bacgopes.NewKWArgs(bacgopes.KWPDUData, xpdu))
 }
 
 func (suite *TestAnnexJCodecSuite) TestOriginalBroadcastNPDU() {
-	xpdu, err := bacnetip.Xtob(
+	xpdu, err := bacgopes.Xtob(
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
 			"01 0001 0002 0003", // message type and network list
 	)
 	suite.Require().NoError(err)
-	pduBytes, err := bacnetip.Xtob("81.0b.000d" + //   bvlci // TODO: length was 08 before
+	pduBytes, err := bacgopes.Xtob("81.0b.000d" + //   bvlci // TODO: length was 08 before
 		// "deadbeef", // forwarded PDU // TODO: this is not a ndpu so we just exploded with that. We use the iartn for that for now
 		// TODO: this below is from us as upstream message is not parsable
 		"01.80" + // version, network layer message
@@ -497,14 +496,14 @@ func (suite *TestAnnexJCodecSuite) TestOriginalBroadcastNPDU() {
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(OriginalBroadcastNPDU(xpdu)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(OriginalBroadcastNPDU(xpdu)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs((*bacnetip.OriginalBroadcastNPDU)(nil)), bacnetip.NewKWArgs(bacnetip.KWPDUData, xpdu))
+	err = suite.Confirmation(bacgopes.NewArgs((*bacgopes.OriginalBroadcastNPDU)(nil)), bacgopes.NewKWArgs(bacgopes.KWPDUData, xpdu))
 }
 
 func TestAnnexJCodec(t *testing.T) {
diff --git a/plc4go/internal/bacnetip/tests/test_bvll/test_foreign_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go
similarity index 69%
rename from plc4go/internal/bacnetip/tests/test_bvll/test_foreign_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go
index fc9d06eee9..96c760be8d 100644
--- a/plc4go/internal/bacnetip/tests/test_bvll/test_foreign_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_foreign_test.go
@@ -27,20 +27,19 @@ import (
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/constructors"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip/constructors"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TFNetwork struct {
 	*tests.StateMachineGroup
 
 	trafficLog *tests.TrafficLog
-	router     *bacnetip.IPRouter
-	vlan5      *bacnetip.IPNetwork
-	vlan6      *bacnetip.IPNetwork
+	router     *bacgopes.IPRouter
+	vlan5      *bacgopes.IPNetwork
+	vlan6      *bacgopes.IPNetwork
 	fd         *BIPForeignStateMachine
 	bbmd       *BIPBBMDStateMachine
 
@@ -65,14 +64,14 @@ func NewTFNetwork(t *testing.T) *TFNetwork {
 	tfn.trafficLog = new(tests.TrafficLog)
 
 	// make a router
-	tfn.router = bacnetip.NewIPRouter(localLog)
+	tfn.router = bacgopes.NewIPRouter(localLog)
 
 	// make a home LAN
-	tfn.vlan5 = bacnetip.NewIPNetwork(localLog, bacnetip.WithNetworkName("192.168.5.0/24"), bacnetip.WithNetworkTrafficLogger(tfn.trafficLog))
+	tfn.vlan5 = bacgopes.NewIPNetwork(localLog, bacgopes.WithNetworkName("192.168.5.0/24"), bacgopes.WithNetworkTrafficLogger(tfn.trafficLog))
 	tfn.router.AddNetwork(Address("192.168.5.1/24"), tfn.vlan5)
 
 	// make a remote LAN
-	tfn.vlan6 = bacnetip.NewIPNetwork(localLog, bacnetip.WithNetworkName("192.168.6.0/24"), bacnetip.WithNetworkTrafficLogger(tfn.trafficLog))
+	tfn.vlan6 = bacgopes.NewIPNetwork(localLog, bacgopes.WithNetworkName("192.168.6.0/24"), bacgopes.WithNetworkTrafficLogger(tfn.trafficLog))
 	tfn.router.AddNetwork(Address("192.168.6.1/24"), tfn.vlan6)
 
 	var err error
@@ -136,9 +135,9 @@ func TestForeign(t *testing.T) {
 
 		// tell the B/IP layer of the foreign device to register
 		tnet.fd.GetStartState().
-			Call(func(args bacnetip.Args, _ bacnetip.KWArgs) error {
-				return tnet.fd.bip.Register(args[0].(*bacnetip.Address), args[1].(int))
-			}, bacnetip.NewArgs(tnet.bbmd.address, 30), bacnetip.NoKWArgs).
+			Call(func(args bacgopes.Args, _ bacgopes.KWArgs) error {
+				return tnet.fd.bip.Register(args[0].(*bacgopes.Address), args[1].(int))
+			}, bacgopes.NewArgs(tnet.bbmd.address, 30), bacgopes.NoKWArgs).
 			Success("")
 
 		// remote sniffer node
@@ -148,8 +147,8 @@ func TestForeign(t *testing.T) {
 
 		// sniffer traffic
 		remoteSniffer.GetStartState().Doc("1-1-0").
-			Receive(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NoKWArgs).Doc("1-1-1").
-			Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NoKWArgs).Doc("1-1-2").
+			Receive(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NoKWArgs).Doc("1-1-1").
+			Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NoKWArgs).Doc("1-1-2").
 			SetEvent("fd-registered").Doc("1-1-3").
 			Success("")
 
@@ -166,7 +165,7 @@ func TestForeign(t *testing.T) {
 		homeSnooper.GetStartState().Doc("1-2-0").
 			WaitEvent("fd-registered", nil).Doc("1-2-1").
 			Send(readForeignDeviceTable, nil).Doc("1-2-2").
-			Receive(bacnetip.NewArgs((*bacnetip.ReadForeignDeviceTableAck)(nil)), bacnetip.NoKWArgs).Doc("1-2-3").
+			Receive(bacgopes.NewArgs((*bacgopes.ReadForeignDeviceTableAck)(nil)), bacgopes.NoKWArgs).Doc("1-2-3").
 			Success("")
 
 		// home sniffer node
@@ -176,10 +175,10 @@ func TestForeign(t *testing.T) {
 
 		// sniffer traffic
 		homeSniffer.GetStartState().Doc("1-3-0").
-			Receive(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NoKWArgs).Doc("1-3-1").
-			Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NoKWArgs).Doc("1-3-2").
-			Receive(bacnetip.NewArgs((*bacnetip.ReadForeignDeviceTable)(nil)), bacnetip.NoKWArgs).Doc("1-3-3").
-			Receive(bacnetip.NewArgs((*bacnetip.ReadForeignDeviceTableAck)(nil)), bacnetip.NoKWArgs).Doc("1-3-4").
+			Receive(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NoKWArgs).Doc("1-3-1").
+			Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NoKWArgs).Doc("1-3-2").
+			Receive(bacgopes.NewArgs((*bacgopes.ReadForeignDeviceTable)(nil)), bacgopes.NoKWArgs).Doc("1-3-3").
+			Receive(bacgopes.NewArgs((*bacgopes.ReadForeignDeviceTableAck)(nil)), bacgopes.NoKWArgs).Doc("1-3-4").
 			Success("")
 
 		//  run the group
@@ -194,9 +193,9 @@ func TestForeign(t *testing.T) {
 
 		// tell the B/IP layer of the foreign device to register
 		tnet.fd.GetStartState().
-			Call(func(args bacnetip.Args, _ bacnetip.KWArgs) error {
-				return tnet.fd.bip.Register(args[0].(*bacnetip.Address), args[1].(int))
-			}, bacnetip.NewArgs(tnet.bbmd.address, 10), bacnetip.NoKWArgs).
+			Call(func(args bacgopes.Args, _ bacgopes.KWArgs) error {
+				return tnet.fd.bip.Register(args[0].(*bacgopes.Address), args[1].(int))
+			}, bacgopes.NewArgs(tnet.bbmd.address, 10), bacgopes.NoKWArgs).
 			Success("")
 
 		// the bbmd is idle
@@ -209,10 +208,10 @@ func TestForeign(t *testing.T) {
 
 		// sniffer traffic
 		remoteSniffer.GetStartState().Doc("2-1-0").
-			Receive(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NoKWArgs).Doc("2-1-1").
-			Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NoKWArgs).Doc("2-1-1").
-			Receive(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NoKWArgs).Doc("2-1-3").
-			Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NoKWArgs).Doc("2-1-4").
+			Receive(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NoKWArgs).Doc("2-1-1").
+			Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NoKWArgs).Doc("2-1-1").
+			Receive(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NoKWArgs).Doc("2-1-3").
+			Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NoKWArgs).Doc("2-1-4").
 			Success("")
 
 		//  run the group
@@ -226,27 +225,27 @@ func TestForeign(t *testing.T) {
 		tnet := NewTFNetwork(t)
 
 		//make a PDU from node 1 to node 2
-		pduData, err := bacnetip.Xtob(
+		pduData, err := bacgopes.Xtob(
 			//"dead.beef", // TODO: upstream is using invalid data to send around, so we just use a IAm
 			"01.80" + // version, network layer message
 				"13 0008 01", // message type, network, flag
 		)
 		require.NoError(t, err)
-		pdu := bacnetip.NewPDU(bacnetip.NewMessageBridge(pduData...), bacnetip.WithPDUSource(tnet.fd.address), bacnetip.WithPDUDestination(tnet.bbmd.address))
+		pdu := bacgopes.NewPDU(bacgopes.NewMessageBridge(pduData...), bacgopes.WithPDUSource(tnet.fd.address), bacgopes.WithPDUDestination(tnet.bbmd.address))
 		t.Logf("pdu: %v", pdu)
 
 		// register, wait for ack, send some beef
 		tnet.fd.GetStartState().Doc("3-1-0").
-			Call(func(args bacnetip.Args, _ bacnetip.KWArgs) error {
-				return tnet.fd.bip.Register(args[0].(*bacnetip.Address), args[1].(int))
-			}, bacnetip.NewArgs(tnet.bbmd.address, 60), bacnetip.NoKWArgs).Doc("3-1-1").
+			Call(func(args bacgopes.Args, _ bacgopes.KWArgs) error {
+				return tnet.fd.bip.Register(args[0].(*bacgopes.Address), args[1].(int))
+			}, bacgopes.NewArgs(tnet.bbmd.address, 60), bacgopes.NoKWArgs).Doc("3-1-1").
 			WaitEvent("3-registered", nil).Doc("3-1-2").
 			Send(pdu, nil).Doc("3-1-3").
 			Success("")
 
 		// the bbmd is happy when it gets the pdu
 		tnet.bbmd.GetStartState().
-			Receive(bacnetip.NewArgs((bacnetip.PDU)(nil)), bacnetip.NewKWArgs(bacnetip.KWPPDUSource, tnet.fd.address, bacnetip.KWPDUData, pduData)).
+			Receive(bacgopes.NewArgs((bacgopes.PDU)(nil)), bacgopes.NewKWArgs(bacgopes.KWPPDUSource, tnet.fd.address, bacgopes.KWPDUData, pduData)).
 			Success("")
 
 		// remote sniffer node
@@ -256,10 +255,10 @@ func TestForeign(t *testing.T) {
 
 		// sniffer traffic
 		remoteSniffer.GetStartState().Doc("3-2-0").
-			Receive(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NoKWArgs).Doc("3-2-1").
-			Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NoKWArgs).Doc("3-2-2").
+			Receive(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NoKWArgs).Doc("3-2-1").
+			Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NoKWArgs).Doc("3-2-2").
 			SetEvent("3-registered").Doc("3-2-3").
-			Receive(bacnetip.NewArgs((*bacnetip.OriginalUnicastNPDU)(nil)), bacnetip.NoKWArgs).Doc("3-2-4").
+			Receive(bacgopes.NewArgs((*bacgopes.OriginalUnicastNPDU)(nil)), bacgopes.NoKWArgs).Doc("3-2-4").
 			Success("")
 
 		// run the group
@@ -273,27 +272,27 @@ func TestForeign(t *testing.T) {
 		tnet := NewTFNetwork(t)
 
 		//make a PDU from node 1 to node 2
-		pduData, err := bacnetip.Xtob(
+		pduData, err := bacgopes.Xtob(
 			//"dead.beef", // TODO: upstream is using invalid data to send around, so we just use a IAm
 			"01.80" + // version, network layer message
 				"13 0008 01", // message type, network, flag
 		)
 		require.NoError(t, err)
-		pdu := bacnetip.NewPDU(bacnetip.NewMessageBridge(pduData...), bacnetip.WithPDUSource(tnet.fd.address), bacnetip.WithPDUDestination(bacnetip.NewLocalBroadcast(nil)))
+		pdu := bacgopes.NewPDU(bacgopes.NewMessageBridge(pduData...), bacgopes.WithPDUSource(tnet.fd.address), bacgopes.WithPDUDestination(bacgopes.NewLocalBroadcast(nil)))
 		t.Logf("pdu: %v", pdu)
 
 		// register, wait for ack, send some beef
 		tnet.fd.GetStartState().Doc("4-1-0").
-			Call(func(args bacnetip.Args, _ bacnetip.KWArgs) error {
-				return tnet.fd.bip.Register(args[0].(*bacnetip.Address), args[1].(int))
-			}, bacnetip.NewArgs(tnet.bbmd.address, 60), bacnetip.NoKWArgs).Doc("4-1-1").
+			Call(func(args bacgopes.Args, _ bacgopes.KWArgs) error {
+				return tnet.fd.bip.Register(args[0].(*bacgopes.Address), args[1].(int))
+			}, bacgopes.NewArgs(tnet.bbmd.address, 60), bacgopes.NoKWArgs).Doc("4-1-1").
 			WaitEvent("4-registered", nil).Doc("4-1-2").
 			Send(pdu, nil).Doc("4-1-3").
 			Success("")
 
 		// the bbmd is happy when it gets the pdu
 		tnet.bbmd.GetStartState().
-			Receive(bacnetip.NewArgs((bacnetip.PDU)(nil)), bacnetip.NewKWArgs(bacnetip.KWPPDUSource, tnet.fd.address, bacnetip.KWPDUData, pduData)).Doc("4-2-1").
+			Receive(bacgopes.NewArgs((bacgopes.PDU)(nil)), bacgopes.NewKWArgs(bacgopes.KWPPDUSource, tnet.fd.address, bacgopes.KWPDUData, pduData)).Doc("4-2-1").
 			Success("")
 
 		// home simple node
@@ -302,7 +301,7 @@ func TestForeign(t *testing.T) {
 
 		// home node happy when getting the pdu, broadcast by the bbmd
 		homeNode.GetStartState().Doc("4-3-0").
-			Receive(bacnetip.NewArgs((bacnetip.PDU)(nil)), bacnetip.NewKWArgs(bacnetip.KWPPDUSource, tnet.fd.address, bacnetip.KWPDUData, pduData)).Doc("4-3-1").
+			Receive(bacgopes.NewArgs((bacgopes.PDU)(nil)), bacgopes.NewKWArgs(bacgopes.KWPPDUSource, tnet.fd.address, bacgopes.KWPDUData, pduData)).Doc("4-3-1").
 			Success("")
 
 		// remote sniffer node
@@ -312,10 +311,10 @@ func TestForeign(t *testing.T) {
 
 		// sniffer traffic
 		remoteSniffer.GetStartState().Doc("4-4-0").
-			Receive(bacnetip.NewArgs((*bacnetip.RegisterForeignDevice)(nil)), bacnetip.NoKWArgs).Doc("4-4-1").
-			Receive(bacnetip.NewArgs((*bacnetip.Result)(nil)), bacnetip.NoKWArgs).Doc("4-4-2").
+			Receive(bacgopes.NewArgs((*bacgopes.RegisterForeignDevice)(nil)), bacgopes.NoKWArgs).Doc("4-4-1").
+			Receive(bacgopes.NewArgs((*bacgopes.Result)(nil)), bacgopes.NoKWArgs).Doc("4-4-2").
 			SetEvent("4-registered").
-			Receive(bacnetip.NewArgs((*bacnetip.DistributeBroadcastToNetwork)(nil)), bacnetip.NoKWArgs).Doc("4-4-3").
+			Receive(bacgopes.NewArgs((*bacgopes.DistributeBroadcastToNetwork)(nil)), bacgopes.NoKWArgs).Doc("4-4-3").
 			Success("")
 
 		// run the group
diff --git a/plc4go/internal/bacnetip/tests/test_bvll/test_simple_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go
similarity index 75%
rename from plc4go/internal/bacnetip/tests/test_bvll/test_simple_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go
index 0f1351ef8f..7d83c2eedc 100644
--- a/plc4go/internal/bacnetip/tests/test_bvll/test_simple_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_bvll/test_simple_test.go
@@ -27,15 +27,14 @@ import (
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TNetwork struct {
 	*tests.StateMachineGroup
-	vlan    *bacnetip.IPNetwork
+	vlan    *bacgopes.IPNetwork
 	td      *BIPSimpleStateMachine
 	iut     *BIPSimpleStateMachine
 	sniffer *SnifferStateMachine
@@ -58,7 +57,7 @@ func NewTNetwork(t *testing.T) *TNetwork {
 	localLog.Trace().Msg("time machine reset")
 
 	// make a little LAN
-	tn.vlan = bacnetip.NewIPNetwork(localLog)
+	tn.vlan = bacgopes.NewIPNetwork(localLog)
 
 	// Test devices
 	var err error
@@ -122,26 +121,26 @@ func TestSimple(t *testing.T) {
 		tnet := NewTNetwork(t)
 
 		//make a PDU from node 1 to node 2
-		pduData, err := bacnetip.Xtob(
+		pduData, err := bacgopes.Xtob(
 			//"dead.beef", // TODO: upstream is using invalid data to send around, so we just use a IAm
 			"01.80" + // version, network layer message
 				"02 0001 02", // message type, network, performance
 		)
 		require.NoError(t, err)
-		pdu := bacnetip.NewPDU(bacnetip.NewMessageBridge(pduData...), bacnetip.WithPDUSource(tnet.td.address), bacnetip.WithPDUDestination(tnet.iut.address))
+		pdu := bacgopes.NewPDU(bacgopes.NewMessageBridge(pduData...), bacgopes.WithPDUSource(tnet.td.address), bacgopes.WithPDUDestination(tnet.iut.address))
 		t.Logf("pdu: %v", pdu)
 
 		// test device sends it, iut gets it
 		tnet.td.GetStartState().Send(pdu, nil).Success("")
-		tnet.iut.GetStartState().Receive(bacnetip.NewArgs((bacnetip.PDU)(nil)), bacnetip.NewKWArgs(
-			bacnetip.KWPPDUSource, tnet.td.address,
+		tnet.iut.GetStartState().Receive(bacgopes.NewArgs((bacgopes.PDU)(nil)), bacgopes.NewKWArgs(
+			bacgopes.KWPPDUSource, tnet.td.address,
 		)).Success("")
 
 		// sniffer sees message on the wire
-		tnet.sniffer.GetStartState().Receive(bacnetip.NewArgs((bacnetip.PDU)(nil)), bacnetip.NewKWArgs(
-			bacnetip.KWPPDUSource, tnet.td.address.AddrTuple,
-			bacnetip.KWPDUDestination, tnet.iut.address.AddrTuple,
-			bacnetip.KWPDUData, pduData,
+		tnet.sniffer.GetStartState().Receive(bacgopes.NewArgs((bacgopes.PDU)(nil)), bacgopes.NewKWArgs(
+			bacgopes.KWPPDUSource, tnet.td.address.AddrTuple,
+			bacgopes.KWPDUDestination, tnet.iut.address.AddrTuple,
+			bacgopes.KWPDUData, pduData,
 		)).Timeout(1.0*time.Millisecond, nil).Success("")
 
 		// run the group
@@ -152,26 +151,26 @@ func TestSimple(t *testing.T) {
 		tnet := NewTNetwork(t)
 
 		//make a PDU from node 1 to node 2
-		pduData, err := bacnetip.Xtob(
+		pduData, err := bacgopes.Xtob(
 			//"dead.beef", // TODO: upstream is using invalid data to send around, so we just use a IAm
 			"01.80" + // version, network layer message
 				"02 0001 02", // message type, network, performance
 		)
 		require.NoError(t, err)
-		pdu := bacnetip.NewPDU(bacnetip.NewMessageBridge(pduData...), bacnetip.WithPDUSource(tnet.td.address), bacnetip.WithPDUDestination(tnet.iut.address))
+		pdu := bacgopes.NewPDU(bacgopes.NewMessageBridge(pduData...), bacgopes.WithPDUSource(tnet.td.address), bacgopes.WithPDUDestination(tnet.iut.address))
 		t.Logf("pdu: %v", pdu)
 
 		// test device sends it, iut gets it
-		tnet.td.GetStartState().Send(bacnetip.NewPDU(pdu, bacnetip.WithPDUSource(tnet.td.address), bacnetip.WithPDUDestination(bacnetip.NewLocalBroadcast(nil))), nil).Success("")
-		tnet.iut.GetStartState().Receive(bacnetip.NewArgs((bacnetip.PDU)(nil)), bacnetip.NewKWArgs(
-			bacnetip.KWPPDUSource, tnet.td.address,
+		tnet.td.GetStartState().Send(bacgopes.NewPDU(pdu, bacgopes.WithPDUSource(tnet.td.address), bacgopes.WithPDUDestination(bacgopes.NewLocalBroadcast(nil))), nil).Success("")
+		tnet.iut.GetStartState().Receive(bacgopes.NewArgs((bacgopes.PDU)(nil)), bacgopes.NewKWArgs(
+			bacgopes.KWPPDUSource, tnet.td.address,
 		)).Success("")
 
 		// sniffer sees message on the wire
-		tnet.sniffer.GetStartState().Receive(bacnetip.NewArgs((*bacnetip.OriginalBroadcastNPDU)(nil)), bacnetip.NewKWArgs(
-			bacnetip.KWPPDUSource, tnet.td.address.AddrTuple,
-			//bacnetip.KWPDUDestination, tnet.iut.address.AddrTuple,
-			bacnetip.KWPDUData, pduData,
+		tnet.sniffer.GetStartState().Receive(bacgopes.NewArgs((*bacgopes.OriginalBroadcastNPDU)(nil)), bacgopes.NewKWArgs(
+			bacgopes.KWPPDUSource, tnet.td.address.AddrTuple,
+			//bacgopes.KWPDUDestination, tnet.iut.address.AddrTuple,
+			bacgopes.KWPDUData, pduData,
 		)).Timeout(1.0*time.Second, nil).Success("")
 
 		// run the group
diff --git a/plc4go/internal/bacnetip/tests/test_comm/test_capability_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_capability_test.go
similarity index 92%
rename from plc4go/internal/bacnetip/tests/test_comm/test_capability_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_capability_test.go
index 19e9cf6446..55776d84e6 100644
--- a/plc4go/internal/bacnetip/tests/test_comm/test_capability_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_capability_test.go
@@ -25,20 +25,19 @@ import (
 	"github.com/rs/zerolog"
 	"github.com/stretchr/testify/assert"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
 )
 
 // TODO: big WIP
 
 type BaseCollector struct {
-	*bacnetip.Collector
+	*bacgopes.Collector
 }
 
 func NewBaseCollector(localLog zerolog.Logger) *BaseCollector {
 	b := &BaseCollector{}
-	b.Collector = bacnetip.NewCollector(localLog)
+	b.Collector = bacgopes.NewCollector(localLog)
 	return b
 }
 
@@ -48,12 +47,12 @@ func (b BaseCollector) transform(value any) any {
 }
 
 type PlusOne struct {
-	*bacnetip.Capability
+	*bacgopes.Capability
 }
 
 func NewPlusOne() *PlusOne {
 	p := &PlusOne{}
-	p.Capability = bacnetip.NewCapability()
+	p.Capability = bacgopes.NewCapability()
 	return p
 }
 
@@ -62,12 +61,12 @@ func (p *PlusOne) transform(value any) any {
 }
 
 type TimesTen struct {
-	*bacnetip.Capability
+	*bacgopes.Capability
 }
 
 func NewTimesTen() *TimesTen {
 	t := &TimesTen{}
-	t.Capability = bacnetip.NewCapability()
+	t.Capability = bacgopes.NewCapability()
 	return t
 }
 
@@ -76,7 +75,7 @@ func (p *TimesTen) transform(value any) any {
 }
 
 type MakeList struct {
-	*bacnetip.Capability
+	*bacgopes.Capability
 }
 
 //####################################
diff --git a/plc4go/internal/bacnetip/tests/test_comm/test_client_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_client_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_comm/test_client_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_client_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_comm/test_pci_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_pci_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_comm/test_pci_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_pci_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_comm/test_pdu_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_pdu_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_comm/test_pdu_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_pdu_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_comm/test_pdudata_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_pdudata_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_comm/test_pdudata_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_pdudata_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_comm/test_server_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_server_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_comm/test_server_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_comm/test_server_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/helpers.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/helpers.go
similarity index 98%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/helpers.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/helpers.go
index 0cb0a78fc4..8fc8eb0562 100644
--- a/plc4go/internal/bacnetip/tests/test_constructed_data/helpers.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/helpers.go
@@ -22,7 +22,7 @@ package test_constructed_data
 import (
 	"github.com/pkg/errors"
 
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
 type SequenceEqualityRequirements interface {
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/test_any_atomic_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_any_atomic_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/test_any_atomic_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_any_atomic_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/test_any_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_any_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/test_any_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_any_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/test_array_of_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_array_of_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/test_array_of_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_array_of_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/test_choice_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_choice_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/test_choice_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_choice_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/test_sequence_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_sequence_test.go
similarity index 98%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/test_sequence_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_sequence_test.go
index 1d506b8ac7..f9f1712de5 100644
--- a/plc4go/internal/bacnetip/tests/test_constructed_data/test_sequence_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/test_sequence_test.go
@@ -24,7 +24,7 @@ import (
 
 	"github.com/stretchr/testify/require"
 
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
 func TestEmptySequence(t *testing.T) {
diff --git a/plc4go/internal/bacnetip/tests/test_constructed_data/tests_sequence_of_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/tests_sequence_of_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_constructed_data/tests_sequence_of_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_constructed_data/tests_sequence_of_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_clientcontroller_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_clientcontroller_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_clientcontroller_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_clientcontroller_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_iocb_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iocb_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_iocb_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iocb_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_iochain_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iochain_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_iochain_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iochain_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_iocontroller_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iocontroller_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_iocontroller_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iocontroller_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_iogroup_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iogroup_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_iogroup_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_iogroup_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_ioqcontroller_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_ioqcontroller_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_ioqcontroller_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_ioqcontroller_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_ioqueue_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_ioqueue_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_ioqueue_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_ioqueue_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_iocb/test_sieveclientcontroller_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_sieveclientcontroller_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_iocb/test_sieveclientcontroller_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_iocb/test_sieveclientcontroller_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_local/test_local_schedule_1_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_local/test_local_schedule_1_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_local/test_local_schedule_1_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_local/test_local_schedule_1_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_local/test_local_schedule_2_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_local/test_local_schedule_2_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_local/test_local_schedule_2_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_local/test_local_schedule_2_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_network/helpers.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers.go
similarity index 74%
rename from plc4go/internal/bacnetip/tests/test_network/helpers.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers.go
index 4a99e9b429..f998862a74 100644
--- a/plc4go/internal/bacnetip/tests/test_network/helpers.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/helpers.go
@@ -25,13 +25,13 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip/constructors"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/constructors"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 )
 
 type _NetworkServiceElement struct {
-	*bacnetip.NetworkServiceElement
+	*bacgopes.NetworkServiceElement
 }
 
 func new_NetworkServiceElement(localLog zerolog.Logger) (*_NetworkServiceElement, error) {
@@ -40,7 +40,7 @@ func new_NetworkServiceElement(localLog zerolog.Logger) (*_NetworkServiceElement
 	// This class turns off the deferred startup function call that broadcasts
 	// I-Am-Router-To-Network and Network-Number-Is messages.
 	var err error
-	i.NetworkServiceElement, err = bacnetip.NewNetworkServiceElement(localLog, bacnetip.WithNetworkServiceElementStartupDisabled(true))
+	i.NetworkServiceElement, err = bacgopes.NewNetworkServiceElement(localLog, bacgopes.WithNetworkServiceElementStartupDisabled(true))
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
@@ -48,8 +48,8 @@ func new_NetworkServiceElement(localLog zerolog.Logger) (*_NetworkServiceElement
 }
 
 type NPDUCodec struct {
-	bacnetip.Client
-	bacnetip.Server
+	bacgopes.Client
+	bacgopes.Server
 
 	log zerolog.Logger
 }
@@ -59,24 +59,24 @@ func NewNPDUCodec(localLog zerolog.Logger) (*NPDUCodec, error) {
 		log: localLog,
 	}
 	var err error
-	n.Client, err = bacnetip.NewClient(localLog, n)
+	n.Client, err = bacgopes.NewClient(localLog, n)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating client")
 	}
-	n.Server, err = bacnetip.NewServer(localLog, n)
+	n.Server, err = bacgopes.NewServer(localLog, n)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating client")
 	}
 	return n, nil
 }
 
-func (n *NPDUCodec) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (n *NPDUCodec) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	n.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	npdu := args.Get0NPDU()
 
 	// first a generic _NPDU
-	xpdu, err := bacnetip.NewNPDU(nil, nil)
+	xpdu, err := bacgopes.NewNPDU(nil, nil)
 	if err != nil {
 		return errors.Wrap(err, "error creating NPDU")
 	}
@@ -85,23 +85,23 @@ func (n *NPDUCodec) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error
 	}
 
 	// Now as a vanilla PDU
-	ypdu := bacnetip.NewPDU(bacnetip.NewMessageBridge())
+	ypdu := bacgopes.NewPDU(bacgopes.NewMessageBridge())
 	if err := xpdu.Encode(ypdu); err != nil {
 		return errors.Wrap(err, "error decoding xpdu")
 	}
 	n.log.Debug().Stringer("ypdu", ypdu).Msg("encoded")
 
 	// send it downstream
-	return n.Request(bacnetip.NewArgs(ypdu), bacnetip.NoKWArgs)
+	return n.Request(bacgopes.NewArgs(ypdu), bacgopes.NoKWArgs)
 }
 
-func (n *NPDUCodec) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (n *NPDUCodec) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	n.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	pdu := args.Get0PDU()
 
 	// decode as generic _NPDU
-	xpdu, err := bacnetip.NewNPDU(nil, nil)
+	xpdu, err := bacgopes.NewNPDU(nil, nil)
 	if err != nil {
 		return errors.Wrap(err, "error creating NPDU")
 	}
@@ -116,12 +116,12 @@ func (n *NPDUCodec) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) err
 	}
 
 	// do a deeper decode of the _NPDU
-	ypdu := bacnetip.NPDUTypes[*xpdu.GetNPDUNetMessage()]()
+	ypdu := bacgopes.NPDUTypes[*xpdu.GetNPDUNetMessage()]()
 	if err := ypdu.Decode(xpdu); err != nil {
 		return errors.Wrap(err, "error decoding ypdu")
 	}
 
-	return n.Response(bacnetip.NewArgs(ypdu), bacnetip.NoKWArgs)
+	return n.Response(bacgopes.NewArgs(ypdu), bacgopes.NoKWArgs)
 }
 
 func (n *NPDUCodec) String() string {
@@ -131,13 +131,13 @@ func (n *NPDUCodec) String() string {
 type SnifferStateMachine struct {
 	*tests.ClientStateMachine
 
-	address *bacnetip.Address
-	node    *bacnetip.Node
+	address *bacgopes.Address
+	node    *bacgopes.Node
 
 	log zerolog.Logger
 }
 
-func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.Network) (*SnifferStateMachine, error) {
+func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.Network) (*SnifferStateMachine, error) {
 	s := &SnifferStateMachine{
 		log: localLog,
 	}
@@ -148,20 +148,20 @@ func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 	}
 
 	// save the name and address
-	s.address, err = bacnetip.NewAddress(localLog, address)
+	s.address, err = bacgopes.NewAddress(localLog, address)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating address")
 	}
 
 	// create a promiscuous node, added to the network
-	s.node, err = bacnetip.NewNode(s.log, s.address, bacnetip.WithNodePromiscuous(true), bacnetip.WithNodeLan(vlan))
+	s.node, err = bacgopes.NewNode(s.log, s.address, bacgopes.WithNodePromiscuous(true), bacgopes.WithNodeLan(vlan))
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating node")
 	}
 	s.log.Debug().Stringer("node", s.node).Msg("node")
 
 	// bind the stack together
-	if err := bacnetip.Bind(localLog, s, s.node); err != nil {
+	if err := bacgopes.Bind(localLog, s, s.node); err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
@@ -171,14 +171,14 @@ func NewSnifferStateMachine(localLog zerolog.Logger, address string, vlan *bacne
 type NetworkLayerStateMachine struct {
 	*tests.ClientStateMachine
 
-	address *bacnetip.Address
+	address *bacgopes.Address
 
 	log   zerolog.Logger
 	codec *NPDUCodec
-	node  *bacnetip.Node
+	node  *bacgopes.Node
 }
 
-func NewNetworkLayerStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.Network) (*NetworkLayerStateMachine, error) {
+func NewNetworkLayerStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.Network) (*NetworkLayerStateMachine, error) {
 	n := &NetworkLayerStateMachine{
 		log: localLog,
 	}
@@ -199,21 +199,21 @@ func NewNetworkLayerStateMachine(localLog zerolog.Logger, address string, vlan *
 	n.log.Debug().Stringer("codec", n.codec).Msg("codec")
 
 	// create a node, added to the network
-	n.node, err = bacnetip.NewNode(localLog, n.address, bacnetip.WithNodeLan(vlan))
+	n.node, err = bacgopes.NewNode(localLog, n.address, bacgopes.WithNodeLan(vlan))
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating node")
 	}
 	n.log.Debug().Stringer("node", n.node).Msg("node")
 
 	// bind this to the node
-	if err := bacnetip.Bind(localLog, n, n.codec, n.node); err != nil {
+	if err := bacgopes.Bind(localLog, n, n.codec, n.node); err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 	return n, nil
 }
 
 type RouterNode struct {
-	nsap *bacnetip.NetworkServiceAccessPoint
+	nsap *bacgopes.NetworkServiceAccessPoint
 	nse  *_NetworkServiceElement
 
 	log zerolog.Logger
@@ -223,7 +223,7 @@ func NewRouterNode(localLog zerolog.Logger) (*RouterNode, error) {
 	r := &RouterNode{log: localLog}
 	var err error
 	// a network service access point will be needed
-	r.nsap, err = bacnetip.NewNetworkServiceAccessPoint(localLog)
+	r.nsap, err = bacgopes.NewNetworkServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service access point")
 	}
@@ -232,21 +232,21 @@ func NewRouterNode(localLog zerolog.Logger) (*RouterNode, error) {
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
-	err = bacnetip.Bind(localLog, r.nse, r.nsap)
+	err = bacgopes.Bind(localLog, r.nse, r.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 	return r, nil
 }
 
-func (r *RouterNode) AddNetwork(address string, vlan *bacnetip.Network, net uint16) error {
+func (r *RouterNode) AddNetwork(address string, vlan *bacgopes.Network, net uint16) error {
 	r.log.Debug().Str("address", address).Stringer("vlan", vlan).Uint16("net", net).Msg("AddNetwork")
 
 	// convert the address to an Address
 	addr := Address(address)
 
 	// create a node, add to the network
-	node, err := bacnetip.NewNode(r.log, addr, bacnetip.WithNodeLan(vlan))
+	node, err := bacgopes.NewNode(r.log, addr, bacgopes.WithNodeLan(vlan))
 	if err != nil {
 		return errors.Wrap(err, "error creating node")
 	}
@@ -277,7 +277,7 @@ func NewRouterStateMachine(localLog zerolog.Logger) (*RouterStateMachine, error)
 	return r, nil
 }
 
-func (r *RouterStateMachine) Send(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (r *RouterStateMachine) Send(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	panic("not available")
 }
 
@@ -286,26 +286,26 @@ func (r *RouterStateMachine) String() string {
 }
 
 type TestDeviceObject struct {
-	*bacnetip.LocalDeviceObject
+	*bacgopes.LocalDeviceObject
 }
 
 type ApplicationLayerStateMachine struct {
-	bacnetip.ApplicationServiceElementContract
+	bacgopes.ApplicationServiceElementContract
 	*tests.ClientStateMachine
 
 	name    string
-	address *bacnetip.Address
+	address *bacgopes.Address
 
-	asap *bacnetip.ApplicationServiceAccessPoint
-	smap *bacnetip.StateMachineAccessPoint
-	nsap *bacnetip.NetworkServiceAccessPoint
+	asap *bacgopes.ApplicationServiceAccessPoint
+	smap *bacgopes.StateMachineAccessPoint
+	nsap *bacgopes.NetworkServiceAccessPoint
 	nse  *_NetworkServiceElement
-	node *bacnetip.Node
+	node *bacgopes.Node
 
 	log zerolog.Logger
 }
 
-func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vlan *bacnetip.Network) (*ApplicationLayerStateMachine, error) {
+func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vlan *bacgopes.Network) (*ApplicationLayerStateMachine, error) {
 	a := &ApplicationLayerStateMachine{
 		log: localLog,
 	}
@@ -316,7 +316,7 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vl
 
 	// build a local device object
 	localDevice := TestDeviceObject{
-		&bacnetip.LocalDeviceObject{
+		&bacgopes.LocalDeviceObject{
 			ObjectName:       a.name,
 			ObjectIdentifier: "device:" + address,
 			VendorIdentifier: 999,
@@ -327,7 +327,7 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vl
 
 	var err error
 	// continue with initialization
-	a.ApplicationServiceElementContract, err = bacnetip.NewApplicationServiceElement(a.log)
+	a.ApplicationServiceElementContract, err = bacgopes.NewApplicationServiceElement(a.log)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating application service")
 	}
@@ -337,7 +337,7 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vl
 	}
 
 	// include a application decoder
-	a.asap, err = bacnetip.NewApplicationServiceAccessPoint(a.log)
+	a.asap, err = bacgopes.NewApplicationServiceAccessPoint(a.log)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating application service access point")
 	}
@@ -346,13 +346,13 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vl
 	// can know if it should support segmentation
 	// the segmentation state machines need access to some device
 	// information cache, usually shared with the application
-	a.smap, err = bacnetip.NewStateMachineAccessPoint(a.log, localDevice.LocalDeviceObject, bacnetip.WithStateMachineAccessPointDeviceInfoCache(bacnetip.NewDeviceInfoCache(a.log))) // TODO: this is not quite right as we unwrap here
+	a.smap, err = bacgopes.NewStateMachineAccessPoint(a.log, localDevice.LocalDeviceObject, bacgopes.WithStateMachineAccessPointDeviceInfoCache(bacgopes.NewDeviceInfoCache(a.log))) // TODO: this is not quite right as we unwrap here
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating state machine access point")
 	}
 
 	//  a network service access point will be needed
-	a.nsap, err = bacnetip.NewNetworkServiceAccessPoint(a.log)
+	a.nsap, err = bacgopes.NewNetworkServiceAccessPoint(a.log)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service access point")
 	}
@@ -362,19 +362,19 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vl
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
-	err = bacnetip.Bind(a.log, a.nse, a.nsap)
+	err = bacgopes.Bind(a.log, a.nse, a.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	//  bind the top layers
-	err = bacnetip.Bind(a.log, a, a.asap, a.smap, a.nsap)
+	err = bacgopes.Bind(a.log, a, a.asap, a.smap, a.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	//  create a node, added to the network
-	a.node, err = bacnetip.NewNode(a.log, a.address, bacnetip.WithNodeLan(vlan))
+	a.node, err = bacgopes.NewNode(a.log, a.address, bacgopes.WithNodeLan(vlan))
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating node")
 	}
@@ -389,33 +389,33 @@ func NewApplicationLayerStateMachine(localLog zerolog.Logger, address string, vl
 	return a, nil
 }
 
-func (a *ApplicationLayerStateMachine) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (a *ApplicationLayerStateMachine) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	a.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
-	return a.Receive(args, bacnetip.NoKWArgs)
+	return a.Receive(args, bacgopes.NoKWArgs)
 }
 
-func (a *ApplicationLayerStateMachine) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (a *ApplicationLayerStateMachine) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	a.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Confirmation")
-	return a.Receive(args, bacnetip.NoKWArgs)
+	return a.Receive(args, bacgopes.NoKWArgs)
 }
 
 type ApplicationNode struct {
-	*bacnetip.Application
-	*bacnetip.WhoIsIAmServices
-	*bacnetip.ReadWritePropertyServices
+	*bacgopes.Application
+	*bacgopes.WhoIsIAmServices
+	*bacgopes.ReadWritePropertyServices
 
 	name    string
-	address *bacnetip.Address
-	asap    *bacnetip.ApplicationServiceAccessPoint
-	smap    *bacnetip.StateMachineAccessPoint
-	nsap    *bacnetip.NetworkServiceAccessPoint
+	address *bacgopes.Address
+	asap    *bacgopes.ApplicationServiceAccessPoint
+	smap    *bacgopes.StateMachineAccessPoint
+	nsap    *bacgopes.NetworkServiceAccessPoint
 	nse     *_NetworkServiceElement
-	node    *bacnetip.Node
+	node    *bacgopes.Node
 
 	log zerolog.Logger
 }
 
-func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacnetip.Network) (*ApplicationNode, error) {
+func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacgopes.Network) (*ApplicationNode, error) {
 	a := &ApplicationNode{
 		log: localLog,
 	}
@@ -426,7 +426,7 @@ func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacnetip.
 
 	// build a local device object
 	localDevice := &TestDeviceObject{
-		LocalDeviceObject: &bacnetip.LocalDeviceObject{
+		LocalDeviceObject: &bacgopes.LocalDeviceObject{
 			ObjectName:       a.name,
 			ObjectIdentifier: "device:999",
 			VendorIdentifier: 999,
@@ -435,13 +435,13 @@ func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacnetip.
 
 	var err error
 	// continue with initialization
-	a.Application, err = bacnetip.NewApplication(localLog, localDevice.LocalDeviceObject) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
+	a.Application, err = bacgopes.NewApplication(localLog, localDevice.LocalDeviceObject) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
 	if err != nil {
 		return nil, errors.Wrap(err, "error building application")
 	}
 
 	// include a application decoder
-	a.asap, err = bacnetip.NewApplicationServiceAccessPoint(localLog)
+	a.asap, err = bacgopes.NewApplicationServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error building application service access point")
 	}
@@ -450,13 +450,13 @@ func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacnetip.
 	// can know if it should support segmentation
 	// the segmentation state machines need access to the same device
 	// information cache as the application
-	a.smap, err = bacnetip.NewStateMachineAccessPoint(localLog, localDevice.LocalDeviceObject, bacnetip.WithStateMachineAccessPointDeviceInfoCache(a.GetDeviceInfoCache())) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
+	a.smap, err = bacgopes.NewStateMachineAccessPoint(localLog, localDevice.LocalDeviceObject, bacgopes.WithStateMachineAccessPointDeviceInfoCache(a.GetDeviceInfoCache())) //TODO: this is a indirection that wasn't intended... we don't use the annotation yet so that might be fine
 	if err != nil {
 		return nil, errors.Wrap(err, "error building state machine access point")
 	}
 
 	// a network service access point will be needed
-	a.nsap, err = bacnetip.NewNetworkServiceAccessPoint(localLog)
+	a.nsap, err = bacgopes.NewNetworkServiceAccessPoint(localLog)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service access point")
 	}
@@ -466,19 +466,19 @@ func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacnetip.
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating network service element")
 	}
-	err = bacnetip.Bind(localLog, a.nse, a.nsap)
+	err = bacgopes.Bind(localLog, a.nse, a.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	// bind the top layers
-	err = bacnetip.Bind(localLog, a, a.asap, a.smap, a.nsap)
+	err = bacgopes.Bind(localLog, a, a.asap, a.smap, a.nsap)
 	if err != nil {
 		return nil, errors.Wrap(err, "error binding")
 	}
 
 	// create a node, added to the network
-	a.node, err = bacnetip.NewNode(a.log, a.address, bacnetip.WithNodeLan(vlan))
+	a.node, err = bacgopes.NewNode(a.log, a.address, bacgopes.WithNodeLan(vlan))
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating node")
 	}
@@ -493,7 +493,7 @@ func NewApplicationNode(localLog zerolog.Logger, address string, vlan *bacnetip.
 }
 
 func xtob(s string) []byte {
-	bytes, err := bacnetip.Xtob(s)
+	bytes, err := bacgopes.Xtob(s)
 	if err != nil {
 		panic(err)
 	}
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_1_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go
similarity index 98%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_1_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go
index 69cc6c1533..eb22f981a7 100644
--- a/plc4go/internal/bacnetip/tests/test_network/test_net_1_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_1_test.go
@@ -27,10 +27,9 @@ import (
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TNetwork1 struct {
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_2_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go
similarity index 98%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_2_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go
index 81fc4e860a..d2ea531d13 100644
--- a/plc4go/internal/bacnetip/tests/test_network/test_net_2_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_2_test.go
@@ -27,10 +27,9 @@ import (
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TNetwork2 struct {
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_3_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go
similarity index 98%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_3_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go
index 0561060eac..a62efd5a1b 100644
--- a/plc4go/internal/bacnetip/tests/test_network/test_net_3_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_3_test.go
@@ -27,10 +27,9 @@ import (
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TNetwork3 struct {
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_4_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_4_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_4_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_4_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_5_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_5_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_5_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_5_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_6_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_6_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_6_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_6_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_network/test_net_7_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_7_test.go
similarity index 100%
rename from plc4go/internal/bacnetip/tests/test_network/test_net_7_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_network/test_net_7_test.go
diff --git a/plc4go/internal/bacnetip/tests/test_npdu/helpers.go b/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go
similarity index 78%
rename from plc4go/internal/bacnetip/tests/test_npdu/helpers.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go
index ca175adeb5..c36c232142 100644
--- a/plc4go/internal/bacnetip/tests/test_npdu/helpers.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/helpers.go
@@ -23,12 +23,12 @@ import (
 	"github.com/pkg/errors"
 	"github.com/rs/zerolog"
 
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
 )
 
 type NPDUCodec struct {
-	bacnetip.Client
-	bacnetip.Server
+	bacgopes.Client
+	bacgopes.Server
 
 	log zerolog.Logger
 }
@@ -38,24 +38,24 @@ func NewNPDUCodec(localLog zerolog.Logger) (*NPDUCodec, error) {
 		log: localLog,
 	}
 	var err error
-	n.Client, err = bacnetip.NewClient(localLog, n)
+	n.Client, err = bacgopes.NewClient(localLog, n)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating client")
 	}
-	n.Server, err = bacnetip.NewServer(localLog, n)
+	n.Server, err = bacgopes.NewServer(localLog, n)
 	if err != nil {
 		return nil, errors.Wrap(err, "error creating client")
 	}
 	return n, nil
 }
 
-func (n *NPDUCodec) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (n *NPDUCodec) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	n.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	npdu := args.Get0NPDU()
 
 	// first a generic _NPDU
-	xpdu, err := bacnetip.NewNPDU(nil, nil)
+	xpdu, err := bacgopes.NewNPDU(nil, nil)
 	if err != nil {
 		return errors.Wrap(err, "error creating NPDU")
 	}
@@ -64,23 +64,23 @@ func (n *NPDUCodec) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error
 	}
 
 	// Now as a vanilla PDU
-	ypdu := bacnetip.NewPDU(nil)
+	ypdu := bacgopes.NewPDU(nil)
 	if err := xpdu.Encode(ypdu); err != nil {
 		return errors.Wrap(err, "error decoding xpdu")
 	}
 	n.log.Debug().Stringer("ypdu", ypdu).Msg("encoded")
 
 	// send it downstream
-	return n.Request(bacnetip.NewArgs(ypdu), bacnetip.NoKWArgs)
+	return n.Request(bacgopes.NewArgs(ypdu), bacgopes.NoKWArgs)
 }
 
-func (n *NPDUCodec) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (n *NPDUCodec) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	n.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	pdu := args.Get0PDU()
 
 	// decode as generic _NPDU
-	xpdu, err := bacnetip.NewNPDU(nil, nil)
+	xpdu, err := bacgopes.NewNPDU(nil, nil)
 	if err != nil {
 		return errors.Wrap(err, "error creating NPDU")
 	}
@@ -95,12 +95,12 @@ func (n *NPDUCodec) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) err
 	}
 
 	// do a deeper decode of the _NPDU
-	ypdu := bacnetip.NPDUTypes[*xpdu.GetNPDUNetMessage()]()
+	ypdu := bacgopes.NPDUTypes[*xpdu.GetNPDUNetMessage()]()
 	if err := ypdu.Decode(xpdu); err != nil {
 		return errors.Wrap(err, "error decoding ypdu")
 	}
 
-	return n.Response(bacnetip.NewArgs(ypdu), bacnetip.NoKWArgs)
+	return n.Response(bacgopes.NewArgs(ypdu), bacgopes.NoKWArgs)
 }
 
 func (n *NPDUCodec) String() string {
diff --git a/plc4go/internal/bacnetip/tests/test_npdu/test_codec_test.go b/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/test_codec_test.go
similarity index 60%
rename from plc4go/internal/bacnetip/tests/test_npdu/test_codec_test.go
rename to plc4go/internal/bacnetip/bacgopes/tests/test_npdu/test_codec_test.go
index d4b4307817..d180fbec7a 100644
--- a/plc4go/internal/bacnetip/tests/test_npdu/test_codec_test.go
+++ b/plc4go/internal/bacnetip/bacgopes/tests/test_npdu/test_codec_test.go
@@ -25,12 +25,11 @@ import (
 	"github.com/rs/zerolog"
 	"github.com/stretchr/testify/suite"
 
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes"
+	. "github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/constructors"
+	"github.com/apache/plc4x/plc4go/internal/bacnetip/bacgopes/tests"
 	readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 	"github.com/apache/plc4x/plc4go/spi/testutils"
-
-	"github.com/apache/plc4x/plc4go/internal/bacnetip"
-	. "github.com/apache/plc4x/plc4go/internal/bacnetip/constructors"
-	"github.com/apache/plc4x/plc4go/internal/bacnetip/tests"
 )
 
 type TestNPDUCodecSuite struct {
@@ -52,19 +51,19 @@ func (suite *TestNPDUCodecSuite) SetupTest() {
 	suite.Require().NoError(err)
 	suite.server, err = tests.NewTrappedServer(suite.log)
 	suite.Require().NoError(err)
-	err = bacnetip.Bind(suite.log, suite.client, suite.codec, suite.server)
+	err = bacgopes.Bind(suite.log, suite.client, suite.codec, suite.server)
 	suite.Require().NoError(err)
 }
 
 // Pass the PDU to the client to send down the stack.
-func (suite *TestNPDUCodecSuite) Request(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestNPDUCodecSuite) Request(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Request")
 
 	return suite.client.Request(args, kwargs)
 }
 
 // Check what the server received.
-func (suite *TestNPDUCodecSuite) Indication(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestNPDUCodecSuite) Indication(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Indication")
 
 	var pduType any
@@ -77,14 +76,14 @@ func (suite *TestNPDUCodecSuite) Indication(args bacnetip.Args, kwargs bacnetip.
 }
 
 // Check what the server received.
-func (suite *TestNPDUCodecSuite) Response(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestNPDUCodecSuite) Response(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Response")
 
 	return suite.server.Response(args, kwargs)
 }
 
 // Check what the server received.
-func (suite *TestNPDUCodecSuite) Confirmation(args bacnetip.Args, kwargs bacnetip.KWArgs) error {
+func (suite *TestNPDUCodecSuite) Confirmation(args bacgopes.Args, kwargs bacgopes.KWArgs) error {
 	suite.log.Debug().Stringer("Args", args).Stringer("KWArgs", kwargs).Msg("Confirmation")
 
 	pduType := args[0].(any)
@@ -95,7 +94,7 @@ func (suite *TestNPDUCodecSuite) Confirmation(args bacnetip.Args, kwargs bacneti
 
 func (suite *TestNPDUCodecSuite) TestWhoIsRouterToNetwork() { // Test the Result encoding and decoding.
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"00 0001", // message type and network
 	)
@@ -108,20 +107,20 @@ func (suite *TestNPDUCodecSuite) TestWhoIsRouterToNetwork() { // Test the Result
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(WhoIsRouterToNetwork(1)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(WhoIsRouterToNetwork(1)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.WhoIsRouterToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWWirtnNetwork, uint16(1)))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.WhoIsRouterToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWWirtnNetwork, uint16(1)))
 }
 
 func (suite *TestNPDUCodecSuite) TestIAMRouterToNetworkEmpty() { // Test the Result encoding and decoding.
 	// Request successful
 	networkList := []uint16{}
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"01", // message type, no network
 	)
@@ -134,20 +133,20 @@ func (suite *TestNPDUCodecSuite) TestIAMRouterToNetworkEmpty() { // Test the Res
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(IAmRouterToNetwork(networkList...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(IAmRouterToNetwork(networkList...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.IAmRouterToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWIartnNetworkList, networkList))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.IAmRouterToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWIartnNetworkList, networkList))
 }
 
 func (suite *TestNPDUCodecSuite) TestIAMRouterToNetworks() { // Test the Result encoding and decoding.
 	// Request successful
 	networkList := []uint16{1, 2, 3}
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"01 0001 0002 0003", // message type and network list
 	)
@@ -160,19 +159,19 @@ func (suite *TestNPDUCodecSuite) TestIAMRouterToNetworks() { // Test the Result
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(IAmRouterToNetwork(networkList...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(IAmRouterToNetwork(networkList...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.IAmRouterToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWIartnNetworkList, networkList))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.IAmRouterToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWIartnNetworkList, networkList))
 }
 
 func (suite *TestNPDUCodecSuite) TestICouldBeRouterToNetworks() { // Test the Result encoding and decoding.
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"02 0001 02", // message type, network, performance
 	)
@@ -185,19 +184,19 @@ func (suite *TestNPDUCodecSuite) TestICouldBeRouterToNetworks() { // Test the Re
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(ICouldBeRouterToNetwork(1, 2)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(ICouldBeRouterToNetwork(1, 2)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.ICouldBeRouterToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWIcbrtnNetwork, uint16(1), bacnetip.KWIcbrtnPerformanceIndex, uint8(2)))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.ICouldBeRouterToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWIcbrtnNetwork, uint16(1), bacgopes.KWIcbrtnPerformanceIndex, uint8(2)))
 }
 
 func (suite *TestNPDUCodecSuite) TestRejectMessageToNetwork() { // Test the Result encoding and decoding.
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"03 01 0002", // message type, reason, performance
 	)
@@ -210,20 +209,20 @@ func (suite *TestNPDUCodecSuite) TestRejectMessageToNetwork() { // Test the Resu
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(RejectMessageToNetwork(1, 2)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(RejectMessageToNetwork(1, 2)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.RejectMessageToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWRmtnRejectionReason, readWriteModel.NLMRejectMessageToNetworkRejectReason(1), bacnetip.KWRmtnDNET, uint16(2)))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.RejectMessageToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWRmtnRejectionReason, readWriteModel.NLMRejectMessageToNetworkRejectReason(1), bacgopes.KWRmtnDNET, uint16(2)))
 }
 
 func (suite *TestNPDUCodecSuite) TestRouterBusyToNetworkEmpty() { // Test the Result encoding and decoding.
 	// Request successful
 	networkList := []uint16{}
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"04", // message type, no networks
 	)
@@ -236,20 +235,20 @@ func (suite *TestNPDUCodecSuite) TestRouterBusyToNetworkEmpty() { // Test the Re
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(RouterBusyToNetwork(networkList...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(RouterBusyToNetwork(networkList...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.RouterBusyToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWRbtnNetworkList, networkList))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.RouterBusyToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWRbtnNetworkList, networkList))
 }
 
 func (suite *TestNPDUCodecSuite) TestRouterBusyToNetworkNetworks() { // Test the Result encoding and decoding.
 	// Request successful
 	networkList := []uint16{1, 2, 3}
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"04 0001 0002 0003", // message type and network list
 	)
@@ -262,20 +261,20 @@ func (suite *TestNPDUCodecSuite) TestRouterBusyToNetworkNetworks() { // Test the
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(RouterBusyToNetwork(networkList...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(RouterBusyToNetwork(networkList...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.RouterBusyToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWRbtnNetworkList, networkList))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.RouterBusyToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWRbtnNetworkList, networkList))
 }
 
 func (suite *TestNPDUCodecSuite) TestRouterAvailableToNetworkEmpty() { // Test the Result encoding and decoding.
 	// Request successful
 	networkList := []uint16{}
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"05", // message type, no networks
 	)
@@ -288,20 +287,20 @@ func (suite *TestNPDUCodecSuite) TestRouterAvailableToNetworkEmpty() { // Test t
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(RouterAvailableToNetwork(networkList...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(RouterAvailableToNetwork(networkList...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.RouterAvailableToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWRatnNetworkList, networkList))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.RouterAvailableToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWRatnNetworkList, networkList))
 }
 
 func (suite *TestNPDUCodecSuite) TestRouterAvailableToNetworkNetworks() { // Test the Result encoding and decoding.
 	// Request successful
 	networkList := []uint16{1, 2, 3}
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"05 0001 0002 0003", // message type and network list
 	)
@@ -314,19 +313,19 @@ func (suite *TestNPDUCodecSuite) TestRouterAvailableToNetworkNetworks() { // Tes
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(RouterAvailableToNetwork(networkList...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(RouterAvailableToNetwork(networkList...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.RouterAvailableToNetwork{}), bacnetip.NewKWArgs(bacnetip.KWRatnNetworkList, networkList))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.RouterAvailableToNetwork{}), bacgopes.NewKWArgs(bacgopes.KWRatnNetworkList, networkList))
 }
 
 func (suite *TestNPDUCodecSuite) TestInitializeRoutingTableEmpty() { // Test the Result encoding and decoding.
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"06 00", // message type and list length
 	)
@@ -339,25 +338,25 @@ func (suite *TestNPDUCodecSuite) TestInitializeRoutingTableEmpty() { // Test the
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(InitializeRoutingTable()), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(InitializeRoutingTable()), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.InitializeRoutingTable{}), bacnetip.NewKWArgs(bacnetip.KWIrtTable, []*bacnetip.RoutingTableEntry{}))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.InitializeRoutingTable{}), bacgopes.NewKWArgs(bacgopes.KWIrtTable, []*bacgopes.RoutingTableEntry{}))
 }
 
 func (suite *TestNPDUCodecSuite) TestInitializeRoutingTable01() { // Test the Result encoding and decoding.
 	// Request successful
-	xtob, err := bacnetip.Xtob("")
+	xtob, err := bacgopes.Xtob("")
 	suite.Require().NoError(err)
 	rte := RoutingTableEntry(1, 2, xtob)
-	rtEntries := []*bacnetip.RoutingTableEntry{rte}
+	rtEntries := []*bacgopes.RoutingTableEntry{rte}
 
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"06 01" + // message type and list length
 			"0001 02 00", // network, port number, port info
@@ -371,25 +370,25 @@ func (suite *TestNPDUCodecSuite) TestInitializeRoutingTable01() { // Test the Re
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(InitializeRoutingTable(rtEntries...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(InitializeRoutingTable(rtEntries...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.InitializeRoutingTable{}), bacnetip.NewKWArgs(bacnetip.KWIrtTable, rtEntries))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.InitializeRoutingTable{}), bacgopes.NewKWArgs(bacgopes.KWIrtTable, rtEntries))
 }
 
 func (suite *TestNPDUCodecSuite) TestInitializeRoutingTable02() { // Test the Result encoding and decoding.
 	// Request successful
-	xtob, err := bacnetip.Xtob("deadbeef")
+	xtob, err := bacgopes.Xtob("deadbeef")
 	suite.Require().NoError(err)
 	rte := RoutingTableEntry(3, 4, xtob)
-	rtEntries := []*bacnetip.RoutingTableEntry{rte}
+	rtEntries := []*bacgopes.RoutingTableEntry{rte}
 
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"06 01" + // message type and list length
 			"0003 04 04 DEADBEEF", // network, port number, port info
@@ -403,25 +402,25 @@ func (suite *TestNPDUCodecSuite) TestInitializeRoutingTable02() { // Test the Re
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(InitializeRoutingTable(rtEntries...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(InitializeRoutingTable(rtEntries...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
+	err = suite.Indication(bacgopes.NoArgs, bacgopes.NewKWArgs(bacgopes.KWPDUData, pduBytes))
 	suite.Assert().NoError(err)
 
-	err = suite.Response(bacnetip.NewArgs(bacnetip.NewPDU(bacnetip.NewMessageBridge(pduBytes...))), bacnetip.NoKWArgs)
+	err = suite.Response(bacgopes.NewArgs(bacgopes.NewPDU(bacgopes.NewMessageBridge(pduBytes...))), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Confirmation(bacnetip.NewArgs(&bacnetip.InitializeRoutingTable{}), bacnetip.NewKWArgs(bacnetip.KWIrtTable, rtEntries))
+	err = suite.Confirmation(bacgopes.NewArgs(&bacgopes.InitializeRoutingTable{}), bacgopes.NewKWArgs(bacgopes.KWIrtTable, rtEntries))
 }
 
 func (suite *TestNPDUCodecSuite) TestInitializeRoutingTableAck01() { // Test the Result encoding and decoding.
 	// Request successful
-	xtob, err := bacnetip.Xtob("")
+	xtob, err := bacgopes.Xtob("")
 	suite.Require().NoError(err)
 	rte := RoutingTableEntry(1, 2, xtob)
-	rtEntries := []*bacnetip.RoutingTableEntry{rte}
+	rtEntries := []*bacgopes.RoutingTableEntry{rte}
 
 	// Request successful
-	pduBytes, err := bacnetip.Xtob(
+	pduBytes, err := bacgopes.Xtob(
 		"01.80" + // version, network layer message
 			"07 01" + // message type and list length
 			"0001 02 00", // network, port number, port info
@@ -435,25 +434,25 @@ func (suite *TestNPDUCodecSuite) TestInitializeRoutingTableAck01() { // Test the
 		}
 	}
 
-	err = suite.Request(bacnetip.NewArgs(InitializeRoutingTableAck(rtEntries...)), bacnetip.NoKWArgs)
+	err = suite.Request(bacgopes.NewArgs(InitializeRoutingTableAck(rtEntries...)), bacgopes.NoKWArgs)
 	suite.Assert().NoError(err)
-	err = suite.Indication(bacnetip.NoArgs, bacnetip.NewKWArgs(bacnetip.KWPDUData, pduBytes))
... 38509 lines suppressed ...


(plc4x) 01/06: feat(plc4go/bacnetip): add wait groups to ensure async shutdowns

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 3e0171b7a31cec5c5dc649532f155e52ac107a4c
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Sep 3 21:07:59 2024 +0200

    feat(plc4go/bacnetip): add wait groups to ensure async shutdowns
---
 .../internal/bacnetip/app_ApplicationIOController.go | 20 +++++++++++++++-----
 .../internal/bacnetip/app_BIPForeignApplication.go   |  6 ++++++
 plc4go/internal/bacnetip/app_BIPSimpleApplication.go |  6 ++++++
 plc4go/internal/bacnetip/iocb_IOCB.go                | 14 ++++++++++++++
 plc4go/internal/bacnetip/iocb_IOQController.go       |  7 +++++++
 plc4go/internal/bacnetip/iocb_IOQueue.go             | 14 ++++++++++++++
 .../internal/bacnetip/tests/test_service/helpers.go  | 10 ++++++++++
 .../bacnetip/tests/test_service/test_cov_test.go     |  3 +++
 plc4go/internal/bacnetip/udp_UDPDirector.go          | 15 +++++++++++++++
 9 files changed, 90 insertions(+), 5 deletions(-)

diff --git a/plc4go/internal/bacnetip/app_ApplicationIOController.go b/plc4go/internal/bacnetip/app_ApplicationIOController.go
index 785e4a24f3..8b0ea299c0 100644
--- a/plc4go/internal/bacnetip/app_ApplicationIOController.go
+++ b/plc4go/internal/bacnetip/app_ApplicationIOController.go
@@ -30,7 +30,7 @@ type ApplicationIOController struct {
 	*IOController
 	*Application
 
-	queueByAddress map[string]SieveQueue
+	queueByAddress map[string]*SieveQueue
 
 	// pass through args
 	argDeviceInfoCache *DeviceInfoCache
@@ -42,7 +42,7 @@ type ApplicationIOController struct {
 func NewApplicationIOController(localLog zerolog.Logger, localDevice *LocalDeviceObject, opts ...func(controller *ApplicationIOController)) (*ApplicationIOController, error) {
 	a := &ApplicationIOController{
 		// queues for each address
-		queueByAddress: make(map[string]SieveQueue),
+		queueByAddress: make(map[string]*SieveQueue),
 		log:            localLog,
 	}
 	for _, opt := range opts {
@@ -86,10 +86,10 @@ func (a *ApplicationIOController) ProcessIO(iocb _IOCB) error {
 	queue, ok := a.queueByAddress[destinationAddress.String()]
 	if !ok {
 		newQueue, _ := NewSieveQueue(a.log, a._AppRequest, destinationAddress)
-		queue = *newQueue
+		queue = newQueue
 		a.queueByAddress[destinationAddress.String()] = queue
 	}
-	a.log.Debug().Stringer("queue", &queue).Msg("working with queue")
+	a.log.Debug().Stringer("queue", queue).Msg("working with queue")
 
 	// ask the queue to process the request
 	return queue.RequestIO(iocb)
@@ -107,7 +107,7 @@ func (a *ApplicationIOController) _AppComplete(address *Address, apdu PDU) error
 		a.log.Debug().Stringer("address", address).Msg("no queue for")
 		return nil
 	}
-	a.log.Debug().Stringer("queue", &queue).Msg("working with queue")
+	a.log.Debug().Stringer("queue", queue).Msg("working with queue")
 
 	// make sure it has an active iocb
 	if queue.activeIOCB == nil {
@@ -175,3 +175,13 @@ func (a *ApplicationIOController) Confirmation(args Args, kwargs KWArgs) error {
 	// this is an ack, error, reject or abort
 	return a._AppComplete(apdu.GetPDUSource(), apdu)
 }
+
+func (a *ApplicationIOController) Close() error {
+	for addr, queue := range a.queueByAddress {
+		a.log.Debug().Str("addr", addr).Msg("Closing")
+		if err := queue.Close(); err != nil {
+			a.log.Warn().Str("addr", addr).Err(err).Stringer("queue", queue).Msg("error closing")
+		}
+	}
+	return nil
+}
diff --git a/plc4go/internal/bacnetip/app_BIPForeignApplication.go b/plc4go/internal/bacnetip/app_BIPForeignApplication.go
index daba87c177..eb8111e992 100644
--- a/plc4go/internal/bacnetip/app_BIPForeignApplication.go
+++ b/plc4go/internal/bacnetip/app_BIPForeignApplication.go
@@ -125,6 +125,12 @@ func NewBIPForeignApplication(localLog zerolog.Logger, localDevice *LocalDeviceO
 func (b *BIPForeignApplication) Close() error {
 	b.log.Debug().Msg("close socket")
 
+	if b.ApplicationIOController != nil {
+		if err := b.ApplicationIOController.Close(); err != nil {
+			b.log.Warn().Err(err).Msg("error closing applicationIOController")
+		}
+	}
+
 	// pass to the multiplexer, then down to the sockets
 	return b.mux.Close()
 }
diff --git a/plc4go/internal/bacnetip/app_BIPSimpleApplication.go b/plc4go/internal/bacnetip/app_BIPSimpleApplication.go
index 24287eb01c..37722db18c 100644
--- a/plc4go/internal/bacnetip/app_BIPSimpleApplication.go
+++ b/plc4go/internal/bacnetip/app_BIPSimpleApplication.go
@@ -126,6 +126,12 @@ func NewBIPSimpleApplication(localLog zerolog.Logger, localDevice *LocalDeviceOb
 func (b *BIPSimpleApplication) Close() error {
 	b.log.Debug().Msg("close socket")
 
+	if b.ApplicationIOController != nil {
+		if err := b.ApplicationIOController.Close(); err != nil {
+			b.log.Warn().Err(err).Msg("error closing applicationIOController")
+		}
+	}
+
 	// pass to the multiplexer, then down to the sockets
 	return b.mux.Close()
 }
diff --git a/plc4go/internal/bacnetip/iocb_IOCB.go b/plc4go/internal/bacnetip/iocb_IOCB.go
index 0bd45de4bd..f97c9e2e85 100644
--- a/plc4go/internal/bacnetip/iocb_IOCB.go
+++ b/plc4go/internal/bacnetip/iocb_IOCB.go
@@ -91,6 +91,8 @@ type IOCB struct {
 	ioTimoutCancel chan any
 	priority       int
 
+	wg sync.WaitGroup
+
 	log zerolog.Logger `ignore:"true"`
 }
 
@@ -236,7 +238,9 @@ func (i *IOCB) SetTimeout(delay time.Duration) {
 		now := GetTaskManagerTime()
 		i.ioTimeout = time.NewTimer(delay)
 		i.ioTimoutCancel = make(chan any)
+		i.wg.Add(1)
 		go func() {
+			defer i.wg.Done()
 			select {
 			case timeout := <-i.ioTimeout.C:
 				_ = i.Abort(utils.NewTimeoutError(now.Sub(timeout)))
@@ -281,3 +285,13 @@ func (i *IOCB) getPriority() int {
 func (i *IOCB) clearQueue() {
 	i.ioQueue = nil
 }
+
+func (i *IOCB) Close() error { // TODO: ensure this is getting called
+	i.log.Debug().Msg("IOCB closing")
+	defer func() {
+		i.log.Debug().Msg("waiting for running tasks to finnish")
+		i.wg.Wait()
+		i.log.Debug().Msg("waiting done")
+	}()
+	return nil
+}
diff --git a/plc4go/internal/bacnetip/iocb_IOQController.go b/plc4go/internal/bacnetip/iocb_IOQController.go
index 06bd3e80f9..ff63bc09a8 100644
--- a/plc4go/internal/bacnetip/iocb_IOQController.go
+++ b/plc4go/internal/bacnetip/iocb_IOQController.go
@@ -278,3 +278,10 @@ func (i *IOQController) _waitTrigger(_ Args, _ KWArgs) error {
 	// look for more to do
 	return i._trigger(NoArgs, NoKWArgs)
 }
+
+func (i *IOQController) Close() error {
+	if i.ioQueue != nil {
+		return i.ioQueue.Close()
+	}
+	return nil
+}
diff --git a/plc4go/internal/bacnetip/iocb_IOQueue.go b/plc4go/internal/bacnetip/iocb_IOQueue.go
index b265778cfa..e779221cde 100644
--- a/plc4go/internal/bacnetip/iocb_IOQueue.go
+++ b/plc4go/internal/bacnetip/iocb_IOQueue.go
@@ -36,6 +36,8 @@ type IOQueue struct {
 	notEmpty sync.Cond
 	queue    PriorityQueue[int, _IOCB]
 
+	wg sync.WaitGroup
+
 	log zerolog.Logger `ignore:"true"`
 }
 
@@ -84,7 +86,9 @@ func (i *IOQueue) Get(block bool, delay *time.Duration) (_IOCB, error) {
 	if len(i.queue) == 0 {
 		if delay != nil {
 			gotSomething := make(chan any)
+			i.wg.Add(1)
 			go func() {
+				defer i.wg.Done()
 				i.notEmpty.Wait()
 				close(gotSomething)
 			}()
@@ -143,3 +147,13 @@ func (i *IOQueue) Abort(err error) {
 	// the queue is now empty, clear the event
 	i.notEmpty.Broadcast()
 }
+
+func (i *IOQueue) Close() error {
+	i.log.Debug().Msg("IOQueue closing")
+	defer func() {
+		i.log.Debug().Msg("waiting for running tasks to finnish")
+		i.wg.Wait()
+		i.log.Debug().Msg("waiting done")
+	}()
+	return nil
+}
diff --git a/plc4go/internal/bacnetip/tests/test_service/helpers.go b/plc4go/internal/bacnetip/tests/test_service/helpers.go
index 16783492d6..3120d78067 100644
--- a/plc4go/internal/bacnetip/tests/test_service/helpers.go
+++ b/plc4go/internal/bacnetip/tests/test_service/helpers.go
@@ -157,6 +157,16 @@ func (a *ApplicationNetwork) _debug(format string, args bacnetip.Args) {
 	a.log.Debug().Msgf(format, args)
 }
 
+func (a *ApplicationNetwork) Close() error {
+	if err := a.td.Close(); err != nil {
+		a.log.Warn().Err(err).Msg("error closing td")
+	}
+	if err := a.iut.Close(); err != nil {
+		a.log.Warn().Err(err).Msg("error closing iut")
+	}
+	return nil
+}
+
 type SnifferNode struct {
 	bacnetip.Client
 
diff --git a/plc4go/internal/bacnetip/tests/test_service/test_cov_test.go b/plc4go/internal/bacnetip/tests/test_service/test_cov_test.go
index 119d970c7a..d9887beee2 100644
--- a/plc4go/internal/bacnetip/tests/test_service/test_cov_test.go
+++ b/plc4go/internal/bacnetip/tests/test_service/test_cov_test.go
@@ -39,6 +39,9 @@ func TestBasic(t *testing.T) {
 	// create a network
 	anet, err := NewApplicationNetwork(testingLogger)
 	require.NoError(t, err)
+	t.Cleanup(func() {
+		require.NoError(t, anet.Close())
+	})
 
 	// add the service capability
 	anet.iut.AddCapability(new(service.ChangeOfValuesServices))
diff --git a/plc4go/internal/bacnetip/udp_UDPDirector.go b/plc4go/internal/bacnetip/udp_UDPDirector.go
index e2adfd501f..6b39922d07 100644
--- a/plc4go/internal/bacnetip/udp_UDPDirector.go
+++ b/plc4go/internal/bacnetip/udp_UDPDirector.go
@@ -23,6 +23,7 @@ import (
 	"context"
 	"fmt"
 	"net"
+	"sync"
 
 	"github.com/libp2p/go-reuseport"
 	"github.com/pkg/errors"
@@ -46,6 +47,8 @@ type UDPDirector struct {
 	peers      map[string]*UDPActor
 	running    bool
 
+	wg sync.WaitGroup
+
 	passLogToModel bool
 	log            zerolog.Logger
 }
@@ -99,7 +102,9 @@ func NewUDPDirector(localLog zerolog.Logger, address AddressTuple[string, uint16
 	}
 
 	d.running = true
+	d.wg.Add(1)
 	go func() {
+		defer d.wg.Done()
 		for d.running {
 			d.handleRead()
 		}
@@ -107,7 +112,9 @@ func NewUDPDirector(localLog zerolog.Logger, address AddressTuple[string, uint16
 
 	// create the request queue
 	d.request = make(chan PDU)
+	d.wg.Add(1)
 	go func() {
+		defer d.wg.Done()
 		for d.running {
 			pdu := <-d.request
 			serialize, err := pdu.GetRootMessage().Serialize()
@@ -184,6 +191,12 @@ func (d *UDPDirector) ActorError(actor *UDPActor, err error) {
 }
 
 func (d *UDPDirector) Close() error {
+	d.log.Debug().Msg("UDPDirector closing")
+	defer func() {
+		d.log.Debug().Msg("waiting for running tasks to finnish")
+		d.wg.Wait()
+		d.log.Debug().Msg("waiting done")
+	}()
 	d.running = false
 	return d.udpConn.Close()
 }
@@ -222,7 +235,9 @@ func (d *UDPDirector) handleRead() {
 	}
 	pdu := NewPDU(bvlc, WithPDUSource(saddr), WithPDUDestination(daddr))
 	// send the _PDU up to the client
+	d.wg.Add(1)
 	go func() {
+		defer d.wg.Done()
 		if err := d._response(pdu); err != nil {
 			d.log.Debug().Err(err).Msg("errored")
 		}


(plc4x) 03/06: feat(plc4go/plx4xgenerator): add support for empty elements

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit f98d0a7ddda74586608b55b6ae735e25849cdc31
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Sep 4 12:19:32 2024 +0200

    feat(plc4go/plx4xgenerator): add support for empty elements
---
 plc4go/tools/plc4xgenerator/gen.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index e0727cfd7b..f113ef788e 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -204,7 +204,7 @@ func (g *Generator) generate(typeName string) {
 		}
 	}
 	if len(fields) == 0 {
-		log.Fatalf("no fields defined for type %s", typeName)
+		log.Printf("no fields defined for type %s", typeName)
 	}
 	// TODO: for now we remove Default from the start (maybe move that to an option)
 	logicalTypeName := "\"" + strings.TrimPrefix(typeName, "Default") + "\""


(plc4x) 02/06: feat(plc4go/plx4xgenerator): add support for pointer types serializable

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 3604991e16ad0876ac14fcd2ce52ee483afa07c1
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Sep 4 12:18:56 2024 +0200

    feat(plc4go/plx4xgenerator): add support for pointer types serializable
---
 plc4go/tools/plc4xgenerator/gen.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index 5c491c548c..e0727cfd7b 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -627,7 +627,7 @@ func (d *%s) String() string {
 
 var serializableFieldTemplate = `
 	if %[1]s != nil {
-		if serializableField, ok := %[1]s.(utils.Serializable); ok {
+		if serializableField, ok := any(%[1]s).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext(%[2]s); err != nil {
 				return err
 			}


(plc4x) 04/06: feat(plc4go/plx4xgenerator): add support for non pointer/non interface elements

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 2666383804e3efef26c864aa01320d244fe93b08
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Sep 4 12:23:29 2024 +0200

    feat(plc4go/plx4xgenerator): add support for non pointer/non interface elements
---
 .../ads/model/AdsSubscriptionHandle_plc4xgen.go    | 12 +++++------
 plc4go/internal/cbus/Connection_plc4xgen.go        | 12 +++++------
 plc4go/internal/cbus/MessageCodec_plc4xgen.go      |  8 ++++----
 plc4go/internal/knxnetip/Subscriber_plc4xgen.go    |  4 ++--
 plc4go/internal/opcua/Configuration_plc4xgen.go    |  4 ++--
 plc4go/internal/opcua/Connection_plc4xgen.go       |  8 ++++----
 plc4go/internal/opcua/SecureChannel_plc4xgen.go    | 24 +++++++++++-----------
 plc4go/spi/default/defaultCodec_plc4xgen.go        |  8 ++++----
 plc4go/spi/default/defaultConnection_plc4xgen.go   |  8 ++++----
 .../defaultPlcConnectionCloseResult_plc4xgen.go    |  8 ++++----
 .../defaultPlcConnectionConnectResult_plc4xgen.go  |  4 ++--
 .../interceptedPlcReadRequestResult_plc4xgen.go    |  8 ++++----
 .../interceptedPlcWriteRequestResult_plc4xgen.go   |  8 ++++----
 plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go  |  4 ++--
 .../DefaultPlcBrowseRequestResult_plc4xgen.go      |  8 ++++----
 .../spi/model/DefaultPlcBrowseRequest_plc4xgen.go  |  4 ++--
 .../model/DefaultPlcBrowseResponseItem_plc4xgen.go |  4 ++--
 .../spi/model/DefaultPlcBrowseResponse_plc4xgen.go |  4 ++--
 .../DefaultPlcConsumerRegistration_plc4xgen.go     |  4 ++--
 .../model/DefaultPlcReadRequestResult_plc4xgen.go  |  8 ++++----
 .../spi/model/DefaultPlcReadResponse_plc4xgen.go   |  4 ++--
 .../DefaultPlcSubscriptionEventItem_plc4xgen.go    |  8 ++++----
 ...DefaultPlcSubscriptionRequestResult_plc4xgen.go |  8 ++++----
 .../DefaultPlcSubscriptionRequest_plc4xgen.go      |  4 ++--
 .../DefaultPlcSubscriptionResponseItem_plc4xgen.go |  4 ++--
 .../DefaultPlcSubscriptionResponse_plc4xgen.go     |  4 ++--
 ...aultPlcUnsubscriptionRequestBuilder_plc4xgen.go |  4 ++--
 ...faultPlcUnsubscriptionRequestResult_plc4xgen.go |  8 ++++----
 .../DefaultPlcUnsubscriptionRequest_plc4xgen.go    |  4 ++--
 .../model/DefaultPlcWriteRequestResult_plc4xgen.go |  8 ++++----
 .../spi/model/DefaultPlcWriteResponse_plc4xgen.go  |  4 ++--
 plc4go/spi/model/ResponseItem_plc4xgen.go          |  4 ++--
 plc4go/spi/pool/executor_plc4xgen.go               |  4 ++--
 plc4go/spi/pool/future_plc4xgen.go                 |  4 ++--
 plc4go/spi/pool/worker_plc4xgen.go                 |  4 ++--
 .../requestTransactionManager_plc4xgen.go          |  8 ++++----
 plc4go/tools/plc4xgenerator/gen.go                 |  2 +-
 37 files changed, 119 insertions(+), 119 deletions(-)

diff --git a/plc4go/internal/ads/model/AdsSubscriptionHandle_plc4xgen.go b/plc4go/internal/ads/model/AdsSubscriptionHandle_plc4xgen.go
index 977cd6179d..c505946232 100644
--- a/plc4go/internal/ads/model/AdsSubscriptionHandle_plc4xgen.go
+++ b/plc4go/internal/ads/model/AdsSubscriptionHandle_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *AdsSubscriptionHandle) SerializeWithWriteBuffer(ctx context.Context, wr
 		return err
 	}
 
-	if d.subscriber != nil {
-		if serializableField, ok := d.subscriber.(utils.Serializable); ok {
+	if any(d.subscriber) != nil {
+		if serializableField, ok := any(d.subscriber).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("subscriber"); err != nil {
 				return err
 			}
@@ -78,8 +78,8 @@ func (d *AdsSubscriptionHandle) SerializeWithWriteBuffer(ctx context.Context, wr
 	for _, elem := range d.consumers {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
@@ -106,8 +106,8 @@ func (d *AdsSubscriptionHandle) SerializeWithWriteBuffer(ctx context.Context, wr
 	for _, elem := range d._options {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/internal/cbus/Connection_plc4xgen.go b/plc4go/internal/cbus/Connection_plc4xgen.go
index c49d71a0e7..3d36cc7041 100644
--- a/plc4go/internal/cbus/Connection_plc4xgen.go
+++ b/plc4go/internal/cbus/Connection_plc4xgen.go
@@ -62,8 +62,8 @@ func (d *Connection) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 	for _, elem := range d.subscribers {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
@@ -85,8 +85,8 @@ func (d *Connection) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		return err
 	}
 
-	if d.tm != nil {
-		if serializableField, ok := d.tm.(utils.Serializable); ok {
+	if any(d.tm) != nil {
+		if serializableField, ok := any(d.tm).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("tm"); err != nil {
 				return err
 			}
@@ -116,8 +116,8 @@ func (d *Connection) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		return err
 	}
 
-	if d.tracer != nil {
-		if serializableField, ok := d.tracer.(utils.Serializable); ok {
+	if any(d.tracer) != nil {
+		if serializableField, ok := any(d.tracer).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("tracer"); err != nil {
 				return err
 			}
diff --git a/plc4go/internal/cbus/MessageCodec_plc4xgen.go b/plc4go/internal/cbus/MessageCodec_plc4xgen.go
index 1e1cdc8003..ec7835b344 100644
--- a/plc4go/internal/cbus/MessageCodec_plc4xgen.go
+++ b/plc4go/internal/cbus/MessageCodec_plc4xgen.go
@@ -46,8 +46,8 @@ func (d *MessageCodec) SerializeWithWriteBuffer(ctx context.Context, writeBuffer
 		return err
 	}
 
-	if d.requestContext != nil {
-		if serializableField, ok := d.requestContext.(utils.Serializable); ok {
+	if any(d.requestContext) != nil {
+		if serializableField, ok := any(d.requestContext).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("requestContext"); err != nil {
 				return err
 			}
@@ -65,8 +65,8 @@ func (d *MessageCodec) SerializeWithWriteBuffer(ctx context.Context, writeBuffer
 		}
 	}
 
-	if d.cbusOptions != nil {
-		if serializableField, ok := d.cbusOptions.(utils.Serializable); ok {
+	if any(d.cbusOptions) != nil {
+		if serializableField, ok := any(d.cbusOptions).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("cbusOptions"); err != nil {
 				return err
 			}
diff --git a/plc4go/internal/knxnetip/Subscriber_plc4xgen.go b/plc4go/internal/knxnetip/Subscriber_plc4xgen.go
index 2d18f0d2b9..e86c7576e1 100644
--- a/plc4go/internal/knxnetip/Subscriber_plc4xgen.go
+++ b/plc4go/internal/knxnetip/Subscriber_plc4xgen.go
@@ -86,8 +86,8 @@ func (d *Subscriber) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 	for _, elem := range d._options {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/internal/opcua/Configuration_plc4xgen.go b/plc4go/internal/opcua/Configuration_plc4xgen.go
index eb733660b7..e742afe265 100644
--- a/plc4go/internal/opcua/Configuration_plc4xgen.go
+++ b/plc4go/internal/opcua/Configuration_plc4xgen.go
@@ -71,8 +71,8 @@ func (d *Configuration) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		return err
 	}
 
-	if d.Thumbprint != nil {
-		if serializableField, ok := d.Thumbprint.(utils.Serializable); ok {
+	if any(d.Thumbprint) != nil {
+		if serializableField, ok := any(d.Thumbprint).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("thumbprint"); err != nil {
 				return err
 			}
diff --git a/plc4go/internal/opcua/Connection_plc4xgen.go b/plc4go/internal/opcua/Connection_plc4xgen.go
index a317dfb514..61fcb7be0d 100644
--- a/plc4go/internal/opcua/Connection_plc4xgen.go
+++ b/plc4go/internal/opcua/Connection_plc4xgen.go
@@ -58,8 +58,8 @@ func (d *Connection) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 	for _, elem := range d.subscribers {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
@@ -118,8 +118,8 @@ func (d *Connection) SerializeWithWriteBuffer(ctx context.Context, writeBuffer u
 		return err
 	}
 
-	if d.tracer != nil {
-		if serializableField, ok := d.tracer.(utils.Serializable); ok {
+	if any(d.tracer) != nil {
+		if serializableField, ok := any(d.tracer).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("tracer"); err != nil {
 				return err
 			}
diff --git a/plc4go/internal/opcua/SecureChannel_plc4xgen.go b/plc4go/internal/opcua/SecureChannel_plc4xgen.go
index 9a6ade218d..043a1ff115 100644
--- a/plc4go/internal/opcua/SecureChannel_plc4xgen.go
+++ b/plc4go/internal/opcua/SecureChannel_plc4xgen.go
@@ -54,8 +54,8 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		return err
 	}
 
-	if d.policyId != nil {
-		if serializableField, ok := d.policyId.(utils.Serializable); ok {
+	if any(d.policyId) != nil {
+		if serializableField, ok := any(d.policyId).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("policyId"); err != nil {
 				return err
 			}
@@ -96,8 +96,8 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		}
 	}
 
-	if d.endpoint != nil {
-		if serializableField, ok := d.endpoint.(utils.Serializable); ok {
+	if any(d.endpoint) != nil {
+		if serializableField, ok := any(d.endpoint).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("endpoint"); err != nil {
 				return err
 			}
@@ -127,8 +127,8 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		return err
 	}
 
-	if d.publicCertificate != nil {
-		if serializableField, ok := d.publicCertificate.(utils.Serializable); ok {
+	if any(d.publicCertificate) != nil {
+		if serializableField, ok := any(d.publicCertificate).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("publicCertificate"); err != nil {
 				return err
 			}
@@ -146,8 +146,8 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		}
 	}
 
-	if d.thumbprint != nil {
-		if serializableField, ok := d.thumbprint.(utils.Serializable); ok {
+	if any(d.thumbprint) != nil {
+		if serializableField, ok := any(d.thumbprint).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("thumbprint"); err != nil {
 				return err
 			}
@@ -175,8 +175,8 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		return err
 	}
 
-	if d.certificateThumbprint != nil {
-		if serializableField, ok := d.certificateThumbprint.(utils.Serializable); ok {
+	if any(d.certificateThumbprint) != nil {
+		if serializableField, ok := any(d.certificateThumbprint).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("certificateThumbprint"); err != nil {
 				return err
 			}
@@ -217,8 +217,8 @@ func (d *SecureChannel) SerializeWithWriteBuffer(ctx context.Context, writeBuffe
 		return err
 	}
 
-	if d.authenticationToken != nil {
-		if serializableField, ok := d.authenticationToken.(utils.Serializable); ok {
+	if any(d.authenticationToken) != nil {
+		if serializableField, ok := any(d.authenticationToken).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("authenticationToken"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/default/defaultCodec_plc4xgen.go b/plc4go/spi/default/defaultCodec_plc4xgen.go
index f742efc996..bd631b802f 100644
--- a/plc4go/spi/default/defaultCodec_plc4xgen.go
+++ b/plc4go/spi/default/defaultCodec_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *defaultCodec) SerializeWithWriteBuffer(ctx context.Context, writeBuffer
 		return err
 	}
 
-	if d.transportInstance != nil {
-		if serializableField, ok := d.transportInstance.(utils.Serializable); ok {
+	if any(d.transportInstance) != nil {
+		if serializableField, ok := any(d.transportInstance).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("transportInstance"); err != nil {
 				return err
 			}
@@ -67,8 +67,8 @@ func (d *defaultCodec) SerializeWithWriteBuffer(ctx context.Context, writeBuffer
 	for _, elem := range d.expectations {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/default/defaultConnection_plc4xgen.go b/plc4go/spi/default/defaultConnection_plc4xgen.go
index 91b6e64aa1..5588ed5514 100644
--- a/plc4go/spi/default/defaultConnection_plc4xgen.go
+++ b/plc4go/spi/default/defaultConnection_plc4xgen.go
@@ -51,8 +51,8 @@ func (d *defaultConnection) SerializeWithWriteBuffer(ctx context.Context, writeB
 		return err
 	}
 
-	if d.tagHandler != nil {
-		if serializableField, ok := d.tagHandler.(utils.Serializable); ok {
+	if any(d.tagHandler) != nil {
+		if serializableField, ok := any(d.tagHandler).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("tagHandler"); err != nil {
 				return err
 			}
@@ -70,8 +70,8 @@ func (d *defaultConnection) SerializeWithWriteBuffer(ctx context.Context, writeB
 		}
 	}
 
-	if d.valueHandler != nil {
-		if serializableField, ok := d.valueHandler.(utils.Serializable); ok {
+	if any(d.valueHandler) != nil {
+		if serializableField, ok := any(d.valueHandler).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("valueHandler"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/default/defaultPlcConnectionCloseResult_plc4xgen.go b/plc4go/spi/default/defaultPlcConnectionCloseResult_plc4xgen.go
index b14106029b..c76d3709f5 100644
--- a/plc4go/spi/default/defaultPlcConnectionCloseResult_plc4xgen.go
+++ b/plc4go/spi/default/defaultPlcConnectionCloseResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *defaultPlcConnectionCloseResult) SerializeWithWriteBuffer(ctx context.C
 		return err
 	}
 
-	if d.connection != nil {
-		if serializableField, ok := d.connection.(utils.Serializable); ok {
+	if any(d.connection) != nil {
+		if serializableField, ok := any(d.connection).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("connection"); err != nil {
 				return err
 			}
@@ -74,8 +74,8 @@ func (d *defaultPlcConnectionCloseResult) SerializeWithWriteBuffer(ctx context.C
 	for _, elem := range d.traces {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/default/defaultPlcConnectionConnectResult_plc4xgen.go b/plc4go/spi/default/defaultPlcConnectionConnectResult_plc4xgen.go
index b49b9f30db..631a727bc4 100644
--- a/plc4go/spi/default/defaultPlcConnectionConnectResult_plc4xgen.go
+++ b/plc4go/spi/default/defaultPlcConnectionConnectResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *defaultPlcConnectionConnectResult) SerializeWithWriteBuffer(ctx context
 		return err
 	}
 
-	if d.connection != nil {
-		if serializableField, ok := d.connection.(utils.Serializable); ok {
+	if any(d.connection) != nil {
+		if serializableField, ok := any(d.connection).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("connection"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/interceptors/interceptedPlcReadRequestResult_plc4xgen.go b/plc4go/spi/interceptors/interceptedPlcReadRequestResult_plc4xgen.go
index e3f3f479e7..f451da7ad0 100644
--- a/plc4go/spi/interceptors/interceptedPlcReadRequestResult_plc4xgen.go
+++ b/plc4go/spi/interceptors/interceptedPlcReadRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *interceptedPlcReadRequestResult) SerializeWithWriteBuffer(ctx context.C
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *interceptedPlcReadRequestResult) SerializeWithWriteBuffer(ctx context.C
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/interceptors/interceptedPlcWriteRequestResult_plc4xgen.go b/plc4go/spi/interceptors/interceptedPlcWriteRequestResult_plc4xgen.go
index 1f52dfa65c..252ef4125b 100644
--- a/plc4go/spi/interceptors/interceptedPlcWriteRequestResult_plc4xgen.go
+++ b/plc4go/spi/interceptors/interceptedPlcWriteRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *interceptedPlcWriteRequestResult) SerializeWithWriteBuffer(ctx context.
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *interceptedPlcWriteRequestResult) SerializeWithWriteBuffer(ctx context.
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
index 9d3aca4e0f..0a6957b841 100644
--- a/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseItem_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcBrowseItem) SerializeWithWriteBuffer(ctx context.Context, wri
 		return err
 	}
 
-	if d.Tag != nil {
-		if serializableField, ok := d.Tag.(utils.Serializable); ok {
+	if any(d.Tag) != nil {
+		if serializableField, ok := any(d.Tag).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("tag"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go
index 4cb507d734..f77013b03e 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcBrowseRequestResult) SerializeWithWriteBuffer(ctx context.Con
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *DefaultPlcBrowseRequestResult) SerializeWithWriteBuffer(ctx context.Con
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
index 93531709d6..67c0611edf 100644
--- a/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseRequest_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcBrowseRequest) SerializeWithWriteBuffer(ctx context.Context,
 		return err
 	}
 
-	if d.browser != nil {
-		if serializableField, ok := d.browser.(utils.Serializable); ok {
+	if any(d.browser) != nil {
+		if serializableField, ok := any(d.browser).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("browser"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcBrowseResponseItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseResponseItem_plc4xgen.go
index 01155d67ae..620f8ef1a4 100644
--- a/plc4go/spi/model/DefaultPlcBrowseResponseItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseResponseItem_plc4xgen.go
@@ -52,8 +52,8 @@ func (d *DefaultPlcBrowseResponseItem) SerializeWithWriteBuffer(ctx context.Cont
 	for _, elem := range d.results {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
index e5838bfb57..2fea7ea1ff 100644
--- a/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcBrowseResponse_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcBrowseResponse) SerializeWithWriteBuffer(ctx context.Context,
 		return err
 	}
 
-	if d.request != nil {
-		if serializableField, ok := d.request.(utils.Serializable); ok {
+	if any(d.request) != nil {
+		if serializableField, ok := any(d.request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go b/plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go
index ee9c19fb7f..adcdb91a9e 100644
--- a/plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcConsumerRegistration_plc4xgen.go
@@ -52,8 +52,8 @@ func (d *DefaultPlcConsumerRegistration) SerializeWithWriteBuffer(ctx context.Co
 	for _, elem := range d.handles {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go
index 5e11734f7d..0407b77bf4 100644
--- a/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcReadRequestResult) SerializeWithWriteBuffer(ctx context.Conte
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *DefaultPlcReadRequestResult) SerializeWithWriteBuffer(ctx context.Conte
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
index 5b1ea01def..6f99df99c8 100644
--- a/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcReadResponse_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcReadResponse) SerializeWithWriteBuffer(ctx context.Context, w
 		return err
 	}
 
-	if d.request != nil {
-		if serializableField, ok := d.request.(utils.Serializable); ok {
+	if any(d.request) != nil {
+		if serializableField, ok := any(d.request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionEventItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionEventItem_plc4xgen.go
index 9c8bb92683..e67ef9e3bf 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionEventItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionEventItem_plc4xgen.go
@@ -47,8 +47,8 @@ func (d *DefaultPlcSubscriptionEventItem) SerializeWithWriteBuffer(ctx context.C
 		return err
 	}
 
-	if d.tag != nil {
-		if serializableField, ok := d.tag.(utils.Serializable); ok {
+	if any(d.tag) != nil {
+		if serializableField, ok := any(d.tag).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("tag"); err != nil {
 				return err
 			}
@@ -74,8 +74,8 @@ func (d *DefaultPlcSubscriptionEventItem) SerializeWithWriteBuffer(ctx context.C
 		return err
 	}
 
-	if d.value != nil {
-		if serializableField, ok := d.value.(utils.Serializable); ok {
+	if any(d.value) != nil {
+		if serializableField, ok := any(d.value).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("value"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go
index 33c347bba4..aec528f0a9 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcSubscriptionRequestResult) SerializeWithWriteBuffer(ctx conte
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *DefaultPlcSubscriptionRequestResult) SerializeWithWriteBuffer(ctx conte
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
index 55eeb904ce..b49d6acc22 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionRequest_plc4xgen.go
@@ -100,8 +100,8 @@ func (d *DefaultPlcSubscriptionRequest) SerializeWithWriteBuffer(ctx context.Con
 		return err
 	}
 
-	if d.subscriber != nil {
-		if serializableField, ok := d.subscriber.(utils.Serializable); ok {
+	if any(d.subscriber) != nil {
+		if serializableField, ok := any(d.subscriber).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("subscriber"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponseItem_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionResponseItem_plc4xgen.go
index f8d49f652c..80352f16fc 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponseItem_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponseItem_plc4xgen.go
@@ -47,8 +47,8 @@ func (d *DefaultPlcSubscriptionResponseItem) SerializeWithWriteBuffer(ctx contex
 		return err
 	}
 
-	if d.subscriptionHandle != nil {
-		if serializableField, ok := d.subscriptionHandle.(utils.Serializable); ok {
+	if any(d.subscriptionHandle) != nil {
+		if serializableField, ok := any(d.subscriptionHandle).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("subscriptionHandle"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
index e4e7d550ed..6ef6b278d3 100644
--- a/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcSubscriptionResponse_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcSubscriptionResponse) SerializeWithWriteBuffer(ctx context.Co
 		return err
 	}
 
-	if d.request != nil {
-		if serializableField, ok := d.request.(utils.Serializable); ok {
+	if any(d.request) != nil {
+		if serializableField, ok := any(d.request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestBuilder_plc4xgen.go b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestBuilder_plc4xgen.go
index 85cb47b8f8..5a0ca33e2a 100644
--- a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestBuilder_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestBuilder_plc4xgen.go
@@ -48,8 +48,8 @@ func (d *DefaultPlcUnsubscriptionRequestBuilder) SerializeWithWriteBuffer(ctx co
 	for _, elem := range d.subscriptionHandles {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go
index 20168201f3..4b1dd3c221 100644
--- a/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcUnsubscriptionRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcUnsubscriptionRequestResult) SerializeWithWriteBuffer(ctx con
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *DefaultPlcUnsubscriptionRequestResult) SerializeWithWriteBuffer(ctx con
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcUnsubscriptionRequest_plc4xgen.go b/plc4go/spi/model/DefaultPlcUnsubscriptionRequest_plc4xgen.go
index 94fe4739c0..7dabfed27e 100644
--- a/plc4go/spi/model/DefaultPlcUnsubscriptionRequest_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcUnsubscriptionRequest_plc4xgen.go
@@ -48,8 +48,8 @@ func (d *DefaultPlcUnsubscriptionRequest) SerializeWithWriteBuffer(ctx context.C
 	for _, elem := range d.subscriptionHandles {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go
index dfce5dcb1b..43a7f4a7ae 100644
--- a/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteRequestResult_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcWriteRequestResult) SerializeWithWriteBuffer(ctx context.Cont
 		return err
 	}
 
-	if d.Request != nil {
-		if serializableField, ok := d.Request.(utils.Serializable); ok {
+	if any(d.Request) != nil {
+		if serializableField, ok := any(d.Request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
@@ -62,8 +62,8 @@ func (d *DefaultPlcWriteRequestResult) SerializeWithWriteBuffer(ctx context.Cont
 		}
 	}
 
-	if d.Response != nil {
-		if serializableField, ok := d.Response.(utils.Serializable); ok {
+	if any(d.Response) != nil {
+		if serializableField, ok := any(d.Response).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("response"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go b/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
index 0e840c1cbb..f12fb05165 100644
--- a/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
+++ b/plc4go/spi/model/DefaultPlcWriteResponse_plc4xgen.go
@@ -43,8 +43,8 @@ func (d *DefaultPlcWriteResponse) SerializeWithWriteBuffer(ctx context.Context,
 		return err
 	}
 
-	if d.request != nil {
-		if serializableField, ok := d.request.(utils.Serializable); ok {
+	if any(d.request) != nil {
+		if serializableField, ok := any(d.request).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("request"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/model/ResponseItem_plc4xgen.go b/plc4go/spi/model/ResponseItem_plc4xgen.go
index 1bfd89ca93..3badc855e6 100644
--- a/plc4go/spi/model/ResponseItem_plc4xgen.go
+++ b/plc4go/spi/model/ResponseItem_plc4xgen.go
@@ -47,8 +47,8 @@ func (d *ResponseItem) SerializeWithWriteBuffer(ctx context.Context, writeBuffer
 		return err
 	}
 
-	if d.value != nil {
-		if serializableField, ok := d.value.(utils.Serializable); ok {
+	if any(d.value) != nil {
+		if serializableField, ok := any(d.value).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("value"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/pool/executor_plc4xgen.go b/plc4go/spi/pool/executor_plc4xgen.go
index 682a7314b6..6a4d94c4b4 100644
--- a/plc4go/spi/pool/executor_plc4xgen.go
+++ b/plc4go/spi/pool/executor_plc4xgen.go
@@ -56,8 +56,8 @@ func (d *executor) SerializeWithWriteBuffer(ctx context.Context, writeBuffer uti
 	for _, elem := range d.worker {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
diff --git a/plc4go/spi/pool/future_plc4xgen.go b/plc4go/spi/pool/future_plc4xgen.go
index 4aa50502c4..e449d62ca1 100644
--- a/plc4go/spi/pool/future_plc4xgen.go
+++ b/plc4go/spi/pool/future_plc4xgen.go
@@ -59,8 +59,8 @@ func (d *future) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils
 		return err
 	}
 
-	if d.err.Load() != nil {
-		if serializableField, ok := d.err.Load().(utils.Serializable); ok {
+	if any(d.err.Load()) != nil {
+		if serializableField, ok := any(d.err.Load()).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("err"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/pool/worker_plc4xgen.go b/plc4go/spi/pool/worker_plc4xgen.go
index be38b63a15..638a631d80 100644
--- a/plc4go/spi/pool/worker_plc4xgen.go
+++ b/plc4go/spi/pool/worker_plc4xgen.go
@@ -47,8 +47,8 @@ func (d *worker) SerializeWithWriteBuffer(ctx context.Context, writeBuffer utils
 		return err
 	}
 
-	if d.lastReceived.Load() != nil {
-		if serializableField, ok := d.lastReceived.Load().(utils.Serializable); ok {
+	if any(d.lastReceived.Load()) != nil {
+		if serializableField, ok := any(d.lastReceived.Load()).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("lastReceived"); err != nil {
 				return err
 			}
diff --git a/plc4go/spi/transactions/requestTransactionManager_plc4xgen.go b/plc4go/spi/transactions/requestTransactionManager_plc4xgen.go
index 996a0f4ddd..b11af29992 100644
--- a/plc4go/spi/transactions/requestTransactionManager_plc4xgen.go
+++ b/plc4go/spi/transactions/requestTransactionManager_plc4xgen.go
@@ -48,8 +48,8 @@ func (d *requestTransactionManager) SerializeWithWriteBuffer(ctx context.Context
 	for _, elem := range d.runningRequests {
 		var elem any = elem
 
-		if elem != nil {
-			if serializableField, ok := elem.(utils.Serializable); ok {
+		if any(elem) != nil {
+			if serializableField, ok := any(elem).(utils.Serializable); ok {
 				if err := writeBuffer.PushContext("value"); err != nil {
 					return err
 				}
@@ -79,8 +79,8 @@ func (d *requestTransactionManager) SerializeWithWriteBuffer(ctx context.Context
 		return err
 	}
 
-	if d.executor != nil {
-		if serializableField, ok := d.executor.(utils.Serializable); ok {
+	if any(d.executor) != nil {
+		if serializableField, ok := any(d.executor).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext("executor"); err != nil {
 				return err
 			}
diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index f113ef788e..337003bc50 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -626,7 +626,7 @@ func (d *%s) String() string {
 `
 
 var serializableFieldTemplate = `
-	if %[1]s != nil {
+	if any(%[1]s) != nil {
 		if serializableField, ok := any(%[1]s).(utils.Serializable); ok {
 			if err := writeBuffer.PushContext(%[2]s); err != nil {
 				return err


(plc4x) 06/06: feat(plc4go/plx4xgenerator): add prefix support

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

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 83f7524468b236cf5d8bf3969bf6a176e2334053
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Sep 4 12:36:53 2024 +0200

    feat(plc4go/plx4xgenerator): add prefix support
---
 plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go        | 2 +-
 ...eApplication_plc4xgen.go => app_BIPSimpleApplication_plc4xgen.go} | 2 +-
 plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go                  | 2 +-
 .../bacgopes/{DeviceInfo_plc4xgen.go => app_DeviceInfo_plc4xgen.go}  | 2 +-
 plc4go/internal/bacnetip/bacgopes/capability.go                      | 2 +-
 .../{Capability_plc4xgen.go => capability_Capability_plc4xgen.go}    | 2 +-
 ...IsIAmServices_plc4xgen.go => device_WhoIsIAmServices_plc4xgen.go} | 2 +-
 plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go                       | 2 +-
 .../bacnetip/bacgopes/{IOCB_plc4xgen.go => iocb_IOCB_plc4xgen.go}    | 2 +-
 plc4go/internal/bacnetip/bacgopes/iocb_IOController.go               | 2 +-
 .../{IOController_plc4xgen.go => iocb_IOController_plc4xgen.go}      | 2 +-
 plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go              | 2 +-
 .../{IOQController_plc4xgen.go => iocb_IOQController_plc4xgen.go}    | 2 +-
 plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go                    | 2 +-
 .../bacgopes/{IOQueue_plc4xgen.go => iocb_IOQueue_plc4xgen.go}       | 2 +-
 plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go                 | 2 +-
 .../bacgopes/{SieveQueue_plc4xgen.go => iocb_SieveQueue_plc4xgen.go} | 2 +-
 .../internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go   | 2 +-
 ...ices_plc4xgen.go => object_ReadWritePropertyServices_plc4xgen.go} | 2 +-
 plc4go/internal/bacnetip/bacgopes/service_device_Device.go           | 2 +-
 plc4go/internal/bacnetip/bacgopes/udp_UDPActor.go                    | 2 +-
 .../bacgopes/{UDPActor_plc4xgen.go => udp_UDPActor_plc4xgen.go}      | 2 +-
 plc4go/tools/plc4xgenerator/gen.go                                   | 5 +++++
 23 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go b/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go
index 18a6e65c15..52e48ad26d 100644
--- a/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication.go
@@ -24,7 +24,7 @@ import (
 	"github.com/rs/zerolog"
 )
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=BIPSimpleApplication
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=BIPSimpleApplication -prefix=app_
 type BIPSimpleApplication struct {
 	*ApplicationIOController
 	*WhoIsIAmServices
diff --git a/plc4go/internal/bacnetip/bacgopes/BIPSimpleApplication_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication_plc4xgen.go
similarity index 97%
rename from plc4go/internal/bacnetip/bacgopes/BIPSimpleApplication_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication_plc4xgen.go
index 1d9cf6ee23..c38a7eb9a8 100644
--- a/plc4go/internal/bacnetip/bacgopes/BIPSimpleApplication_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_BIPSimpleApplication_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=BIPSimpleApplication"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=BIPSimpleApplication -prefix=app_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go
index 78d9fdb51c..2a08b3e6f6 100644
--- a/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo.go
@@ -21,7 +21,7 @@ package bacgopes
 
 import readWriteModel "github.com/apache/plc4x/plc4go/protocols/bacnetip/readwrite/model"
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=DeviceInfo
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=DeviceInfo -prefix=app_
 type DeviceInfo struct {
 	DeviceIdentifier readWriteModel.BACnetTagPayloadObjectIdentifier
 	Address          Address
diff --git a/plc4go/internal/bacnetip/bacgopes/DeviceInfo_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo_plc4xgen.go
similarity index 97%
rename from plc4go/internal/bacnetip/bacgopes/DeviceInfo_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/app_DeviceInfo_plc4xgen.go
index 72d3623618..e588017777 100644
--- a/plc4go/internal/bacnetip/bacgopes/DeviceInfo_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/app_DeviceInfo_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=DeviceInfo"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=DeviceInfo -prefix=app_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/capability.go b/plc4go/internal/bacnetip/bacgopes/capability.go
index 4e36f77ac3..ccfbd39922 100644
--- a/plc4go/internal/bacnetip/bacgopes/capability.go
+++ b/plc4go/internal/bacnetip/bacgopes/capability.go
@@ -23,7 +23,7 @@ import "github.com/rs/zerolog"
 
 // TODO: implement
 //
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=Capability
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=Capability -prefix=capability_
 type Capability struct {
 }
 
diff --git a/plc4go/internal/bacnetip/bacgopes/Capability_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/capability_Capability_plc4xgen.go
similarity index 95%
rename from plc4go/internal/bacnetip/bacgopes/Capability_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/capability_Capability_plc4xgen.go
index df95b9145f..ad95359607 100644
--- a/plc4go/internal/bacnetip/bacgopes/Capability_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/capability_Capability_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=Capability"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=Capability -prefix=capability_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/WhoIsIAmServices_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/device_WhoIsIAmServices_plc4xgen.go
similarity index 96%
rename from plc4go/internal/bacnetip/bacgopes/WhoIsIAmServices_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/device_WhoIsIAmServices_plc4xgen.go
index 7633f452cf..572665cabf 100644
--- a/plc4go/internal/bacnetip/bacgopes/WhoIsIAmServices_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/device_WhoIsIAmServices_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=WhoIsIAmServices"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=WhoIsIAmServices -prefix=device_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go
index 2ec68a92fa..7e89b41373 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOCB.go
@@ -74,7 +74,7 @@ type _IOCB interface {
 var _identNext = 1
 var _identLock sync.Mutex
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOCB
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOCB -prefix=iocb_
 type IOCB struct {
 	ioID           int
 	request        PDU
diff --git a/plc4go/internal/bacnetip/bacgopes/IOCB_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOCB_plc4xgen.go
similarity index 97%
rename from plc4go/internal/bacnetip/bacgopes/IOCB_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOCB_plc4xgen.go
index 9c38076254..e75e893e6e 100644
--- a/plc4go/internal/bacnetip/bacgopes/IOCB_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOCB_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=IOCB"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=IOCB -prefix=iocb_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb_IOController.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOController.go
index 643b73bcce..d6070a27bf 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb_IOController.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOController.go
@@ -52,7 +52,7 @@ type IOControllerRequirements interface {
 	AbortIO(iocb _IOCB, err error) error
 }
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOController
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOController -prefix=iocb_
 type IOController struct {
 	name         string
 	requirements IOControllerRequirements
diff --git a/plc4go/internal/bacnetip/bacgopes/IOController_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOController_plc4xgen.go
similarity index 95%
rename from plc4go/internal/bacnetip/bacgopes/IOController_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOController_plc4xgen.go
index 05c322f737..dc2df47ff1 100644
--- a/plc4go/internal/bacnetip/bacgopes/IOController_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOController_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=IOController"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=IOController -prefix=iocb_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go
index ae67803b9b..637f7b27bb 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOQController.go
@@ -31,7 +31,7 @@ type IOQControllerRequirements interface {
 	ProcessIO(iocb _IOCB) error
 }
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOQController
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOQController -prefix=iocb_
 type IOQController struct {
 	*IOController
 	state      IOQControllerStates
diff --git a/plc4go/internal/bacnetip/bacgopes/IOQController_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOQController_plc4xgen.go
similarity index 96%
rename from plc4go/internal/bacnetip/bacgopes/IOQController_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOQController_plc4xgen.go
index 1425ec7aed..17d31c3f04 100644
--- a/plc4go/internal/bacnetip/bacgopes/IOQController_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOQController_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=IOQController"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=IOQController -prefix=iocb_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go
index 1996e118c0..2379b92118 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue.go
@@ -30,7 +30,7 @@ import (
 	"github.com/apache/plc4x/plc4go/spi/utils"
 )
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOQueue
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=IOQueue -prefix=iocb_
 type IOQueue struct {
 	name     string
 	notEmpty sync.Cond
diff --git a/plc4go/internal/bacnetip/bacgopes/IOQueue_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue_plc4xgen.go
similarity index 95%
rename from plc4go/internal/bacnetip/bacgopes/IOQueue_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_IOQueue_plc4xgen.go
index 75e44bb3cf..7cabc67c51 100644
--- a/plc4go/internal/bacnetip/bacgopes/IOQueue_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_IOQueue_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=IOQueue"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=IOQueue -prefix=iocb_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go b/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go
index f4044cc628..8b748ba977 100644
--- a/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue.go
@@ -24,7 +24,7 @@ import (
 	"github.com/rs/zerolog"
 )
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=SieveQueue
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=SieveQueue -prefix=iocb_
 type SieveQueue struct {
 	*IOQController
 	requestFn func(apdu PDU)
diff --git a/plc4go/internal/bacnetip/bacgopes/SieveQueue_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue_plc4xgen.go
similarity index 96%
rename from plc4go/internal/bacnetip/bacgopes/SieveQueue_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue_plc4xgen.go
index c3ae682d78..2686651f30 100644
--- a/plc4go/internal/bacnetip/bacgopes/SieveQueue_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/iocb_SieveQueue_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=SieveQueue"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=SieveQueue -prefix=iocb_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go b/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go
index e8ab63b511..5e9ebcfe8d 100644
--- a/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go
+++ b/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices.go
@@ -19,7 +19,7 @@
 
 package bacgopes
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=ReadWritePropertyServices
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=ReadWritePropertyServices -prefix=object_
 type ReadWritePropertyServices struct {
 }
 
diff --git a/plc4go/internal/bacnetip/bacgopes/ReadWritePropertyServices_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices_plc4xgen.go
similarity index 98%
rename from plc4go/internal/bacnetip/bacgopes/ReadWritePropertyServices_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices_plc4xgen.go
index ab7c1d3a82..d3d67334a9 100644
--- a/plc4go/internal/bacnetip/bacgopes/ReadWritePropertyServices_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/object_ReadWritePropertyServices_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=ReadWritePropertyServices"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=ReadWritePropertyServices -prefix=object_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/internal/bacnetip/bacgopes/service_device_Device.go b/plc4go/internal/bacnetip/bacgopes/service_device_Device.go
index 1a10f1de2e..3b3a12b8c5 100644
--- a/plc4go/internal/bacnetip/bacgopes/service_device_Device.go
+++ b/plc4go/internal/bacnetip/bacgopes/service_device_Device.go
@@ -33,7 +33,7 @@ type WhoIsIAmServicesRequirements interface {
 	Request(args Args, kwargs KWArgs) error
 }
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=WhoIsIAmServices
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=WhoIsIAmServices -prefix=device_
 type WhoIsIAmServices struct {
 	_requirements WhoIsIAmServicesRequirements
 	*Capability
diff --git a/plc4go/internal/bacnetip/bacgopes/udp_UDPActor.go b/plc4go/internal/bacnetip/bacgopes/udp_UDPActor.go
index 0d152ebe9a..6b01a8a8b9 100644
--- a/plc4go/internal/bacnetip/bacgopes/udp_UDPActor.go
+++ b/plc4go/internal/bacnetip/bacgopes/udp_UDPActor.go
@@ -25,7 +25,7 @@ import (
 	"github.com/rs/zerolog"
 )
 
-//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=UDPActor
+//go:generate go run ../../../tools/plc4xgenerator/gen.go -type=UDPActor -prefix=udp_
 type UDPActor struct {
 	director *UDPDirector
 	timeout  uint32
diff --git a/plc4go/internal/bacnetip/bacgopes/UDPActor_plc4xgen.go b/plc4go/internal/bacnetip/bacgopes/udp_UDPActor_plc4xgen.go
similarity index 96%
rename from plc4go/internal/bacnetip/bacgopes/UDPActor_plc4xgen.go
rename to plc4go/internal/bacnetip/bacgopes/udp_UDPActor_plc4xgen.go
index 372a5f6d74..8bf2006502 100644
--- a/plc4go/internal/bacnetip/bacgopes/UDPActor_plc4xgen.go
+++ b/plc4go/internal/bacnetip/bacgopes/udp_UDPActor_plc4xgen.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// Code generated by "plc4xgenerator -type=UDPActor"; DO NOT EDIT.
+// Code generated by "plc4xgenerator -type=UDPActor -prefix=udp_"; DO NOT EDIT.
 
 package bacgopes
 
diff --git a/plc4go/tools/plc4xgenerator/gen.go b/plc4go/tools/plc4xgenerator/gen.go
index 337003bc50..e37af76859 100644
--- a/plc4go/tools/plc4xgenerator/gen.go
+++ b/plc4go/tools/plc4xgenerator/gen.go
@@ -38,6 +38,7 @@ import (
 var (
 	typeNames = flag.String("type", "", "comma-separated list of type names; must be set")
 	output    = flag.String("output", "", "output file name; default srcdir/<type>_plc4xgen.go")
+	prefix    = flag.String("prefix", "", "prefix for all generated files")
 	buildTags = flag.String("tags", "", "comma-separated list of build tags to apply")
 )
 
@@ -114,6 +115,10 @@ func main() {
 		baseName := fmt.Sprintf("%s_plc4xgen.go", typeList[0])
 		outputName = filepath.Join(dir, baseName)
 	}
+	if *prefix != "" {
+		directory, file := filepath.Split(outputName)
+		outputName = filepath.Join(directory, *prefix+file)
+	}
 	err := os.WriteFile(outputName, src, 0644)
 	if err != nil {
 		log.Fatalf("writing output: %s", err)