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 2019/12/28 12:19:43 UTC

[plc4x] branch next-gen-core updated: - Updated the modules activated by the "with-proxies" profile.next-gen-core - Generally renamed "fieldValue" with "plcValue"

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

cdutz pushed a commit to branch next-gen-core
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/next-gen-core by this push:
     new 60e8904  - Updated the modules activated by the "with-proxies" profile.next-gen-core - Generally renamed "fieldValue" with "plcValue"
60e8904 is described below

commit 60e89042bd522794b0abf4b9d42739f3d490174e
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Sat Dec 28 13:19:33 2019 +0100

    - Updated the modules activated by the "with-proxies" profile.next-gen-core
    - Generally renamed "fieldValue" with "plcValue"
---
 .../java/abeth/protocol/Plc4xAbEthProtocol.java    |  22 +--
 .../java/ads/connection/AdsTcpPlcConnection.java   |   4 +-
 .../opcua/connection/OpcuaTcpPlcConnection.java    |   8 +-
 .../opcua/protocol/OpcuaSubsriptionHandle.java     |   2 +-
 .../connection/SimulatedPlcConnection.java         |  14 +-
 .../java/simulated/connection/TestDevice.java      |  14 +-
 .../java/simulated/connection/TestDeviceTest.java  |   4 +-
 .../apache/plc4x/edgent/PlcConnectionAdapter.java  |   4 +-
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |   4 +-
 .../apache/plc4x/edgent/mock/MockConnection.java   |  16 +--
 .../org/apache/plc4x/edgent/mock/MockField.java    |  12 +-
 .../apache/plc4x/edgent/mock/MockFieldHandler.java |  26 ++--
 .../mock/{MockFieldItem.java => MockPlcValue.java} |   4 +-
 .../plc4x/java/ads/protocol/Plc4x2AdsProtocol.java |  18 +--
 .../util/LittleEndianDecoderSpecHurz.groovy        |   6 +-
 .../ethernetip/netty/Plc4XEtherNetIpProtocol.java  |   4 +-
 ...tem.java => DefaultModbusByteArrayPlcList.java} |   8 +-
 .../java/modbus/netty/Plc4XModbusProtocol.java     |  12 +-
 .../java/modbus/util/ModbusPlcFieldHandler.java    |   2 +-
 ...ava => DefaultModbusByteArrayPlcValueTest.java} |   2 +-
 .../plc4x/java/s7/netty/Plc4XS7Protocol.java       | 150 ++++++++++-----------
 .../java/s7/netty/util/S7PlcFieldHandlerTest.java  |  16 +--
 .../java/spi/messages/DefaultPlcWriteRequest.java  |  16 +--
 .../java/spi/messages/InternalPlcWriteRequest.java |   4 +-
 .../SingleItemToSingleRequestProtocol.java         |   8 +-
 .../org/apache/plc4x/java/spi/types/FieldType.java |  29 +++-
 .../apache/plc4x/java/mock/MockFieldHandler.java   |  26 ++--
 .../mock/{MockFieldItem.java => MockPlcValue.java} |   4 +-
 ...ockFieldItemTest.java => MockPlcValueTest.java} |   4 +-
 plc4j/utils/interop/pom.xml                        |   1 -
 .../java/org/apache/plc4x/interop/impl/Server.java |  25 ++--
 .../amsads/connection/AdsTcpPlcConnection.java     |   4 +-
 .../java/amsads/protocol/Plc4x2AdsProtocol.java    |  22 +--
 .../s7/readwrite/events/IsoTPConnectedEvent.java   |  22 ---
 .../s7/readwrite/protocol/S7ProtocolLogic.java     |  14 +-
 src/main/script/prerequisiteCheck.groovy           |   1 +
 src/site/asciidoc/users/testing.adoc               |  10 +-
 tools/thrift/pom.xml                               |  12 ++
 38 files changed, 287 insertions(+), 267 deletions(-)

diff --git a/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/protocol/Plc4xAbEthProtocol.java b/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/protocol/Plc4xAbEthProtocol.java
index 606b887..3739c08 100644
--- a/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/protocol/Plc4xAbEthProtocol.java
+++ b/plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/protocol/Plc4xAbEthProtocol.java
@@ -170,7 +170,7 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
             AbEthField field = (AbEthField) plcReadRequest.getField(fieldName);
             PlcResponseCode responseCode = decodeResponseCode(plcReadResponse.getResponse().getStatus());
 
-            PlcValue fieldItem = null;
+            PlcValue plcValue = null;
             if (responseCode == PlcResponseCode.OK) {
                 try {
                     switch (field.getFileType()) {
@@ -179,9 +179,9 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
                                 DF1CommandResponseMessageProtectedTypedLogicalRead df1PTLR = (DF1CommandResponseMessageProtectedTypedLogicalRead) plcReadResponse.getResponse();
                                 short[] data = df1PTLR.getData();
                                 if(data.length == 1) {
-                                    fieldItem = new PlcInteger(data[0]);
+                                    plcValue = new PlcInteger(data[0]);
                                 } else {
-                                    fieldItem = new PlcList(Arrays.asList(data));
+                                    plcValue = new PlcList(Arrays.asList(data));
                                 }
                             }
                             break;
@@ -190,9 +190,9 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
                                 DF1CommandResponseMessageProtectedTypedLogicalRead df1PTLR = (DF1CommandResponseMessageProtectedTypedLogicalRead) plcReadResponse.getResponse();
                                 short[] data = df1PTLR.getData();
                                 if (((data[1]>> 7) & 1) == 0)  {
-                                    fieldItem = PlcValues.of((data[1] << 8) + data[0]);  // positive number
+                                    plcValue = PlcValues.of((data[1] << 8) + data[0]);  // positive number
                                 } else {
-                                    fieldItem = PlcValues.of((((~data[1] & 0b01111111) << 8) + (~(data[0]-1) & 0b11111111))  * -1);  // negative number
+                                    plcValue = PlcValues.of((((~data[1] & 0b01111111) << 8) + (~(data[0]-1) & 0b11111111))  * -1);  // negative number
                                 }
                             }
                             break;
@@ -201,9 +201,9 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
                                 DF1CommandResponseMessageProtectedTypedLogicalRead df1PTLR = (DF1CommandResponseMessageProtectedTypedLogicalRead) plcReadResponse.getResponse();
                                 short[] data = df1PTLR.getData();
                                 if (((data[3]>> 7) & 1) == 0)  {
-                                    fieldItem = PlcValues.of((data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0]);  // positive number
+                                    plcValue = PlcValues.of((data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0]);  // positive number
                                 } else {
-                                    fieldItem = PlcValues.of((((~data[3] & 0b01111111) << 24) + ((~(data[2]-1) & 0b11111111) << 16)+ ((~(data[1]-1) & 0b11111111) << 8) + (~(data[0]-1) & 0b11111111))  * -1);  // negative number
+                                    plcValue = PlcValues.of((((~data[3] & 0b01111111) << 24) + ((~(data[2]-1) & 0b11111111) << 16)+ ((~(data[1]-1) & 0b11111111) << 8) + (~(data[0]-1) & 0b11111111))  * -1);  // negative number
                                 }
                             }
                             break;
@@ -212,9 +212,9 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
                                 DF1CommandResponseMessageProtectedTypedLogicalRead df1PTLR = (DF1CommandResponseMessageProtectedTypedLogicalRead) plcReadResponse.getResponse();
                                 short[] data = df1PTLR.getData();
                                 if (field.getBitNumber() < 8) {
-                                    fieldItem = PlcValues.of((data[0] & (1 <<  field.getBitNumber())) != 0);         // read from first byte
+                                    plcValue = PlcValues.of((data[0] & (1 <<  field.getBitNumber())) != 0);         // read from first byte
                                 } else {
-                                    fieldItem = PlcValues.of((data[1] & (1 << (field.getBitNumber() - 8) )) != 0);   // read from second byte
+                                    plcValue = PlcValues.of((data[1] & (1 << (field.getBitNumber() - 8) )) != 0);   // read from second byte
                                 }
                             }
                             break;
@@ -227,7 +227,7 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
                     logger.warn("Some other error occurred casting field {}, FieldInformation: {}",fieldName, field,e);
                 }
             }
-            Pair<PlcResponseCode, PlcValue> result = new ImmutablePair<>(responseCode, fieldItem);
+            Pair<PlcResponseCode, PlcValue> result = new ImmutablePair<>(responseCode, plcValue);
             values.put(fieldName, result);
         }
 
@@ -241,7 +241,7 @@ public class Plc4xAbEthProtocol extends PlcMessageToMessageCodec<CIPEncapsulatio
         return PlcResponseCode.NOT_FOUND;
     }
 
-    private PlcValue decodeReadResponseUnsignedByteField(AbEthField field, ByteBuf data) {
+    private PlcValue decodeReadResponseUnsignedBytePlcValue(AbEthField field, ByteBuf data) {
         Short[] shorts = null;//readAllValues(Short.class, field, i -> data.readUnsignedByte());
         return new PlcInteger(1/*shorts*/);
     }
diff --git a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
index f580da9..3b5b354 100644
--- a/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
+++ b/plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/connection/AdsTcpPlcConnection.java
@@ -301,8 +301,8 @@ public class AdsTcpPlcConnection extends AdsAbstractPlcConnection implements Plc
                         String plcFieldName = adsSubscriptionHandle.getPlcFieldName();
                         AdsDataType adsDataType = adsSubscriptionHandle.getAdsDataType();
                         try {
-                            PlcValue baseDefaultFieldItem = LittleEndianDecoder.decodeData(adsDataType, data.getBytes());
-                            fields.put(plcFieldName, Pair.of(PlcResponseCode.OK, baseDefaultFieldItem));
+                            PlcValue baseDefaultPlcValue = LittleEndianDecoder.decodeData(adsDataType, data.getBytes());
+                            fields.put(plcFieldName, Pair.of(PlcResponseCode.OK, baseDefaultPlcValue));
                         } catch (RuntimeException e) {
                             LOGGER.error("Can't decode {}", data, e);
                         }
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
index cb5020c..de67394 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnection.java
@@ -111,7 +111,7 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
         return new OpcuaTcpPlcConnection(address, port, params, requestTimeout);
     }
 
-    public static PlcValue encodeFieldItem(DataValue value) {
+    public static PlcValue encodePlcValue(DataValue value) {
         NodeId typeNode = value.getValue().getDataType().get();
         Object objValue = value.getValue().getValue();
 
@@ -126,7 +126,7 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
                 byteArry[counter] = bytie;
                 counter++;
             }
-            return new DefaultByteArrayFieldItem(byteArry);*/
+            return new DefaultByteArrayPlcValue(byteArry);*/
         } else if (typeNode.equals(Identifiers.Integer)) {
             return new PlcInteger((Integer) objValue);
         } else if (typeNode.equals(Identifiers.Int16)) {
@@ -401,7 +401,7 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
                     != StatusCode.GOOD) {
                     resultCode = PlcResponseCode.NOT_FOUND;
                 } else {
-                    stringItem = encodeFieldItem(readValues.get(counter));
+                    stringItem = encodePlcValue(readValues.get(counter));
 
                 }
                 Pair<PlcResponseCode, PlcValue> newPair = new ImmutablePair<>(resultCode, stringItem);
@@ -433,7 +433,7 @@ public class OpcuaTcpPlcConnection extends BaseOpcuaPlcConnection {
             for (String fieldName : writeRequest.getFieldNames()) {
                 OpcuaField uaField = (OpcuaField) writeRequest.getField(fieldName);
                 NodeId idNode = generateNodeId(uaField);
-                Variant var = new Variant(internalPlcWriteRequest.getFieldItem(fieldName).getObject());
+                Variant var = new Variant(internalPlcWriteRequest.getPlcValue(fieldName).getObject());
                 DataValue value = new DataValue(var, null, null);
                 ids.add(idNode);
                 names.add(fieldName);
diff --git a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubsriptionHandle.java b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubsriptionHandle.java
index 1beb793..730f308 100644
--- a/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubsriptionHandle.java
+++ b/plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/protocol/OpcuaSubsriptionHandle.java
@@ -71,7 +71,7 @@ public class OpcuaSubsriptionHandle implements PlcSubscriptionHandle {
             if (value.getStatusCode() != StatusCode.GOOD) {
                 resultCode = PlcResponseCode.NOT_FOUND;
             } else {
-                stringItem = OpcuaTcpPlcConnection.encodeFieldItem(value);
+                stringItem = OpcuaTcpPlcConnection.encodePlcValue(value);
 
             }
             Map<String, Pair<PlcResponseCode, PlcValue>> fields = new HashMap<>();
diff --git a/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedPlcConnection.java b/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedPlcConnection.java
index ba7cd96..838beca 100644
--- a/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedPlcConnection.java
+++ b/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/SimulatedPlcConnection.java
@@ -142,11 +142,11 @@ public class SimulatedPlcConnection extends AbstractPlcConnection implements Plc
         Map<String, Pair<PlcResponseCode, PlcValue>> fields = new HashMap<>();
         for (String fieldName : request.getFieldNames()) {
             TestField field = (TestField) request.getField(fieldName);
-            Optional<PlcValue> fieldItemOptional = device.get(field);
+            Optional<PlcValue> valueOptional = device.get(field);
             ImmutablePair<PlcResponseCode, PlcValue> fieldPair;
-            boolean present = fieldItemOptional.isPresent();
+            boolean present = valueOptional.isPresent();
             fieldPair = present
-                ? new ImmutablePair<>(PlcResponseCode.OK, fieldItemOptional.get())
+                ? new ImmutablePair<>(PlcResponseCode.OK, valueOptional.get())
                 : new ImmutablePair<>(PlcResponseCode.NOT_FOUND, null);
             fields.put(fieldName, fieldPair);
         }
@@ -160,8 +160,8 @@ public class SimulatedPlcConnection extends AbstractPlcConnection implements Plc
         Map<String, PlcResponseCode> fields = new HashMap<>();
         for (String fieldName : request.getFieldNames()) {
             TestField field = (TestField) request.getField(fieldName);
-            PlcValue fieldItem = request.getFieldItem(fieldName);
-            device.set(field, fieldItem);
+            PlcValue value = request.getPlcValue(fieldName);
+            device.set(field, value);
             fields.put(fieldName, PlcResponseCode.OK);
         }
         PlcWriteResponse response = new DefaultPlcWriteResponse(request, fields);
@@ -200,7 +200,7 @@ public class SimulatedPlcConnection extends AbstractPlcConnection implements Plc
     }
 
     private Consumer<PlcValue> dispatchSubscriptionEvent(String name, InternalPlcSubscriptionHandle handle) {
-        return fieldItem -> {
+        return plcValue -> {
             InternalPlcConsumerRegistration plcConsumerRegistration = registrations.get(handle);
             if (plcConsumerRegistration == null) {
                 return;
@@ -210,7 +210,7 @@ public class SimulatedPlcConnection extends AbstractPlcConnection implements Plc
             if (consumer == null) {
                 return;
             }
-            consumer.accept(new DefaultPlcSubscriptionEvent(Instant.now(), Collections.singletonMap(name, Pair.of(PlcResponseCode.OK, fieldItem))));
+            consumer.accept(new DefaultPlcSubscriptionEvent(Instant.now(), Collections.singletonMap(name, Pair.of(PlcResponseCode.OK, plcValue))));
         };
     }
 
diff --git a/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestDevice.java b/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestDevice.java
index ed537ed..f0217cd 100644
--- a/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestDevice.java
+++ b/plc4j/drivers/simulated/src/main/java/org/apache/plc4x/java/simulated/connection/TestDevice.java
@@ -75,7 +75,7 @@ public class TestDevice {
                 changeOfStateSubscriptions.values().stream()
                     .filter(pair -> pair.getKey().equals(field))
                     .map(Pair::getValue)
-                    .forEach(baseDefaultFieldItemConsumer -> baseDefaultFieldItemConsumer.accept(value));
+                    .forEach(baseDefaultPlcValueConsumer -> baseDefaultPlcValueConsumer.accept(value));
                 state.put(field, value);
                 return;
             case STDOUT:
@@ -140,11 +140,11 @@ public class TestDevice {
 
     public void addCyclicSubscription(Consumer<PlcValue> consumer, PlcSubscriptionHandle handle, TestField plcField, Duration duration) {
         ScheduledFuture<?> scheduledFuture = scheduler.scheduleAtFixedRate(() -> {
-            PlcValue baseDefaultFieldItem = state.get(plcField);
-            if (baseDefaultFieldItem == null) {
+            PlcValue baseDefaultPlcValue = state.get(plcField);
+            if (baseDefaultPlcValue == null) {
                 return;
             }
-            consumer.accept(baseDefaultFieldItem);
+            consumer.accept(baseDefaultPlcValue);
         }, duration.toMillis(), duration.toMillis(), TimeUnit.MILLISECONDS);
         cyclicSubscriptions.put(handle, scheduledFuture);
     }
@@ -156,11 +156,11 @@ public class TestDevice {
     public void addEventSubscription(Consumer<PlcValue> consumer, PlcSubscriptionHandle handle, TestField plcField) {
         Future<?> submit = pool.submit(() -> {
             while (!Thread.currentThread().isInterrupted()) {
-                PlcValue baseDefaultFieldItem = state.get(plcField);
-                if (baseDefaultFieldItem == null) {
+                PlcValue baseDefaultPlcValue = state.get(plcField);
+                if (baseDefaultPlcValue == null) {
                     continue;
                 }
-                consumer.accept(baseDefaultFieldItem);
+                consumer.accept(baseDefaultPlcValue);
                 try {
                     TimeUnit.SECONDS.sleep((long) (Math.random() * 10));
                 } catch (InterruptedException ignore) {
diff --git a/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestDeviceTest.java b/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestDeviceTest.java
index 9afe647..e4b7c59 100644
--- a/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestDeviceTest.java
+++ b/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/TestDeviceTest.java
@@ -49,8 +49,8 @@ public class TestDeviceTest {
         device.set(field, new PlcLong(42));
         value = device.get(field);
         assertTrue(value.isPresent());
-        PlcValue fieldItem = value.get();
-        assertEquals(42L, fieldItem.getLong());
+        PlcValue plcValue = value.get();
+        assertEquals(42L, plcValue.getLong());
     }
 
 }
diff --git a/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java b/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
index de43ea3..3e2d26e 100644
--- a/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
+++ b/plc4j/integrations/apache-edgent/src/main/java/org/apache/plc4x/edgent/PlcConnectionAdapter.java
@@ -254,8 +254,8 @@ public class PlcConnectionAdapter implements AutoCloseable {
         return new ObjectConsumer<>(genericDatatype, clientDatatype, fieldQuery);
     }
 
-    <T> Consumer<JsonObject> newJsonConsumer(PlcClientDatatype clientDatatype, Function<JsonObject, String> fieldQueryFn, Function<JsonObject, T> fieldValueFn) {
-        return new JsonConsumer<>(clientDatatype, fieldQueryFn, fieldValueFn);
+    <T> Consumer<JsonObject> newJsonConsumer(PlcClientDatatype clientDatatype, Function<JsonObject, String> fieldQueryFn, Function<JsonObject, T> valueFn) {
+        return new JsonConsumer<>(clientDatatype, fieldQueryFn, valueFn);
     }
 
     private abstract class BaseConsumer<T> implements Consumer<T> {
diff --git a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
index 0fc1244..2c57a06 100644
--- a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
+++ b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
@@ -88,7 +88,7 @@ public class PlcConnectionAdapterTest {
         // will help identify problems in the adapter/supplier/consumer
         PlcField plcField = request.getFields().get(0);
         // TODO: smart value conversion
-        connection.setFieldItem(plcField, new PlcLong(0L));
+        connection.setPlcValue(plcField, new PlcLong(0L));
 
         CompletableFuture<PlcReadResponse> cf = connection.read(request);
 
@@ -103,7 +103,7 @@ public class PlcConnectionAdapterTest {
         // this is really a tests of our mock tooling but knowing it's behaving as expected
         // will help identify problems in the adapter/supplier/consumer
         PlcField plcField = request.getFields().get(0);
-        connection.setFieldItem(plcField, new PlcLong(0L));
+        connection.setPlcValue(plcField, new PlcLong(0L));
 
         CompletableFuture<PlcWriteResponse> cf = connection.write(request);
 
diff --git a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
index 0664ebc..6dbc833 100644
--- a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
+++ b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockConnection.java
@@ -91,7 +91,7 @@ public class MockConnection extends org.apache.plc4x.java.mock.connection.MockCo
         Map<String, Pair<PlcResponseCode, PlcValue>> fields = new LinkedHashMap<>();
         for (String fieldName : readRequest.getFieldNames()) {
             PlcField field = readRequest.getField(fieldName);
-            fields.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, getFieldItem(field)));
+            fields.put(fieldName, new ImmutablePair<>(PlcResponseCode.OK, getPlcValue(field)));
         }
         PlcReadResponse response = new DefaultPlcReadResponse((InternalPlcReadRequest) readRequest, fields);
         return CompletableFuture.completedFuture(response);
@@ -116,7 +116,7 @@ public class MockConnection extends org.apache.plc4x.java.mock.connection.MockCo
         Map<String, PlcResponseCode> fields = new LinkedHashMap<>();
         for (String fieldName : defaultPlcWriteRequest.getFieldNames()) {
             PlcField field = defaultPlcWriteRequest.getField(fieldName);
-            setFieldItem(field, defaultPlcWriteRequest.getFieldItem(fieldName));
+            setPlcValue(field, defaultPlcWriteRequest.getPlcValue(fieldName));
             fields.put(fieldName, PlcResponseCode.OK);
         }
         PlcWriteResponse response = new DefaultPlcWriteResponse(defaultPlcWriteRequest, fields);
@@ -124,19 +124,19 @@ public class MockConnection extends org.apache.plc4x.java.mock.connection.MockCo
         return CompletableFuture.completedFuture(response);
     }
 
-    public void setFieldItem(PlcField field, PlcValue fieldItem) {
-        dataValueMap.put(field, fieldItem);
+    public void setPlcValue(PlcField plcField, PlcValue plcValue) {
+        dataValueMap.put(plcField, plcValue);
     }
 
-    public PlcValue getFieldItem(PlcField field) {
-        return dataValueMap.get(field);
+    public PlcValue getPlcValue(PlcField plcField) {
+        return dataValueMap.get(plcField);
     }
 
-    public Map<PlcField, PlcValue> getAllFieldItems() {
+    public Map<PlcField, PlcValue> getAllPlcValues() {
         return dataValueMap;
     }
 
-    public void clearAllFieldItems() {
+    public void clearAllPlcValues() {
         dataValueMap.clear();
     }
 
diff --git a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
index 16dc965..3993e1c 100644
--- a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
+++ b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockField.java
@@ -23,24 +23,24 @@ import org.apache.plc4x.java.api.model.PlcField;
 public class MockField implements PlcField {
 
     private final String address;
-    private final MockFieldItem fieldItem;
+    private final MockPlcValue plcValue;
 
     public MockField(String address) {
         this.address = address;
-        this.fieldItem = null;
+        this.plcValue = null;
     }
 
-    public MockField(String address, MockFieldItem fieldItem) {
+    public MockField(String address, MockPlcValue plcValue) {
         this.address = address;
-        this.fieldItem = fieldItem;
+        this.plcValue = plcValue;
     }
 
     public String getAddress() {
         return address;
     }
 
-    public MockFieldItem getFieldItem() {
-        return fieldItem;
+    public MockPlcValue getPlcValue() {
+        return plcValue;
     }
 
     @Override
diff --git a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
index a28ef38..ba45558 100644
--- a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
+++ b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldHandler.java
@@ -33,67 +33,67 @@ public class MockFieldHandler implements PlcFieldHandler {
 
     @Override
     public PlcValue encodeBoolean(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeByte(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeShort(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeInteger(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeBigInteger(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeLong(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeFloat(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeBigDecimal(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeDouble(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeString(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeTime(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeDate(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeDateTime(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
 }
diff --git a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockPlcValue.java
similarity index 91%
rename from plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
rename to plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockPlcValue.java
index 556761b..7bd15c3 100644
--- a/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockFieldItem.java
+++ b/plc4j/integrations/apache-edgent/src/test/java/org/apache/plc4x/edgent/mock/MockPlcValue.java
@@ -21,11 +21,11 @@ package org.apache.plc4x.edgent.mock;
 
 import org.apache.plc4x.java.api.value.PlcValueAdapter;
 
-public class MockFieldItem extends PlcValueAdapter {
+public class MockPlcValue extends PlcValueAdapter {
 
     private Object[] values;
 
-    public MockFieldItem(Object... values) {
+    public MockPlcValue(Object... values) {
         this.values = values;
     }
 
diff --git a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java
index e33ba8e..df4538a 100644
--- a/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java
+++ b/plc4j/protocols/ads/src/main/java/org/apache/plc4x/java/ads/protocol/Plc4x2AdsProtocol.java
@@ -152,20 +152,20 @@ public class Plc4x2AdsProtocol extends MessageToMessageCodec<AmsPacket, PlcReque
         IndexGroup indexGroup = IndexGroup.of(directAdsField.getIndexGroup());
         IndexOffset indexOffset = IndexOffset.of(directAdsField.getIndexOffset());
 
-        Object[] values;
-        PlcValue fieldItem = writeRequest.getFieldItems().get(0);
-        if(fieldItem instanceof PlcList) {
-            values = ((PlcList) fieldItem).getList().toArray(new Object[0]);
+        Object[] plcValues;
+        PlcValue plcValue = writeRequest.getPlcValues().get(0);
+        if(plcValue instanceof PlcList) {
+            plcValues = ((PlcList) plcValue).getList().toArray(new Object[0]);
         } else {
-            values = new Object[] {fieldItem.getObject()};
+            plcValues = new Object[] {plcValue.getObject()};
         }
 
-        byte[] bytes = encodeData(directAdsField.getAdsDataType(), values);
+        byte[] bytes = encodeData(directAdsField.getAdsDataType(), plcValues);
         int bytesToBeWritten = bytes.length;
         int maxTheoreticalSize = directAdsField.getAdsDataType().getTargetByteSize() * directAdsField.getNumberOfElements();
         if (bytesToBeWritten > maxTheoreticalSize) {
             LOGGER.debug("Requested AdsDatatype {} is exceeded by number of bytes {}. Limit {}.", directAdsField.getAdsDataType(), bytesToBeWritten, maxTheoreticalSize);
-            throw new PlcProtocolPayloadTooBigException("ADS", maxTheoreticalSize, bytesToBeWritten, values);
+            throw new PlcProtocolPayloadTooBigException("ADS", maxTheoreticalSize, bytesToBeWritten, plcValues);
         }
         Data data = Data.of(bytes);
         AmsPacket amsPacket = AdsWriteRequest.of(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, invokeId, indexGroup, indexOffset, data);
@@ -302,14 +302,14 @@ public class Plc4x2AdsProtocol extends MessageToMessageCodec<AmsPacket, PlcReque
 
         PlcResponseCode responseCode = decodeResponseCode(responseMessage.getResult());
         byte[] bytes = responseMessage.getData().getBytes();
-        PlcValue fieldItem = decodeData(field.getAdsDataType(), bytes);
+        PlcValue value = decodeData(field.getAdsDataType(), bytes);
 
         // TODO: does every item has the same ads response or is this whole aggregation broken?
         Map<String, Pair<PlcResponseCode, PlcValue>> responseItems = plcReadRequest.getFieldNames()
             .stream()
             .collect(Collectors.toMap(
                 fieldName -> fieldName,
-                ignore -> Pair.of(responseCode, fieldItem)
+                ignore -> Pair.of(responseCode, value)
             ));
 
         return new DefaultPlcReadResponse(plcReadRequest, responseItems);
diff --git a/plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderSpecHurz.groovy b/plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderSpecHurz.groovy
index 8669b1a..f3e7b8c 100644
--- a/plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderSpecHurz.groovy
+++ b/plc4j/protocols/ads/src/test/groovy/org/apache/plc4x/java/ads/protocol/util/LittleEndianDecoderSpecHurz.groovy
@@ -32,12 +32,12 @@ class LittleEndianDecoderSpecHurz extends Specification {
     @Unroll
     def "decode of #adsdt.name() using get#retrievalType.simpleName [#expectedValues]"(AdsDataType adsdt, def retrievalType, def expectedValues, def rawData) {
         when:
-        def fieldItem = LittleEndianDecoder.decodeData(adsdt, rawData)
+        def plcValue = LittleEndianDecoder.decodeData(adsdt, rawData)
 
         and:
         def data = []
-        (0..fieldItem.numberOfValues - 1).forEach({ index ->
-            data << fieldItem."get${retrievalType.simpleName}"(index)
+        (0..plcValue.numberOfValues - 1).forEach({ index ->
+            data << plcValue."get${retrievalType.simpleName}"(index)
         })
 
         then:
diff --git a/plc4j/protocols/ethernet-ip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java b/plc4j/protocols/ethernet-ip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java
index d2e8d6b..68f56b2 100644
--- a/plc4j/protocols/ethernet-ip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java
+++ b/plc4j/protocols/ethernet-ip/src/main/java/org/apache/plc4x/java/ethernetip/netty/Plc4XEtherNetIpProtocol.java
@@ -478,8 +478,8 @@ public class Plc4XEtherNetIpProtocol extends MessageToMessageCodec<EnipPacket, P
                 } else {
                     value = -1;
                 }
-                PlcValue fieldItem = new PlcLong(value);
-                values.put(fieldName, new ImmutablePair<>(responseCode, fieldItem));
+                PlcValue plcValue = new PlcLong(value);
+                values.put(fieldName, new ImmutablePair<>(responseCode, plcValue));
             }
             InternalPlcReadResponse response = new DefaultPlcReadResponse(request, values);
             plcRequestContainer.getResponseFuture().complete(response);
diff --git a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItem.java b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcList.java
similarity index 96%
rename from plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItem.java
rename to plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcList.java
index 849a84d..6e2007a 100644
--- a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItem.java
+++ b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcList.java
@@ -27,10 +27,10 @@ import java.util.Arrays;
 import java.util.stream.Stream;
 
 /**
- * default implementation for DefaultByteArrayFieldItem for Usage within Modbus module
+ * default implementation for PlcValue for Usage within Modbus module
  * default ByteOrder is set to BIG_ENDIAN, can be selected on regarding get-method explicitly from user if needed
  */
-public class DefaultModbusByteArrayFieldItem extends PlcList {
+public class DefaultModbusByteArrayPlcList extends PlcList {
 
     private static final int SHORT_BYTES = 2;
     private static final int INTEGER_BYTES = 4;
@@ -42,7 +42,7 @@ public class DefaultModbusByteArrayFieldItem extends PlcList {
 
     private Byte[] completeByteArray;
 
-    public DefaultModbusByteArrayFieldItem(Byte[]... values) {
+    public DefaultModbusByteArrayPlcList(Byte[]... values) {
         super(Arrays.asList(values));
         this.byteOrder = DEFAULT_ENDIANNESS;
         this.completeByteArray = Arrays.stream(values).flatMap(Stream::of).toArray(Byte[]::new);
@@ -200,7 +200,7 @@ public class DefaultModbusByteArrayFieldItem extends PlcList {
         if (!super.equals(o)) {
             return false;
         }
-        DefaultModbusByteArrayFieldItem that = (DefaultModbusByteArrayFieldItem) o;
+        DefaultModbusByteArrayPlcList that = (DefaultModbusByteArrayPlcList) o;
         return Arrays.equals(completeByteArray, that.completeByteArray);
     }
 
diff --git a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
index 692ab75..18af60c 100644
--- a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
+++ b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
@@ -56,9 +56,7 @@ import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.api.value.PlcBoolean;
 import org.apache.plc4x.java.api.value.PlcList;
-import org.apache.plc4x.java.api.value.PlcSimpleValue;
 import org.apache.plc4x.java.api.value.PlcValue;
-import org.apache.plc4x.java.modbus.messages.items.DefaultModbusByteArrayFieldItem;
 import org.apache.plc4x.java.modbus.model.CoilModbusField;
 import org.apache.plc4x.java.modbus.model.MaskWriteRegisterModbusField;
 import org.apache.plc4x.java.modbus.model.ModbusField;
@@ -146,7 +144,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
         if (field instanceof RegisterModbusField) {
             RegisterModbusField registerModbusField = (RegisterModbusField) field;
             if (quantity > 1) {
-                byte[] bytesToWrite = produceRegisterValue(((PlcList) request.getFieldItem(fieldName)).getList());
+                byte[] bytesToWrite = produceRegisterValue(((PlcList) request.getPlcValue(fieldName)).getList());
                 // A register is a 16 bit (2 byte) value ... so every value needs 2 byte.
                 int requiredLength = 2 * quantity;
                 if (bytesToWrite.length != requiredLength) {
@@ -154,7 +152,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
                 }
                 modbusRequest = new WriteMultipleRegistersRequest(registerModbusField.getAddress(), quantity, bytesToWrite);
             } else {
-                byte[] register = produceRegisterValue(Collections.singletonList(request.getFieldItem(fieldName).getObject()));
+                byte[] register = produceRegisterValue(Collections.singletonList(request.getPlcValue(fieldName).getObject()));
                 if ((register == null) || (register.length != 2)) {
                     throw new PlcProtocolException("Invalid register values created. Should be 2 bytes. Was " +
                         ((register != null) ? register.length : 0));
@@ -166,7 +164,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
         } else if (field instanceof CoilModbusField) {
             CoilModbusField coilModbusField = (CoilModbusField) field;
             if (quantity > 1) {
-                byte[] bytesToWrite = produceCoilValues(((PlcList) request.getFieldItem(fieldName)).getList());
+                byte[] bytesToWrite = produceCoilValues(((PlcList) request.getPlcValue(fieldName)).getList());
                 // As each coil value represents a bit, the number of bytes needed
                 // equals "ceil(quantity/8)" (a 3 bit shift is a division by 8 ... the +1 is the "ceil")
                 int requiredLength = (quantity >> 3) + 1;
@@ -177,7 +175,7 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
                 }
                 modbusRequest = new WriteMultipleCoilsRequest(coilModbusField.getAddress(), quantity, bytesToWrite);
             } else {
-                boolean booleanToWrite = produceCoilValue(Collections.singletonList(request.getFieldItem(fieldName).getObject()));
+                boolean booleanToWrite = produceCoilValue(Collections.singletonList(request.getPlcValue(fieldName).getObject()));
                 modbusRequest = new WriteSingleCoilRequest(coilModbusField.getAddress(), booleanToWrite);
             }
         } else if (field instanceof MaskWriteRegisterModbusField) {
@@ -557,6 +555,6 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
             byteBuf.readBytes(register);
             data.add(ArrayUtils.toObject(register));
         }
-        return null;//new DefaultModbusByteArrayFieldItem(data.toArray(new Byte[0][0]));
+        return null;//new DefaultModbusByteArrayPlcValue(data.toArray(new Byte[0][0]));
     }
 }
diff --git a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java
index dc9c500..0d71f26 100644
--- a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java
+++ b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/util/ModbusPlcFieldHandler.java
@@ -118,6 +118,6 @@ public class ModbusPlcFieldHandler extends DefaultPlcFieldHandler {
                         " is not assignable to " + modbusField + " fields.");
             }
         }
-        return new DefaultModbusByteArrayFieldItem(byteArrays.toArray(new Byte[0][0]));
+        return new DefaultModbusByteArrayPlcValue(byteArrays.toArray(new Byte[0][0]));
     }*/
 }
diff --git a/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java b/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcValueTest.java
similarity index 99%
rename from plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java
rename to plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcValueTest.java
index 29c905b..a687a41 100644
--- a/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayFieldItemTest.java
+++ b/plc4j/protocols/modbus/src/test/java/org/apache/plc4x/java/modbus/messages/items/DefaultModbusByteArrayPlcValueTest.java
@@ -28,7 +28,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
 @SuppressWarnings("unchecked")
-public class DefaultModbusByteArrayFieldItemTest {
+public class DefaultModbusByteArrayPlcValueTest {
     /*@Test
     public void convertByteArrayToIntegerTest() {
         PlcValue fieldItem = getFieldItemForIntegerArray();
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
index 346ab33..5d2d8eb 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/Plc4XS7Protocol.java
@@ -201,7 +201,7 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
             if(!(writeRequest instanceof DefaultPlcWriteRequest)) {
                 throw new PlcException("The writeRequest should have been of type DefaultPlcWriteRequest");
             }
-            PlcValue fieldItem = ((DefaultPlcWriteRequest) writeRequest).getFieldItem(fieldName);
+            PlcValue value = ((DefaultPlcWriteRequest) writeRequest).getPlcValue(fieldName);
 
             // The number of elements provided in the request must match the number defined in the field, or
             // bad things are going to happen.
@@ -225,7 +225,7 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
                 // Bit
                 // -----------------------------------------
                 case BOOL:
-                    byteData = encodeWriteRequestBitField(fieldItem);
+                    byteData = encodeWriteRequestBitField(value);
                     break;
                 // -----------------------------------------
                 // Signed integer values
@@ -233,57 +233,57 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
                 case BYTE:
                 case SINT:
                 case CHAR:  // 1 byte
-                    byteData = encodeWriteRequestByteField(fieldItem, true);
+                    byteData = encodeWriteRequestByteField(value, true);
                     break;
                 case WORD:
                 case INT:
                 case WCHAR:  // 2 byte (16 bit)
-                    byteData = encodeWriteRequestShortField(fieldItem, true);
+                    byteData = encodeWriteRequestShortField(value, true);
                     break;
                 case DWORD:
                 case DINT:  // 4 byte (32 bit)
-                    byteData = encodeWriteRequestIntegerField(fieldItem, true);
+                    byteData = encodeWriteRequestIntegerField(value, true);
                     break;
                 case LWORD:
                 case LINT:  // 8 byte (64 bit)
-                    byteData = encodeWriteRequestLongField(fieldItem, true);
+                    byteData = encodeWriteRequestLongField(value, true);
                     break;
                 // -----------------------------------------
                 // Unsigned integer values
                 // -----------------------------------------
                 // 8 bit:
                 case USINT:
-                    byteData = encodeWriteRequestByteField(fieldItem, false);
+                    byteData = encodeWriteRequestByteField(value, false);
                     break;
                 // 16 bit:
                 case UINT:
-                    byteData = encodeWriteRequestShortField(fieldItem, false);
+                    byteData = encodeWriteRequestShortField(value, false);
                     break;
                 // 32 bit:
                 case UDINT:
-                    byteData = encodeWriteRequestIntegerField(fieldItem, false);
+                    byteData = encodeWriteRequestIntegerField(value, false);
                     break;
                 // 64 bit:
                 case ULINT:
-                    byteData = encodeWriteRequestLongField(fieldItem, false);
+                    byteData = encodeWriteRequestLongField(value, false);
                     break;
                 // -----------------------------------------
                 // Floating point values
                 // -----------------------------------------
                 case REAL:
-                    byteData = encodeWriteRequestFloatField(fieldItem);
+                    byteData = encodeWriteRequestFloatField(value);
                     break;
                 case LREAL:
-                    byteData = encodeWriteRequestDoubleField(fieldItem);
+                    byteData = encodeWriteRequestDoubleField(value);
                     break;
                 // -----------------------------------------
                 // Characters & Strings
                 // -----------------------------------------
                 case STRING:
-                    byteData = encodeWriteRequestStringField(fieldItem, false);
+                    byteData = encodeWriteRequestStringField(value, false);
                     break;
                 case WSTRING:
-                    byteData = encodeWriteRequestStringField(fieldItem, true);
+                    byteData = encodeWriteRequestStringField(value, true);
                     break;
                 default:
                     throw new PlcProtocolException("Unsupported type " + s7Field.getDataType());
@@ -307,108 +307,108 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
         out.add(s7WriteRequest);
     }
 
-    byte[] encodeWriteRequestBitField(PlcValue fieldItem) {
-        int numBytes = fieldItem.getNumberOfValues() >> 3 / 8;
+    byte[] encodeWriteRequestBitField(PlcValue value) {
+        int numBytes = value.getNumberOfValues() >> 3 / 8;
         byte[] byteData = new byte[numBytes];
         BitSet bitSet = new BitSet();
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
-            for (int i = 0; i < fieldItem.getNumberOfValues(); i++) {
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
+            for (int i = 0; i < value.getNumberOfValues(); i++) {
                 bitSet.set(i, plcList.getIndex(i).getBoolean());
             }
         } else {
-            bitSet.set(0, fieldItem.getBoolean());
+            bitSet.set(0, value.getBoolean());
         }
         byte[] src = bitSet.toByteArray();
         System.arraycopy(src, 0, byteData, 0, Math.min(src.length, numBytes));
         return byteData;
     }
 
-    byte[] encodeWriteRequestByteField(PlcValue fieldItem, boolean signed) {
-        int numBytes = fieldItem.getNumberOfValues();
+    byte[] encodeWriteRequestByteField(PlcValue value, boolean signed) {
+        int numBytes = value.getNumberOfValues();
         ByteBuffer buffer = ByteBuffer.allocate(numBytes);
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
             for (PlcValue plcValue : plcList.getList()) {
                 buffer.put(plcValue.getByte());
             }
         } else {
-            buffer.put(fieldItem.getByte());
+            buffer.put(value.getByte());
         }
         return buffer.array();
     }
 
-    byte[] encodeWriteRequestShortField(PlcValue fieldItem, boolean signed) {
-        int numBytes = fieldItem.getNumberOfValues() * 2;
+    byte[] encodeWriteRequestShortField(PlcValue value, boolean signed) {
+        int numBytes = value.getNumberOfValues() * 2;
         ByteBuffer buffer = ByteBuffer.allocate(numBytes);
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
             for (PlcValue plcValue : plcList.getList()) {
                 buffer.putShort(plcValue.getShort());
             }
         } else {
-            buffer.putShort(fieldItem.getShort());
+            buffer.putShort(value.getShort());
         }
         return buffer.array();
     }
 
-    byte[] encodeWriteRequestIntegerField(PlcValue fieldItem, boolean signed) {
-        int numBytes = fieldItem.getNumberOfValues() * 4;
+    byte[] encodeWriteRequestIntegerField(PlcValue value, boolean signed) {
+        int numBytes = value.getNumberOfValues() * 4;
         ByteBuffer buffer = ByteBuffer.allocate(numBytes);
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
             for (PlcValue plcValue : plcList.getList()) {
                 buffer.putInt(plcValue.getInteger());
             }
         } else {
-            buffer.putInt(fieldItem.getInteger());
+            buffer.putInt(value.getInteger());
         }
         return buffer.array();
     }
 
-    byte[] encodeWriteRequestLongField(PlcValue fieldItem, boolean signed) {
-        int numBytes = fieldItem.getNumberOfValues() * 8;
+    byte[] encodeWriteRequestLongField(PlcValue value, boolean signed) {
+        int numBytes = value.getNumberOfValues() * 8;
         ByteBuffer buffer = ByteBuffer.allocate(numBytes);
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
             for (PlcValue plcValue : plcList.getList()) {
                 buffer.putLong(plcValue.getLong());
             }
         } else {
-            buffer.putLong(fieldItem.getLong());
+            buffer.putLong(value.getLong());
         }
         return buffer.array();
     }
 
-    byte[] encodeWriteRequestFloatField(PlcValue fieldItem) {
-        int numBytes = fieldItem.getNumberOfValues() * 4;
+    byte[] encodeWriteRequestFloatField(PlcValue value) {
+        int numBytes = value.getNumberOfValues() * 4;
         ByteBuffer buffer = ByteBuffer.allocate(numBytes);
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
             for (PlcValue plcValue : plcList.getList()) {
                 buffer.putFloat(plcValue.getFloat());
             }
         } else {
-            buffer.putFloat(fieldItem.getFloat());
+            buffer.putFloat(value.getFloat());
         }
         return buffer.array();
     }
 
-    byte[] encodeWriteRequestDoubleField(PlcValue fieldItem) {
-        int numBytes = fieldItem.getNumberOfValues() * 8;
+    byte[] encodeWriteRequestDoubleField(PlcValue value) {
+        int numBytes = value.getNumberOfValues() * 8;
         ByteBuffer buffer = ByteBuffer.allocate(numBytes);
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
+        if(value instanceof PlcList) {
+            PlcList plcList = (PlcList) value;
             for (PlcValue plcValue : plcList.getList()) {
                 buffer.putDouble(plcValue.getDouble());
             }
         } else {
-            buffer.putDouble(fieldItem.getDouble());
+            buffer.putDouble(value.getDouble());
         }
         return buffer.array();
     }
 
-    byte[] encodeWriteRequestStringField(PlcValue fieldItem, boolean isUtf16) {
+    byte[] encodeWriteRequestStringField(PlcValue value, boolean isUtf16) {
         // TODO: Implement this ...
         return new byte[0];
     }
@@ -471,7 +471,7 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
             VarPayloadItem payloadItem = payloadItems.get(index);
 
             PlcResponseCode responseCode = decodeResponseCode(payloadItem.getReturnCode());
-            PlcValue fieldItem = null;
+            PlcValue value = null;
             ByteBuf data = Unpooled.wrappedBuffer(payloadItem.getData());
             if (responseCode == PlcResponseCode.OK) {
                 try {
@@ -480,89 +480,89 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
                         // Bit
                         // -----------------------------------------
                         case BOOL:
-                            fieldItem = decodeReadResponseBitField(field, data);
+                            value = decodeReadResponseBitField(field, data);
                             break;
                         // -----------------------------------------
                         // Bit-strings
                         // -----------------------------------------
                         case BYTE:  // 1 byte
-                            fieldItem = decodeReadResponseByteBitStringField(field, data);
+                            value = decodeReadResponseByteBitStringField(field, data);
                             break;
                         case WORD:  // 2 byte (16 bit)
-                            fieldItem = decodeReadResponseShortBitStringField(field, data);
+                            value = decodeReadResponseShortBitStringField(field, data);
                             break;
                         case DWORD:  // 4 byte (32 bit)
-                            fieldItem = decodeReadResponseIntegerBitStringField(field, data);
+                            value = decodeReadResponseIntegerBitStringField(field, data);
                             break;
                         case LWORD:  // 8 byte (64 bit)
-                            fieldItem = decodeReadResponseLongBitStringField(field, data);
+                            value = decodeReadResponseLongBitStringField(field, data);
                             break;
                         // -----------------------------------------
                         // Integers
                         // -----------------------------------------
                         // 8 bit:
                         case SINT:
-                            fieldItem = decodeReadResponseSignedByteField(field, data);
+                            value = decodeReadResponseSignedByteField(field, data);
                             break;
                         case USINT:
-                            fieldItem = decodeReadResponseUnsignedByteField(field, data);
+                            value = decodeReadResponseUnsignedByteField(field, data);
                             break;
                         // 16 bit:
                         case INT:
-                            fieldItem = decodeReadResponseSignedShortField(field, data);
+                            value = decodeReadResponseSignedShortField(field, data);
                             break;
                         case UINT:
-                            fieldItem = decodeReadResponseUnsignedShortField(field, data);
+                            value = decodeReadResponseUnsignedShortField(field, data);
                             break;
                         // 32 bit:
                         case DINT:
-                            fieldItem = decodeReadResponseSignedIntegerField(field, data);
+                            value = decodeReadResponseSignedIntegerField(field, data);
                             break;
                         case UDINT:
-                            fieldItem = decodeReadResponseUnsignedIntegerField(field, data);
+                            value = decodeReadResponseUnsignedIntegerField(field, data);
                             break;
                         // 64 bit:
                         case LINT:
-                            fieldItem = decodeReadResponseSignedLongField(field, data);
+                            value = decodeReadResponseSignedLongField(field, data);
                             break;
                         case ULINT:
-                            fieldItem = decodeReadResponseUnsignedLongField(field, data);
+                            value = decodeReadResponseUnsignedLongField(field, data);
                             break;
                         // -----------------------------------------
                         // Floating point values
                         // -----------------------------------------
                         case REAL:
-                            fieldItem = decodeReadResponseFloatField(field, data);
+                            value = decodeReadResponseFloatField(field, data);
                             break;
                         case LREAL:
-                            fieldItem = decodeReadResponseDoubleField(field, data);
+                            value = decodeReadResponseDoubleField(field, data);
                             break;
                         // -----------------------------------------
                         // Characters & Strings
                         // -----------------------------------------
                         case CHAR: // 1 byte (8 bit)
-                            fieldItem = decodeReadResponseFixedLengthStringField(1, false, data);
+                            value = decodeReadResponseFixedLengthStringField(1, false, data);
                             break;
                         case WCHAR: // 2 byte
-                            fieldItem = decodeReadResponseFixedLengthStringField(1, true, data);
+                            value = decodeReadResponseFixedLengthStringField(1, true, data);
                             break;
                         case STRING:
-                            fieldItem = decodeReadResponseVarLengthStringField(false, data);
+                            value = decodeReadResponseVarLengthStringField(false, data);
                             break;
                         case WSTRING:
-                            fieldItem = decodeReadResponseVarLengthStringField(true, data);
+                            value = decodeReadResponseVarLengthStringField(true, data);
                             break;
                         // -----------------------------------------
                         // TIA Date-Formats
                         // -----------------------------------------
                         case DATE_AND_TIME:
-                            fieldItem = decodeReadResponseDateAndTime(field, data);
+                            value = decodeReadResponseDateAndTime(field, data);
                             break;
                         case TIME_OF_DAY:
-                            fieldItem = decodeReadResponseTimeOfDay(field, data);
+                            value = decodeReadResponseTimeOfDay(field, data);
                             break;
                         case DATE:
-                            fieldItem = decodeReadResponseDate(field, data);
+                            value = decodeReadResponseDate(field, data);
                             break;
                         default:
                             throw new PlcProtocolException("Unsupported type " + field.getDataType());
@@ -575,7 +575,7 @@ public class Plc4XS7Protocol extends io.netty.handler.codec.MessageToMessageCode
                     logger.warn("Some other error occurred casting field {}, FieldInformation: {}",fieldName, field,e);
                 }
             }
-            Pair<PlcResponseCode, PlcValue> result = new ImmutablePair<>(responseCode, fieldItem);
+            Pair<PlcResponseCode, PlcValue> result = new ImmutablePair<>(responseCode, value);
             values.put(fieldName, result);
             index++;
         }
diff --git a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
index aa752ad..caf6634 100644
--- a/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
+++ b/plc4j/protocols/s7/src/test/java/org/apache/plc4x/java/s7/netty/util/S7PlcFieldHandlerTest.java
@@ -277,11 +277,11 @@ class S7PlcFieldHandlerTest {
             for (InputTypes javaType : InputTypes.values()) {
                 Object[] testValues = javaType.values;
 
-                PlcValue fieldItem;
+                PlcValue value;
                 try {
-                    fieldItem = javaType.fieldItemType.getDeclaredConstructor(testValues[0].getClass()).newInstance(testValues[0]);
+                    value = javaType.valueType.getDeclaredConstructor(testValues[0].getClass()).newInstance(testValues[0]);
                 } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException e) {
-                    throw new PlcRuntimeException("Error initializing field class " + javaType.fieldItemType.getSimpleName(), e);
+                    throw new PlcRuntimeException("Error initializing field class " + javaType.valueType.getSimpleName(), e);
                 }
 
                 Stream<Arguments> curValues;
@@ -339,11 +339,11 @@ class S7PlcFieldHandlerTest {
         DATE(PlcDate.class, new LocalDate[]{LocalDate.now(), LocalDate.MIN, LocalDate.MAX}),
         DATETIME(PlcDateTime.class, new LocalDateTime[]{LocalDateTime.now(), LocalDateTime.MIN, LocalDateTime.MAX});
 
-        private final Class<? extends PlcValue> fieldItemType;
+        private final Class<? extends PlcValue> valueType;
         private final Object[] values;
 
-        InputTypes(Class<? extends PlcValue> fieldItemType, Object[] values) {
-            this.fieldItemType = fieldItemType;
+        InputTypes(Class<? extends PlcValue> valueType, Object[] values) {
+            this.valueType = valueType;
             this.values = values;
         }
     }
@@ -352,8 +352,8 @@ class S7PlcFieldHandlerTest {
                         BiFunction<PlcField, Object[], PlcValue> encoder) {
         boolean success = expectedSuccess.contains(name);
         try {
-            PlcValue fieldItem = encoder.apply(field, values);
-            assertNotNull(fieldItem, "A FieldItem instance should have been returned for testcase " + name);
+            PlcValue plcValue = encoder.apply(field, values);
+            assertNotNull(plcValue, "A PlcValue instance should have been returned for testcase " + name);
             if(!success) {
                 fail("Expected to fail for testcase " + name);
             }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
index d56ea36..2159acb 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/DefaultPlcWriteRequest.java
@@ -82,12 +82,12 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
         return fields.values().stream().map(Pair::getKey).collect(Collectors.toCollection(LinkedList::new));
     }
 
-    public PlcValue getFieldItem(String name) {
+    public PlcValue getPlcValue(String name) {
         return fields.get(name).getValue();
     }
 
     @Override
-    public List<PlcValue> getFieldItems() {
+    public List<PlcValue> getPlcValues() {
         return fields.values().stream().map(Pair::getValue).collect(Collectors.toCollection(LinkedList::new));
     }
 
@@ -230,11 +230,11 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
                     throw new IllegalArgumentException("Invalid class found " + value.getClass() + ". should all be " + checkedClazz);
                 }
             }
-            BiFunction<PlcField, Object[], PlcValue> plcFieldFieldItemBiFunction = handlerMap.get(checkedClazz);
-            if (plcFieldFieldItemBiFunction == null) {
+            BiFunction<PlcField, Object[], PlcValue> plcFieldPlcValueBiFunction = handlerMap.get(checkedClazz);
+            if (plcFieldPlcValueBiFunction == null) {
                 throw new IllegalArgumentException("no field handler for " + checkedClazz + " found");
             }
-            return addItem(name, fieldQuery, values, plcFieldFieldItemBiFunction);
+            return addItem(name, fieldQuery, values, plcFieldPlcValueBiFunction);
         }
 
         @Override
@@ -244,9 +244,9 @@ public class DefaultPlcWriteRequest implements InternalPlcWriteRequest, Internal
                 // Compile the query string.
                 PlcField parsedField = fieldHandler.createField(builderItem.fieldQuery);
                 // Encode the payload.
-                // TODO: Depending on the field type, handle the FieldItem creation differently.
-                PlcValue fieldItem = builderItem.encoder.apply(parsedField, builderItem.values);
-                parsedFields.put(name, new ImmutablePair<>(parsedField, fieldItem));
+                // TODO: Depending on the field type, handle the PlcValue creation differently.
+                PlcValue value = builderItem.encoder.apply(parsedField, builderItem.values);
+                parsedFields.put(name, new ImmutablePair<>(parsedField, value));
             });
             return new DefaultPlcWriteRequest(writer, parsedFields);
         }
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcWriteRequest.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcWriteRequest.java
index c783673..0df5978 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcWriteRequest.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/messages/InternalPlcWriteRequest.java
@@ -27,9 +27,9 @@ import java.util.List;
 
 public interface InternalPlcWriteRequest extends PlcWriteRequest, InternalPlcRequest {
 
-    PlcValue getFieldItem(String name);
+    PlcValue getPlcValue(String name);
 
-    List<PlcValue> getFieldItems();
+    List<PlcValue> getPlcValues();
 
     List<Triple<String, PlcField, PlcValue>> getNamedFieldTriples();
 
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/protocol/SingleItemToSingleRequestProtocol.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/protocol/SingleItemToSingleRequestProtocol.java
index 01370c3..a6d4310 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/protocol/SingleItemToSingleRequestProtocol.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/protocol/SingleItemToSingleRequestProtocol.java
@@ -342,7 +342,7 @@ public class SingleItemToSingleRequestProtocol extends ChannelDuplexHandler {
                     });
                 } else if (internalPlcFieldRequest instanceof InternalPlcWriteRequest && splitConfig.splitWrite) {
                     InternalPlcWriteRequest internalPlcWriteRequest = (InternalPlcWriteRequest) internalPlcFieldRequest;
-                    internalPlcWriteRequest.getNamedFieldTriples().forEach(fieldItemTriple -> {
+                    internalPlcWriteRequest.getNamedFieldTriples().forEach(valueTriple -> {
                         ChannelPromise subPromise = new DefaultChannelPromise(promise.channel());
 
                         Integer tdpu = correlationIdGenerator.getAndIncrement();
@@ -357,7 +357,7 @@ public class SingleItemToSingleRequestProtocol extends ChannelDuplexHandler {
                                     tryFinish(tdpu, internalPlcResponse, in.getResponseFuture());
                                 }
                             });
-                        PlcRequestContainer<CorrelatedPlcWriteRequest, InternalPlcResponse> correlatedPlcRequestContainer = new PlcRequestContainer<>(CorrelatedPlcWriteRequest.of(writer, fieldItemTriple, tdpu), correlatedCompletableFuture);
+                        PlcRequestContainer<CorrelatedPlcWriteRequest, InternalPlcResponse> correlatedPlcRequestContainer = new PlcRequestContainer<>(CorrelatedPlcWriteRequest.of(writer, valueTriple, tdpu), correlatedCompletableFuture);
                         correlationToParentContainer.put(tdpu, in);
                         queue.add(correlatedPlcRequestContainer, subPromise);
                         if (!tdpus.add(tdpu)) {
@@ -520,9 +520,9 @@ public class SingleItemToSingleRequestProtocol extends ChannelDuplexHandler {
             this.tdpu = tdpu;
         }
 
-        public static CorrelatedPlcWriteRequest of(PlcWriter writer, Triple<String, PlcField, PlcValue> fieldItemTriple, int tdpu) {
+        public static CorrelatedPlcWriteRequest of(PlcWriter writer, Triple<String, PlcField, PlcValue> plcValueTriple, int tdpu) {
             LinkedHashMap<String, Pair<PlcField, PlcValue>> fields = new LinkedHashMap<>();
-            fields.put(fieldItemTriple.getLeft(), Pair.of(fieldItemTriple.getMiddle(), fieldItemTriple.getRight()));
+            fields.put(plcValueTriple.getLeft(), Pair.of(plcValueTriple.getMiddle(), plcValueTriple.getRight()));
             return new CorrelatedPlcWriteRequest(writer, fields, tdpu);
         }
 
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/events/S7ConnectedEvent.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/types/FieldType.java
similarity index 68%
rename from sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/events/S7ConnectedEvent.java
rename to plc4j/spi/src/main/java/org/apache/plc4x/java/spi/types/FieldType.java
index ac22e85..215476a 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/events/S7ConnectedEvent.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/types/FieldType.java
@@ -16,7 +16,32 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 */
-package org.apache.plc4x.java.s7.readwrite.events;
+package org.apache.plc4x.java.spi.types;
+
+public enum FieldType {
+
+    BIT_1,
+    BIT_8,
+    BIT_16,
+    BIT_32,
+    BIT_64,
+    INT_2,
+    INT_4,
+    INT_8,
+    INT_16,
+    INT_32,
+    INT_64,
+    UINT_2,
+    UINT_4,
+    UINT_8,
+    UINT_16,
+    UINT_32,
+    UINT_64,
+    FLOAT_16,
+    FLOAT_32,
+    UFLOAT_16,
+    UFLOAT_32,
+    CHAR,
+    STRING
 
-public class S7ConnectedEvent {
 }
diff --git a/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java b/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java
index eb48ef0..82f3e06 100644
--- a/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java
+++ b/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldHandler.java
@@ -32,67 +32,67 @@ public class MockFieldHandler extends DefaultPlcFieldHandler {
 
     @Override
     public PlcValue encodeBoolean(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeByte(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeShort(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeInteger(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeBigInteger(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeLong(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeFloat(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeBigDecimal(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeDouble(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeString(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeTime(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeDate(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
     @Override
     public PlcValue encodeDateTime(PlcField field, Object[] values) {
-        return new MockFieldItem(values);
+        return new MockPlcValue(values);
     }
 
 }
diff --git a/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldItem.java b/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockPlcValue.java
similarity index 91%
rename from plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldItem.java
rename to plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockPlcValue.java
index f806abb..655d83a 100644
--- a/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockFieldItem.java
+++ b/plc4j/transports/test/src/main/java/org/apache/plc4x/java/mock/MockPlcValue.java
@@ -21,11 +21,11 @@ package org.apache.plc4x.java.mock;
 
 import org.apache.plc4x.java.api.value.PlcValueAdapter;
 
-public class MockFieldItem extends PlcValueAdapter {
+public class MockPlcValue extends PlcValueAdapter {
 
     final Object[] values;
 
-    public MockFieldItem(Object... values) {
+    public MockPlcValue(Object... values) {
         this.values = values;
     }
 
diff --git a/plc4j/transports/test/src/test/java/org/apache/plc4x/java/mock/MockFieldItemTest.java b/plc4j/transports/test/src/test/java/org/apache/plc4x/java/mock/MockPlcValueTest.java
similarity index 88%
rename from plc4j/transports/test/src/test/java/org/apache/plc4x/java/mock/MockFieldItemTest.java
rename to plc4j/transports/test/src/test/java/org/apache/plc4x/java/mock/MockPlcValueTest.java
index 066f87c..3f867f6 100644
--- a/plc4j/transports/test/src/test/java/org/apache/plc4x/java/mock/MockFieldItemTest.java
+++ b/plc4j/transports/test/src/test/java/org/apache/plc4x/java/mock/MockPlcValueTest.java
@@ -22,10 +22,10 @@ package org.apache.plc4x.java.mock;
 import org.assertj.core.api.WithAssertions;
 import org.junit.jupiter.api.Test;
 
-class MockFieldItemTest implements WithAssertions {
+class MockPlcValueTest implements WithAssertions {
 
     @Test
     void getObject() {
-        assertThat(new MockFieldItem("").getObject(0)).isNotNull();
+        assertThat(new MockPlcValue("").getObject(0)).isNotNull();
     }
 }
\ No newline at end of file
diff --git a/plc4j/utils/interop/pom.xml b/plc4j/utils/interop/pom.xml
index 34cff4e..2d36735 100644
--- a/plc4j/utils/interop/pom.xml
+++ b/plc4j/utils/interop/pom.xml
@@ -176,7 +176,6 @@
       <artifactId>commons-lang3</artifactId>
     </dependency>
 
-
     <!-- Make sure this is built before this module -->
     <dependency>
       <groupId>org.apache.plc4x</groupId>
diff --git a/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java b/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
index 95ed877..28e449c 100644
--- a/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
+++ b/plc4j/utils/interop/src/main/java/org/apache/plc4x/interop/impl/Server.java
@@ -27,8 +27,8 @@ import org.apache.plc4x.java.api.messages.PlcSubscriptionEvent;
 import org.apache.plc4x.java.api.model.PlcConsumerRegistration;
 import org.apache.plc4x.java.api.model.PlcSubscriptionHandle;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.apache.plc4x.java.spi.messages.items.BaseDefaultFieldItem;
-import org.apache.plc4x.java.spi.messages.items.DefaultLongFieldItem;
+import org.apache.plc4x.java.api.value.PlcLong;
+import org.apache.plc4x.java.api.value.PlcValue;
 import org.apache.plc4x.java.mock.MockDevice;
 import org.apache.plc4x.java.mock.PlcMockConnection;
 import org.apache.thrift.server.TServer;
@@ -64,28 +64,35 @@ public class Server {
     }
 
     private static class MyMockDevice implements MockDevice {
-        @Override public Pair<PlcResponseCode, BaseDefaultFieldItem> read(String fieldQuery) {
-            return Pair.of(PlcResponseCode.OK, new DefaultLongFieldItem(100L));
+        @Override
+        public Pair<PlcResponseCode, PlcValue> read(String fieldQuery) {
+            return Pair.of(PlcResponseCode.OK, new PlcLong(100L));
         }
 
-        @Override public PlcResponseCode write(String fieldQuery, Object value) {
+        @Override
+        public PlcResponseCode write(String fieldQuery, Object value) {
             return null;
         }
 
-        @Override public Pair<PlcResponseCode, PlcSubscriptionHandle> subscribe(String fieldQuery) {
+        @Override
+        public Pair<PlcResponseCode, PlcSubscriptionHandle> subscribe(String fieldQuery) {
             return null;
         }
 
-        @Override public void unsubscribe() {
+        @Override
+        public void unsubscribe() {
 
         }
 
-        @Override public PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, Collection<PlcSubscriptionHandle> handles) {
+        @Override
+        public PlcConsumerRegistration register(Consumer<PlcSubscriptionEvent> consumer, Collection<PlcSubscriptionHandle> handles) {
             return null;
         }
 
-        @Override public void unregister(PlcConsumerRegistration registration) {
+        @Override
+        public void unregister(PlcConsumerRegistration registration) {
 
         }
     }
+
 }
diff --git a/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/connection/AdsTcpPlcConnection.java b/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/connection/AdsTcpPlcConnection.java
index db1d117..c1924d3 100644
--- a/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/connection/AdsTcpPlcConnection.java
+++ b/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/connection/AdsTcpPlcConnection.java
@@ -293,8 +293,8 @@ public class AdsTcpPlcConnection extends AdsAbstractPlcConnection implements Plc
                         String plcFieldName = adsSubscriptionHandle.getPlcFieldName();
                         AdsDataType adsDataType = adsSubscriptionHandle.getAdsDataType();
                         try {
-                            PlcValue baseDefaultFieldItem = LittleEndianDecoder.decodeData(adsDataType, data);
-                            fields.put(plcFieldName, Pair.of(PlcResponseCode.OK, baseDefaultFieldItem));
+                            PlcValue baseDefaultPlcValue = LittleEndianDecoder.decodeData(adsDataType, data);
+                            fields.put(plcFieldName, Pair.of(PlcResponseCode.OK, baseDefaultPlcValue));
                         } catch (RuntimeException e) {
                             LOGGER.error("Can't decode {}", data, e);
                         }
diff --git a/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/protocol/Plc4x2AdsProtocol.java b/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/protocol/Plc4x2AdsProtocol.java
index 9e03286..a4a4888 100644
--- a/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/protocol/Plc4x2AdsProtocol.java
+++ b/sandbox/test-java-amsads-driver/src/main/java/org/apache/plc4x/java/amsads/protocol/Plc4x2AdsProtocol.java
@@ -149,22 +149,22 @@ public class Plc4x2AdsProtocol extends MessageToMessageCodec<AmsPacket, PlcReque
         long indexGroup = directAdsField.getIndexGroup();
         long indexOffset = directAdsField.getIndexOffset();
 
-        PlcValue fieldItem = writeRequest.getFieldItems().get(0);
-        Object[] values;
-        if(fieldItem instanceof PlcList) {
-            PlcList plcList = (PlcList) fieldItem;
-            values = plcList.getList().toArray(new Object[0]);
+        PlcValue plcValue = writeRequest.getPlcValues().get(0);
+        Object[] plcValues;
+        if(plcValue instanceof PlcList) {
+            PlcList plcList = (PlcList) plcValue;
+            plcValues = plcList.getList().toArray(new Object[0]);
         } else {
-            values = new Object[1];
-            values[0] = fieldItem.getObject();
+            plcValues = new Object[1];
+            plcValues[0] = plcValue.getObject();
         }
 
-        byte[] bytes = encodeData(directAdsField.getAdsDataType(), values);
+        byte[] bytes = encodeData(directAdsField.getAdsDataType(), plcValues);
         int bytesToBeWritten = bytes.length;
         int maxTheoreticalSize = directAdsField.getAdsDataType().getTargetByteSize() * directAdsField.getNumberOfElements();
         if (bytesToBeWritten > maxTheoreticalSize) {
             LOGGER.debug("Requested AdsDatatype {} is exceeded by number of bytes {}. Limit {}.", directAdsField.getAdsDataType(), bytesToBeWritten, maxTheoreticalSize);
-            throw new PlcProtocolPayloadTooBigException("ADS", maxTheoreticalSize, bytesToBeWritten, values);
+            throw new PlcProtocolPayloadTooBigException("ADS", maxTheoreticalSize, bytesToBeWritten, plcValues);
         }
         AdsWriteRequest data = new AdsWriteRequest(indexGroup, indexOffset, bytes.length, bytes);
         AmsPacket amsPacket = new AmsPacket(new AmsHeader(targetAmsNetId, targetAmsPort, sourceAmsNetId, sourceAmsPort, CommandId.ADS_WRITE, new State(false, false, false, false, false, false, true, false, false), data.getLength(), 0, invokeId), data);
@@ -302,14 +302,14 @@ public class Plc4x2AdsProtocol extends MessageToMessageCodec<AmsPacket, PlcReque
 
         PlcResponseCode responseCode = decodeResponseCode(responseMessage.getResult());
         byte[] bytes = responseMessage.getData();
-        PlcValue fieldItem = decodeData(field.getAdsDataType(), bytes);
+        PlcValue plcValue = decodeData(field.getAdsDataType(), bytes);
 
         // TODO: does every item has the same ads response or is this whole aggregation broken?
         Map<String, Pair<PlcResponseCode, PlcValue>> responseItems = plcReadRequest.getFieldNames()
             .stream()
             .collect(Collectors.toMap(
                 fieldName -> fieldName,
-                ignore -> Pair.of(responseCode, fieldItem)
+                ignore -> Pair.of(responseCode, plcValue)
             ));
 
         return new DefaultPlcReadResponse(plcReadRequest, responseItems);
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/events/IsoTPConnectedEvent.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/events/IsoTPConnectedEvent.java
deleted file mode 100644
index e829c5b..0000000
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/events/IsoTPConnectedEvent.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
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-package org.apache.plc4x.java.s7.readwrite.events;
-
-public class IsoTPConnectedEvent {
-}
diff --git a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
index 6f9b82f..427f560 100644
--- a/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
+++ b/sandbox/test-java-s7-driver/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
@@ -180,9 +180,9 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
         List<S7VarPayloadDataItem> payloadItems = new ArrayList<>(request.getNumberOfFields());
         for (String fieldName : request.getFieldNames()) {
             final S7Field field = (S7Field) request.getField(fieldName);
-            final PlcValue fieldItem = request.getFieldItem(fieldName);
+            final PlcValue plcValue = request.getPlcValue(fieldName);
             parameterItems.add(new S7VarRequestParameterItemAddress(encodeS7Address(field)));
-            payloadItems.add(serializeFieldItem(field, fieldItem));
+            payloadItems.add(serializePlcValue(field, plcValue));
         }
         final int tpduId = tpduGenerator.getAndIncrement();
         TPKTPacket tpktPacket = new TPKTPacket(new COTPPacketData(null,
@@ -302,12 +302,12 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
             S7VarPayloadDataItem payloadItem = payloadItems[index];
 
             PlcResponseCode responseCode = decodeResponseCode(payloadItem.getReturnCode());
-            PlcValue fieldItem = null;
+            PlcValue plcValue = null;
             ByteBuf data = Unpooled.wrappedBuffer(payloadItem.getData());
             if (responseCode == PlcResponseCode.OK) {
-                fieldItem = parseFieldItem(field, data);
+                plcValue = parsePlcValue(field, data);
             }
-            Pair<PlcResponseCode, PlcValue> result = new ImmutablePair<>(responseCode, fieldItem);
+            Pair<PlcResponseCode, PlcValue> result = new ImmutablePair<>(responseCode, plcValue);
             values.put(fieldName, result);
             index++;
         }
@@ -340,7 +340,7 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
         return new DefaultPlcWriteResponse(plcWriteRequest, responses);
     }
 
-    private S7VarPayloadDataItem serializeFieldItem(S7Field field, PlcValue plcValue) {
+    private S7VarPayloadDataItem serializePlcValue(S7Field field, PlcValue plcValue) {
         try {
             DataTransportSize transportSize = (field.getDataType().getDataProtocolId() == 1) ?
                 DataTransportSize.BIT : DataTransportSize.BYTE_WORD_DWORD;
@@ -355,7 +355,7 @@ public class S7ProtocolLogic extends Plc4xProtocolBase<TPKTPacket> implements Ha
         return null;
     }
 
-    private PlcValue parseFieldItem(S7Field field, ByteBuf data) {
+    private PlcValue parsePlcValue(S7Field field, ByteBuf data) {
         ReadBuffer readBuffer = new ReadBuffer(data.array());
         try {
             return DataItemIO.parse(readBuffer, field.getDataType().getDataProtocolId());
diff --git a/src/main/script/prerequisiteCheck.groovy b/src/main/script/prerequisiteCheck.groovy
index 23c168d..a0f3c3a 100644
--- a/src/main/script/prerequisiteCheck.groovy
+++ b/src/main/script/prerequisiteCheck.groovy
@@ -319,6 +319,7 @@ if(pythonEnabled && !proxiesEnabled) {
 
 if(proxiesEnabled) {
     checkBison()
+    checkBoost()
 }
 
 if(dotnetEnabled) {
diff --git a/src/site/asciidoc/users/testing.adoc b/src/site/asciidoc/users/testing.adoc
index 3ca9485..55dde26 100644
--- a/src/site/asciidoc/users/testing.adoc
+++ b/src/site/asciidoc/users/testing.adoc
@@ -40,7 +40,7 @@ The Interface for the Mock Device is
 ```
 public interface MockDevice {
 
-    Pair<PlcResponseCode, BaseDefaultFieldItem> read(String fieldQuery);
+    Pair<PlcResponseCode, PlcValue> read(String fieldQuery);
 
     PlcResponseCode write(String fieldQuery, Object value);
 
@@ -73,9 +73,9 @@ Here, we pass it an instance of `MockDevice` which could be a simple Implementat
 ```
 MockDevice mockDevice = new MockDevice() {
 
-    Pair<PlcResponseCode, BaseDefaultFieldItem> read(String fieldQuery) {
+    Pair<PlcResponseCode, PlcValue> read(String fieldQuery) {
         System.out.println("I got a read to " + fieldQuery);
-        return Pair.of(PlcResponseCode.OK, new DefaultStringFieldItem("hello"));
+        return Pair.of(PlcResponseCode.OK, new PlcString("hello"));
     }
 
     PlcResponseCode write(String fieldQuery, Object value) {
@@ -102,7 +102,7 @@ PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection("
 connection.setDevice(mockDevice);
 
 // Populate the Mock to avoid a NPE
-when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new DefaultStringFieldItem("hello")));
+when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString("hello")));
 
 // Some Demo code that uses the same Driver Manager and either the connection from above
 // or at least mock:my-mock-connection as connection string
@@ -128,7 +128,7 @@ PlcDriverManager driverManager = new PlcDriverManager();
 PlcMockConnection connection = (PlcMockConnection) driverManager.getConnection("mock:my-mock-connection");
 connection.setDevice(mockDevice);
 // Populate the Mock to avoid a NPE
-when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new DefaultStringFieldItem("hello")));
+when(mockDevice).read(anyString()).thenReturn(Pair.of(PlcResponseCode.OK, new PlcString("hello")));
 
 // Some Demo code that uses the same Driver Manager and either the connection from above
 // or at least mock:my-mock-connection as connection string
diff --git a/tools/thrift/pom.xml b/tools/thrift/pom.xml
index d3b26ca..96ac3f6 100644
--- a/tools/thrift/pom.xml
+++ b/tools/thrift/pom.xml
@@ -336,4 +336,16 @@
     </plugins>
   </build>
 
+  <dependencies>
+    <!-- Make sure Boost is built first -->
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4x-tools-boost</artifactId>
+      <version>${project.version}</version>
+      <type>zip</type>
+      <classifier>lib-${os.classifier}</classifier>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
 </project>
\ No newline at end of file