diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7HMux.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7HMux.java
deleted file mode 100644
index 53ad40b951..0000000000
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7HMux.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.plc4x.java.s7.readwrite.connection;
-
-import io.netty.channel.Channel;
-
-public interface S7HMux {
- void setEmbeddedChannel(Channel embeded_channel);
-
- void setPrimaryChannel(Channel primary_channel);
-
- void setSecondaryChannel(Channel secondary_channel);
-}
diff --git a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7HMuxImpl.java b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7HMuxImpl.java
deleted file mode 100644
index 83703f2ab2..0000000000
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/connection/S7HMuxImpl.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.plc4x.java.s7.readwrite.connection;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelHandler.Sharable;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.embedded.EmbeddedChannel;
-import io.netty.handler.codec.MessageToMessageCodec;
-import io.netty.handler.timeout.ReadTimeoutHandler;
-import io.netty.util.AttributeKey;
-import org.apache.plc4x.java.spi.events.ConnectEvent;
-import org.apache.plc4x.java.spi.events.DisconnectEvent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.time.LocalTime;
-import java.util.List;
-
-/**
- * Implementation of a multiplexing channel, from an embedded channel to two
- * possible TCP connections, primary and secondary.
- * The objective is to allow connections to individual systems
- * with a two CP (PN CPUs, CP343-1, CP443-1 or similar), or H-type systems
- * (S7-400H or S7-1500H).
- *
- * The user App must be in charge of restoring the requests or
- * subscriptions that it is requesting.
- */
-@Sharable
-public class S7HMuxImpl extends MessageToMessageCodec implements S7HMux {
-
- private static final Logger logger = LoggerFactory.getLogger(S7HMuxImpl.class);
-
- /*
- * This attribute indicates to the other handlers that the channel is connected
- * or disconnected because a switch is being made between TCP channels or
- * both TCP channels are disconnected.
- * Default value: false
- */
- public final static AttributeKey IS_CONNECTED = AttributeKey.valueOf("IS_CONNECTED");
-
- /*
- * This attribute indicates to the other handlers which channel is being used,
- * this allows the request to be properly prepared.
- * For example, in the case of a CPU with two CPs, you should change
- * the "slot", in the case of H systems, you should change the "rack",
- * the correct values will be defined in the connection URL.
- * Default value: true
- */
- public final static AttributeKey IS_PRIMARY = AttributeKey.valueOf("IS_PRIMARY");
-
- /*
- * This is the maximum waiting time for reading on the TCP channel.
- * As there is no traffic, it must be assumed that the connection with the
- * interlocutor was lost and it must be restarted.
- * When the channel is closed, the "fail over" is carried out
- * in case of having the secondary channel, or it is expected that it
- * will be restored automatically, which is done every 4 seconds.
- * Default value: 8 sec.
- */
- public final static AttributeKey READ_TIME_OUT = AttributeKey.valueOf("READ_TIME_OUT");
-
- /*
- * If your application requires sampling times greater than the
- * set "watchdog" time, it is important that the PING option is activated,
- * this will prevent the TCP channel from being closed unnecessarily.
- * Default value: false
- */
- public final static AttributeKey IS_PING_ACTIVE = AttributeKey.valueOf("IS_PIN_ACTIVE");
-
- /*
- * Time value in seconds at which the execution of the PING will be scheduled.
- * Generally set by developer experience, but generally should be the same
- * as READ_TIME_OUT / 2.
- * Default value: -1
- */
- public final static AttributeKey PING_TIME = AttributeKey.valueOf("PING_TIME");
-
- /*
- * Time for supervision of TCP channels. If the channel is not active,
- * a safe stop of the EventLoop must be performed, to ensure that
- * no additional tasks are created.
- * Default value: 4
- */
- public final static AttributeKey RETRY_TIME = AttributeKey.valueOf("RETRY_TIME");
-
- ChannelHandlerContext embedCtx = null;
- protected Channel embededChannel = null;
- protected Channel tcpChannel = null;
- protected Channel primaryChannel = null;
- protected Channel secondaryChannel = null;
-
- /*
- * From S7ProtocolLogic
- * TODO: Evaluate if the "embed_ctx" is really required since we set
- * the Embedded channel when we created it.
- */
- @Override
- protected void encode(ChannelHandlerContext ctx, ByteBuf outBB, List