You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2022/10/03 12:59:33 UTC

[plc4x] branch rel/0.10 updated: chore(release): Added a mention of the new NiFi Processor to the RELEASE_NOTES

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

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


The following commit(s) were added to refs/heads/rel/0.10 by this push:
     new 13bfd3415 chore(release): Added a mention of the new NiFi Processor to the RELEASE_NOTES
13bfd3415 is described below

commit 13bfd341542969fa2ca5664e61d6c8c949e0d0fa
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Mon Oct 3 07:58:17 2022 -0500

    chore(release): Added a mention of the new NiFi Processor to the RELEASE_NOTES
    
    - Removed some POMs that should no longer be there.
---
 code-generation/language-base-freemarker/pom.xml   |    4 +-
 code-generation/language-c/pom.xml                 |   10 +-
 code-generation/language-cs/pom.xml                |    4 +-
 code-generation/language-go/pom.xml                |   10 +-
 code-generation/language-java/pom.xml              |   18 +-
 code-generation/pom.xml                            |    2 +-
 code-generation/protocol-base-mspec/pom.xml        |    2 +-
 code-generation/protocol-test/pom.xml              |    4 +-
 plc4c/pom.xml                                      |   10 +-
 plc4go/pom.xml                                     |   26 +-
 plc4j/api/pom.xml                                  |    2 +-
 plc4j/drivers/ab-eth/pom.xml                       |   16 +-
 plc4j/drivers/ads/pom.xml                          |   18 +-
 plc4j/drivers/bacnet/pom.xml                       |   24 +-
 plc4j/drivers/c-bus/pom.xml                        |   16 +-
 plc4j/drivers/can/pom.xml                          |   18 +-
 plc4j/drivers/canopen/pom.xml                      |   20 +-
 plc4j/drivers/eip/pom.xml                          |   16 +-
 plc4j/drivers/firmata/pom.xml                      |   16 +-
 plc4j/drivers/knxnetip/pom.xml                     |   22 +-
 plc4j/drivers/mock/pom.xml                         |    6 +-
 plc4j/drivers/modbus/pom.xml                       |   22 +-
 plc4j/drivers/opcua/pom.xml                        |   16 +-
 plc4j/drivers/plc4x/pom.xml                        |   16 +-
 plc4j/drivers/pom.xml                              |    2 +-
 plc4j/drivers/profinet/pom.xml                     |   22 +-
 plc4j/drivers/s7/pom.xml                           |   16 +-
 plc4j/drivers/simulated/pom.xml                    |   10 +-
 plc4j/examples/hello-cloud-azure/pom.xml           |    4 +-
 plc4j/examples/hello-cloud-google/pom.xml          |    4 +-
 plc4j/examples/hello-connectivity-mqtt/pom.xml     |    4 +-
 plc4j/examples/hello-discovery/pom.xml             |    4 +-
 .../examples/hello-influx-data-collection/pom.xml  |    6 +-
 plc4j/examples/hello-opm/pom.xml                   |    6 +-
 plc4j/examples/hello-webservice/pom.xml            |    4 +-
 plc4j/examples/hello-world-kotlin/pom.xml          |    4 +-
 .../hello-world-plc4x-discover-and-browse/pom.xml  |    4 +-
 plc4j/examples/hello-world-plc4x-read/pom.xml      |    4 +-
 plc4j/examples/hello-world-plc4x-subscribe/pom.xml |    4 +-
 plc4j/examples/hello-world-plc4x-write/pom.xml     |    4 +-
 plc4j/examples/plc4j-s7event/pom.xml               |    6 +-
 plc4j/examples/poll-loop/pom.xml                   |    6 +-
 plc4j/examples/pom.xml                             |   26 +-
 plc4j/integrations/apache-calcite/pom.xml          |   26 +-
 plc4j/integrations/apache-camel/pom.xml            |   30 +-
 plc4j/integrations/apache-kafka/pom.xml            |   30 +-
 .../apache-nifi/nifi-plc4x-nar/pom.xml             |   34 +-
 .../apache-nifi/nifi-plc4x-processors/pom.xml      |   26 +-
 plc4j/integrations/apache-nifi/pom.xml             |    2 +-
 plc4j/integrations/opcua-server/pom.xml            |   26 +-
 plc4j/integrations/pom.xml                         |    2 +-
 plc4j/osgi/pom.xml                                 |    6 +-
 plc4j/pom.xml                                      |    2 +-
 plc4j/protocols/ads/LINKS.md                       |   19 -
 plc4j/protocols/ads/pom.xml                        |  111 --
 .../java/ads/api/commands/AdsAbstractRequest.java  |   40 -
 .../java/ads/api/commands/AdsAbstractResponse.java |   40 -
 .../commands/AdsAddDeviceNotificationRequest.java  |  194 ----
 .../commands/AdsAddDeviceNotificationResponse.java |  113 ---
 .../java/ads/api/commands/AdsCommandType.java      |   36 -
 .../AdsDeleteDeviceNotificationRequest.java        |   96 --
 .../AdsDeleteDeviceNotificationResponse.java       |   96 --
 .../api/commands/AdsDeviceNotificationRequest.java |  147 ---
 .../commands/AdsDeviceNotificationResponse.java    |   40 -
 .../ads/api/commands/AdsReadDeviceInfoRequest.java |   57 --
 .../api/commands/AdsReadDeviceInfoResponse.java    |  152 ---
 .../java/ads/api/commands/AdsReadRequest.java      |  129 ---
 .../java/ads/api/commands/AdsReadResponse.java     |  137 ---
 .../java/ads/api/commands/AdsReadStateRequest.java |   57 --
 .../ads/api/commands/AdsReadStateResponse.java     |  123 ---
 .../java/ads/api/commands/AdsReadWriteRequest.java |  160 ---
 .../ads/api/commands/AdsReadWriteResponse.java     |  133 ---
 .../ads/api/commands/AdsWriteControlRequest.java   |  149 ---
 .../ads/api/commands/AdsWriteControlResponse.java  |   95 --
 .../java/ads/api/commands/AdsWriteRequest.java     |  148 ---
 .../java/ads/api/commands/AdsWriteResponse.java    |   96 --
 .../java/ads/api/commands/UnknownCommand.java      |   88 --
 .../plc4x/java/ads/api/commands/package-info.java  |   22 -
 .../api/commands/types/AdsNotificationSample.java  |  116 ---
 .../java/ads/api/commands/types/AdsReturnCode.java |  237 -----
 .../ads/api/commands/types/AdsStampHeader.java     |  113 ---
 .../java/ads/api/commands/types/AdsState.java      |   85 --
 .../java/ads/api/commands/types/CycleTime.java     |   59 --
 .../plc4x/java/ads/api/commands/types/Data.java    |   62 --
 .../plc4x/java/ads/api/commands/types/Device.java  |   85 --
 .../java/ads/api/commands/types/DeviceState.java   |   59 --
 .../java/ads/api/commands/types/IndexGroup.java    |  123 ---
 .../java/ads/api/commands/types/IndexOffset.java   |   73 --
 .../plc4x/java/ads/api/commands/types/Length.java  |   65 --
 .../java/ads/api/commands/types/MajorVersion.java  |   68 --
 .../java/ads/api/commands/types/MaxDelay.java      |   59 --
 .../java/ads/api/commands/types/MinorVersion.java  |   69 --
 .../ads/api/commands/types/NotificationHandle.java |   59 --
 .../java/ads/api/commands/types/ReadLength.java    |   59 --
 .../plc4x/java/ads/api/commands/types/Result.java  |   74 --
 .../java/ads/api/commands/types/SampleSize.java    |   65 --
 .../plc4x/java/ads/api/commands/types/Samples.java |   60 --
 .../plc4x/java/ads/api/commands/types/Stamps.java  |   59 --
 .../java/ads/api/commands/types/TimeStamp.java     |  172 ----
 .../ads/api/commands/types/TransmissionMode.java   |   77 --
 .../plc4x/java/ads/api/commands/types/Version.java |   60 --
 .../java/ads/api/commands/types/WriteLength.java   |   64 --
 .../java/ads/api/commands/types/package-info.java  |   22 -
 .../apache/plc4x/java/ads/api/generic/AdsData.java |   32 -
 .../plc4x/java/ads/api/generic/AmsHeader.java      |  225 -----
 .../plc4x/java/ads/api/generic/AmsPacket.java      |   92 --
 .../plc4x/java/ads/api/generic/package-info.java   |   22 -
 .../plc4x/java/ads/api/generic/types/AmsError.java |   73 --
 .../plc4x/java/ads/api/generic/types/AmsNetId.java |   90 --
 .../plc4x/java/ads/api/generic/types/AmsPort.java  |  132 ---
 .../plc4x/java/ads/api/generic/types/Command.java  |  126 ---
 .../java/ads/api/generic/types/DataLength.java     |   64 --
 .../plc4x/java/ads/api/generic/types/Invoke.java   |   61 --
 .../plc4x/java/ads/api/generic/types/State.java    |  203 ----
 .../java/ads/api/generic/types/package-info.java   |   22 -
 .../apache/plc4x/java/ads/api/package-info.java    |   23 -
 .../ads/api/serial/AmsSerialAcknowledgeFrame.java  |  173 ----
 .../plc4x/java/ads/api/serial/AmsSerialFrame.java  |  199 ----
 .../java/ads/api/serial/AmsSerialResetFrame.java   |  185 ----
 .../plc4x/java/ads/api/serial/package-info.java    |   22 -
 .../plc4x/java/ads/api/serial/types/CRC.java       |   59 --
 .../java/ads/api/serial/types/FragmentNumber.java  |   70 --
 .../java/ads/api/serial/types/MagicCookie.java     |   59 --
 .../java/ads/api/serial/types/ReceiverAddress.java |   72 --
 .../ads/api/serial/types/TransmitterAddress.java   |   72 --
 .../plc4x/java/ads/api/serial/types/UserData.java  |   73 --
 .../java/ads/api/serial/types/UserDataLength.java  |   70 --
 .../java/ads/api/serial/types/package-info.java    |   22 -
 .../plc4x/java/ads/api/tcp/AmsTCPPacket.java       |   94 --
 .../plc4x/java/ads/api/tcp/AmsTcpHeader.java       |  139 ---
 .../plc4x/java/ads/api/tcp/package-info.java       |   22 -
 .../plc4x/java/ads/api/tcp/types/TcpLength.java    |   61 --
 .../plc4x/java/ads/api/tcp/types/UserData.java     |   63 --
 .../plc4x/java/ads/api/tcp/types/package-info.java |   22 -
 .../plc4x/java/ads/api/util/ByteBufSupplier.java   |   27 -
 .../plc4x/java/ads/api/util/ByteReadable.java      |   54 -
 .../apache/plc4x/java/ads/api/util/ByteValue.java  |  104 --
 .../plc4x/java/ads/api/util/LengthSupplier.java    |   25 -
 .../java/ads/api/util/UnsignedIntLEByteValue.java  |  104 --
 .../ads/api/util/UnsignedShortLEByteValue.java     |  104 --
 .../plc4x/java/ads/api/util/package-info.java      |   22 -
 .../apache/plc4x/java/ads/model/AdsDataType.java   |  577 -----------
 .../org/apache/plc4x/java/ads/model/AdsField.java  |   26 -
 .../plc4x/java/ads/model/AdsPlcFieldHandler.java   | 1063 --------------------
 .../java/ads/model/AdsSubscriptionHandle.java      |   85 --
 .../plc4x/java/ads/model/DirectAdsField.java       |  141 ---
 .../plc4x/java/ads/model/SymbolicAdsField.java     |  105 --
 .../apache/plc4x/java/ads/model/package-info.java  |   22 -
 .../java/ads/protocol/Ads2PayloadProtocol.java     |  395 --------
 .../java/ads/protocol/Payload2SerialProtocol.java  |  176 ----
 .../java/ads/protocol/Payload2TcpProtocol.java     |   73 --
 .../plc4x/java/ads/protocol/Plc4x2AdsProtocol.java |  460 ---------
 .../java/ads/protocol/exception/AdsException.java  |   57 --
 .../exception/AdsProtocolOverflowException.java    |   31 -
 .../plc4x/java/ads/protocol/package-info.java      |   22 -
 .../plc4x/java/ads/protocol/util/DigestUtil.java   |   59 --
 .../ads/protocol/util/LittleEndianDecoder.java     |  489 ---------
 .../ads/protocol/util/LittleEndianEncoder.java     |  281 ------
 .../protocol/util/SingleMessageRateLimiter.java    |  124 ---
 .../plc4x/java/ads/protocol/util/package-info.java |   22 -
 plc4j/protocols/ads/src/site/asciidoc/index.adoc   |   86 --
 .../util/LittleEndianDecoderSpecHurz.groovy        |   98 --
 .../util/LittleEndianEncoderSpecHurz.groovy        |   52 -
 .../java/org/apache/plc4x/java/ads/AdsDumper.java  |  114 ---
 .../apache/plc4x/java/ads/ManualPlc4XAdsTest.java  |   94 --
 .../AdsDeviceNotificationResponseTest.java         |   29 -
 .../ads/api/commands/CommandFactoryMethodTest.java |  109 --
 .../commands/types/AdsNotificationSampleTest.java  |   69 --
 .../ads/api/commands/types/AdsStampHeaderTest.java |   90 --
 .../types/CommandTypesFactoryMethodTest.java       |  156 ---
 .../java/ads/api/commands/types/DeviceTest.java    |   37 -
 .../java/ads/api/commands/types/LengthTest.java    |   60 --
 .../ads/api/commands/types/ReadLengthTest.java     |   61 --
 .../ads/api/commands/types/SampleSizeTest.java     |   61 --
 .../java/ads/api/commands/types/SamplesTest.java   |   61 --
 .../ads/api/commands/types/WriteLengthTest.java    |   63 --
 .../ads/api/generic/GenericFactoryMethodTest.java  |   86 --
 .../java/ads/api/generic/types/AmsErrorTest.java   |   98 --
 .../java/ads/api/generic/types/AmsNetIdTest.java   |   60 --
 .../java/ads/api/generic/types/AmsPortTest.java    |   76 --
 .../java/ads/api/generic/types/CommandTest.java    |   57 --
 .../java/ads/api/generic/types/DataLengthTest.java |   77 --
 .../types/GenericTypesFactoryMethodTest.java       |   90 --
 .../java/ads/api/generic/types/StateTest.java      |   55 -
 .../java/ads/api/generic/types/TcpLengthTest.java  |   63 --
 .../ads/api/serial/SerialFactoryMethodTest.java    |   83 --
 .../types/GenericTypesFactoryMethodTest.java       |   92 --
 .../java/ads/api/tcp/TcpFactoryMethodTest.java     |   86 --
 .../tcp/types/GenericTypesFactoryMethodTest.java   |   87 --
 .../plc4x/java/ads/api/util/ByteValueTest.java     |  146 ---
 .../java/ads/model/AdsPlcFieldHandlerTest.java     |  589 -----------
 .../plc4x/java/ads/model/DirectAdsFieldTest.java   |   71 --
 .../java/ads/protocol/AbstractProtocolTest.java    |  151 ---
 .../java/ads/protocol/Ads2PayloadProtocolTest.java |   99 --
 ...load2SerialProtocolExampleConversationTest.java |  228 -----
 .../ads/protocol/Payload2SerialProtocolTest.java   |  113 ---
 .../java/ads/protocol/Payload2TcpProtocolTest.java |  132 ---
 .../java/ads/protocol/Plc4x2AdsProtocolTest.java   |  254 -----
 .../java/ads/protocol/util/DigestUtilTest.java     |  145 ---
 .../ads/src/test/resources/logback-test.xml        |   36 -
 plc4j/protocols/benchmarks/pom.xml                 |  151 ---
 plc4j/protocols/delta-v/pom.xml                    |  155 ---
 plc4j/protocols/pom.xml                            |   80 --
 .../asciidoc/developers/implementing-drivers.adoc  |  248 -----
 plc4j/protocols/src/site/site.xml                  |   30 -
 plc4j/spi/pom.xml                                  |    4 +-
 plc4j/tools/capture-replay/pom.xml                 |    2 +-
 plc4j/tools/connection-cache/pom.xml               |    6 +-
 plc4j/tools/connection-pool/pom.xml                |    4 +-
 plc4j/tools/opm/pom.xml                            |    8 +-
 plc4j/tools/plc4x-server/pom.xml                   |   14 +-
 plc4j/tools/pom.xml                                |    2 +-
 plc4j/tools/scraper/pom.xml                        |   12 +-
 plc4j/tools/ui/pom.xml                             |   30 +-
 plc4j/transports/can/pom.xml                       |    4 +-
 plc4j/transports/pcap-replay/pom.xml               |   12 +-
 plc4j/transports/pcap-shared/pom.xml               |    6 +-
 plc4j/transports/pom.xml                           |    2 +-
 plc4j/transports/raw-socket/pom.xml                |   12 +-
 plc4j/transports/serial/pom.xml                    |    6 +-
 plc4j/transports/socketcan/pom.xml                 |   12 +-
 plc4j/transports/tcp/pom.xml                       |    6 +-
 plc4j/transports/test/pom.xml                      |    4 +-
 plc4j/transports/udp/pom.xml                       |    6 +-
 plc4j/transports/virtualcan/pom.xml                |   10 +-
 plc4j/utils/pcap-replay/pom.xml                    |    4 +-
 plc4j/utils/pcap-shared/pom.xml                    |    2 +-
 plc4j/utils/plc-simulator/pom.xml                  |   10 +-
 plc4j/utils/pom.xml                                |    2 +-
 plc4j/utils/raw-sockets/pom.xml                    |    6 +-
 plc4j/utils/test-generator/pom.xml                 |    6 +-
 plc4j/utils/test-utils/pom.xml                     |    8 +-
 plc4net/api/pom.xml                                |   71 --
 plc4net/pom.xml                                    |    6 +-
 pom.xml                                            |    4 +-
 protocols/ab-eth/pom.xml                           |    4 +-
 protocols/ads/pom.xml                              |    4 +-
 protocols/bacnetip/pom.xml                         |    4 +-
 protocols/c-bus/pom.xml                            |    4 +-
 protocols/canopen/pom.xml                          |    4 +-
 protocols/df1/pom.xml                              |    4 +-
 protocols/eip/pom.xml                              |    4 +-
 protocols/firmata/pom.xml                          |    4 +-
 protocols/genericcan/pom.xml                       |    4 +-
 protocols/knxnetip/pom.xml                         |    4 +-
 protocols/modbus/pom.xml                           |    4 +-
 protocols/mqtt/pom.xml                             |    4 +-
 protocols/opcua/pom.xml                            |    4 +-
 protocols/plc4x-api/pom.xml                        |    4 +-
 protocols/plc4x/pom.xml                            |    4 +-
 protocols/pom.xml                                  |    2 +-
 protocols/profinet/pom.xml                         |    4 +-
 protocols/s7/pom.xml                               |    4 +-
 protocols/simulated/pom.xml                        |    4 +-
 protocols/socketcan/pom.xml                        |    4 +-
 sandbox/code-gen/pom.xml                           |    2 +-
 sandbox/discovery/pom.xml                          |    4 +-
 sandbox/plc4py/pom.xml                             |    2 +-
 sandbox/pom.xml                                    |    2 +-
 sandbox/test-java-df1-driver/pom.xml               |   16 +-
 260 files changed, 478 insertions(+), 17239 deletions(-)

diff --git a/code-generation/language-base-freemarker/pom.xml b/code-generation/language-base-freemarker/pom.xml
index 8f3b08690..dcbb0d1be 100644
--- a/code-generation/language-base-freemarker/pom.xml
+++ b/code-generation/language-base-freemarker/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-language-base-freemarker</artifactId>
@@ -58,7 +58,7 @@
       <dependency>
           <groupId>org.apache.plc4x</groupId>
           <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
-          <version>0.10.1-SNAPSHOT</version>
+          <version>0.10.0-SNAPSHOT</version>
           <scope>compile</scope>
       </dependency>
   </dependencies>
diff --git a/code-generation/language-c/pom.xml b/code-generation/language-c/pom.xml
index 952c1014c..12d9f7436 100644
--- a/code-generation/language-c/pom.xml
+++ b/code-generation/language-c/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-language-c</artifactId>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-base-freemarker</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -102,7 +102,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>compile</scope>
     </dependency>
 
@@ -110,13 +110,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/code-generation/language-cs/pom.xml b/code-generation/language-cs/pom.xml
index 8130e86b9..48e189e00 100644
--- a/code-generation/language-cs/pom.xml
+++ b/code-generation/language-cs/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-language-cs</artifactId>
@@ -37,7 +37,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-base-freemarker</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/code-generation/language-go/pom.xml b/code-generation/language-go/pom.xml
index 377a70c83..d138e483b 100644
--- a/code-generation/language-go/pom.xml
+++ b/code-generation/language-go/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-language-go</artifactId>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-base-freemarker</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -102,7 +102,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>compile</scope>
     </dependency>
 
@@ -110,13 +110,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/code-generation/language-java/pom.xml b/code-generation/language-java/pom.xml
index c466f6061..47646e5d8 100644
--- a/code-generation/language-java/pom.xml
+++ b/code-generation/language-java/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-language-java</artifactId>
@@ -81,12 +81,12 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-base-freemarker</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -111,37 +111,37 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/code-generation/pom.xml b/code-generation/pom.xml
index 79a8f1ef5..a853f2c67 100644
--- a/code-generation/pom.xml
+++ b/code-generation/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-parent</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation</artifactId>
diff --git a/code-generation/protocol-base-mspec/pom.xml b/code-generation/protocol-base-mspec/pom.xml
index 6f4d3761e..e40a07849 100644
--- a/code-generation/protocol-base-mspec/pom.xml
+++ b/code-generation/protocol-base-mspec/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
diff --git a/code-generation/protocol-test/pom.xml b/code-generation/protocol-test/pom.xml
index b6de481a6..2cc7a0415 100644
--- a/code-generation/protocol-test/pom.xml
+++ b/code-generation/protocol-test/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-code-generation</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-code-generation-protocol-test</artifactId>
@@ -212,7 +212,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-protocol-base-mspec</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/plc4c/pom.xml b/plc4c/pom.xml
index 1fe6f4f0b..7ac4bbd64 100644
--- a/plc4c/pom.xml
+++ b/plc4c/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-parent</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4c</artifactId>
@@ -524,7 +524,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-c</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -532,21 +532,21 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-plc4x</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
diff --git a/plc4go/pom.xml b/plc4go/pom.xml
index 4b6e7c3f2..4a250c862 100644
--- a/plc4go/pom.xml
+++ b/plc4go/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-parent</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4go</artifactId>
@@ -638,7 +638,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-go</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -646,77 +646,77 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-bacnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-c-bus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-df1</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
diff --git a/plc4j/api/pom.xml b/plc4j/api/pom.xml
index 350c0b836..62ee5d48b 100644
--- a/plc4j/api/pom.xml
+++ b/plc4j/api/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-api</artifactId>
diff --git a/plc4j/drivers/ab-eth/pom.xml b/plc4j/drivers/ab-eth/pom.xml
index 3c6956bad..d5e6d75ff 100644
--- a/plc4j/drivers/ab-eth/pom.xml
+++ b/plc4j/drivers/ab-eth/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-ab-eth</artifactId>
@@ -114,18 +114,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -140,14 +140,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -155,14 +155,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/ads/pom.xml b/plc4j/drivers/ads/pom.xml
index bc0db0e87..483440b1e 100644
--- a/plc4j/drivers/ads/pom.xml
+++ b/plc4j/drivers/ads/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-ads</artifactId>
@@ -126,23 +126,23 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-serial</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -171,7 +171,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -183,21 +183,21 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/bacnet/pom.xml b/plc4j/drivers/bacnet/pom.xml
index 8aedfb67e..acc025d0e 100644
--- a/plc4j/drivers/bacnet/pom.xml
+++ b/plc4j/drivers/bacnet/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-bacnet</artifactId>
@@ -57,35 +57,35 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-udp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-raw-socket</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-pcap-shared</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-pcap-replay</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <optional>true</optional>
     </dependency>
 
@@ -120,13 +120,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-generator</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
@@ -145,7 +145,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -153,14 +153,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-bacnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-bacnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/c-bus/pom.xml b/plc4j/drivers/c-bus/pom.xml
index 4eea9ab0c..1600f6ca5 100644
--- a/plc4j/drivers/c-bus/pom.xml
+++ b/plc4j/drivers/c-bus/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-c-bus</artifactId>
@@ -116,18 +116,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -142,14 +142,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -157,14 +157,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-c-bus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-c-bus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/can/pom.xml b/plc4j/drivers/can/pom.xml
index 93800306c..cea98c99d 100644
--- a/plc4j/drivers/can/pom.xml
+++ b/plc4j/drivers/can/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-can</artifactId>
@@ -36,30 +36,30 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-can</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-socketcan</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-virtualcan</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -93,13 +93,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-genericcan</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/plc4j/drivers/canopen/pom.xml b/plc4j/drivers/canopen/pom.xml
index 026bb8a96..1115c8f3a 100644
--- a/plc4j/drivers/canopen/pom.xml
+++ b/plc4j/drivers/canopen/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-canopen</artifactId>
@@ -36,24 +36,24 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-can</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-can</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -78,13 +78,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-test</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -96,21 +96,21 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/eip/pom.xml b/plc4j/drivers/eip/pom.xml
index eb4e885b8..65d05d9e4 100644
--- a/plc4j/drivers/eip/pom.xml
+++ b/plc4j/drivers/eip/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-eip</artifactId>
@@ -116,18 +116,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -138,14 +138,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -153,14 +153,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/firmata/pom.xml b/plc4j/drivers/firmata/pom.xml
index e899248f2..3b89266f3 100644
--- a/plc4j/drivers/firmata/pom.xml
+++ b/plc4j/drivers/firmata/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-firmata</artifactId>
@@ -114,18 +114,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-serial</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -146,28 +146,28 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/knxnetip/pom.xml b/plc4j/drivers/knxnetip/pom.xml
index b19ca9c4f..7a616ac49 100644
--- a/plc4j/drivers/knxnetip/pom.xml
+++ b/plc4j/drivers/knxnetip/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-knxnetip</artifactId>
@@ -113,28 +113,28 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-udp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-raw-socket</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-pcap-replay</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -170,13 +170,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-pcap-shared</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
@@ -194,7 +194,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -202,14 +202,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/mock/pom.xml b/plc4j/drivers/mock/pom.xml
index 833d04de1..7c431634f 100644
--- a/plc4j/drivers/mock/pom.xml
+++ b/plc4j/drivers/mock/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-mock</artifactId>
@@ -35,12 +35,12 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/drivers/modbus/pom.xml b/plc4j/drivers/modbus/pom.xml
index f68619bab..82bd60780 100644
--- a/plc4j/drivers/modbus/pom.xml
+++ b/plc4j/drivers/modbus/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-modbus</artifactId>
@@ -116,33 +116,33 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-serial</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-raw-socket</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-raw-sockets</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -169,14 +169,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -184,14 +184,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/opcua/pom.xml b/plc4j/drivers/opcua/pom.xml
index c60e0c0d4..cc76e25f2 100644
--- a/plc4j/drivers/opcua/pom.xml
+++ b/plc4j/drivers/opcua/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-opcua</artifactId>
@@ -129,19 +129,19 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -170,7 +170,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
@@ -198,7 +198,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -206,7 +206,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -214,7 +214,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/plc4x/pom.xml b/plc4j/drivers/plc4x/pom.xml
index 1558f41b1..1c408faa9 100644
--- a/plc4j/drivers/plc4x/pom.xml
+++ b/plc4j/drivers/plc4x/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-plc4x</artifactId>
@@ -118,18 +118,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -149,7 +149,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
@@ -163,7 +163,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -171,14 +171,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-plc4x</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-plc4x</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/pom.xml b/plc4j/drivers/pom.xml
index 37ad16587..a2e929a1c 100644
--- a/plc4j/drivers/pom.xml
+++ b/plc4j/drivers/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-drivers</artifactId>
diff --git a/plc4j/drivers/profinet/pom.xml b/plc4j/drivers/profinet/pom.xml
index f63b674e9..6487e9236 100644
--- a/plc4j/drivers/profinet/pom.xml
+++ b/plc4j/drivers/profinet/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-profinet</artifactId>
@@ -114,28 +114,28 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-raw-socket</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-pcap-shared</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-raw-sockets</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.pcap4j</groupId>
@@ -164,13 +164,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-generator</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
@@ -197,7 +197,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -205,14 +205,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-profinet</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-profinet</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index 393512982..5a0606dfc 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-s7</artifactId>
@@ -117,18 +117,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -159,7 +159,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -172,7 +172,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -180,14 +180,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <classifier>tests</classifier>
       <type>test-jar</type>
       <scope>test</scope>
diff --git a/plc4j/drivers/simulated/pom.xml b/plc4j/drivers/simulated/pom.xml
index ae4b1bd0c..fe9f900d1 100644
--- a/plc4j/drivers/simulated/pom.xml
+++ b/plc4j/drivers/simulated/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-drivers</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-driver-simulated</artifactId>
@@ -111,7 +111,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -128,14 +128,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>compile</scope>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-code-generation-language-java</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
@@ -143,7 +143,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4x-protocols-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
diff --git a/plc4j/examples/hello-cloud-azure/pom.xml b/plc4j/examples/hello-cloud-azure/pom.xml
index 0b552589d..4bbcf846d 100644
--- a/plc4j/examples/hello-cloud-azure/pom.xml
+++ b/plc4j/examples/hello-cloud-azure/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-cloud-azure</artifactId>
@@ -37,7 +37,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-cloud-google/pom.xml b/plc4j/examples/hello-cloud-google/pom.xml
index e4aee3498..a2e4c1197 100644
--- a/plc4j/examples/hello-cloud-google/pom.xml
+++ b/plc4j/examples/hello-cloud-google/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-cloud-google</artifactId>
@@ -37,7 +37,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-connectivity-mqtt/pom.xml b/plc4j/examples/hello-connectivity-mqtt/pom.xml
index 07dcdd1b2..617326708 100644
--- a/plc4j/examples/hello-connectivity-mqtt/pom.xml
+++ b/plc4j/examples/hello-connectivity-mqtt/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-connectivity-mqtt</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-discovery/pom.xml b/plc4j/examples/hello-discovery/pom.xml
index d4d295cce..d285a1b2f 100644
--- a/plc4j/examples/hello-discovery/pom.xml
+++ b/plc4j/examples/hello-discovery/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-discovery</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-influx-data-collection/pom.xml b/plc4j/examples/hello-influx-data-collection/pom.xml
index af6ea8d3b..0786a76b4 100644
--- a/plc4j/examples/hello-influx-data-collection/pom.xml
+++ b/plc4j/examples/hello-influx-data-collection/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-influx-data-collection</artifactId>
@@ -39,12 +39,12 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <!-- InfluxDB dependencies -->
diff --git a/plc4j/examples/hello-opm/pom.xml b/plc4j/examples/hello-opm/pom.xml
index 64e85b064..d2f26ed5d 100644
--- a/plc4j/examples/hello-opm/pom.xml
+++ b/plc4j/examples/hello-opm/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-opm</artifactId>
@@ -39,12 +39,12 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-opm</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-connection-pool</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-webservice/pom.xml b/plc4j/examples/hello-webservice/pom.xml
index 73097ebb4..f7049a5d6 100644
--- a/plc4j/examples/hello-webservice/pom.xml
+++ b/plc4j/examples/hello-webservice/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-webservice</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-world-kotlin/pom.xml b/plc4j/examples/hello-world-kotlin/pom.xml
index 6f1d50586..726b8d0f5 100644
--- a/plc4j/examples/hello-world-kotlin/pom.xml
+++ b/plc4j/examples/hello-world-kotlin/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-world-kotlin</artifactId>
@@ -49,7 +49,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <!-- Testing Dependencies -->
diff --git a/plc4j/examples/hello-world-plc4x-discover-and-browse/pom.xml b/plc4j/examples/hello-world-plc4x-discover-and-browse/pom.xml
index 6d0f8e894..c87b0eb98 100644
--- a/plc4j/examples/hello-world-plc4x-discover-and-browse/pom.xml
+++ b/plc4j/examples/hello-world-plc4x-discover-and-browse/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-world-plc4x-discover-and-browse</artifactId>
@@ -41,7 +41,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-world-plc4x-read/pom.xml b/plc4j/examples/hello-world-plc4x-read/pom.xml
index 978547277..38a3e0380 100644
--- a/plc4j/examples/hello-world-plc4x-read/pom.xml
+++ b/plc4j/examples/hello-world-plc4x-read/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-world-plc4x-read</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-world-plc4x-subscribe/pom.xml b/plc4j/examples/hello-world-plc4x-subscribe/pom.xml
index 7cd2b115d..5a1443789 100644
--- a/plc4j/examples/hello-world-plc4x-subscribe/pom.xml
+++ b/plc4j/examples/hello-world-plc4x-subscribe/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-world-plc4x-subscribe</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/hello-world-plc4x-write/pom.xml b/plc4j/examples/hello-world-plc4x-write/pom.xml
index 69b58c353..52d111762 100644
--- a/plc4j/examples/hello-world-plc4x-write/pom.xml
+++ b/plc4j/examples/hello-world-plc4x-write/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-hello-world-plc4x-write</artifactId>
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/plc4j-s7event/pom.xml b/plc4j/examples/plc4j-s7event/pom.xml
index 6cd61e722..7b3dc55cf 100644
--- a/plc4j/examples/plc4j-s7event/pom.xml
+++ b/plc4j/examples/plc4j-s7event/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-s7event</artifactId>
@@ -62,14 +62,14 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <!-- TODO: Only needed because we directly rely on types of the driver -->
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/poll-loop/pom.xml b/plc4j/examples/poll-loop/pom.xml
index c3100b130..15b9ef1ea 100644
--- a/plc4j/examples/poll-loop/pom.xml
+++ b/plc4j/examples/poll-loop/pom.xml
@@ -24,11 +24,11 @@
   <parent>
     <groupId>org.apache.plc4x.examples</groupId>
     <artifactId>plc4j-examples</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-examples-poll-loop</artifactId>
-  <version>0.10.1-SNAPSHOT</version>
+  <version>0.10.0-SNAPSHOT</version>
   <name>PLC4J: Examples: Poll Loop Example</name>
   <description>Fetches data in a continuous loop</description>
 
@@ -40,7 +40,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/plc4j/examples/pom.xml b/plc4j/examples/pom.xml
index 9b590a8f8..589c9e159 100644
--- a/plc4j/examples/pom.xml
+++ b/plc4j/examples/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.plc4x.examples</groupId>
@@ -146,73 +146,73 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-plc4x</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-profinet</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
   </dependencies>
diff --git a/plc4j/integrations/apache-calcite/pom.xml b/plc4j/integrations/apache-calcite/pom.xml
index f4f1bc3e7..a24de3714 100644
--- a/plc4j/integrations/apache-calcite/pom.xml
+++ b/plc4j/integrations/apache-calcite/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-integrations</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-apache-calcite</artifactId>
@@ -76,73 +76,73 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-scraper</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <!-- Include all drivers -->
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
   </dependencies>
diff --git a/plc4j/integrations/apache-camel/pom.xml b/plc4j/integrations/apache-camel/pom.xml
index 910e646eb..0a7ca62ae 100644
--- a/plc4j/integrations/apache-camel/pom.xml
+++ b/plc4j/integrations/apache-camel/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-integrations</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-apache-camel</artifactId>
@@ -138,18 +138,18 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-connection-pool</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-scraper</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -187,61 +187,61 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
 
@@ -257,7 +257,7 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/plc4j/integrations/apache-kafka/pom.xml b/plc4j/integrations/apache-kafka/pom.xml
index cc2b5da9f..b5ce13341 100644
--- a/plc4j/integrations/apache-kafka/pom.xml
+++ b/plc4j/integrations/apache-kafka/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-integrations</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-apache-kafka</artifactId>
@@ -180,17 +180,17 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-scraper</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-connection-cache</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
@@ -210,67 +210,67 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-transport-tcp</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
   </dependencies>
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml b/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
index 30919c257..81e86625e 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-nar/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.plc4x</groupId>
 		<artifactId>plc4j-apache-nifi</artifactId>
-		<version>0.10.1-SNAPSHOT</version>
+		<version>0.10.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>plc4j-nifi-plc4x-nar</artifactId>
@@ -71,7 +71,7 @@
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-nifi-plc4x-processors</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 
 		<dependency>
@@ -86,79 +86,79 @@
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-api</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<!-- Bundle Drivers -->
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-ab-eth</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-ads</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-canopen</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-eip</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-knxnetip</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-modbus</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-opcua</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-s7</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-simulated</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-pcap-replay</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-raw-socket</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-serial</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-tcp</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-udp</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 	</dependencies>
 
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
index 187f515f0..13a84dfb7 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.plc4x</groupId>
 		<artifactId>plc4j-apache-nifi</artifactId>
-		<version>0.10.1-SNAPSHOT</version>
+		<version>0.10.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>plc4j-nifi-plc4x-processors</artifactId>
@@ -34,17 +34,17 @@
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-api</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-connection-pool</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-spi</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.nifi</groupId>
@@ -117,55 +117,55 @@
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-modbus</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-opcua</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-s7</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-driver-simulated</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-pcap-replay</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-raw-socket</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-serial</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-tcp</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.plc4x</groupId>
 			<artifactId>plc4j-transport-udp</artifactId>
-			<version>0.10.1-SNAPSHOT</version>
+			<version>0.10.0-SNAPSHOT</version>
 			<scope>test</scope>
 		</dependency>
 
diff --git a/plc4j/integrations/apache-nifi/pom.xml b/plc4j/integrations/apache-nifi/pom.xml
index 800df25d3..783d40eb8 100644
--- a/plc4j/integrations/apache-nifi/pom.xml
+++ b/plc4j/integrations/apache-nifi/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
 		<groupId>org.apache.plc4x</groupId>
 		<artifactId>plc4j-integrations</artifactId>
-		<version>0.10.1-SNAPSHOT</version>
+		<version>0.10.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>plc4j-apache-nifi</artifactId>
diff --git a/plc4j/integrations/opcua-server/pom.xml b/plc4j/integrations/opcua-server/pom.xml
index 5ab62723f..89111f952 100644
--- a/plc4j/integrations/opcua-server/pom.xml
+++ b/plc4j/integrations/opcua-server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j-integrations</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4x-opcua-server</artifactId>
@@ -96,13 +96,13 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-connection-pool</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
 
 
@@ -110,61 +110,61 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ab-eth</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-ads</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-canopen</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-eip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-firmata</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-knxnetip</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-modbus</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-opcua</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-s7</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-simulated</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
 
diff --git a/plc4j/integrations/pom.xml b/plc4j/integrations/pom.xml
index f6c1c27fc..3d7fd4263 100644
--- a/plc4j/integrations/pom.xml
+++ b/plc4j/integrations/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-integrations</artifactId>
diff --git a/plc4j/osgi/pom.xml b/plc4j/osgi/pom.xml
index df0fea21a..d3c592e18 100644
--- a/plc4j/osgi/pom.xml
+++ b/plc4j/osgi/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4j</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j-osgi</artifactId>
@@ -39,12 +39,12 @@
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-api</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-spi</artifactId>
-      <version>0.10.1-SNAPSHOT</version>
+      <version>0.10.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
diff --git a/plc4j/pom.xml b/plc4j/pom.xml
index 4312b03b8..25b613d57 100644
--- a/plc4j/pom.xml
+++ b/plc4j/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.plc4x</groupId>
     <artifactId>plc4x-parent</artifactId>
-    <version>0.10.1-SNAPSHOT</version>
+    <version>0.10.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>plc4j</artifactId>
diff --git a/plc4j/protocols/ads/LINKS.md b/plc4j/protocols/ads/LINKS.md
deleted file mode 100644
index efead6e27..000000000
--- a/plc4j/protocols/ads/LINKS.md
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      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.
-  -->
-SPEC ADS: https://infosys.beckhoff.com/english.php?content=../content/1033/tcadsamsspec/html/tcadsamsspec_intro.htm
diff --git a/plc4j/protocols/ads/pom.xml b/plc4j/protocols/ads/pom.xml
deleted file mode 100644
index 60289bc98..000000000
--- a/plc4j/protocols/ads/pom.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.plc4x</groupId>
-    <artifactId>plc4j-protocols</artifactId>
-    <version>0.10.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>plc4j-protocol-ads</artifactId>
-  <name>PLC4J: Protocol: ADS</name>
-  <description>Implementation of a PLC4X driver able to speak with Beckhoff ADS devices using the ADS protocol.
-  </description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-api</artifactId>
-      <version>0.10.0-SNAPSHOT</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-spi</artifactId>
-      <version>0.10.0-SNAPSHOT</version>
-    </dependency>
-
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-buffer</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-codec</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-transport</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>io.netty</groupId>
-      <artifactId>netty-common</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-configuration2</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.github.snksoft</groupId>
-      <artifactId>crc</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- Used to create a pcap dump file for wireshark. -->
-    <dependency>
-      <groupId>org.pcap4j</groupId>
-      <artifactId>pcap4j-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!--dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-transport-test</artifactId>
-      <version>0.10.0-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency-->
-    <dependency>
-      <groupId>org.spockframework</groupId>
-      <artifactId>spock-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.athaydes</groupId>
-      <artifactId>spock-reports</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-</project>
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAbstractRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAbstractRequest.java
deleted file mode 100644
index bd083655e..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAbstractRequest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.AmsPacket;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.generic.types.State;
-
-public abstract class AdsAbstractRequest extends AmsPacket {
-    protected AdsAbstractRequest(AmsHeader amsHeader) {
-        super(amsHeader);
-    }
-
-    protected AdsAbstractRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, State.DEFAULT, invokeId);
-    }
-
-    protected AdsAbstractRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, State stateId, Invoke invokeId) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, stateId, invokeId);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAbstractResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAbstractResponse.java
deleted file mode 100644
index 21982ec13..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAbstractResponse.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.AmsPacket;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.generic.types.State;
-
-public abstract class AdsAbstractResponse extends AmsPacket {
-    protected AdsAbstractResponse(AmsHeader amsHeader) {
-        super(amsHeader);
-    }
-
-    protected AdsAbstractResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, State.DEFAULT_RESPONSE, invokeId);
-    }
-
-    protected AdsAbstractResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, State stateId, Invoke invokeId) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, stateId, invokeId);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAddDeviceNotificationRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAddDeviceNotificationRequest.java
deleted file mode 100644
index bdc65b5d2..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAddDeviceNotificationRequest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.*;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.*;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * A notification is created in an ADS device.
- * <p>
- * Note: We recommend to announce not more then 550 notifications per device.
- * You can increase the payload by organizing the data in structures.
- */
-@AdsCommandType(Command.ADS_ADD_DEVICE_NOTIFICATION)
-public class AdsAddDeviceNotificationRequest extends AdsAbstractRequest {
-
-    /**
-     * 4 bytes	Index Group of the data, which should be sent per notification.
-     */
-    private final IndexGroup indexGroup;
-    /**
-     * 4 bytes	Index Offset of the data, which should be sent per notification.
-     */
-    private final IndexOffset indexOffset;
-    /**
-     * 4 bytes	Length of data in bytes, which should be sent per notification.
-     */
-    private final Length length;
-    /**
-     * 4 bytes	See description of the structure ADSTRANSMODE at the ADS-DLL.
-     */
-    private final TransmissionMode transmissionMode;
-    /**
-     * 4 bytes	At the latest after this time, the ADS Device Notification is called. The unit is 1ms.
-     */
-    private final MaxDelay maxDelay;
-    /**
-     * 4 bytes	The ADS server checks if the value changes in this time slice. The unit is 1ms
-     */
-    private final CycleTime cycleTime;
-    /**
-     * 16bytes	Must be set to 0
-     */
-    private final Reserved reserved;
-
-    private AdsAddDeviceNotificationRequest(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, Length length, TransmissionMode transmissionMode, MaxDelay maxDelay, CycleTime cycleTime) {
-        super(amsHeader);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.length = requireNonNull(length);
-        this.transmissionMode = requireNonNull(transmissionMode);
-        this.maxDelay = requireNonNull(maxDelay);
-        this.cycleTime = requireNonNull(cycleTime);
-        this.reserved = Reserved.INSTANCE;
-    }
-
-    private AdsAddDeviceNotificationRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, Length length, TransmissionMode transmissionMode, MaxDelay maxDelay, CycleTime cycleTime) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, State.DEFAULT, invokeId);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.length = requireNonNull(length);
-        this.transmissionMode = requireNonNull(transmissionMode);
-        this.maxDelay = requireNonNull(maxDelay);
-        this.cycleTime = requireNonNull(cycleTime);
-        this.reserved = Reserved.INSTANCE;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(indexGroup, indexOffset, length, transmissionMode, maxDelay, cycleTime, reserved);
-    }
-
-    public static AdsAddDeviceNotificationRequest of(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, Length length, TransmissionMode transmissionMode, MaxDelay maxDelay, CycleTime cycleTime) {
-        return new AdsAddDeviceNotificationRequest(amsHeader, indexGroup, indexOffset, length, transmissionMode, maxDelay, cycleTime);
-    }
-
-    public static AdsAddDeviceNotificationRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, Length length, TransmissionMode transmissionMode, MaxDelay maxDelay, CycleTime cycleTime) {
-        return new AdsAddDeviceNotificationRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, indexGroup, indexOffset, length, transmissionMode, maxDelay, cycleTime);
-    }
-
-    public IndexGroup getIndexGroup() {
-        return indexGroup;
-    }
-
-    public IndexOffset getIndexOffset() {
-        return indexOffset;
-    }
-
-    public Length getLength() {
-        return length;
-    }
-
-    public TransmissionMode getTransmissionMode() {
-        return transmissionMode;
-    }
-
-    public MaxDelay getMaxDelay() {
-        return maxDelay;
-    }
-
-    public CycleTime getCycleTime() {
-        return cycleTime;
-    }
-
-    public Reserved getReserved() {
-        return reserved;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsAddDeviceNotificationRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsAddDeviceNotificationRequest that = (AdsAddDeviceNotificationRequest) o;
-
-        if (!indexGroup.equals(that.indexGroup))
-            return false;
-        if (!indexOffset.equals(that.indexOffset))
-            return false;
-        if (!length.equals(that.length))
-            return false;
-        if (!transmissionMode.equals(that.transmissionMode))
-            return false;
-        if (!maxDelay.equals(that.maxDelay))
-            return false;
-        if (!cycleTime.equals(that.cycleTime))
-            return false;
-
-        return reserved.equals(that.reserved);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + indexGroup.hashCode();
-        result = 31 * result + indexOffset.hashCode();
-        result = 31 * result + length.hashCode();
-        result = 31 * result + transmissionMode.hashCode();
-        result = 31 * result + maxDelay.hashCode();
-        result = 31 * result + cycleTime.hashCode();
-        result = 31 * result + reserved.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsAddDeviceNotificationRequest{" +
-            "indexGroup=" + indexGroup +
-            ", indexOffset=" + indexOffset +
-            ", length=" + length +
-            ", transmissionMode=" + transmissionMode +
-            ", maxDelay=" + maxDelay +
-            ", cycleTime=" + cycleTime +
-            ", reserved=" + reserved +
-            "} " + super.toString();
-    }
-
-    public static class Reserved extends ByteValue {
-
-        public static final int NUM_BYTES = 16;
-
-        private static final Reserved INSTANCE = new Reserved();
-
-        private Reserved() {
-            super((byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00);
-            assertLength(NUM_BYTES);
-        }
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAddDeviceNotificationResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAddDeviceNotificationResponse.java
deleted file mode 100644
index 309682b5f..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsAddDeviceNotificationResponse.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.NotificationHandle;
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * A notification is created in an ADS device.
- */
-@AdsCommandType(Command.ADS_ADD_DEVICE_NOTIFICATION)
-public class AdsAddDeviceNotificationResponse extends AdsAbstractResponse {
-
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-
-    /**
-     * 4 bytes	Handle of notification
-     */
-    private final NotificationHandle notificationHandle;
-
-    private AdsAddDeviceNotificationResponse(AmsHeader amsHeader, Result result, NotificationHandle notificationHandle) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-        this.notificationHandle = requireNonNull(notificationHandle);
-    }
-
-    private AdsAddDeviceNotificationResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, NotificationHandle notificationHandle) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-        this.notificationHandle = requireNonNull(notificationHandle);
-    }
-
-    public static AdsAddDeviceNotificationResponse of(AmsHeader amsHeader, Result result, NotificationHandle notificationHandle) {
-        return new AdsAddDeviceNotificationResponse(amsHeader, result, notificationHandle);
-    }
-
-    public static AdsAddDeviceNotificationResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, NotificationHandle notificationHandle) {
-        return new AdsAddDeviceNotificationResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result, notificationHandle);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public NotificationHandle getNotificationHandle() {
-        return notificationHandle;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result, notificationHandle);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsAddDeviceNotificationResponse))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsAddDeviceNotificationResponse that = (AdsAddDeviceNotificationResponse) o;
-
-        if (!result.equals(that.result))
-            return false;
-
-        return notificationHandle.equals(that.notificationHandle);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        result1 = 31 * result1 + notificationHandle.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsAddDeviceNotificationResponse{" +
-            "result=" + result +
-            ", notificationHandle=" + notificationHandle +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsCommandType.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsCommandType.java
deleted file mode 100644
index 9e0522815..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsCommandType.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates a ADS command with the according command type flag.
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-@SuppressWarnings("squid:S00107")
-public @interface AdsCommandType {
-    Command value();
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeleteDeviceNotificationRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeleteDeviceNotificationRequest.java
deleted file mode 100644
index 6256072e5..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeleteDeviceNotificationRequest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.NotificationHandle;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * One before defined notification is deleted in an ADS device.
- */
-@AdsCommandType(Command.ADS_DELETE_DEVICE_NOTIFICATION)
-public class AdsDeleteDeviceNotificationRequest extends AdsAbstractRequest {
-
-    /**
-     * 4 bytes	Handle of notification
-     */
-    private final NotificationHandle notificationHandle;
-
-    private AdsDeleteDeviceNotificationRequest(AmsHeader amsHeader, NotificationHandle notificationHandle) {
-        super(amsHeader);
-        this.notificationHandle = requireNonNull(notificationHandle);
-    }
-
-    private AdsDeleteDeviceNotificationRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, NotificationHandle notificationHandle) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.notificationHandle = requireNonNull(notificationHandle);
-    }
-
-    public static AdsDeleteDeviceNotificationRequest of(AmsHeader amsHeader, NotificationHandle notificationHandle) {
-        return new AdsDeleteDeviceNotificationRequest(amsHeader, notificationHandle);
-    }
-
-    public static AdsDeleteDeviceNotificationRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, NotificationHandle notificationHandle) {
-        return new AdsDeleteDeviceNotificationRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, notificationHandle);
-    }
-
-    public NotificationHandle getNotificationHandle() {
-        return notificationHandle;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(notificationHandle);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsDeleteDeviceNotificationRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsDeleteDeviceNotificationRequest that = (AdsDeleteDeviceNotificationRequest) o;
-
-        return notificationHandle.equals(that.notificationHandle);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + notificationHandle.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsDeleteDeviceNotificationRequest{" +
-            "notificationHandle=" + notificationHandle +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeleteDeviceNotificationResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeleteDeviceNotificationResponse.java
deleted file mode 100644
index a50bb07f4..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeleteDeviceNotificationResponse.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * One before defined notification is deleted in an ADS device.
- */
-@AdsCommandType(Command.ADS_DELETE_DEVICE_NOTIFICATION)
-public class AdsDeleteDeviceNotificationResponse extends AdsAbstractResponse {
-
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-
-    private AdsDeleteDeviceNotificationResponse(AmsHeader amsHeader, Result result) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-    }
-
-    private AdsDeleteDeviceNotificationResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-    }
-
-    public static AdsDeleteDeviceNotificationResponse of(AmsHeader amsHeader, Result result) {
-        return new AdsDeleteDeviceNotificationResponse(amsHeader, result);
-    }
-
-    public static AdsDeleteDeviceNotificationResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result) {
-        return new AdsDeleteDeviceNotificationResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsDeleteDeviceNotificationResponse))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsDeleteDeviceNotificationResponse that = (AdsDeleteDeviceNotificationResponse) o;
-
-        return result.equals(that.result);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsDeleteDeviceNotificationResponse{" +
-            "result=" + result +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeviceNotificationRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeviceNotificationRequest.java
deleted file mode 100644
index 13f4d27b1..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeviceNotificationRequest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.AdsStampHeader;
-import org.apache.plc4x.java.ads.api.commands.types.Length;
-import org.apache.plc4x.java.ads.api.commands.types.Stamps;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import java.util.List;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Data will carry forward independently from an ADS device to a Client
- * <p>
- * The data which are transfered at the Device Notification  are multiple nested into one another. The Notification Stream contains an array with elements of type AdsStampHeader. This array again contains elements of type AdsNotificationSample.
- */
-@AdsCommandType(Command.ADS_DEVICE_NOTIFICATION)
-public class AdsDeviceNotificationRequest extends AdsAbstractRequest {
-
-    /**
-     * 4 bytes	Size of data in byte.
-     */
-    private final Length length;
-    /**
-     * 4 bytes	Number of elements of type AdsStampHeader.
-     */
-    private final Stamps stamps;
-    /**
-     * n bytes	Array with elements of type AdsStampHeader.
-     */
-    private final List<AdsStampHeader> adsStampHeaders;
-
-    private final transient LengthSupplier lengthSupplier;
-
-    private AdsDeviceNotificationRequest(AmsHeader amsHeader, Length length, Stamps stamps, List<AdsStampHeader> adsStampHeaders) {
-        super(amsHeader);
-        this.length = requireNonNull(length);
-        this.stamps = requireNonNull(stamps);
-        this.adsStampHeaders = requireNonNull(adsStampHeaders);
-        lengthSupplier = null;
-    }
-
-    private AdsDeviceNotificationRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Stamps stamps, List<AdsStampHeader> adsStampHeaders) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.length = null;
-        this.stamps = requireNonNull(stamps);
-        this.adsStampHeaders = requireNonNull(adsStampHeaders);
-        this.lengthSupplier = () -> {
-            long aggregateLength = 0;
-            for (LengthSupplier supplier : adsStampHeaders) {
-                aggregateLength += supplier.getCalculatedLength();
-            }
-            return aggregateLength + Stamps.NUM_BYTES;
-        };
-    }
-
-    public static AdsDeviceNotificationRequest of(AmsHeader amsHeader, Length length, Stamps stamps, List<AdsStampHeader> adsStampHeaders) {
-        return new AdsDeviceNotificationRequest(amsHeader, length, stamps, adsStampHeaders);
-    }
-
-    public static AdsDeviceNotificationRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Stamps stamps, List<AdsStampHeader> adsStampHeaders) {
-        return new AdsDeviceNotificationRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, stamps, adsStampHeaders);
-    }
-
-    public Length getLength() {
-        return lengthSupplier == null ? length : Length.of(lengthSupplier);
-    }
-
-    public Stamps getStamps() {
-        return stamps;
-    }
-
-    public List<AdsStampHeader> getAdsStampHeaders() {
-        return adsStampHeaders;
-    }
-
-    public LengthSupplier getLengthSupplier() {
-        return lengthSupplier;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(getLength(), stamps, buildADSData(adsStampHeaders.toArray(new ByteReadable[adsStampHeaders.size()])));
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsDeviceNotificationRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsDeviceNotificationRequest that = (AdsDeviceNotificationRequest) o;
-
-        if (!getLength().equals(that.getLength()))
-            return false;
-        if (!stamps.equals(that.stamps))
-            return false;
-
-        return adsStampHeaders.equals(that.adsStampHeaders);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + getLength().hashCode();
-        result = 31 * result + stamps.hashCode();
-        result = 31 * result + adsStampHeaders.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsDeviceNotificationRequest{" +
-            "length=" + getLength() +
-            ", stamps=" + stamps +
-            ", adsStampHeaders=" + adsStampHeaders +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeviceNotificationResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeviceNotificationResponse.java
deleted file mode 100644
index d9505d044..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsDeviceNotificationResponse.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-
-/**
- * Data will carry forward independently from an ADS device to a Client
- */
-@AdsCommandType(Command.ADS_DEVICE_NOTIFICATION)
-public class AdsDeviceNotificationResponse extends AdsAbstractResponse {
-
-    protected AdsDeviceNotificationResponse() {
-        super(null);
-        // There is no {@link AdsDeviceNotificationResponse} specified
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return AdsData.EMPTY;
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadDeviceInfoRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadDeviceInfoRequest.java
deleted file mode 100644
index 0f34525b4..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadDeviceInfoRequest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-/**
- * Reads the name and the version number of the ADS device.
- * <p>
- * No additional data required
- */
-@AdsCommandType(Command.ADS_READ_DEVICE_INFO)
-public class AdsReadDeviceInfoRequest extends AdsAbstractRequest {
-
-    private AdsReadDeviceInfoRequest(AmsHeader amsHeader) {
-        super(amsHeader);
-    }
-
-    private AdsReadDeviceInfoRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-    }
-
-    public static AdsReadDeviceInfoRequest of(AmsHeader amsHeader) {
-        return new AdsReadDeviceInfoRequest(amsHeader);
-    }
-
-    public static AdsReadDeviceInfoRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId) {
-        return new AdsReadDeviceInfoRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return AdsData.EMPTY;
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadDeviceInfoResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadDeviceInfoResponse.java
deleted file mode 100644
index 63ed05b3a..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadDeviceInfoResponse.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.*;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Reads the name and the version number of the ADS device.
- */
-@AdsCommandType(Command.ADS_READ_DEVICE_INFO)
-public class AdsReadDeviceInfoResponse extends AdsAbstractResponse {
-    /**
-     * 4 bytes	ADS error number.
-     */
-    private final Result result;
-    /**
-     * Version	1 byte	Major version number
-     */
-    private final MajorVersion majorVersion;
-    /**
-     * Version	1 byte	Minor version number
-     */
-    private final MinorVersion minorVersion;
-    /**
-     * Build	2 bytes	Build number
-     */
-    private final Version version;
-    /**
-     * Name	16 bytes	Name of ADS device
-     */
-    private final Device device;
-
-    private AdsReadDeviceInfoResponse(AmsHeader amsHeader, Result result, MajorVersion majorVersion, MinorVersion minorVersion, Version version, Device device) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-        this.majorVersion = requireNonNull(majorVersion);
-        this.minorVersion = requireNonNull(minorVersion);
-        this.version = requireNonNull(version);
-        this.device = requireNonNull(device);
-    }
-
-    private AdsReadDeviceInfoResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, MajorVersion majorVersion, MinorVersion minorVersion, Version version, Device device) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-        this.majorVersion = requireNonNull(majorVersion);
-        this.minorVersion = requireNonNull(minorVersion);
-        this.version = requireNonNull(version);
-        this.device = requireNonNull(device);
-    }
-
-    public static AdsReadDeviceInfoResponse of(AmsHeader amsHeader, Result result, MajorVersion majorVersion, MinorVersion minorVersion, Version version, Device device) {
-        return new AdsReadDeviceInfoResponse(amsHeader, result, majorVersion, minorVersion, version, device);
-    }
-
-    public static AdsReadDeviceInfoResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, MajorVersion majorVersion, MinorVersion minorVersion, Version version, Device device) {
-        return new AdsReadDeviceInfoResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result, majorVersion, minorVersion, version, device);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public MajorVersion getMajorVersion() {
-        return majorVersion;
-    }
-
-    public MinorVersion getMinorVersion() {
-        return minorVersion;
-    }
-
-    public Version getVersion() {
-        return version;
-    }
-
-    public Device getDevice() {
-        return device;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result, majorVersion, minorVersion, version, device);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsReadDeviceInfoResponse))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsReadDeviceInfoResponse that = (AdsReadDeviceInfoResponse) o;
-
-        if (!result.equals(that.result))
-            return false;
-        if (!majorVersion.equals(that.majorVersion))
-            return false;
-        if (!minorVersion.equals(that.minorVersion))
-            return false;
-        if (!version.equals(that.version))
-            return false;
-
-        return device.equals(that.device);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        result1 = 31 * result1 + majorVersion.hashCode();
-        result1 = 31 * result1 + minorVersion.hashCode();
-        result1 = 31 * result1 + version.hashCode();
-        result1 = 31 * result1 + device.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReadDeviceInfoResponse{" +
-            "result=" + result +
-            ", majorVersion=" + majorVersion +
-            ", minorVersion=" + minorVersion +
-            ", version=" + version +
-            ", device=" + device +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadRequest.java
deleted file mode 100644
index d6e87eda5..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadRequest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.IndexGroup;
-import org.apache.plc4x.java.ads.api.commands.types.IndexOffset;
-import org.apache.plc4x.java.ads.api.commands.types.Length;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * With ADS Read data can be read from an ADS device.  The data are addressed by the Index Group and the Index Offset
- */
-@AdsCommandType(Command.ADS_READ)
-public class AdsReadRequest extends AdsAbstractRequest {
-
-    /**
-     * 4 bytes	Index Group of the data which should be read.
-     */
-    private final IndexGroup indexGroup;
-
-    /**
-     * 4 bytes	Index Offset of the data which should be read.
-     */
-    private final IndexOffset indexOffset;
-
-    /**
-     * 4 bytes	Length of the data (in bytes) which should be read.
-     */
-    private final Length length;
-
-    private AdsReadRequest(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, Length length) {
-        super(amsHeader);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.length = requireNonNull(length);
-    }
-
-    private AdsReadRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, Length length) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.length = requireNonNull(length);
-    }
-
-    public static AdsReadRequest of(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, Length length) {
-        return new AdsReadRequest(amsHeader, indexGroup, indexOffset, length);
-    }
-
-    public static AdsReadRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, Length length) {
-        return new AdsReadRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, indexGroup, indexOffset, length);
-    }
-
-    public IndexGroup getIndexGroup() {
-        return indexGroup;
-    }
-
-    public IndexOffset getIndexOffset() {
-        return indexOffset;
-    }
-
-    public Length getLength() {
-        return length;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(indexGroup, indexOffset, length);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsReadRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsReadRequest that = (AdsReadRequest) o;
-
-        if (!indexGroup.equals(that.indexGroup))
-            return false;
-        if (!indexOffset.equals(that.indexOffset))
-            return false;
-
-        return length.equals(that.length);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + indexGroup.hashCode();
-        result = 31 * result + indexOffset.hashCode();
-        result = 31 * result + length.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReadRequest{" +
-            "indexGroup=" + indexGroup +
-            ", indexOffset=" + indexOffset +
-            ", length=" + length +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadResponse.java
deleted file mode 100644
index 0723d32b7..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadResponse.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.Data;
-import org.apache.plc4x.java.ads.api.commands.types.Length;
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * With ADS Read data can be read from an ADS device
- */
-@AdsCommandType(Command.ADS_READ)
-public class AdsReadResponse extends AdsAbstractResponse {
-
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-    /**
-     * 4 bytes	Length of data which are supplied back.
-     */
-    private final Length length;
-    /**
-     * n bytes	Data which are supplied back.
-     */
-    private final Data data;
-
-    private final transient LengthSupplier lengthSupplier;
-
-    private AdsReadResponse(AmsHeader amsHeader, Result result, Length length, Data data) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-        this.length = requireNonNull(length);
-        this.data = requireNonNull(data);
-        this.lengthSupplier = null;
-    }
-
-    private AdsReadResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, Data data) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-        this.length = null;
-        this.data = requireNonNull(data);
-        this.lengthSupplier = data;
-    }
-
-    public static AdsReadResponse of(AmsHeader amsHeader, Result result, Length length, Data data) {
-        return new AdsReadResponse(amsHeader, result, length, data);
-    }
-
-    public static AdsReadResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, Data data) {
-        return new AdsReadResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result, data);
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result, getLength(), data);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public Length getLength() {
-        return lengthSupplier == null ? length : Length.of(lengthSupplier);
-    }
-
-    public Data getData() {
-        return data;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof AdsReadResponse)) {
-            return false;
-        }
-        if (!super.equals(o)) {
-            return false;
-        }
-
-        AdsReadResponse that = (AdsReadResponse) o;
-
-        if (!result.equals(that.result)) {
-            return false;
-        }
-        if (!getLength().equals(that.getLength())) {
-            return false;
-        }
-
-        return data.equals(that.data);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        result1 = 31 * result1 + getLength().hashCode();
-        result1 = 31 * result1 + data.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReadResponse{" +
-            "result=" + result +
-            ", length=" + getLength() +
-            ", data=" + data +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadStateRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadStateRequest.java
deleted file mode 100644
index 91fcce7fd..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadStateRequest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-/**
- * Reads the ADS status and the device status of an ADS device.
- * <p>
- * No additional data required
- */
-@AdsCommandType(Command.ADS_READ_STATE)
-public class AdsReadStateRequest extends AdsAbstractRequest {
-
-    private AdsReadStateRequest(AmsHeader amsHeader) {
-        super(amsHeader);
-    }
-
-    private AdsReadStateRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-    }
-
-    public static AdsReadStateRequest of(AmsHeader amsHeader) {
-        return new AdsReadStateRequest(amsHeader);
-    }
-
-    public static AdsReadStateRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId) {
-        return new AdsReadStateRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return AdsData.EMPTY;
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadStateResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadStateResponse.java
deleted file mode 100644
index 6aed44ed8..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadStateResponse.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.AdsState;
-import org.apache.plc4x.java.ads.api.commands.types.DeviceState;
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Reads the ADS status and the device status of an ADS device.
- */
-@AdsCommandType(Command.ADS_READ_STATE)
-public class AdsReadStateResponse extends AdsAbstractResponse {
-
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-
-    /**
-     * 2 bytes	New ADS status (see data type ADSSTATE of the ADS-DLL).
-     */
-    private final AdsState adsState;
-
-    /**
-     * 2 bytes	New device status.
-     */
-    private final DeviceState deviceState;
-
-    private AdsReadStateResponse(AmsHeader amsHeader, Result result, AdsState adsState, DeviceState deviceState) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-        this.adsState = requireNonNull(adsState);
-        this.deviceState = requireNonNull(deviceState);
-    }
-
-    private AdsReadStateResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, AdsState adsState, DeviceState deviceState) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-        this.adsState = requireNonNull(adsState);
-        this.deviceState = requireNonNull(deviceState);
-    }
-
-    public static AdsReadStateResponse of(AmsHeader amsHeader, Result result, AdsState adsState, DeviceState deviceState) {
-        return new AdsReadStateResponse(amsHeader, result, adsState, deviceState);
-    }
-
-    public static AdsReadStateResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, AdsState adsState, DeviceState deviceState) {
-        return new AdsReadStateResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result, adsState, deviceState);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public AdsState getAdsState() {
-        return adsState;
-    }
-
-    public DeviceState getDeviceState() {
-        return deviceState;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result, adsState, deviceState);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof AdsReadStateResponse)) return false;
-        if (!super.equals(o)) return false;
-
-        AdsReadStateResponse that = (AdsReadStateResponse) o;
-
-        if (!result.equals(that.result)) return false;
-        if (!adsState.equals(that.adsState)) return false;
-        return deviceState.equals(that.deviceState);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        result1 = 31 * result1 + adsState.hashCode();
-        result1 = 31 * result1 + deviceState.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReadStateResponse{" +
-            "result=" + result +
-            ", adsState=" + adsState +
-            ", deviceState=" + deviceState +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadWriteRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadWriteRequest.java
deleted file mode 100644
index d4e804adf..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadWriteRequest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.*;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * With ADS Read Write data will be written to an ADS device. Additionally, data can be read from the ADS device.
- * <p>
- * The data which can be read are addressed by the Index Group and the Index Offset
- */
-@AdsCommandType(Command.ADS_READ_WRITE)
-public class AdsReadWriteRequest extends AdsAbstractRequest {
-
-    /**
-     * 4 bytes	Index Group, in which the data should be written.
-     */
-    private final IndexGroup indexGroup;
-    /**
-     * 4 bytes	Index Offset, in which the data should be written
-     */
-    private final IndexOffset indexOffset;
-    /**
-     * 4 bytes	Length of data in bytes, which should be read.
-     */
-    private final ReadLength readLength;
-    /**
-     * 4 bytes	Length of data in bytes, which should be written
-     */
-    private final WriteLength writeLength;
-    /**
-     * n bytes	Data which are written in the ADS device.
-     */
-    private final Data data;
-
-    private final transient LengthSupplier writeLengthSupplier;
-
-    private AdsReadWriteRequest(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, ReadLength readLength, WriteLength writeLength, Data data) {
-        super(amsHeader);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.readLength = requireNonNull(readLength);
-        this.writeLength = requireNonNull(writeLength);
-        this.data = requireNonNull(data);
-        this.writeLengthSupplier = null;
-    }
-
-    private AdsReadWriteRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, ReadLength readLength, Data data) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.readLength = requireNonNull(readLength);
-        this.writeLength = null;
-        this.data = requireNonNull(data);
-        this.writeLengthSupplier = data;
-    }
-
-    public static AdsReadWriteRequest of(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, ReadLength readLength, WriteLength writeLength, Data data) {
-        return new AdsReadWriteRequest(amsHeader, indexGroup, indexOffset, readLength, writeLength, data);
-    }
-
-    public static AdsReadWriteRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, ReadLength readLength, Data data) {
-        return new AdsReadWriteRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, indexGroup, indexOffset, readLength, data);
-    }
-
-    public IndexGroup getIndexGroup() {
-        return indexGroup;
-    }
-
-    public IndexOffset getIndexOffset() {
-        return indexOffset;
-    }
-
-    public ReadLength getReadLength() {
-        return readLength;
-    }
-
-    public WriteLength getWriteLength() {
-        return writeLengthSupplier == null ? writeLength : WriteLength.of(writeLengthSupplier.getCalculatedLength());
-    }
-
-    public Data getData() {
-        return data;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(indexGroup, indexOffset, readLength, getWriteLength(), data);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsReadWriteRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsReadWriteRequest that = (AdsReadWriteRequest) o;
-
-        if (!indexGroup.equals(that.indexGroup))
-            return false;
-        if (!indexOffset.equals(that.indexOffset))
-            return false;
-        if (!readLength.equals(that.readLength))
-            return false;
-        if (!getWriteLength().equals(that.getWriteLength()))
-            return false;
-
-        return data.equals(that.data);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + indexGroup.hashCode();
-        result = 31 * result + indexOffset.hashCode();
-        result = 31 * result + readLength.hashCode();
-        result = 31 * result + getWriteLength().hashCode();
-        result = 31 * result + data.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReadWriteRequest{" +
-            "indexGroup=" + indexGroup +
-            ", indexOffset=" + indexOffset +
-            ", readLength=" + readLength +
-            ", writeLength=" + getWriteLength() +
-            ", data=" + data +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadWriteResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadWriteResponse.java
deleted file mode 100644
index b1fe113aa..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsReadWriteResponse.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.Data;
-import org.apache.plc4x.java.ads.api.commands.types.Length;
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * With ADS Read Write data will be written to an ADS device. Additionally, data can be read from the ADS device.
- */
-@AdsCommandType(Command.ADS_READ_WRITE)
-public class AdsReadWriteResponse extends AdsAbstractResponse {
-
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-
-    /**
-     * 4 bytes	Length of data which are supplied back.
-     */
-    private final Length length;
-
-    /**
-     * n bytes	Data which are supplied back.
-     */
-    private final Data data;
-
-    private final transient LengthSupplier lengthSupplier;
-
-    private AdsReadWriteResponse(AmsHeader amsHeader, Result result, Length length, Data data) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-        this.length = requireNonNull(length);
-        this.data = requireNonNull(data);
-        this.lengthSupplier = null;
-    }
-
-    private AdsReadWriteResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, Data data) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-        this.length = null;
-        this.data = requireNonNull(data);
-        this.lengthSupplier = data;
-    }
-
-    public static AdsReadWriteResponse of(AmsHeader amsHeader, Result result, Length length, Data data) {
-        return new AdsReadWriteResponse(amsHeader, result, length, data);
-    }
-
-    public static AdsReadWriteResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result, Data data) {
-        return new AdsReadWriteResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result, data);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public Length getLength() {
-        return lengthSupplier == null ? length : Length.of(lengthSupplier);
-    }
-
-    public Data getData() {
-        return data;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result, getLength(), data);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsReadWriteResponse))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsReadWriteResponse that = (AdsReadWriteResponse) o;
-
-        if (!result.equals(that.result))
-            return false;
-        if (!getLength().equals(that.getLength()))
-            return false;
-        return data.equals(that.data);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        result1 = 31 * result1 + getLength().hashCode();
-        result1 = 31 * result1 + data.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReadWriteResponse{" +
-            "result=" + result +
-            ", length=" + getLength() +
-            ", data=" + data +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteControlRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteControlRequest.java
deleted file mode 100644
index a45349924..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteControlRequest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.AdsState;
-import org.apache.plc4x.java.ads.api.commands.types.Data;
-import org.apache.plc4x.java.ads.api.commands.types.DeviceState;
-import org.apache.plc4x.java.ads.api.commands.types.Length;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Changes the ADS status and the device status of an ADS device.
- * Additionally it is possible to send data to the ADS device to transfer further information.
- * These data were not analysed from the current ADS devices (PLC, NC, ...)
- */
-@AdsCommandType(Command.ADS_WRITE_CONTROL)
-public class AdsWriteControlRequest extends AdsAbstractRequest {
-
-    /**
-     * 2 bytes	New ADS status (see data type ADSSTATE of the ADS-DLL).
-     */
-    private final AdsState adsState;
-    /**
-     * 2 bytes	New device status.
-     */
-    private final DeviceState deviceState;
-    /**
-     * 4 bytes	Length of data in byte.
-     */
-    private final Length length;
-    /**
-     * n bytes	Additional data which are sent to the ADS device
-     */
-    private final Data data;
-
-    private final transient LengthSupplier lengthSupplier;
-
-    private AdsWriteControlRequest(AmsHeader amsHeader, AdsState adsState, DeviceState deviceState, Length length, Data data) {
-        super(amsHeader);
-        this.adsState = requireNonNull(adsState);
-        this.deviceState = requireNonNull(deviceState);
-        this.length = requireNonNull(length);
-        this.data = requireNonNull(data);
-        this.lengthSupplier = null;
-    }
-
-    private AdsWriteControlRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, AdsState adsState, DeviceState deviceState, Data data) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.adsState = requireNonNull(adsState);
-        this.deviceState = requireNonNull(deviceState);
-        this.length = null;
-        this.data = requireNonNull(data);
-        this.lengthSupplier = data;
-    }
-
-    public static AdsWriteControlRequest of(AmsHeader amsHeader, AdsState adsState, DeviceState deviceState, Length length, Data data) {
-        return new AdsWriteControlRequest(amsHeader, adsState, deviceState, length, data);
-    }
-
-    public static AdsWriteControlRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, AdsState adsState, DeviceState deviceState, Data data) {
-        return new AdsWriteControlRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, adsState, deviceState, data);
-    }
-
-    public AdsState getAdsState() {
-        return adsState;
-    }
-
-    public DeviceState getDeviceState() {
-        return deviceState;
-    }
-
-    public Length getLength() {
-        return lengthSupplier == null ? length : Length.of(lengthSupplier);
-    }
-
-    public Data getData() {
-        return data;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(adsState, deviceState, getLength(), data);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsWriteControlRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsWriteControlRequest that = (AdsWriteControlRequest) o;
-
-        if (!adsState.equals(that.adsState))
-            return false;
-        if (!deviceState.equals(that.deviceState))
-            return false;
-        if (!getLength().equals(that.getLength()))
-            return false;
-
-        return data.equals(that.data);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + adsState.hashCode();
-        result = 31 * result + deviceState.hashCode();
-        result = 31 * result + getLength().hashCode();
-        result = 31 * result + data.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsWriteControlRequest{" +
-            "adsState=" + adsState +
-            ", deviceState=" + deviceState +
-            ", length=" + getLength() +
-            ", data=" + data +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteControlResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteControlResponse.java
deleted file mode 100644
index 713f507b5..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteControlResponse.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Changes the ADS status and the device status of an ADS device.
- */
-@AdsCommandType(Command.ADS_WRITE_CONTROL)
-public class AdsWriteControlResponse extends AdsAbstractResponse {
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-
-    private AdsWriteControlResponse(AmsHeader amsHeader, Result result) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-    }
-
-    private AdsWriteControlResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-    }
-
-    public static AdsWriteControlResponse of(AmsHeader amsHeader, Result result) {
-        return new AdsWriteControlResponse(amsHeader, result);
-    }
-
-    public static AdsWriteControlResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result) {
-        return new AdsWriteControlResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsWriteControlResponse))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsWriteControlResponse that = (AdsWriteControlResponse) o;
-
-        return result.equals(that.result);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsWriteControlResponse{" +
-            "result=" + result +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteRequest.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteRequest.java
deleted file mode 100644
index fda07a28f..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteRequest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.Data;
-import org.apache.plc4x.java.ads.api.commands.types.IndexGroup;
-import org.apache.plc4x.java.ads.api.commands.types.IndexOffset;
-import org.apache.plc4x.java.ads.api.commands.types.Length;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * With ADS Write data can be written to an ADS device. The data are addressed by the Index Group and the Index Offset.
- */
-@AdsCommandType(Command.ADS_WRITE)
-public class AdsWriteRequest extends AdsAbstractRequest {
-
-    /**
-     * 4 bytes	Index Group in which the data should be written
-     */
-    private final IndexGroup indexGroup;
-    /**
-     * 4 bytes	Index Offset, in which the data should be written
-     */
-    private final IndexOffset indexOffset;
-    /**
-     * 4 bytes	Length of data in bytes which are written
-     */
-    private final Length length;
-    /**
-     * n bytes	Data which are written in the ADS device.
-     */
-    private final Data data;
-
-    private final transient LengthSupplier lengthSupplier;
-
-    private AdsWriteRequest(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, Length length, Data data) {
-        super(amsHeader);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.length = requireNonNull(length);
-        this.data = requireNonNull(data);
-        this.lengthSupplier = null;
-    }
-
-    private AdsWriteRequest(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, Data data) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.indexGroup = requireNonNull(indexGroup);
-        this.indexOffset = requireNonNull(indexOffset);
-        this.length = null;
-        this.data = requireNonNull(data);
-        this.lengthSupplier = data;
-    }
-
-    public static AdsWriteRequest of(AmsHeader amsHeader, IndexGroup indexGroup, IndexOffset indexOffset, Length length, Data data) {
-        return new AdsWriteRequest(amsHeader, indexGroup, indexOffset, length, data);
-    }
-
-    public static AdsWriteRequest of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, IndexGroup indexGroup, IndexOffset indexOffset, Data data) {
-        return new AdsWriteRequest(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, indexGroup, indexOffset, data);
-    }
-
-    public IndexGroup getIndexGroup() {
-        return indexGroup;
-    }
-
-    public IndexOffset getIndexOffset() {
-        return indexOffset;
-    }
-
-    public Length getLength() {
-        return lengthSupplier == null ? length : Length.of(lengthSupplier);
-    }
-
-    public Data getData() {
-        return data;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(indexGroup, indexOffset, getLength(), data);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsWriteRequest))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsWriteRequest that = (AdsWriteRequest) o;
-
-        if (!indexGroup.equals(that.indexGroup))
-            return false;
-        if (!indexOffset.equals(that.indexOffset))
-            return false;
-        if (!getLength().equals(that.getLength()))
-            return false;
-
-        return data.equals(that.data);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + indexGroup.hashCode();
-        result = 31 * result + indexOffset.hashCode();
-        result = 31 * result + getLength().hashCode();
-        result = 31 * result + data.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsWriteRequest{" +
-            "indexGroup=" + indexGroup +
-            ", indexOffset=" + indexOffset +
-            ", length=" + getLength() +
-            ", data=" + data +
-            "} " + super.toString();
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteResponse.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteResponse.java
deleted file mode 100644
index fc1e0a4ac..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/AdsWriteResponse.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import org.apache.plc4x.java.ads.api.commands.types.Result;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.types.AmsNetId;
-import org.apache.plc4x.java.ads.api.generic.types.AmsPort;
-import org.apache.plc4x.java.ads.api.generic.types.Command;
-import org.apache.plc4x.java.ads.api.generic.types.Invoke;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * With ADS Write data can be written to an ADS device.
- */
-@AdsCommandType(Command.ADS_WRITE)
-public class AdsWriteResponse extends AdsAbstractResponse {
-
-    /**
-     * 4 bytes	ADS error number
-     */
-    private final Result result;
-
-    private AdsWriteResponse(AmsHeader amsHeader, Result result) {
-        super(amsHeader);
-        this.result = requireNonNull(result);
-    }
-
-    private AdsWriteResponse(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId);
-        this.result = requireNonNull(result);
-    }
-
-    public static AdsWriteResponse of(AmsHeader amsHeader, Result result) {
-        return new AdsWriteResponse(amsHeader, result);
-    }
-
-    public static AdsWriteResponse of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Invoke invokeId, Result result) {
-        return new AdsWriteResponse(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, result);
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return buildADSData(result);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsWriteResponse))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        AdsWriteResponse that = (AdsWriteResponse) o;
-
-        return result.equals(that.result);
-    }
-
-    @Override
-    public int hashCode() {
-        int result1 = super.hashCode();
-        result1 = 31 * result1 + result.hashCode();
-        return result1;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsWriteResponse{" +
-            "result=" + result +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/UnknownCommand.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/UnknownCommand.java
deleted file mode 100644
index 76f21315c..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/UnknownCommand.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.generic.AdsData;
-import org.apache.plc4x.java.ads.api.generic.AmsHeader;
-import org.apache.plc4x.java.ads.api.generic.AmsPacket;
-import org.apache.plc4x.java.ads.api.generic.types.*;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Unknown ADS Package
- */
-@AdsCommandType(Command.UNKNOWN)
-public class UnknownCommand extends AmsPacket {
-
-    private final transient ByteBuf remainingBytes;
-
-    private UnknownCommand(AmsHeader amsHeader, ByteBuf remainingBytes) {
-        super(amsHeader);
-        this.remainingBytes = requireNonNull(remainingBytes);
-    }
-
-    private UnknownCommand(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, State stateId, Invoke invokeId, ByteBuf remainingBytes) {
-        super(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, stateId, invokeId);
-        this.remainingBytes = requireNonNull(remainingBytes);
-    }
-
-    @Override
-    public AdsData getAdsData() {
-        return () -> remainingBytes;
-    }
-
-    public static UnknownCommand of(AmsHeader amsHeader, ByteBuf remainingBytes) {
-        return new UnknownCommand(amsHeader, remainingBytes);
-    }
-
-    public static UnknownCommand of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, State stateId, Invoke invokeId, ByteBuf remainingBytes) {
-        return new UnknownCommand(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, stateId, invokeId, remainingBytes);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof UnknownCommand)) {
-            return false;
-        }
-        if (!super.equals(o)) {
-            return false;
-        }
-
-        UnknownCommand that = (UnknownCommand) o;
-
-        return remainingBytes.equals(that.remainingBytes);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + remainingBytes.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "UnknownCommand";
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/package-info.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/package-info.java
deleted file mode 100644
index 8b7b838bb..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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.
- */
-/**
- * This package contains ams/ads generic commands.
- */
-package org.apache.plc4x.java.ads.api.commands;
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsNotificationSample.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsNotificationSample.java
deleted file mode 100644
index dbe290e18..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsNotificationSample.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-public class AdsNotificationSample implements ByteReadable {
-
-    /**
-     * 4 Bytes	Handle of notification.
-     */
-    private final NotificationHandle notificationHandle;
-    /**
-     * 4 Bytes	Size of data range in bytes.
-     */
-    private final SampleSize sampleSize;
-    /**
-     * n Bytes	Data
-     */
-    private final Data data;
-
-    private final transient LengthSupplier lengthSupplier;
-
-    private AdsNotificationSample(NotificationHandle notificationHandle, Data data) {
-        this.notificationHandle = requireNonNull(notificationHandle);
-        this.sampleSize = null;
-        this.data = requireNonNull(data);
-        lengthSupplier = data;
-    }
-
-    private AdsNotificationSample(NotificationHandle notificationHandle, SampleSize sampleSize, Data data) {
-        this.notificationHandle = requireNonNull(notificationHandle);
-        this.sampleSize = requireNonNull(sampleSize);
-        this.data = requireNonNull(data);
-        lengthSupplier = null;
-    }
-
-    public static AdsNotificationSample of(NotificationHandle notificationHandle, Data data) {
-        return new AdsNotificationSample(notificationHandle, data);
-    }
-
-    public static AdsNotificationSample of(NotificationHandle notificationHandle, SampleSize sampleSize, Data data) {
-        return new AdsNotificationSample(notificationHandle, sampleSize, data);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(notificationHandle, getSampleSize(), data);
-    }
-
-    public NotificationHandle getNotificationHandle() {
-        return notificationHandle;
-    }
-
-    public SampleSize getSampleSize() {
-        return lengthSupplier == null ? sampleSize : SampleSize.of(lengthSupplier);
-    }
-
-    public Data getData() {
-        return data;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsNotificationSample))
-            return false;
-
-        AdsNotificationSample that = (AdsNotificationSample) o;
-
-        if (!notificationHandle.equals(that.notificationHandle))
-            return false;
-        if (!data.equals(that.data))
-            return false;
-
-        return getSampleSize().equals(that.getSampleSize());
-    }
-
-    @Override
-    public int hashCode() {
-        int result = notificationHandle.hashCode();
-        result = 31 * result + data.hashCode();
-        result = 31 * result + getSampleSize().hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsNotificationSample{" +
-            "notificationHandle=" + notificationHandle +
-            ", sampleSize=" + getSampleSize() +
-            ", data=" + data +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsReturnCode.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsReturnCode.java
deleted file mode 100644
index e1faa4334..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsReturnCode.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import static java.lang.Long.toHexString;
-import static java.util.Objects.requireNonNull;
-
-/**
- * Based on spec from: https://infosys.beckhoff.com/content/1033/tcadscommon/html/ads_returncodes.htm
- */
-// Error codes: 0x000..., 0x500..., 0x700..., 0x1000..., 0x274C...
-public enum AdsReturnCode {
-    // Global Error Codes
-    ADS_CODE_0(0x0, 0, "no error"),
-    ADS_CODE_1(0x1, 1, "Internal error"),
-    ADS_CODE_2(0x2, 2, "No Rtime"),
-    ADS_CODE_3(0x3, 3, "Allocation locked memory error"),
-    ADS_CODE_4(0x4, 4, "Insert mailbox error", "No ADS mailbox was available to process this message.", "Reduce the number of ADS calls (e.g ADS-Sum commands or Max Delay Parameter)"),
-    ADS_CODE_5(0x5, 5, "Wrong receive HMSG"),
-    ADS_CODE_6(0x6, 6, "target port not found", "ADS Server not started"),
-    ADS_CODE_7(0x7, 7, "target machine not found", "Missing ADS routes"),
-    ADS_CODE_8(0x8, 8, "Unknown command ID"),
-    ADS_CODE_9(0x9, 9, "Bad task ID"),
-    ADS_CODE_10(0xA, 10, "No IO"),
-    ADS_CODE_11(0xB, 11, "Unknown ADS command"),
-    ADS_CODE_12(0xC, 12, "Win 32 error"),
-    ADS_CODE_13(0xD, 13, "Port not connected"),
-    ADS_CODE_14(0xE, 14, "Invalid ADS length"),
-    ADS_CODE_15(0xF, 15, "Invalid ADS Net ID"),
-    ADS_CODE_16(0x10, 16, "Low Installation level"),
-    ADS_CODE_17(0x11, 17, "No debug available"),
-    ADS_CODE_18(0x12, 18, "Port disabled"),
-    ADS_CODE_19(0x13, 19, "Port already connected"),
-    ADS_CODE_20(0x14, 20, "ADS Sync Win32 error"),
-    ADS_CODE_21(0x15, 21, "ADS Sync Timeout"),
-    ADS_CODE_22(0x16, 22, "ADS Sync AMS error"),
-    ADS_CODE_23(0x17, 23, "ADS Sync no index map"),
-    ADS_CODE_24(0x18, 24, "Invalid ADS port"),
-    ADS_CODE_25(0x19, 25, "No memory"),
-    ADS_CODE_26(0x1A, 26, "TCP send error"),
-    ADS_CODE_27(0x1B, 27, "Host unreachable"),
-    ADS_CODE_28(0x1C, 28, "Invalid AMS fragment"),
-
-
-    // Router Error Codes
-    ADS_CODE_1280(0x500, 1280, "ROUTERERR_NOLOCKEDMEMORY", "No locked memory can be allocated"),
-    ADS_CODE_1281(0x501, 1281, "ROUTERERR_RESIZEMEMORY", "The size of the  router memory could not be changed"),
-    ADS_CODE_1282(0x502, 1282, "ROUTERERR_MAILBOXFULL", "The mailbox has reached the maximum number of possible messages. The current sent message was rejected", "Check the connection between the communication partners"),
-    ADS_CODE_1283(0x503, 1283, "ROUTERERR_DEBUGBOXFULL ", "The mailbox has reached the maximum number of possible messages.The sent message will not be displayed in the debug monitor", "Check the connection to the debug monitor"),
-    ADS_CODE_1284(0x504, 1284, "ROUTERERR_UNKNOWNPORTTYPE ", "The port type is unknown"),
-    ADS_CODE_1285(0x505, 1285, "ROUTERERR_NOTINITIALIZED", "Router is not initialised"),
-    ADS_CODE_1286(0x506, 1286, "ROUTERERR_PORTALREADYINUSE ", "The desired port number is already assigned"),
-    ADS_CODE_1287(0x507, 1287, "ROUTERERR_NOTREGISTERED ", "Port not registered"),
-    ADS_CODE_1288(0x508, 1288, "ROUTERERR_NOMOREQUEUES", "The maximum number of Ports reached"),
-    ADS_CODE_1289(0x509, 1289, "ROUTERERR_INVALIDPORT ", "The port is invalid."),
-    ADS_CODE_1290(0x50A, 1290, "ROUTERERR_NOTACTIVATED ", "TwinCAT Router not active"),
-    ADS_CODE_1291(0x50B, 1291, "ROUTERERR_FRAGMENTBOXFULL"),
-    ADS_CODE_1292(0x50C, 1292, "ROUTERERR_FRAGMENTTIMEOUT"),
-    ADS_CODE_1293(0x50D, 1293, "ROUTERERR_TOBEREMOVED"),
-
-
-    // General ADS Error Codes
-    ADS_CODE_1792(0x700, 1792, "error class <device error>"),
-    ADS_CODE_1793(0x701, 1793, "Service is not supported by server"),
-    ADS_CODE_1794(0x702, 1794, "invalid index group"),
-    ADS_CODE_1795(0x703, 1795, "invalid index offset"),
-    ADS_CODE_1796(0x704, 1796, "reading/writing not permitted"),
-    ADS_CODE_1797(0x705, 1797, "parameter size not correct"),
-    ADS_CODE_1798(0x706, 1798, "invalid parameter value(s)"),
-    ADS_CODE_1799(0x707, 1799, "device is not in a ready state"),
-    ADS_CODE_1800(0x708, 1800, "device is busy"),
-    ADS_CODE_1801(0x709, 1801, "invalid context (must be in Windows)"),
-    ADS_CODE_1802(0x70A, 1802, "out of memory"),
-    ADS_CODE_1803(0x70B, 1803, "invalid parameter value(s)"),
-    ADS_CODE_1804(0x70C, 1804, "not found (files, ...)"),
-    ADS_CODE_1805(0x70D, 1805, "syntax error in command or file"),
-    ADS_CODE_1806(0x70E, 1806, "objects do not match"),
-    ADS_CODE_1807(0x70F, 1807, "object already exists"),
-    ADS_CODE_1808(0x710, 1808, "symbol not found"),
-    ADS_CODE_1809(0x711, 1809, "symbol version invalid", "Onlinechange", "Release handle and get a new one"),
-    ADS_CODE_1810(0x712, 1810, "server is in invalid state"),
-    ADS_CODE_1811(0x713, 1811, "AdsTransMode not supported"),
-    ADS_CODE_1812(0x714, 1812, "Notification handle is invalid", "Onlinechange", "Release handle and get a new one"),
-    ADS_CODE_1813(0x715, 1813, "Notification client not registered"),
-    ADS_CODE_1814(0x716, 1814, "no more notification handles"),
-    ADS_CODE_1815(0x717, 1815, "size for watch too big"),
-    ADS_CODE_1816(0x718, 1816, "device not initialized"),
-    ADS_CODE_1817(0x719, 1817, "device has a timeout"),
-    ADS_CODE_1818(0x71A, 1818, "query interface failed"),
-    ADS_CODE_1819(0x71B, 1819, "wrong interface required"),
-    ADS_CODE_1820(0x71C, 1820, "class ID is invalid"),
-    ADS_CODE_1821(0x71D, 1821, "object ID is invalid"),
-    ADS_CODE_1822(0x71E, 1822, "request is pending"),
-    ADS_CODE_1823(0x71F, 1823, "request is aborted"),
-    ADS_CODE_1824(0x720, 1824, "signal warning"),
-    ADS_CODE_1825(0x721, 1825, "invalid array index"),
-    ADS_CODE_1826(0x722, 1826, "symbol not active", "Onlinechange", "Release handle and get a new one"),
-    ADS_CODE_1827(0x723, 1827, "access denied"),
-    ADS_CODE_1828(0x724, 1828, "missing license ", "", "Activate license for TwinCAT 3 function"),
-    ADS_CODE_1836(0x72c, 1836, "exception occured during system start", "", "Check each device transistions"),
-    ADS_CODE_1856(0x740, 1856, "Error class <client error>"),
-    ADS_CODE_1857(0x741, 1857, "invalid parameter at service"),
-    ADS_CODE_1858(0x742, 1858, "polling list is empty"),
-    ADS_CODE_1859(0x743, 1859, "var connection already in use"),
-    ADS_CODE_1860(0x744, 1860, "invoke ID in use"),
-    ADS_CODE_1861(0x745, 1861, "timeout elapsed", "", "Check ADS routes of sender and receiver and your firewall setting"),
-    ADS_CODE_1862(0x746, 1862, "error in win32 subsystem"),
-    ADS_CODE_1863(0x747, 1863, "Invalid client timeout value"),
-    ADS_CODE_1864(0x748, 1864, "ads-port not opened"),
-    ADS_CODE_1872(0x750, 1872, "internal error in ads sync"),
-    ADS_CODE_1873(0x751, 1873, "hash table overflow"),
-    ADS_CODE_1874(0x752, 1874, "key not found in hash"),
-    ADS_CODE_1875(0x753, 1875, "no more symbols in cache"),
-    ADS_CODE_1876(0x754, 1876, "invalid response received"),
-    ADS_CODE_1877(0x755, 1877, "sync port is locked"),
-
-
-    // RTime Error Codes
-    ADS_CODE_4096(0x1000, 4096, "RTERR_INTERNAL ", "Internal fatal error in the TwinCAT real-time system"),
-    ADS_CODE_4097(0x1001, 4097, "RTERR_BADTIMERPERIODS", "Timer value not vaild"),
-    ADS_CODE_4098(0x1002, 4098, "RTERR_INVALIDTASKPTR", "Task pointer has the invalid value ZERO"),
-    ADS_CODE_4099(0x1003, 4099, "RTERR_INVALIDSTACKPTR", "Task stack pointer has the invalid value ZERO"),
-    ADS_CODE_4100(0x1004, 4100, "RTERR_PRIOEXISTS", "The demand task priority is already assigned"),
-    ADS_CODE_4101(0x1005, 4101, "RTERR_NOMORETCB", "No more free TCB (Task Control Block) available. Maximum number of TCBs is 64"),
-    ADS_CODE_4102(0x1006, 4102, "RTERR_NOMORESEMAS", "No more free semaphores available. Maximum number of semaphores is 64"),
-    ADS_CODE_4103(0x1007, 4103, "RTERR_NOMOREQUEUES", "No more free queue available. Maximum number of queue is 64"),
-    ADS_CODE_4104(0x1008, 4104, "TwinCAT ", "reserved."),
-    ADS_CODE_4105(0x1009, 4105, "TwinCAT ", "reserved."),
-    ADS_CODE_4106(0x100A, 4106, "TwinCAT ", "reserved."),
-    ADS_CODE_4107(0x100B, 4107, "TwinCAT ", "reserved."),
-    ADS_CODE_4108(0x100C, 4108, "TwinCAT ", "reserved."),
-    ADS_CODE_4109(0x100D, 4109, "RTERR_EXTIRQALREADYDEF", "An external synchronisation interrupt is already applied"),
-    ADS_CODE_4110(0x100E, 4110, "RTERR_EXTIRQNOTDEF", "No external synchronsiation interrupt applied"),
-    ADS_CODE_4111(0x100F, 4111, "RTERR_EXTIRQINSTALLFAILED", "The apply of the external synchronisation interrupt failed"),
-    ADS_CODE_4112(0x1010, 4112, "RTERR_IRQLNOTLESSOREQUAL", "Call of a service function in the wrong context"),
-    ADS_CODE_4119(0x1017, 4119, "RTERR_VMXNOTSUPPORTED", "Intel VT-x extension is not supported."),
-    ADS_CODE_4120(0x1018, 4120, "RTERR_VMXDISABLED", "Intel VT-x extension is not enabled in BIOS."),
-    ADS_CODE_4121(0x1019, 4121, "RTERR_VMXCONTROLSMISSING", "Missing feature in Intel VT-x extension."),
-    ADS_CODE_4122(0x101A, 4122, "RTERR_VMXENABLEFAILS", "Enabling Intel VT-x fails."),
-
-
-    // TCP Winsock Error Codes
-    ADS_CODE_10060(0x274c, 10060, "A socket operation was attempted to an unreachable host", "Host unreachable", "Check network connection via ping"),
-    ADS_CODE_10061(0x274d, 10061, "A connection attempt failed because the connected party did not properly respond after a period of time,or established connection failed because connected host has failed to respond.", "Host unreachable", "Check network connection via ping"),
-    ADS_CODE_10065(0x2751, 10065, "No connection could be made because the target machine actively refused it"),
-    UNKNOWN(0, 0, "", "", "");
-
-    private final long hex;
-    private final long dec;
-    private final String description;
-    private final String possibleCauses;
-    private final String solution;
-
-    AdsReturnCode(long hex, long dec, String description) {
-        this(hex, dec, description, "");
-    }
-
-    AdsReturnCode(long hex, long dec, String description, String possibleCauses) {
-        this(hex, dec, description, possibleCauses, "");
-    }
-
-    AdsReturnCode(long hex, long dec, String description, String possibleCauses, String solution) {
-        this.hex = hex;
-        this.dec = dec;
-        if (hex != dec) {
-            throw new IllegalArgumentException("hex " + hex + " is different from dec " + dec);
-        }
-        this.description = requireNonNull(description);
-        this.possibleCauses = possibleCauses;
-        this.solution = solution;
-    }
-
-    // TODO: optimize with map
-    public static AdsReturnCode of(long hex) {
-        for (AdsReturnCode adsReturnCode : values()) {
-            if (adsReturnCode.hex == hex) {
-                return adsReturnCode;
-            }
-        }
-        return UNKNOWN;
-    }
-
-    public static AdsReturnCode of(String name) {
-        return valueOf(name);
-    }
-
-    public static AdsReturnCode ofInt(String value) {
-        return of(Long.parseLong(value));
-    }
-
-    public long getHex() {
-        return hex;
-    }
-
-    public long getDec() {
-        return dec;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public String getPossibleCauses() {
-        return possibleCauses;
-    }
-
-    public String getSolution() {
-        return solution;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsReturnCode{" +
-            "hex=" + String.format("0x%4s", toHexString(hex)).replace(' ', '0') +
-            ", dec=" + dec +
-            ", description='" + description + '\'' +
-            ", possibleCauses='" + possibleCauses + '\'' +
-            ", solution='" + solution + '\'' +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsStampHeader.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsStampHeader.java
deleted file mode 100644
index 2d5ebbb9e..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsStampHeader.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-
-import java.util.List;
-
-import static java.util.Objects.requireNonNull;
-
-public class AdsStampHeader implements ByteReadable {
-
-    /**
-     * 8 bytes	The timestamp is coded after the Windows FILETIME format. I.e. the value contains the number of the nano seconds, which passed since 1.1.1601. In addition, the local time change is not considered. Thus the time stamp is present as universal Coordinated time (UTC).
-     */
-    private final TimeStamp timeStamp;
-    /**
-     * 4 bytes	Number of elements of type AdsNotificationSample.
-     */
-    private final Samples samples;
-    /**
-     * n bytes	Array with elements of type AdsNotificationSample.
-     */
-    private final List<AdsNotificationSample> adsNotificationSamples;
-
-    private AdsStampHeader(TimeStamp timeStamp, Samples samples, List<AdsNotificationSample> adsNotificationSamples) {
-        this.timeStamp = requireNonNull(timeStamp);
-        this.samples = requireNonNull(samples);
-        this.adsNotificationSamples = requireNonNull(adsNotificationSamples);
-    }
-
-    private AdsStampHeader(TimeStamp timeStamp, List<AdsNotificationSample> adsNotificationSamples) {
-        this.timeStamp = requireNonNull(timeStamp);
-        this.adsNotificationSamples = requireNonNull(adsNotificationSamples);
-        this.samples = Samples.of(adsNotificationSamples.size());
-    }
-
-    public static AdsStampHeader of(TimeStamp timeStamp, Samples samples, List<AdsNotificationSample> adsNotificationSamples) {
-        return new AdsStampHeader(timeStamp, samples, adsNotificationSamples);
-    }
-
-    public static AdsStampHeader of(TimeStamp timeStamp, List<AdsNotificationSample> adsNotificationSamples) {
-        return new AdsStampHeader(timeStamp, adsNotificationSamples);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(timeStamp, samples, () -> buildByteBuff(adsNotificationSamples.toArray(new ByteReadable[adsNotificationSamples.size()])));
-    }
-
-    public TimeStamp getTimeStamp() {
-        return timeStamp;
-    }
-
-    public Samples getSamples() {
-        return samples;
-    }
-
-    public List<AdsNotificationSample> getAdsNotificationSamples() {
-        return adsNotificationSamples;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof AdsStampHeader))
-            return false;
-
-        AdsStampHeader that = (AdsStampHeader) o;
-
-        if (!timeStamp.equals(that.timeStamp))
-            return false;
-        if (!samples.equals(that.samples))
-            return false;
-        
-        return adsNotificationSamples.equals(that.adsNotificationSamples);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = timeStamp.hashCode();
-        result = 31 * result + samples.hashCode();
-        result = 31 * result + adsNotificationSamples.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AdsStampHeader{" +
-            "timeStamp=" + timeStamp +
-            ", samples=" + samples +
-            ", adsNotificationSamples=" + adsNotificationSamples +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java
deleted file mode 100644
index 7c858b9cf..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/AdsState.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-@SuppressWarnings("unused") // Due to predefined AdsStates
-public class AdsState extends UnsignedShortLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private AdsState(byte... values) {
-        super(values);
-    }
-
-    private AdsState(int value) {
-        super(value);
-    }
-
-    private AdsState(String value) {
-        super(value);
-    }
-
-    private AdsState(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static AdsState of(byte... values) {
-        return new AdsState(values);
-    }
-
-    public static AdsState of(int value) {
-        return new AdsState(value);
-    }
-
-    public static AdsState of(ByteBuf byteBuf) {
-        return new AdsState(byteBuf);
-    }
-
-    public static AdsState of(String value) {
-        return new AdsState(value);
-    }
-
-    // TODO: defined as enum so we might do this too similar to AdsReturnCode
-    public static final class DefinedValues {
-        public static final AdsState ADSSTATE_INVALID = AdsState.of(0);
-        public static final AdsState ADSSTATE_IDLE = AdsState.of(1);
-        public static final AdsState ADSSTATE_RESET = AdsState.of(2);
-        public static final AdsState ADSSTATE_INIT = AdsState.of(3);
-        public static final AdsState ADSSTATE_START = AdsState.of(4);
-        public static final AdsState ADSSTATE_RUN = AdsState.of(5);
-        public static final AdsState ADSSTATE_STOP = AdsState.of(6);
-        public static final AdsState ADSSTATE_SAVECFG = AdsState.of(7);
-        public static final AdsState ADSSTATE_LOADCFG = AdsState.of(8);
-        public static final AdsState ADSSTATE_POWERFAILURE = AdsState.of(9);
-        public static final AdsState ADSSTATE_POWERGOOD = AdsState.of(10);
-        public static final AdsState ADSSTATE_ERROR = AdsState.of(11);
-        public static final AdsState ADSSTATE_SHUTDOWN = AdsState.of(12);
-        public static final AdsState ADSSTATE_SUSPEND = AdsState.of(13);
-        public static final AdsState ADSSTATE_RESUME = AdsState.of(14);
-        public static final AdsState ADSSTATE_CONFIG = AdsState.of(15);
-        public static final AdsState ADSSTATE_RECONFIG = AdsState.of(16);
-        public static final AdsState ADSSTATE_STOPPING = AdsState.of(17);
-        public static final AdsState ADSSTATE_INCOMPATIBLE = AdsState.of(18);
-        public static final AdsState ADSSTATE_EXCEPTION = AdsState.of(19);
-        public static final AdsState ADSSTATE_MAXSTATES = AdsState.of(65535);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/CycleTime.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/CycleTime.java
deleted file mode 100644
index 20afbf447..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/CycleTime.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class CycleTime extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private CycleTime(byte... values) {
-        super(values);
-    }
-
-    private CycleTime(long value) {
-        super(value);
-    }
-
-    private CycleTime(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    private CycleTime(String value) {
-        super(value);
-    }
-
-    public static CycleTime of(byte... values) {
-        return new CycleTime(values);
-    }
-
-    public static CycleTime of(long value) {
-        return new CycleTime(value);
-    }
-
-    public static CycleTime of(String value) {
-        return new CycleTime(value);
-    }
-
-    public static CycleTime of(ByteBuf byteBuf) {
-        return new CycleTime(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Data.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Data.java
deleted file mode 100644
index 47ed8a918..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Data.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import java.nio.charset.Charset;
-
-import static java.util.Objects.requireNonNull;
-
-public class Data extends ByteValue {
-
-    private Data(byte... values) {
-        super(values);
-    }
-
-    public Data(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static Data of(byte... values) {
-        return new Data(values);
-    }
-
-    public static Data of(ByteBuf byteBuf) {
-        return new Data(byteBuf);
-    }
-
-    public static Data of(String value) {
-        requireNonNull(value);
-        return new Data(ArrayUtils.add(value.getBytes(), (byte) 0x0));
-    }
-
-    public static Data of(String value, Charset charset) {
-        requireNonNull(value);
-        return new Data(ArrayUtils.add(value.getBytes(charset), (byte) 0x0));
-    }
-
-    @Override
-    public String toString() {
-        // TODO: maybe we could find a way to implement this to string
-        return "Data{" + value.length + "bytes} ";
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Device.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Device.java
deleted file mode 100644
index 5d12903c5..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Device.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-import org.apache.plc4x.java.api.exceptions.PlcProtocolPayloadTooBigException;
-import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
-
-import java.nio.charset.Charset;
-import java.util.Arrays;
-
-import static java.util.Objects.requireNonNull;
-
-public class Device extends ByteValue {
-
-    public static final int NUM_BYTES = 16;
-
-    private Device(byte... values) {
-        super(values);
-        assertLength(NUM_BYTES);
-    }
-
-    public static Device of(byte... values) {
-        return new Device(values);
-    }
-
-    public static Device of(ByteBuf byteBuf) {
-        byte[] values = new byte[NUM_BYTES];
-        byteBuf.readBytes(values);
-        return of(values);
-    }
-
-    public static Device of(String value) {
-        return of(value, Charset.defaultCharset());
-    }
-
-    public static Device of(String value, Charset charset) {
-        requireNonNull(value);
-        requireNonNull(charset);
-        byte[] bytes = value.getBytes(charset);
-        if (bytes.length > NUM_BYTES) {
-            throw new PlcRuntimeException(new PlcProtocolPayloadTooBigException("ADS/AMS", NUM_BYTES, bytes.length, value));
-        }
-        return new Device(Arrays.copyOf(bytes, NUM_BYTES));
-    }
-
-    @Override
-    public long getCalculatedLength() {
-        return NUM_BYTES;
-    }
-
-    public String getAsString() {
-        return getAsString(Charset.defaultCharset());
-    }
-
-    public String getAsString(Charset charset) {
-        int nullTermination = ArrayUtils.indexOf(value, (byte) 0);
-        byte[] reducedValue = Arrays.copyOfRange(value, 0, nullTermination);
-        return new String(reducedValue, charset);
-    }
-
-    @Override
-    public String toString() {
-        // TODO: this might break some outputs like surefire if this id can contain non printable characters
-        return "Device{" + getAsString() + "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/DeviceState.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/DeviceState.java
deleted file mode 100644
index 88546ee38..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/DeviceState.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-public class DeviceState extends UnsignedShortLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private DeviceState(byte... values) {
-        super(values);
-    }
-
-    private DeviceState(int value) {
-        super(value);
-    }
-
-    private DeviceState(String value) {
-        super(value);
-    }
-
-    private DeviceState(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static DeviceState of(byte... values) {
-        return new DeviceState(values);
-    }
-
-    public static DeviceState of(int value) {
-        return new DeviceState(value);
-    }
-
-    public static DeviceState of(ByteBuf byteBuf) {
-        return new DeviceState(byteBuf);
-    }
-
-    public static DeviceState of(String value) {
-        return new DeviceState(value);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/IndexGroup.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/IndexGroup.java
deleted file mode 100644
index 6c0fcfe69..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/IndexGroup.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-@SuppressWarnings("unused") // Due to predefined IndexGroups
-public class IndexGroup extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private IndexGroup(byte... values) {
-        super(values);
-    }
-
-    private IndexGroup(long value) {
-        super(value);
-    }
-
-    private IndexGroup(String value) {
-        super(value);
-    }
-
-    private IndexGroup(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static IndexGroup of(byte... values) {
-        return new IndexGroup(values);
-    }
-
-    public static IndexGroup of(long value) {
-        return new IndexGroup(value);
-    }
-
-    public static IndexGroup of(String value) {
-        return new IndexGroup(value);
-    }
-
-    public static IndexGroup of(ByteBuf byteBuf) {
-        return new IndexGroup(byteBuf);
-    }
-
-    public static final class ReservedGroups {
-        public static final IndexGroup ADSIGRP_SYMTAB = IndexGroup.of(0xF000);
-        public static final IndexGroup ADSIGRP_SYMNAME = IndexGroup.of(0xF001);
-        public static final IndexGroup ADSIGRP_SYMVAL = IndexGroup.of(0xF002);
-        public static final IndexGroup ADSIGRP_SYM_HNDBYNAME = IndexGroup.of(0xF003);
-        public static final IndexGroup ADSIGRP_SYM_VALBYNAME = IndexGroup.of(0xF004);
-        public static final IndexGroup ADSIGRP_SYM_VALBYHND = IndexGroup.of(0xF005);
-        public static final IndexGroup ADSIGRP_SYM_RELEASEHND = IndexGroup.of(0xF006);
-        public static final IndexGroup ADSIGRP_SYM_INFOBYNAME = IndexGroup.of(0xF007);
-        public static final IndexGroup ADSIGRP_SYM_VERSION = IndexGroup.of(0xF008);
-        public static final IndexGroup ADSIGRP_SYM_INFOBYNAMEEX = IndexGroup.of(0xF009);
-        public static final IndexGroup ADSIGRP_SYM_DOWNLOAD = IndexGroup.of(0xF00A);
-        public static final IndexGroup ADSIGRP_SYM_UPLOAD = IndexGroup.of(0xF00B);
-        public static final IndexGroup ADSIGRP_SYM_UPLOADINFO = IndexGroup.of(0xF00C);
-        public static final IndexGroup ADSIGRP_SYMNOTE = IndexGroup.of(0xF010);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RWIB = IndexGroup.of(0xF020);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RWIX = IndexGroup.of(0xF021);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RISIZE = IndexGroup.of(0xF025);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RWOB = IndexGroup.of(0xF030);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RWOX = IndexGroup.of(0xF031);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RWOSIZE = IndexGroup.of(0xF035);
-        public static final IndexGroup ADSIGRP_IOIMAGE_CLEARI = IndexGroup.of(0xF040);
-        public static final IndexGroup ADSIGRP_IOIMAGE_CLEARO = IndexGroup.of(0xF050);
-        public static final IndexGroup ADSIGRP_IOIMAGE_RWIOB = IndexGroup.of(0xF060);
-        public static final IndexGroup ADSIGRP_DEVICE_DATA = IndexGroup.of(0xF100);
-        public static final IndexGroup ADSIOFFS_DEVDATA_ADSSTATE = IndexGroup.of(0x0000);
-        public static final IndexGroup ADSIOFFS_DEVDATA_DEVSTATE = IndexGroup.of(0x0002);
-
-        private ReservedGroups() {
-            // Container class
-        }
-    }
-
-    public static final class SystemServiceGroups {
-        public static final IndexGroup SYSTEMSERVICE_OPENCREATE = IndexGroup.of(100);
-        public static final IndexGroup SYSTEMSERVICE_OPENREAD = IndexGroup.of(101);
-        public static final IndexGroup SYSTEMSERVICE_OPENWRITE = IndexGroup.of(102);
-        public static final IndexGroup SYSTEMSERVICE_CREATEFILE = IndexGroup.of(110);
-        public static final IndexGroup SYSTEMSERVICE_CLOSEHANDLE = IndexGroup.of(111);
-        public static final IndexGroup SYSTEMSERVICE_FOPEN = IndexGroup.of(120);
-        public static final IndexGroup SYSTEMSERVICE_FCLOSE = IndexGroup.of(121);
-        public static final IndexGroup SYSTEMSERVICE_FREAD = IndexGroup.of(122);
-        public static final IndexGroup SYSTEMSERVICE_FWRITE = IndexGroup.of(123);
-        public static final IndexGroup SYSTEMSERVICE_FSEEK = IndexGroup.of(124);
-        public static final IndexGroup SYSTEMSERVICE_FTELL = IndexGroup.of(125);
-        public static final IndexGroup SYSTEMSERVICE_FGETS = IndexGroup.of(126);
-        public static final IndexGroup SYSTEMSERVICE_FPUTS = IndexGroup.of(127);
-        public static final IndexGroup SYSTEMSERVICE_FSCANF = IndexGroup.of(128);
-        public static final IndexGroup SYSTEMSERVICE_FPRINTF = IndexGroup.of(129);
-        public static final IndexGroup SYSTEMSERVICE_FEOF = IndexGroup.of(130);
-        public static final IndexGroup SYSTEMSERVICE_FDELETE = IndexGroup.of(131);
-        public static final IndexGroup SYSTEMSERVICE_FRENAME = IndexGroup.of(132);
-        public static final IndexGroup SYSTEMSERVICE_REG_HKEYLOCALMACHINE = IndexGroup.of(200);
-        public static final IndexGroup SYSTEMSERVICE_SENDEMAIL = IndexGroup.of(300);
-        public static final IndexGroup SYSTEMSERVICE_TIMESERVICES = IndexGroup.of(400);
-        public static final IndexGroup SYSTEMSERVICE_STARTPROCESS = IndexGroup.of(500);
-        public static final IndexGroup SYSTEMSERVICE_CHANGENETID = IndexGroup.of(600);
-
-        private SystemServiceGroups() {
-            // Container class
-        }
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/IndexOffset.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/IndexOffset.java
deleted file mode 100644
index 548ea1127..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/IndexOffset.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-@SuppressWarnings("unused") // Due to predefined IndexOffsets
-public class IndexOffset extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    public static final IndexOffset NONE = IndexOffset.of(0);
-
-    private IndexOffset(byte... values) {
-        super(values);
-    }
-
-    private IndexOffset(long value) {
-        super(value);
-    }
-
-    private IndexOffset(String value) {
-        super(value);
-    }
-
-    private IndexOffset(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static IndexOffset of(byte... values) {
-        return new IndexOffset(values);
-    }
-
-    public static IndexOffset of(long value) {
-        return new IndexOffset(value);
-    }
-
-    public static IndexOffset of(String value) {
-        return new IndexOffset(value);
-    }
-
-    public static IndexOffset of(ByteBuf byteBuf) {
-        return new IndexOffset(byteBuf);
-    }
-
-    public static final class SystemServiceOffsets {
-        public static final IndexOffset TIMESERVICE_DATEANDTIME = IndexOffset.of(1);
-        public static final IndexOffset TIMESERVICE_SYSTEMTIMES = IndexOffset.of(2);
-        public static final IndexOffset TIMESERVICE_RTCTIMEDIFF = IndexOffset.of(3);
-        public static final IndexOffset TIMESERVICE_ADJUSTTIMETORTC = IndexOffset.of(4);
-
-        private SystemServiceOffsets() {
-            // Container class
-        }
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Length.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Length.java
deleted file mode 100644
index 88eed509e..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Length.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class Length extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private Length(byte... values) {
-        super(values);
-    }
-
-    private Length(long value) {
-        super(value);
-    }
-
-    private Length(String length) {
-        super(length);
-    }
-
-    private Length(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static Length of(byte... values) {
-        return new Length(values);
-    }
-
-    public static Length of(long value) {
-        return new Length(value);
-    }
-
-    public static Length of(LengthSupplier lengthSupplier) {
-        return new Length(lengthSupplier.getCalculatedLength());
-    }
-
-    public static Length of(ByteBuf byteBuf) {
-        return new Length(byteBuf);
-    }
-
-    public static Length of(String length) {
-        return new Length(length);
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MajorVersion.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MajorVersion.java
deleted file mode 100644
index c748f8c0e..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MajorVersion.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import java.util.Arrays;
-
-public class MajorVersion extends ByteValue {
-
-    public static final int NUM_BYTES = 1;
-
-    private MajorVersion(byte... values) {
-        super(values);
-        assertLength(NUM_BYTES);
-    }
-
-    public static MajorVersion of(byte... values) {
-        return new MajorVersion(values);
-    }
-
-    public static MajorVersion of(int value) {
-        return new MajorVersion((byte) value);
-    }
-
-    public static MajorVersion of(String value) {
-        return of(Integer.parseInt(value));
-    }
-
-    public static MajorVersion of(ByteBuf byteBuf) {
-        byte[] values = new byte[NUM_BYTES];
-        byteBuf.readBytes(values);
-        return of(values);
-    }
-
-    @Override
-    public long getCalculatedLength() {
-        return NUM_BYTES;
-    }
-
-    public byte getAsByte() {
-        return getBytes()[0];
-    }
-
-    @Override
-    public String toString() {
-        return "MajorVersion{" +
-            "value=" + Arrays.toString(value) +
-            "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MaxDelay.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MaxDelay.java
deleted file mode 100644
index deddb4127..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MaxDelay.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class MaxDelay extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private MaxDelay(byte... values) {
-        super(values);
-    }
-
-    private MaxDelay(long value) {
-        super(value);
-    }
-
-    private MaxDelay(String value) {
-        super(value);
-    }
-
-    private MaxDelay(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static MaxDelay of(byte... values) {
-        return new MaxDelay(values);
-    }
-
-    public static MaxDelay of(long value) {
-        return new MaxDelay(value);
-    }
-
-    public static MaxDelay of(String value) {
-        return new MaxDelay(value);
-    }
-
-    public static MaxDelay of(ByteBuf byteBuf) {
-        return new MaxDelay(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MinorVersion.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MinorVersion.java
deleted file mode 100644
index 72a03c253..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/MinorVersion.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import java.util.Arrays;
-
-public class MinorVersion extends ByteValue {
-
-    public static final int NUM_BYTES = 1;
-
-    private MinorVersion(byte... values) {
-        super(values);
-        assertLength(NUM_BYTES);
-    }
-
-    public static MinorVersion of(byte... values) {
-        return new MinorVersion(values);
-    }
-
-    public static MinorVersion of(int value) {
-        return new MinorVersion((byte) value);
-    }
-
-    public static MinorVersion of(String value) {
-        return of(Integer.parseInt(value));
-    }
-
-    public static MinorVersion of(ByteBuf byteBuf) {
-        byte[] values = new byte[NUM_BYTES];
-        byteBuf.readBytes(values);
-        return of(values);
-    }
-
-    @Override
-    public long getCalculatedLength() {
-        return NUM_BYTES;
-    }
-
-    public byte getAsByte() {
-        return getBytes()[0];
-    }
-
-    @Override
-    public String toString() {
-        return "MinorVersion{" +
-            "value=" + Arrays.toString(value) +
-            "} " + super.toString();
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/NotificationHandle.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/NotificationHandle.java
deleted file mode 100644
index f0342d81a..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/NotificationHandle.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class NotificationHandle extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private NotificationHandle(byte... values) {
-        super(values);
-    }
-
-    private NotificationHandle(long value) {
-        super(value);
-    }
-
-    private NotificationHandle(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    private NotificationHandle(String value) {
-        super(value);
-    }
-
-    public static NotificationHandle of(byte... values) {
-        return new NotificationHandle(values);
-    }
-
-    public static NotificationHandle of(long value) {
-        return new NotificationHandle(value);
-    }
-
-    public static NotificationHandle of(String value) {
-        return new NotificationHandle(value);
-    }
-
-    public static NotificationHandle of(ByteBuf byteBuf) {
-        return new NotificationHandle(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/ReadLength.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/ReadLength.java
deleted file mode 100644
index 920fa5cac..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/ReadLength.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class ReadLength extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private ReadLength(byte... values) {
-        super(values);
-    }
-
-    private ReadLength(long value) {
-        super(value);
-    }
-
-    private ReadLength(String length) {
-        super(length);
-    }
-
-    private ReadLength(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static ReadLength of(byte... values) {
-        return new ReadLength(values);
-    }
-
-    public static ReadLength of(long value) {
-        return new ReadLength(value);
-    }
-
-    public static ReadLength of(String length) {
-        return new ReadLength(length);
-    }
-
-    public static ReadLength of(ByteBuf byteBuf) {
-        return new ReadLength(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Result.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Result.java
deleted file mode 100644
index 91f90e053..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Result.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-import static java.util.Objects.requireNonNull;
-
-public class Result extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private Result(byte... values) {
-        super(values);
-    }
-
-    private Result(long value) {
-        super(value);
-    }
-
-    private Result(String value) {
-        super(value);
-    }
-
-    private Result(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static Result of(byte... values) {
-        return new Result(values);
-    }
-
-    public static Result of(long value) {
-        return new Result(value);
-    }
-
-    public static Result of(String value) {
-        return new Result(value);
-    }
-
-    public static Result of(ByteBuf byteBuf) {
-        return new Result(byteBuf);
-    }
-
-    public static Result of(AdsReturnCode adsReturnCode) {
-        return of(requireNonNull(adsReturnCode).getHex());
-    }
-
-    public AdsReturnCode toAdsReturnCode() {
-        return AdsReturnCode.of(getAsLong());
-    }
-
-    @Override
-    public String toString() {
-        return "Result{" + toAdsReturnCode() + "}";
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/SampleSize.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/SampleSize.java
deleted file mode 100644
index 3ee1b516c..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/SampleSize.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class SampleSize extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private SampleSize(byte... values) {
-        super(values);
-    }
-
-    private SampleSize(long value) {
-        super(value);
-    }
-
-    private SampleSize(String size) {
-        super(size);
-    }
-
-    private SampleSize(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static SampleSize of(byte... values) {
-        return new SampleSize(values);
-    }
-
-    public static SampleSize of(long value) {
-        return new SampleSize(value);
-    }
-
-    public static SampleSize of(LengthSupplier lengthSupplier) {
-        return new SampleSize(lengthSupplier.getCalculatedLength());
-    }
-
-    public static SampleSize of(String size) {
-        return new SampleSize(size);
-    }
-
-    public static SampleSize of(ByteBuf byteBuf) {
-        return new SampleSize(byteBuf);
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Samples.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Samples.java
deleted file mode 100644
index 649b04c96..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Samples.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class Samples extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private Samples(byte... values) {
-        super(values);
-    }
-
-    private Samples(long value) {
-        super(value);
-    }
-
-    private Samples(String value) {
-        super(value);
-    }
-
-    private Samples(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static Samples of(byte... values) {
-        return new Samples(values);
-    }
-
-    public static Samples of(long value) {
-        return new Samples(value);
-    }
-
-    public static Samples of(String value) {
-        return new Samples(value);
-    }
-
-    public static Samples of(ByteBuf byteBuf) {
-        return new Samples(byteBuf);
-    }
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Stamps.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Stamps.java
deleted file mode 100644
index e38211029..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Stamps.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class Stamps extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private Stamps(byte... values) {
-        super(values);
-    }
-
-    private Stamps(long value) {
-        super(value);
-    }
-
-    private Stamps(String value) {
-        super(value);
-    }
-
-    private Stamps(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static Stamps of(byte... values) {
-        return new Stamps(values);
-    }
-
-    public static Stamps of(long value) {
-        return new Stamps(value);
-    }
-
-    public static Stamps of(String value) {
-        return new Stamps(value);
-    }
-
-    public static Stamps of(ByteBuf byteBuf) {
-        return new Stamps(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/TimeStamp.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/TimeStamp.java
deleted file mode 100644
index 49d23514d..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/TimeStamp.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-import java.util.Date;
-
-public class TimeStamp extends ByteValue {
-
-    /**
-     * @see <a href="https://github.com/java-native-access/jna/blob/master/contrib/platform/src/com/sun/jna/platform/win32/WinBase.java">java-native-access WinBase</a>
-     */
-    public static final BigInteger EPOCH_DIFF_IN_MILLIS = BigInteger.valueOf((369L * 365L + 89L) * 86400L * 1000L);
-
-    public static final int NUM_BYTES = 8;
-
-    private final BigInteger bigIntegerValue;
-
-    private TimeStamp(byte... values) {
-        super(values);
-        assertLength(NUM_BYTES);
-        bigIntegerValue = new BigInteger(new byte[]{
-            // LE
-            values[7],
-            values[6],
-            values[5],
-            values[4],
-
-            values[3],
-            values[2],
-            values[1],
-            values[0],
-        });
-    }
-
-    private TimeStamp(BigInteger value) {
-        super(ofBigInteger(value));
-        checkUnsignedBounds(value, NUM_BYTES);
-        assertLength(NUM_BYTES);
-        bigIntegerValue = value;
-    }
-
-    private static byte checkByte(byte[] valueBytes, int length, int i) {
-        return length > i ? valueBytes[i] : 0;
-    }
-
-    private static byte[] ofBigInteger(BigInteger value) {
-        byte[] valueBytes = value.toByteArray();
-        int length = valueBytes.length;
-        return ByteBuffer.allocate(NUM_BYTES)
-            // LE
-            .put(checkByte(valueBytes, length, 7))
-            .put(checkByte(valueBytes, length, 6))
-            .put(checkByte(valueBytes, length, 5))
-            .put(checkByte(valueBytes, length, 4))
-
-            .put(checkByte(valueBytes, length, 3))
-            .put(checkByte(valueBytes, length, 2))
-            .put(checkByte(valueBytes, length, 1))
-            .put(checkByte(valueBytes, length, 0))
-            .array();
-    }
-
-
-    public static TimeStamp of(BigInteger value) {
-        return new TimeStamp(javaToWinTime(value));
-    }
-
-    public static TimeStamp ofWinTime(BigInteger value) {
-        return new TimeStamp(value);
-    }
-
-    public static TimeStamp of(long value) {
-        return of(BigInteger.valueOf(value));
-    }
-
-    public static TimeStamp of(String value) {
-        return of(Long.valueOf(value));
-    }
-
-    public static TimeStamp ofWinTime(long value) {
-        return of(BigInteger.valueOf(value));
-    }
-
-    public static TimeStamp ofWinTime(String value) {
-        return of(Long.valueOf(value));
-    }
-
-    public static TimeStamp of(byte... values) {
-        return new TimeStamp(values);
-    }
-
-    public static TimeStamp of(Date timestamp) {
-        BigInteger winStamp = javaToWinTime(BigInteger.valueOf(timestamp.getTime()));
-        return new TimeStamp(winStamp);
-    }
-
-    public static TimeStamp of(ByteBuf byteBuf) {
-        byte[] values = new byte[NUM_BYTES];
-        byteBuf.readBytes(values);
-        return of(values);
-    }
-
-    public BigInteger getBigIntegerValue() {
-        return bigIntegerValue;
-    }
-
-    public Date getAsDate() {
-        return new Date(winTimeToJava(bigIntegerValue).longValue());
-    }
-
-    public static BigInteger javaToWinTime(BigInteger timeMillisSince19700101) {
-        BigInteger timeMillisSince16010101 = EPOCH_DIFF_IN_MILLIS.add(timeMillisSince19700101);
-        return timeMillisSince16010101.multiply(BigInteger.valueOf(10_000));
-    }
-
-    public static BigInteger winTimeToJava(BigInteger winTime) {
-        BigInteger timeMillisSince16010101 = winTime.divide(BigInteger.valueOf(10_000));
-        return timeMillisSince16010101.subtract(EPOCH_DIFF_IN_MILLIS);
-    }
-
-    @Override
-    public long getCalculatedLength() {
-        return NUM_BYTES;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (!(o instanceof TimeStamp))
-            return false;
-        if (!super.equals(o))
-            return false;
-
-        TimeStamp timeStamp = (TimeStamp) o;
-
-        return bigIntegerValue.equals(timeStamp.bigIntegerValue);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + bigIntegerValue.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "TimeStamp{winTime=" + getBigIntegerValue() + "/date=" + getAsDate() + "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/TransmissionMode.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/TransmissionMode.java
deleted file mode 100644
index a35d72e87..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/TransmissionMode.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-@SuppressWarnings("unused") // Due to predefined TransmissionModes
-public class TransmissionMode extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private TransmissionMode(byte... values) {
-        super(values);
-    }
-
-    private TransmissionMode(long value) {
-        super(value);
-    }
-
-    private TransmissionMode(String value) {
-        super(value);
-    }
-
-    private TransmissionMode(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static TransmissionMode of(byte... values) {
-        return new TransmissionMode(values);
-    }
-
-    public static TransmissionMode of(long value) {
-        return new TransmissionMode(value);
-    }
-
-    public static TransmissionMode of(String value) {
-        return new TransmissionMode(value);
-    }
-
-    public static TransmissionMode of(ByteBuf byteBuf) {
-        return new TransmissionMode(byteBuf);
-    }
-
-    // TODO: defined as enum so we might do this too similar to AdsReturnCode
-    public static final class DefinedValues {
-        public static final TransmissionMode ADSTRANS_NOTRANS = TransmissionMode.of(0);
-        public static final TransmissionMode ADSTRANS_CLIENTCYCLE = TransmissionMode.of(1);
-        public static final TransmissionMode ADSTRANS_CLIENTONCHA = TransmissionMode.of(2);
-        public static final TransmissionMode ADSTRANS_SERVERCYCLE = TransmissionMode.of(3);
-        public static final TransmissionMode ADSTRANS_SERVERONCHA = TransmissionMode.of(4);
-        public static final TransmissionMode ADSTRANS_SERVERCYCLE2 = TransmissionMode.of(5);
-        public static final TransmissionMode ADSTRANS_SERVERONCHA2 = TransmissionMode.of(6);
-        public static final TransmissionMode ADSTRANS_CLIENT1REQ = TransmissionMode.of(10);
-        public static final TransmissionMode ADSTRANS_MAXMODES = TransmissionMode.of(Integer.MAX_VALUE);
-
-        private DefinedValues() {
-            // Container class
-        }
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Version.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Version.java
deleted file mode 100644
index 29452cfbd..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/Version.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-public class Version extends UnsignedShortLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private Version(byte... values) {
-        super(values);
-    }
-
-    private Version(int value) {
-        super(value);
-    }
-
-    private Version(String value) {
-        super(value);
-    }
-
-    private Version(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static Version of(byte... values) {
-        return new Version(values);
-    }
-
-    public static Version of(int value) {
-        checkUnsignedBounds(value, NUM_BYTES);
-        return new Version(value);
-    }
-
-    public static Version of(String value) {
-        return new Version(value);
-    }
-
-    public static Version of(ByteBuf byteBuf) {
-        return new Version(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/WriteLength.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/WriteLength.java
deleted file mode 100644
index c8ea47a75..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/WriteLength.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.commands.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class WriteLength extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private WriteLength(byte... values) {
-        super(values);
-    }
-
-    private WriteLength(long value) {
-        super(value);
-    }
-
-    private WriteLength(String length) {
-        super(length);
-    }
-
-    private WriteLength(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static WriteLength of(byte... values) {
-        return new WriteLength(values);
-    }
-
-    public static WriteLength of(long value) {
-        return new WriteLength(value);
-    }
-
-    public static WriteLength of(LengthSupplier lengthSupplier) {
-        return new WriteLength(lengthSupplier.getCalculatedLength());
-    }
-
-    public static WriteLength of(String length) {
-        return new WriteLength(length);
-    }
-
-    public static WriteLength of(ByteBuf byteBuf) {
-        return new WriteLength(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/package-info.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/package-info.java
deleted file mode 100644
index 7f19c9ec2..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/commands/types/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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.
- */
-/**
- * This package contains ams/ads generic types.
- */
-package org.apache.plc4x.java.ads.api.commands.types;
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AdsData.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AdsData.java
deleted file mode 100644
index 4545b4f2a..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AdsData.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic;
-
-import io.netty.buffer.Unpooled;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-
-/**
- * ADS Data	n bytes	The ADS data range contains the parameter of the single ADS commands. The structure of the data array depends on the ADS command. Some ADS commands require no additional data.
- */
-@FunctionalInterface
-public interface AdsData extends ByteReadable {
-
-    AdsData EMPTY = () -> Unpooled.EMPTY_BUFFER;
-
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java
deleted file mode 100644
index 5ccf26014..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsHeader.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.generic.types.*;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * AMS Header	32 bytes	The AMS/TCP-Header contains the addresses of the transmitter and receiver. In addition the AMS error code , the ADS command Id and some other information.
- */
-public class AmsHeader implements ByteReadable {
-    /**
-     * This is the AmsNetId of the station, for which the packet is intended. Remarks see below.
-     */
-    private final AmsNetId targetAmsNetId;
-    /**
-     * This is the AmsPort of the station, for which the packet is intended.
-     */
-    private final AmsPort targetAmsPort;
-    /**
-     * This contains the AmsNetId of the station, from which the packet was sent.
-     */
-    private final AmsNetId sourceAmsNetId;
-    /**
-     * This contains the AmsPort of the station, from which the packet was sent.
-     */
-    private final AmsPort sourceAmsPort;
-    /**
-     * 2 bytes.
-     */
-    private final Command commandId;
-    /**
-     * 2 bytes.
-     */
-    private final State stateFlags;
-    /**
-     * 4 bytes	Size of the data range. The unit is byte.
-     */
-    private final DataLength dataLength;
-
-    /**
-     * 4 bytes	AMS error number. See ADS Return Codes.
-     */
-    private final AmsError code;
-
-    /**
-     * 4 bytes	Free usable 32 bit array. Usually this array serves to send an Id. This Id makes is possible to assign a received response to a request, which was sent before.
-     */
-    private final Invoke invokeId;
-
-    private final transient LengthSupplier dataLengthSupplier;
-
-    private AmsHeader(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Command commandId, State stateFlags, DataLength dataLength, AmsError code, Invoke invokeId) {
-        this.targetAmsNetId = requireNonNull(targetAmsNetId);
-        this.targetAmsPort = requireNonNull(targetAmsPort);
-        this.sourceAmsNetId = requireNonNull(sourceAmsNetId);
-        this.sourceAmsPort = requireNonNull(sourceAmsPort);
-        this.commandId = requireNonNull(commandId);
-        this.stateFlags = requireNonNull(stateFlags);
-        this.dataLength = requireNonNull(dataLength);
-        this.code = requireNonNull(code);
-        this.invokeId = requireNonNull(invokeId);
-        dataLengthSupplier = null;
-
-    }
-
-    private AmsHeader(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Command commandId, State stateFlags, LengthSupplier dataLengthSupplier, AmsError code, Invoke invokeId) {
-        this.targetAmsNetId = requireNonNull(targetAmsNetId);
-        this.targetAmsPort = requireNonNull(targetAmsPort);
-        this.sourceAmsNetId = requireNonNull(sourceAmsNetId);
-        this.sourceAmsPort = requireNonNull(sourceAmsPort);
-        this.commandId = requireNonNull(commandId);
-        this.stateFlags = requireNonNull(stateFlags);
-        this.dataLength = null;
-        this.code = requireNonNull(code);
-        this.invokeId = requireNonNull(invokeId);
-        this.dataLengthSupplier = requireNonNull(dataLengthSupplier);
-    }
-
-    public static AmsHeader of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Command commandId, State stateFlags, DataLength dataLength, AmsError code, Invoke invokeId) {
-        return new AmsHeader(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, commandId, stateFlags, dataLength, code, invokeId);
-    }
-
-    public static AmsHeader of(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, Command commandId, State stateFlags, LengthSupplier dataLengthSupplier, AmsError code, Invoke invokeId) {
-        return new AmsHeader(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, commandId, stateFlags, dataLengthSupplier, code, invokeId);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(
-            targetAmsNetId,
-            targetAmsPort,
-            sourceAmsNetId,
-            sourceAmsPort,
-            commandId,
-            stateFlags,
-            getDataLength(),
-            code,
-            invokeId);
-    }
-
-    public AmsNetId getTargetAmsNetId() {
-        return targetAmsNetId;
-    }
-
-    public AmsPort getTargetAmsPort() {
-        return targetAmsPort;
-    }
-
-    public AmsNetId getSourceAmsNetId() {
-        return sourceAmsNetId;
-    }
-
-    public AmsPort getSourceAmsPort() {
-        return sourceAmsPort;
-    }
-
-    public Command getCommandId() {
-        return commandId;
-    }
-
-    public State getStateFlags() {
-        return stateFlags;
-    }
-
-    public DataLength getDataLength() {
-        return dataLengthSupplier == null ? dataLength : DataLength.of(dataLengthSupplier);
-    }
-
-    public AmsError getCode() {
-        return code;
-    }
-
-    public Invoke getInvokeId() {
-        return invokeId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof AmsHeader)) {
-            return false;
-        }
-
-        AmsHeader amsHeader = (AmsHeader) o;
-
-        if (!targetAmsNetId.equals(amsHeader.targetAmsNetId)) {
-            return false;
-        }
-        if (!targetAmsPort.equals(amsHeader.targetAmsPort)) {
-            return false;
-        }
-        if (!sourceAmsNetId.equals(amsHeader.sourceAmsNetId)) {
-            return false;
-        }
-        if (!sourceAmsPort.equals(amsHeader.sourceAmsPort)) {
-            return false;
-        }
-        if (commandId != amsHeader.commandId) {
-            return false;
-        }
-        if (!stateFlags.equals(amsHeader.stateFlags)) {
-            return false;
-        }
-        if (!code.equals(amsHeader.code)) {
-            return false;
-        }
-        if (!invokeId.equals(amsHeader.invokeId)) {
-            return false;
-        }
-
-        return getDataLength().equals(((AmsHeader) o).getDataLength());
-    }
-
-    @Override
-    public int hashCode() {
-        int result = targetAmsNetId.hashCode();
-        result = 31 * result + targetAmsPort.hashCode();
-        result = 31 * result + sourceAmsNetId.hashCode();
-        result = 31 * result + sourceAmsPort.hashCode();
-        result = 31 * result + commandId.hashCode();
-        result = 31 * result + stateFlags.hashCode();
-        result = 31 * result + code.hashCode();
-        result = 31 * result + invokeId.hashCode();
-        result = 31 * result + getDataLength().hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AmsHeader{" +
-            "targetAmsNetId=" + targetAmsNetId +
-            ", targetAmsPort=" + targetAmsPort +
-            ", sourceAmsNetId=" + sourceAmsNetId +
-            ", sourceAmsPort=" + sourceAmsPort +
-            ", commandId=" + commandId +
-            ", stateFlags=" + stateFlags +
-            ", dataLength=" + getDataLength() +
-            ", code=" + code +
-            ", invokeId=" + invokeId +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsPacket.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsPacket.java
deleted file mode 100644
index dff79777f..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/AmsPacket.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.commands.AdsCommandType;
-import org.apache.plc4x.java.ads.api.generic.types.*;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-
-import static java.util.Objects.requireNonNull;
-
-public abstract class AmsPacket implements ByteReadable {
-
-    protected final AmsHeader amsHeader;
-
-    protected AmsPacket(AmsHeader amsHeader) {
-        this.amsHeader = amsHeader;
-    }
-
-    protected AmsPacket(AmsNetId targetAmsNetId, AmsPort targetAmsPort, AmsNetId sourceAmsNetId, AmsPort sourceAmsPort, State stateId, Invoke invokeId) {
-        if (!getClass().isAnnotationPresent(AdsCommandType.class)) {
-            throw new IllegalArgumentException(AdsCommandType.class + " need to be present.");
-        }
-        this.amsHeader = AmsHeader.of(
-            requireNonNull(targetAmsNetId),
-            requireNonNull(targetAmsPort),
-            requireNonNull(sourceAmsNetId),
-            requireNonNull(sourceAmsPort),
-            requireNonNull(getClass().getAnnotation(AdsCommandType.class).value()),
-            requireNonNull(stateId),
-            () -> getAdsData().getCalculatedLength(),
-            requireNonNull(AmsError.NONE),
-            requireNonNull(invokeId));
-    }
-
-    public AmsHeader getAmsHeader() {
-        return amsHeader;
-    }
-
-    public abstract AdsData getAdsData();
-
-    protected AdsData buildADSData(ByteReadable... byteReadables) {
-        return () -> buildByteBuff(byteReadables);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(amsHeader, getAdsData());
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof AmsPacket)) {
-            return false;
-        }
-
-        AmsPacket amsPacket = (AmsPacket) o;
-
-        return amsHeader.equals(amsPacket.amsHeader);
-    }
-
-    @Override
-    public int hashCode() {
-        return amsHeader.hashCode();
-    }
-
-    @Override
-    public String toString() {
-        return getClass().getSimpleName() + "{" +
-            "amsHeader=" + amsHeader +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/package-info.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/package-info.java
deleted file mode 100644
index c374c7a73..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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.
- */
-/**
- * This package contains ams/ads generic messages.
- */
-package org.apache.plc4x.java.ads.api.generic;
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsError.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsError.java
deleted file mode 100644
index 4f9eeed6b..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsError.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.commands.types.AdsReturnCode;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-import static java.util.Objects.requireNonNull;
-
-public class AmsError extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    public static final AmsError NONE = of(0);
-
-    private AmsError(byte... values) {
-        super(values);
-    }
-
-    private AmsError(long value) {
-        super(value);
-    }
-
-    private AmsError(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static AmsError of(byte... values) {
-        return new AmsError(values);
-    }
-
-    public static AmsError of(long errorCode) {
-        return new AmsError(errorCode);
-    }
-
-    public static AmsError of(AdsReturnCode errorCode) {
-        return new AmsError(requireNonNull(errorCode).getHex());
-    }
-
-    public static AmsError of(String errorCode) {
-        return of(Long.parseLong(errorCode));
-    }
-
-    public static AmsError of(ByteBuf byteBuf) {
-        return new AmsError(byteBuf);
-    }
-
-    public AdsReturnCode toAdsReturnCode() {
-        return AdsReturnCode.of(getAsLong());
-    }
-
-    @Override
-    public String toString() {
-        return "AmsError{" + toAdsReturnCode() + "}";
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsNetId.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsNetId.java
deleted file mode 100644
index 907fdca77..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsNetId.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import java.util.regex.Pattern;
-import java.util.stream.Stream;
-
-/**
- * It is not only possible to exchange data between TwinCAT modules on one PC, it is even possible to do so by ADS
- * methods between multiple TwinCAT PC's on the network.
- * <p>
- * Every PC on the network can be uniquely identified by a TCP/IP address, such as "172.1.2.16". The AdsAmsNetId is an
- * extension of the TCP/IP address and identifies a TwinCAT message router, e.g. "172.1.2.16.1.1". TwinCAT message
- * routers exist on every TwinCAT PC, and on every Beckhoff BCxxxx bus controller (e.g. BC3100, BC8100, BC9000, ...).
- * <p>
- * The AmsNetId consists of 6 bytes and addresses the transmitter or receiver. One possible AmsNetId would be e.g.
- * "172.16.17.10.1.1". The storage arrangement in this example is as follows:
- * <p>
- * _____0     1     2     3     4     5
- * __+-----------------------------------+
- * 0 | 127 |  16 |  17 |  10 |   1 |   1 |
- * __+-----------------------------------+
- * <p>
- * The AmsNetId is purely logical and has usually no relation to the IP address. The AmsNetId is configured at the
- * target system. At the PC for this the TwinCAT System Control is used. If you use other hardware, see the considering
- * documentation for notes about settings of the AMS NetId.
- *
- * @see <a href="https://infosys.beckhoff.com/content/1033/tcadscommon/html/tcadscommon_identadsdevice.htm?id=3991659524769593444">ADS device identification</a>
- */
-public class AmsNetId extends ByteValue {
-
-    public static final Pattern AMS_NET_ID_PATTERN =
-        Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
-
-    public static final int NUM_BYTES = 6;
-
-    private AmsNetId(byte... values) {
-        super(values);
-        assertLength(NUM_BYTES);
-    }
-
-    public static AmsNetId of(byte... values) {
-        return new AmsNetId(values);
-    }
-
-    public static AmsNetId of(int octed1, int octed2, int octed3, int octed4, int octed5, int octed6) {
-        return new AmsNetId((byte) octed1, (byte) octed2, (byte) octed3, (byte) octed4, (byte) octed5, (byte) octed6);
-    }
-
-    public static AmsNetId of(String address) {
-        if (!AMS_NET_ID_PATTERN.matcher(address).matches()) {
-            throw new IllegalArgumentException(address + " must match " + AMS_NET_ID_PATTERN);
-        }
-        String[] split = address.split("\\.");
-        byte[] bytes = ArrayUtils.toPrimitive(Stream.of(split).map(Integer::parseInt).map(Integer::byteValue).toArray(Byte[]::new));
-        return new AmsNetId(bytes);
-    }
-
-    public static AmsNetId of(ByteBuf byteBuf) {
-        byte[] values = new byte[NUM_BYTES];
-        byteBuf.readBytes(values);
-        return of(values);
-    }
-
-    @Override
-    public String toString() {
-        byte[] bytes = getBytes();
-        return (bytes[0] & 0xff) + "." + (bytes[1] & 0xff) + "." + (bytes[2] & 0xff) + "." + (bytes[3] & 0xff) + "." + (bytes[4] & 0xff) + "." + (bytes[5] & 0xff);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsPort.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsPort.java
deleted file mode 100644
index 9104484b9..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/AmsPort.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-import java.util.regex.Pattern;
-
-/**
- * The ADS devices in a TwinCAT message router are uniquely identified by a number referred to as the ADS-PortNr. For ADS devices this has a fixed specification, whereas pure ADS client applications (e.g. a visualisation system) are allocated a variable ADS port number when they first access the message router.
- *
- * @see <a href="https://infosys.beckhoff.com/content/1033/tcadscommon/html/tcadscommon_identadsdevice.htm?id=3991659524769593444">ADS device identification</a>
- */
-@SuppressWarnings("unused") // Due to predefined ports
-public class AmsPort extends UnsignedShortLEByteValue {
-
-    public static final Pattern AMS_PORT_PATTERN = Pattern.compile("\\d+");
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private AmsPort(byte... value) {
-        super(value);
-    }
-
-    private AmsPort(int value) {
-        super(value);
-    }
-
-    public static AmsPort of(byte... values) {
-        return new AmsPort(values);
-    }
-
-    public static AmsPort of(int port) {
-        return new AmsPort(port);
-    }
-
-    public static AmsPort of(String port) {
-        if (!AMS_PORT_PATTERN.matcher(port).matches()) {
-            throw new IllegalArgumentException(port + " must match " + AMS_PORT_PATTERN);
-        }
-        return of(Integer.parseInt(port));
-    }
-
-    public static AmsPort of(ByteBuf byteBuf) {
-        return of(byteBuf.readUnsignedShortLE());
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(getAsInt());
-    }
-
-    public static class ReservedPorts {
-
-        /**
-         * Logger (only NT-Log)
-         */
-        public static final AmsPort logger = AmsPort.of(100);
-        /**
-         * Eventlogger
-         */
-        public static final AmsPort eventLogger = AmsPort.of(110);
-        /**
-         * IO
-         */
-        public static final AmsPort io = AmsPort.of(300);
-        /**
-         * additional Task 1
-         */
-        public static final AmsPort additionalTask1 = AmsPort.of(301);
-        /**
-         * additional Task 2
-         */
-        public static final AmsPort additionalTask2 = AmsPort.of(302);
-
-        /**
-         * NC
-         */
-        public static final AmsPort nc = AmsPort.of(500);
-        /**
-         * PLC RuntimeSystem 1
-         */
-        public static final AmsPort plcRuntimeSystem1 = AmsPort.of(801);
-        /**
-         * PLC RuntimeSystem 2
-         */
-        public static final AmsPort plcRuntimeSystem2 = AmsPort.of(811);
-        /**
-         * PLC RuntimeSystem 3
-         */
-        public static final AmsPort plcRuntimeSystem3 = AmsPort.of(821);
-        /**
-         * PLC RuntimeSystem 4
-         */
-        public static final AmsPort plcRuntimeSystem4 = AmsPort.of(831);
-
-        /**
-         * Camshaft controller
-         */
-        public static final AmsPort camShaftController = AmsPort.of(900);
-
-        /**
-         * System Service
-         */
-        public static final AmsPort systemService = AmsPort.of(900);
-        /**
-         * Scope
-         */
-        public static final AmsPort scope = AmsPort.of(900);
-
-        private ReservedPorts() {
-            // Container class
-        }
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/Command.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/Command.java
deleted file mode 100644
index 802d728cc..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/Command.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Arrays;
-
-import static java.lang.Integer.toHexString;
-
-public enum Command implements ByteReadable {
-    INVALID(0x00),
-    ADS_READ_DEVICE_INFO(0x01),
-    ADS_READ(0x02),
-    ADS_WRITE(0x03),
-    ADS_READ_STATE(0x04),
-    ADS_WRITE_CONTROL(0x05),
-    ADS_ADD_DEVICE_NOTIFICATION(0x06),
-    ADS_DELETE_DEVICE_NOTIFICATION(0x07),
-    ADS_DEVICE_NOTIFICATION(0x08),
-    ADS_READ_WRITE(0x09),
-    /**
-     * Other commands are not defined or are used internally. Therefore the Command Id  is only allowed to contain the above enumerated values!
-     */
-    UNKNOWN();
-
-    public static final int NUM_BYTES = 2;
-
-    final byte[] value;
-
-    final int intValue;
-
-    Command() {
-        // Only used for unknown enum
-        value = new byte[0];
-        intValue = 0;
-    }
-
-    Command(int value) {
-        ByteValue.checkUnsignedBounds(value, NUM_BYTES);
-        this.intValue = value;
-        this.value = ByteBuffer.allocate(NUM_BYTES)
-            .order(ByteOrder.LITTLE_ENDIAN)
-            .putShort((short) (value & 0xffff))
-            .array();
-    }
-
-    @Override
-    public byte[] getBytes() {
-        if (this == UNKNOWN) {
-            throw new IllegalStateException("Unknown enum can't be serialized");
-        }
-        return value;
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        if (this == UNKNOWN) {
-            throw new IllegalStateException("Unknown enum can't be serialized");
-        }
-        return Unpooled.wrappedBuffer(value);
-    }
-
-    @Override
-    public long getCalculatedLength() {
-        return NUM_BYTES;
-    }
-
-    public static Command of(byte... bytes) {
-        // TODO: improve by using a map
-        for (Command command : values()) {
-            if (Arrays.equals(bytes, command.value)) {
-                return command;
-            }
-        }
-        return UNKNOWN;
-    }
-
-    private static Command of(int intValue) {
-        // TODO: improve by using a map
-        for (Command command : values()) {
-            if (command.intValue == intValue) {
-                return command;
-            }
-        }
-        return UNKNOWN;
-    }
-
-    public static Command of(String value) {
-        return valueOf(value);
-    }
-
-    public static Command ofInt(String intValue) {
-        return of(Integer.parseInt(intValue));
-    }
-
-    public static Command of(ByteBuf byteBuf) {
-        return of(byteBuf.readUnsignedShortLE());
-    }
-
-    @Override
-    public String toString() {
-        return name() + "/hex=" + String.format("0x%2s", toHexString(intValue)).replace(' ', '0');
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/DataLength.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/DataLength.java
deleted file mode 100644
index 3d3f24d87..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/DataLength.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.LengthSupplier;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class DataLength extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    private DataLength(byte... values) {
-        super(values);
-    }
-
-    private DataLength(long value) {
-        super(value);
-    }
-
-    private DataLength(String length) {
-        super(length);
-    }
-
-    private DataLength(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static DataLength of(byte... values) {
-        return new DataLength(values);
-    }
-
-    public static DataLength of(long value) {
-        return new DataLength(value);
-    }
-
-    public static DataLength of(LengthSupplier lengthSupplier) {
-        return new DataLength(lengthSupplier.getCalculatedLength());
-    }
-
-    public static DataLength of(String length) {
-        return new DataLength(length);
-    }
-
-    public static DataLength of(ByteBuf byteBuf) {
-        return new DataLength(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/Invoke.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/Invoke.java
deleted file mode 100644
index de68341e9..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/Invoke.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedIntLEByteValue;
-
-public class Invoke extends UnsignedIntLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedIntLEByteValue.UNSIGNED_INT_LE_NUM_BYTES;
-
-    public static final Invoke NONE = of(0);
-
-    private Invoke(byte... values) {
-        super(values);
-    }
-
-    private Invoke(long value) {
-        super(value);
-    }
-
-    private Invoke(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    private Invoke(String invokeId) {
-        super(invokeId);
-    }
-
-    public static Invoke of(byte... values) {
-        return new Invoke(values);
-    }
-
-    public static Invoke of(long invokeId) {
-        return new Invoke(invokeId);
-    }
-
-    public static Invoke of(String invokeId) {
-        return new Invoke(invokeId);
-    }
-
-    public static Invoke of(ByteBuf byteBuf) {
-        return new Invoke(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/State.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/State.java
deleted file mode 100644
index 87e5ad937..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/State.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.generic.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-import java.util.EnumSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.stream.Stream;
-
-import static java.lang.Integer.toBinaryString;
-import static org.apache.plc4x.java.ads.api.generic.types.State.StateMask.*;
-
-/**
- * 2 bytes	see below.
- * <p>
- * State Flags
- * Flag     Description
- * 0x0001	0: Request / 1: Response
- * 0x0004	ADS command
- * The first bit marks, whether it´s a request or response. The third bit must be set to 1, to exchange data with ADS commands. The other bits are not defined or were used for other internal purposes.
- * <p>
- * Therefore the other bits must be set to 0!
- * <p>
- * Flag     Description
- * 0x000x	TCP Protocol
- * 0x004x	UDP Protocol
- * Bit number 7 marks, if it should be transfered with TCP or UDP.
- */
-public class State extends UnsignedShortLEByteValue {
-
-    public enum StateMask {
-        RESPONSE(0b0000_0000_0000_0001),
-        NO_RETURN(0b0000_0000_0000_0010),
-        ADS_COMMAND(0b0000_0000_0000_0100),
-        SYSTEM_COMMAND(0b0000_0000_0000_1000),
-        HIGH_PRIORITY_COMMAND(0b0000_0000_0001_0000),
-        TIMESTAMP_ADDED(0b0000_0000_0010_0000),
-        UDP_COMMAND(0b0000_0000_0100_0000),
-        INIT_COMMAND(0b0000_0000_1000_0000),
-        BROADCAST(0b1000_0000_0000_0000);
-
-        private final int mask;
-
-        StateMask(int mask) {
-            this.mask = mask;
-        }
-
-        public boolean applies(int value) {
-            return (value & this.mask) != 0;
-        }
-
-        boolean applies(State state) {
-            return (state.getAsInt() & this.mask) != 0;
-        }
-
-        int getMask() {
-            return mask;
-        }
-
-        @Override
-        public String toString() {
-            return name() + "/mask=" + String.format("0b%16s", toBinaryString(mask)).replace(' ', '0');
-        }
-    }
-
-    public static final State DEFAULT = State.of(ADS_COMMAND);
-
-    public static final State DEFAULT_RESPONSE = State.of(ADS_COMMAND, RESPONSE);
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private State(byte... values) {
-        super(values);
-    }
-
-    private State(int value) {
-        super(value);
-    }
-
-    private State(String stateId) {
-        super(stateId);
-    }
-
-    private State(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static State of(byte... values) {
-        return new State(values);
-    }
-
-    public static State of(int value) {
-        return new State(value);
-    }
-
-    public static State of(ByteBuf byteBuf) {
-        return new State(byteBuf);
-    }
-
-    public static State of(String stateId) {
-        return new State(stateId);
-    }
-
-    private static State of(StateMask... stateMasks) {
-        return State.of(Stream.of(stateMasks).map(StateMask::getMask).reduce(0, (a, b) -> a | b));
-    }
-
-    private EnumSet<StateMask> getStateMaskEnumSet() {
-        List<StateMask> result = new LinkedList<>();
-        if (isResponse()) {
-            result.add(StateMask.RESPONSE);
-        }
-        if (isNoReturn()) {
-            result.add(NO_RETURN);
-        }
-        if (isADSCommand()) {
-            result.add(StateMask.ADS_COMMAND);
-        }
-        if (isSystemCommand()) {
-            result.add(StateMask.SYSTEM_COMMAND);
-        }
-        if (isHighPriorityCommand()) {
-            result.add(StateMask.HIGH_PRIORITY_COMMAND);
-        }
-        if (isTimestampAdded()) {
-            result.add(StateMask.TIMESTAMP_ADDED);
-        }
-        if (isUDPCommand()) {
-            result.add(StateMask.UDP_COMMAND);
-        }
-        if (isInitCommand()) {
-            result.add(StateMask.INIT_COMMAND);
-        }
-        if (isBroadcast()) {
-            result.add(StateMask.BROADCAST);
-        }
-        return EnumSet.copyOf(result);
-    }
-
-    private boolean isResponse() {
-        return RESPONSE.applies(this);
-    }
-
-    public boolean isRequest() {
-        return !isResponse();
-    }
-
-    private boolean isNoReturn() {
-        return NO_RETURN.applies(this);
-    }
-
-    private boolean isADSCommand() {
-        return ADS_COMMAND.applies(this);
-    }
-
-    private boolean isSystemCommand() {
-        return SYSTEM_COMMAND.applies(this);
-    }
-
-    private boolean isHighPriorityCommand() {
-        return HIGH_PRIORITY_COMMAND.applies(this);
-    }
-
-    private boolean isTimestampAdded() {
-        return TIMESTAMP_ADDED.applies(this);
-    }
-
-    private boolean isUDPCommand() {
-        return UDP_COMMAND.applies(this);
-    }
-
-    private boolean isInitCommand() {
-        return INIT_COMMAND.applies(this);
-    }
-
-    private boolean isBroadcast() {
-        return BROADCAST.applies(this);
-    }
-
-    @Override
-    public String toString() {
-        return "State{" + getStateMaskEnumSet() + "} " + super.toString();
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/package-info.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/package-info.java
deleted file mode 100644
index 22ac77720..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/generic/types/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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.
- */
-/**
- * This package contains ams/ads generic types.
- */
-package org.apache.plc4x.java.ads.api.generic.types;
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/package-info.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/package-info.java
deleted file mode 100644
index c73dce477..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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.
- */
-/**
- * This package contains a replication of the specification found online.
- * @see <a href="https://infosys.beckhoff.com/english.php?content=../content/1033/tcadsamsspec/html/tcadsamsspec_intro.htm">ADS SPEC</a>
- */
-package org.apache.plc4x.java.ads.api;
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java
deleted file mode 100644
index 4b1fd45e0..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialAcknowledgeFrame.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.serial.types.*;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.protocol.util.DigestUtil;
-
-/**
- * If an AMS serial frame has been received and the frame is OK (magic cookie OK, CRC OK, correct fragment number etc.),
- * then the receiver has to send an acknowledge frame, to inform the transmitter that the frame has arrived.
- *
- * @see <a href="https://infosys.beckhoff.com/content/1033/tcadsamsserialspec/html/tcamssericalspec_amsframe.htm?id=8115637053270715044">TwinCAT AMS via RS232 Specification</a>
- */
-public class AmsSerialAcknowledgeFrame implements ByteReadable {
-
-    public static final int ID = 0x5A01;
-
-    /**
-     * Id for detecting an AMS serial frame.
-     */
-    private final MagicCookie magicCookie;
-
-    /**
-     * Address of the sending participant. This value can always be set to 0 for an RS232 communication,
-     * since it is a 1 to 1 connection and hence the participants are unique.
-     */
-    private final TransmitterAddress transmitterAddress;
-
-    /**
-     * Receiver’s address. This value can always be set to 0 for an RS232 communication, since it is a 1 to 1
-     * connection and hence the participants are unique.
-     */
-    private final ReceiverAddress receiverAddress;
-
-    /**
-     * Number of the frame sent. Once the number 255 has been sent, it starts again from 0. The receiver checks this
-     * number with an internal counter.
-     */
-    private final FragmentNumber fragmentNumber;
-
-    /**
-     * The max. length of the AMS packet to be sent is 255. If larger AMS packets are to be sent then they have to be
-     * fragmented (not published at the moment).
-     */
-    private final UserDataLength userDataLength;
-
-    private final CRC crc;
-
-    private AmsSerialAcknowledgeFrame(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, CRC crc) {
-        this.magicCookie = magicCookie;
-        this.transmitterAddress = transmitterAddress;
-        this.receiverAddress = receiverAddress;
-        this.fragmentNumber = fragmentNumber;
-        this.userDataLength = userDataLength;
-        this.crc = crc;
-    }
-
-    private AmsSerialAcknowledgeFrame(TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber) {
-        this.magicCookie = MagicCookie.of(ID);
-        this.transmitterAddress = transmitterAddress;
-        this.receiverAddress = receiverAddress;
-        this.fragmentNumber = fragmentNumber;
-        this.userDataLength = UserDataLength.of((byte) 0);
-        this.crc = CRC.of(DigestUtil.calculateCrc16(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength));
-    }
-
-    public static AmsSerialAcknowledgeFrame of(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, CRC crc) {
-        return new AmsSerialAcknowledgeFrame(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, crc);
-    }
-
-    public static AmsSerialAcknowledgeFrame of(TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber) {
-        return new AmsSerialAcknowledgeFrame(transmitterAddress, receiverAddress, fragmentNumber);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, crc);
-    }
-
-    public MagicCookie getMagicCookie() {
-        return magicCookie;
-    }
-
-    public TransmitterAddress getTransmitterAddress() {
-        return transmitterAddress;
-    }
-
-    public ReceiverAddress getReceiverAddress() {
-        return receiverAddress;
-    }
-
-    public FragmentNumber getFragmentNumber() {
-        return fragmentNumber;
-    }
-
-    public UserDataLength getUserDataLength() {
-        return userDataLength;
-    }
-
-    public CRC getCrc() {
-        return crc;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof AmsSerialAcknowledgeFrame)) {
-            return false;
-        }
-
-        AmsSerialAcknowledgeFrame that = (AmsSerialAcknowledgeFrame) o;
-
-        if (!magicCookie.equals(that.magicCookie)) {
-            return false;
-        }
-        if (!transmitterAddress.equals(that.transmitterAddress)) {
-            return false;
-        }
-        if (!receiverAddress.equals(that.receiverAddress)) {
-            return false;
-        }
-        if (!fragmentNumber.equals(that.fragmentNumber)) {
-            return false;
-        }
-        if (!userDataLength.equals(that.userDataLength)) {
-            return false;
-        }
-        return crc.equals(that.crc);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = magicCookie.hashCode();
-        result = 31 * result + transmitterAddress.hashCode();
-        result = 31 * result + receiverAddress.hashCode();
-        result = 31 * result + fragmentNumber.hashCode();
-        result = 31 * result + userDataLength.hashCode();
-        result = 31 * result + crc.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AmsSerialAcknowledgeFrame{" +
-            "magicCookie=" + magicCookie +
-            ", transmitterAddress=" + transmitterAddress +
-            ", receiverAddress=" + receiverAddress +
-            ", fragmentNumber=" + fragmentNumber +
-            ", userDataLength=" + userDataLength +
-            ", crc=" + crc +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialFrame.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialFrame.java
deleted file mode 100644
index 8de771569..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialFrame.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.serial.types.*;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.protocol.util.DigestUtil;
-
-/**
- * An AMS packet can be transferred via RS232 with the help of an AMS serial frame.
- * The actual AMS packet is in the user data field of the frame.
- * The max. length of the AMS packet is limited to 255 bytes.
- * Therefore the max. size of an AMS serial frame is 263 bytes.
- * The fragment number is compared with an internal counter by the receiver.
- * The frame number is simply accepted and not checked when receiving the first AMS frame or in case a timeout is
- * exceeded. The CRC16 algorithm is used for calculating the checksum.
- *
- * @see <a href="https://infosys.beckhoff.com/content/1033/tcadsamsserialspec/html/tcamssericalspec_amsframe.htm?id=8115637053270715044">TwinCAT AMS via RS232 Specification</a>
- */
-public class AmsSerialFrame implements ByteReadable {
-
-    public static final int ID = 0xA501;
-
-    /**
-     * Id for detecting an AMS serial frame.
-     */
-    private final MagicCookie magicCookie;
-
-    /**
-     * Address of the sending participant. This value can always be set to 0 for an RS232 communication,
-     * since it is a 1 to 1 connection and hence the participants are unique.
-     */
-    private final TransmitterAddress transmitterAddress;
-
-    /**
-     * Receiver’s address. This value can always be set to 0 for an RS232 communication, since it is a 1 to 1
-     * connection and hence the participants are unique.
-     */
-    private final ReceiverAddress receiverAddress;
-
-    /**
-     * Number of the frame sent. Once the number 255 has been sent, it starts again from 0. The receiver checks this
-     * number with an internal counter.
-     */
-    private final FragmentNumber fragmentNumber;
-
-    /**
-     * The max. length of the AMS packet to be sent is 255. If larger AMS packets are to be sent then they have to be
-     * fragmented (not published at the moment).
-     */
-    private final UserDataLength userDataLength;
-
-    /**
-     * The AMS packet to be sent.
-     */
-    private final UserData userData;
-
-    private final CRC crc;
-
-    private AmsSerialFrame(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, UserData userData, CRC crc) {
-        this.magicCookie = magicCookie;
-        this.transmitterAddress = transmitterAddress;
-        this.receiverAddress = receiverAddress;
-        this.fragmentNumber = fragmentNumber;
-        this.userDataLength = userDataLength;
-        this.userData = userData;
-        this.crc = crc;
-    }
-
-    private AmsSerialFrame(FragmentNumber fragmentNumber, UserData userData) {
-        this.magicCookie = MagicCookie.of(ID);
-        this.transmitterAddress = TransmitterAddress.RS232_COMM_ADDRESS;
-        this.receiverAddress = ReceiverAddress.RS232_COMM_ADDRESS;
-        this.fragmentNumber = fragmentNumber;
-        long calculatedLength = userData.getCalculatedLength();
-        if (calculatedLength > 255) {
-            throw new IllegalArgumentException("Packet length must not exceed 255");
-        }
-        this.userDataLength = UserDataLength.of((byte) calculatedLength);
-        byte[] amsPacketBytes = userData.getBytes();
-        this.userData = UserData.of(amsPacketBytes);
-        this.crc = CRC.of(DigestUtil.calculateCrc16(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, userData));
-    }
-
-    public static AmsSerialFrame of(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, UserData userData, CRC crc) {
-        return new AmsSerialFrame(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, userData, crc);
-    }
-
-    public static AmsSerialFrame of(FragmentNumber fragmentNumber, UserData userData) {
-        return new AmsSerialFrame(fragmentNumber, userData);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, userData, crc);
-    }
-
-    public MagicCookie getMagicCookie() {
-        return magicCookie;
-    }
-
-    public TransmitterAddress getTransmitterAddress() {
-        return transmitterAddress;
-    }
-
-    public ReceiverAddress getReceiverAddress() {
-        return receiverAddress;
-    }
-
-    public FragmentNumber getFragmentNumber() {
-        return fragmentNumber;
-    }
-
-    public UserDataLength getUserDataLength() {
-        return userDataLength;
-    }
-
-    public UserData getUserData() {
-        return userData;
-    }
-
-    public CRC getCrc() {
-        return crc;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof AmsSerialFrame)) {
-            return false;
-        }
-
-        AmsSerialFrame that = (AmsSerialFrame) o;
-
-        if (!magicCookie.equals(that.magicCookie)) {
-            return false;
-        }
-        if (!transmitterAddress.equals(that.transmitterAddress)) {
-            return false;
-        }
-        if (!receiverAddress.equals(that.receiverAddress)) {
-            return false;
-        }
-        if (!fragmentNumber.equals(that.fragmentNumber)) {
-            return false;
-        }
-        if (!userDataLength.equals(that.userDataLength)) {
-            return false;
-        }
-        if (!userData.equals(that.userData)) {
-            return false;
-        }
-        return crc.equals(that.crc);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = magicCookie.hashCode();
-        result = 31 * result + transmitterAddress.hashCode();
-        result = 31 * result + receiverAddress.hashCode();
-        result = 31 * result + fragmentNumber.hashCode();
-        result = 31 * result + userDataLength.hashCode();
-        result = 31 * result + userData.hashCode();
-        result = 31 * result + crc.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AmsSerialFrame{" +
-            "magicCookie=" + magicCookie +
-            ", transmitterAddress=" + transmitterAddress +
-            ", receiverAddress=" + receiverAddress +
-            ", fragmentNumber=" + fragmentNumber +
-            ", userDataLength=" + userDataLength +
-            ", userData=" + userData +
-            ", crc=" + crc +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java
deleted file mode 100644
index 26c679440..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/AmsSerialResetFrame.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.serial.types.*;
-import org.apache.plc4x.java.ads.api.util.ByteReadable;
-import org.apache.plc4x.java.ads.protocol.util.DigestUtil;
-
-/**
- * In case the transmitter does not receive a valid acknowledgement after multiple transmission, then a reset frame is
- * sent. In this way the receiver is informed that a new communication is running and the receiver then accepts the
- * fragment number during the next AMS-Frame, without carrying out a check.
- */
-public class AmsSerialResetFrame implements ByteReadable {
-
-    public static final int ID = 0xA503;
-
-    /**
-     * Id for detecting an AMS serial frame.
-     */
-    private final MagicCookie magicCookie;
-
-    /**
-     * Address of the sending participant. This value can always be set to 0 for an RS232 communication,
-     * since it is a 1 to 1 connection and hence the participants are unique.
-     */
-    private final TransmitterAddress transmitterAddress;
-
-    /**
-     * Receiver’s address. This value can always be set to 0 for an RS232 communication, since it is a 1 to 1
-     * connection and hence the participants are unique.
-     */
-    private final ReceiverAddress receiverAddress;
-
-    /**
-     * Number of the frame sent. Once the number 255 has been sent, it starts again from 0. The receiver checks this
-     * number with an internal counter.
-     */
-    private final FragmentNumber fragmentNumber;
-
-    /**
-     * The max. length of the AMS packet to be sent is 255. If larger AMS packets are to be sent then they have to be
-     * fragmented (not published at the moment).
-     */
-    private final UserDataLength userDataLength;
-
-    private final CRC crc;
-
-    private AmsSerialResetFrame(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, CRC crc) {
-        this.magicCookie = magicCookie;
-        this.transmitterAddress = transmitterAddress;
-        this.receiverAddress = receiverAddress;
-        this.fragmentNumber = fragmentNumber;
-        this.userDataLength = userDataLength;
-        this.crc = crc;
-    }
-
-    private AmsSerialResetFrame(TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber) {
-        this.magicCookie = MagicCookie.of(ID);
-        this.transmitterAddress = transmitterAddress;
-        this.receiverAddress = receiverAddress;
-        this.fragmentNumber = FragmentNumber.of((byte) 0);
-        this.userDataLength = UserDataLength.of((byte) 0);
-        this.crc = CRC.of(DigestUtil.calculateCrc16(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength));
-    }
-
-    private AmsSerialResetFrame(FragmentNumber fragmentNumber) {
-        this.magicCookie = MagicCookie.of(ID);
-        this.transmitterAddress = TransmitterAddress.RS232_COMM_ADDRESS;
-        this.receiverAddress = ReceiverAddress.RS232_COMM_ADDRESS;
-        this.fragmentNumber = FragmentNumber.of((byte) 0);
-        this.userDataLength = UserDataLength.of((byte) 0);
-        this.crc = CRC.of(DigestUtil.calculateCrc16(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength));
-    }
-
-    public static AmsSerialResetFrame of(MagicCookie magicCookie, TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber, UserDataLength userDataLength, CRC crc) {
-        return new AmsSerialResetFrame(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, crc);
-    }
-
-    public static AmsSerialResetFrame of(TransmitterAddress transmitterAddress, ReceiverAddress receiverAddress, FragmentNumber fragmentNumber) {
-        return new AmsSerialResetFrame(transmitterAddress, receiverAddress, fragmentNumber);
-    }
-
-    public static AmsSerialResetFrame of(FragmentNumber fragmentNumber) {
-        return new AmsSerialResetFrame(fragmentNumber);
-    }
-
-    @Override
-    public ByteBuf getByteBuf() {
-        return buildByteBuff(magicCookie, transmitterAddress, receiverAddress, fragmentNumber, userDataLength, crc);
-    }
-
-    public MagicCookie getMagicCookie() {
-        return magicCookie;
-    }
-
-    public TransmitterAddress getTransmitterAddress() {
-        return transmitterAddress;
-    }
-
-    public ReceiverAddress getReceiverAddress() {
-        return receiverAddress;
-    }
-
-    public FragmentNumber getFragmentNumber() {
-        return fragmentNumber;
-    }
-
-    public UserDataLength getUserDataLength() {
-        return userDataLength;
-    }
-
-    public CRC getCrc() {
-        return crc;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof AmsSerialResetFrame)) {
-            return false;
-        }
-
-        AmsSerialResetFrame that = (AmsSerialResetFrame) o;
-
-        if (!magicCookie.equals(that.magicCookie)) {
-            return false;
-        }
-        if (!transmitterAddress.equals(that.transmitterAddress)) {
-            return false;
-        }
-        if (!receiverAddress.equals(that.receiverAddress)) {
-            return false;
-        }
-        if (!fragmentNumber.equals(that.fragmentNumber)) {
-            return false;
-        }
-        if (!userDataLength.equals(that.userDataLength)) {
-            return false;
-        }
-        return crc.equals(that.crc);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = magicCookie.hashCode();
-        result = 31 * result + transmitterAddress.hashCode();
-        result = 31 * result + receiverAddress.hashCode();
-        result = 31 * result + fragmentNumber.hashCode();
-        result = 31 * result + userDataLength.hashCode();
-        result = 31 * result + crc.hashCode();
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "AmsSerialResetFrame{" +
-            "magicCookie=" + magicCookie +
-            ", transmitterAddress=" + transmitterAddress +
-            ", receiverAddress=" + receiverAddress +
-            ", fragmentNumber=" + fragmentNumber +
-            ", userDataLength=" + userDataLength +
-            ", crc=" + crc +
-            '}';
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/package-info.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/package-info.java
deleted file mode 100644
index 6b3b2b0cd..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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.
- */
-/**
- * This package contains serial related api objects.
- */
-package org.apache.plc4x.java.ads.api.serial;
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/CRC.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/CRC.java
deleted file mode 100644
index 59f601617..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/CRC.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-public class CRC extends UnsignedShortLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private CRC(byte... values) {
-        super(values);
-    }
-
-    private CRC(int value) {
-        super(value);
-    }
-
-    private CRC(String length) {
-        super(length);
-    }
-
-    private CRC(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static CRC of(byte... values) {
-        return new CRC(values);
-    }
-
-    public static CRC of(int value) {
-        return new CRC(value);
-    }
-
-    public static CRC of(String length) {
-        return new CRC(length);
-    }
-
-    public static CRC of(ByteBuf byteBuf) {
-        return new CRC(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java
deleted file mode 100644
index a5e00a317..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/FragmentNumber.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import static java.lang.Integer.toHexString;
-import static org.apache.commons.lang3.StringUtils.leftPad;
-
-public class FragmentNumber extends ByteValue {
-
-    public static final int NUM_BYTES = 1;
-
-    private FragmentNumber(byte value) {
-        super(value);
-    }
-
-    private FragmentNumber(byte[] value) {
-        super(value);
-    }
-
-    private FragmentNumber(ByteBuf byteBuf) {
-        this(byteBuf.readByte());
-    }
-
-    public static FragmentNumber of(byte value) {
-        return new FragmentNumber(value);
-    }
-
-    public static FragmentNumber of(byte... value) {
-        return new FragmentNumber(value);
-    }
-
-    public static FragmentNumber of(String value) {
-        return new FragmentNumber(Byte.valueOf(value));
-    }
-
-    public static FragmentNumber of(ByteBuf byteBuf) {
-        return new FragmentNumber(byteBuf);
-    }
-
-    public byte getAsByte() {
-        return value[0];
-    }
-
-    @Override
-    public String toString() {
-        return super.toString() + "{" +
-            "byteValue=" + (getAsByte() & 0xFF) +
-            ",hexValue=0x" + leftPad(toHexString(getAsByte() & 0xFF), NUM_BYTES * 2, "0") +
-            "}";
-    }
-}
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/MagicCookie.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/MagicCookie.java
deleted file mode 100644
index a17d20e3a..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/MagicCookie.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.UnsignedShortLEByteValue;
-
-public class MagicCookie extends UnsignedShortLEByteValue {
-
-    public static final int NUM_BYTES = UnsignedShortLEByteValue.UNSIGNED_SHORT_LE_NUM_BYTES;
-
-    private MagicCookie(byte... values) {
-        super(values);
-    }
-
-    private MagicCookie(int value) {
-        super(value);
-    }
-
-    private MagicCookie(String length) {
-        super(length);
-    }
-
-    private MagicCookie(ByteBuf byteBuf) {
-        super(byteBuf);
-    }
-
-    public static MagicCookie of(byte... values) {
-        return new MagicCookie(values);
-    }
-
-    public static MagicCookie of(int value) {
-        return new MagicCookie(value);
-    }
-
-    public static MagicCookie of(String length) {
-        return new MagicCookie(length);
-    }
-
-    public static MagicCookie of(ByteBuf byteBuf) {
-        return new MagicCookie(byteBuf);
-    }
-}
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java
deleted file mode 100644
index 29c2edeaf..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/ReceiverAddress.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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 org.apache.plc4x.java.ads.api.serial.types;
-
-import io.netty.buffer.ByteBuf;
-import org.apache.plc4x.java.ads.api.util.ByteValue;
-
-import static java.lang.Integer.toHexString;
-import static org.apache.commons.lang3.StringUtils.leftPad;
-
-public class ReceiverAddress extends ByteValue {
-
-    public static final int NUM_BYTES = 1;
-
-    public static final ReceiverAddress RS232_COMM_ADDRESS = ReceiverAddress.of((byte) 0);
-
-    private ReceiverAddress(byte value) {
-        super(value);
-    }
-
-    private ReceiverAddress(byte[] value) {
-        super(value);
-    }
-
-    private ReceiverAddress(ByteBuf byteBuf) {
-        this(byteBuf.readByte());
-    }
-
-    public static ReceiverAddress of(byte value) {
-        return new ReceiverAddress(value);
-    }
-
-    public static ReceiverAddress of(byte... value) {
-        return new ReceiverAddress(value);
-    }
-
-    public static ReceiverAddress of(String value) {
-        return new ReceiverAddress(Byte.valueOf(value));
-    }
-
-    public static ReceiverAddress of(ByteBuf byteBuf) {
-        return new ReceiverAddress(byteBuf);
-    }
-
-    public byte getAsByte() {
-        return value[0];
-    }
-
-    @Override
-    public String toString() {
-        return super.toString() + "{" +
-            "byteValue=" + (getAsByte() & 0xFF) +
-            ",hexValue=0x" + leftPad(toHexString(getAsByte() & 0xFF), NUM_BYTES * 2, "0") +
-            "}";
-    }
-}
\ No newline at end of file
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java
deleted file mode 100644
index 8e6f5d58b..000000000
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/api/serial/types/TransmitterAddress.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   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
... 12246 lines suppressed ...