diff --git a/src/main/java/teetime/framework/AbstractInterThreadPipe.java b/src/main/java/teetime/framework/AbstractInterThreadPipe.java
index 872f965ea66e3c371b4fbde9da8571bc083400a4..980210899354588747cd2339406db559a0be709b 100644
--- a/src/main/java/teetime/framework/AbstractInterThreadPipe.java
+++ b/src/main/java/teetime/framework/AbstractInterThreadPipe.java
@@ -7,7 +7,6 @@ import org.jctools.queues.spec.ConcurrentQueueSpec;
 import org.jctools.queues.spec.Ordering;
 import org.jctools.queues.spec.Preference;
 
-import teetime.framework.pipe.AbstractPipe;
 import teetime.framework.signal.ISignal;
 
 public abstract class AbstractInterThreadPipe extends AbstractPipe {
diff --git a/src/main/java/teetime/framework/AbstractIntraThreadPipe.java b/src/main/java/teetime/framework/AbstractIntraThreadPipe.java
index 9d0223009c18ca560f29d1589160d90a81e1012f..416a0d6da7edfa9f369fd01df5ca2a1b4624cc6f 100644
--- a/src/main/java/teetime/framework/AbstractIntraThreadPipe.java
+++ b/src/main/java/teetime/framework/AbstractIntraThreadPipe.java
@@ -1,6 +1,5 @@
 package teetime.framework;
 
-import teetime.framework.pipe.AbstractPipe;
 import teetime.framework.signal.ISignal;
 
 public abstract class AbstractIntraThreadPipe extends AbstractPipe {
diff --git a/src/main/java/teetime/framework/pipe/AbstractPipe.java b/src/main/java/teetime/framework/AbstractPipe.java
similarity index 89%
rename from src/main/java/teetime/framework/pipe/AbstractPipe.java
rename to src/main/java/teetime/framework/AbstractPipe.java
index 1790a4451479385452b89422bf43d75a5dfd9429..b08f101fa980d833722a2deb5a702b6391042cc1 100644
--- a/src/main/java/teetime/framework/pipe/AbstractPipe.java
+++ b/src/main/java/teetime/framework/AbstractPipe.java
@@ -1,8 +1,6 @@
-package teetime.framework.pipe;
+package teetime.framework;
 
-import teetime.framework.Stage;
-import teetime.framework.InputPort;
-import teetime.framework.OutputPort;
+import teetime.framework.pipe.IPipe;
 
 public abstract class AbstractPipe implements IPipe {
 
diff --git a/src/main/java/teetime/framework/InputPort.java b/src/main/java/teetime/framework/InputPort.java
index 62b14d9bf8452ad4ae7defc8bbfda1ba10abdf75..605eb57c97fcadc8d41d6fa501aa32f1e282af9a 100644
--- a/src/main/java/teetime/framework/InputPort.java
+++ b/src/main/java/teetime/framework/InputPort.java
@@ -1,8 +1,6 @@
 package teetime.framework;
 
-import teetime.framework.pipe.IPipe;
-
-public class InputPort<T> extends AbstractPort<T> {
+public final class InputPort<T> extends AbstractPort<T> {
 
 	private final Stage owningStage;
 
@@ -11,26 +9,13 @@ public class InputPort<T> extends AbstractPort<T> {
 		this.owningStage = owningStage;
 	}
 
-	public T receive() {
-		@SuppressWarnings("unchecked")
-		final T element = (T) this.pipe.removeLast();
-		return element;
-	}
-
-	public T read() {
-		@SuppressWarnings("unchecked")
-		final T element = (T) this.pipe.readLast();
-		return element;
-	}
-
 	/**
-	 * Connects this input port with the given <code>pipe</code> bi-directionally
 	 *
-	 * @param pipe
+	 * @return the next element from the connected pipe
 	 */
-	@Override
-	public void setPipe(final IPipe pipe) {
-		this.pipe = pipe;
+	@SuppressWarnings("unchecked")
+	public T receive() {
+		return (T) this.pipe.removeLast();
 	}
 
 	public Stage getOwningStage() {