diff --git a/src/main/java/teetime/framework/AbstractStage.java b/src/main/java/teetime/framework/AbstractStage.java
index 53ed24f01f44e8a7d3a6693978c826625a58efac..dc9d3871ad46a4f42d6d3e355b555123169b9bea 100644
--- a/src/main/java/teetime/framework/AbstractStage.java
+++ b/src/main/java/teetime/framework/AbstractStage.java
@@ -14,7 +14,7 @@ import teetime.framework.pipe.IPipe;
 import teetime.framework.signal.ISignal;
 import teetime.framework.validation.InvalidPortConnection;
 
-public abstract class AbstractStage implements StageWithPort {
+public abstract class AbstractStage implements Stage {
 
 	private final String id;
 	/**
@@ -22,7 +22,7 @@ public abstract class AbstractStage implements StageWithPort {
 	 */
 	protected final Logger logger;
 
-	private StageWithPort parentStage;
+	private Stage parentStage;
 
 	private final List<InputPort<?>> inputPortList = new ArrayList<InputPort<?>>();
 	private final List<OutputPort<?>> outputPortList = new ArrayList<OutputPort<?>>();
@@ -74,12 +74,12 @@ public abstract class AbstractStage implements StageWithPort {
 	}
 
 	@Override
-	public StageWithPort getParentStage() {
+	public Stage getParentStage() {
 		return this.parentStage;
 	}
 
 	@Override
-	public void setParentStage(final StageWithPort parentStage, final int index) {
+	public void setParentStage(final Stage parentStage, final int index) {
 		this.parentStage = parentStage;
 	}
 
diff --git a/src/main/java/teetime/framework/HeadPipeline.java b/src/main/java/teetime/framework/HeadPipeline.java
index 3c9dd13940f4cde35f0d1d900daa3fd944e4ef9a..e2ec170b0b3d80f708cfb41516b26be7865ea5e5 100644
--- a/src/main/java/teetime/framework/HeadPipeline.java
+++ b/src/main/java/teetime/framework/HeadPipeline.java
@@ -1,6 +1,6 @@
 package teetime.framework;
 
-public class HeadPipeline<FirstStage extends HeadStage, LastStage extends StageWithPort> extends Pipeline<FirstStage, LastStage> implements HeadStage {
+public class HeadPipeline<FirstStage extends HeadStage, LastStage extends Stage> extends Pipeline<FirstStage, LastStage> implements HeadStage {
 
 	public HeadPipeline() {}
 
diff --git a/src/main/java/teetime/framework/HeadStage.java b/src/main/java/teetime/framework/HeadStage.java
index 373b150d171b713863ee2c061ba34170b1fd35d3..5e8de76568b84801027f947e8fadfbd214b39891 100644
--- a/src/main/java/teetime/framework/HeadStage.java
+++ b/src/main/java/teetime/framework/HeadStage.java
@@ -1,6 +1,6 @@
 package teetime.framework;
 
-public interface HeadStage extends StageWithPort {
+public interface HeadStage extends Stage {
 
 	boolean shouldBeTerminated();
 
diff --git a/src/main/java/teetime/framework/InputPort.java b/src/main/java/teetime/framework/InputPort.java
index f221f51104419ef5fd6dd16a0ad9b03f07215bd3..7f8050c22ef1cffb898e08efe5b90029e1f00595 100644
--- a/src/main/java/teetime/framework/InputPort.java
+++ b/src/main/java/teetime/framework/InputPort.java
@@ -4,9 +4,9 @@ import teetime.framework.pipe.IPipe;
 
 public class InputPort<T> extends AbstractPort<T> {
 
-	private final StageWithPort owningStage;
+	private final Stage owningStage;
 
-	InputPort(final StageWithPort owningStage) {
+	InputPort(final Stage owningStage) {
 		super();
 		this.owningStage = owningStage;
 	}
@@ -33,7 +33,7 @@ public class InputPort<T> extends AbstractPort<T> {
 		this.pipe = pipe;
 	}
 
-	public StageWithPort getOwningStage() {
+	public Stage getOwningStage() {
 		return this.owningStage;
 	}
 
diff --git a/src/main/java/teetime/framework/Pipeline.java b/src/main/java/teetime/framework/Pipeline.java
index 91b0ae866ecd9b073e1097e7be404bc7b2dfc812..4900bf65fe96624270f06dd92b41e4c54a23455e 100644
--- a/src/main/java/teetime/framework/Pipeline.java
+++ b/src/main/java/teetime/framework/Pipeline.java
@@ -5,7 +5,7 @@ import java.util.List;
 import teetime.framework.signal.ISignal;
 import teetime.framework.validation.InvalidPortConnection;
 
-public class Pipeline<FirstStage extends StageWithPort, LastStage extends StageWithPort> implements StageWithPort {
+public class Pipeline<FirstStage extends Stage, LastStage extends Stage> implements Stage {
 
 	protected FirstStage firstStage;
 	protected LastStage lastStage;
@@ -37,12 +37,12 @@ public class Pipeline<FirstStage extends StageWithPort, LastStage extends StageW
 	}
 
 	@Override
-	public StageWithPort getParentStage() {
+	public Stage getParentStage() {
 		return this.firstStage.getParentStage();
 	}
 
 	@Override
-	public void setParentStage(final StageWithPort parentStage, final int index) {
+	public void setParentStage(final Stage parentStage, final int index) {
 		this.firstStage.setParentStage(parentStage, index);
 	}
 
diff --git a/src/main/java/teetime/framework/StageWithPort.java b/src/main/java/teetime/framework/Stage.java
similarity index 81%
rename from src/main/java/teetime/framework/StageWithPort.java
rename to src/main/java/teetime/framework/Stage.java
index 281b9485ea5476b4d183e7fb2402f616050550a6..b773f6b2ac815e0a2cb79d09268f7c713d04aab5 100644
--- a/src/main/java/teetime/framework/StageWithPort.java
+++ b/src/main/java/teetime/framework/Stage.java
@@ -5,15 +5,15 @@ import java.util.List;
 import teetime.framework.signal.ISignal;
 import teetime.framework.validation.InvalidPortConnection;
 
-public interface StageWithPort {
+public interface Stage {
 
 	String getId();
 
 	void executeWithPorts();
 
-	StageWithPort getParentStage();
+	Stage getParentStage();
 
-	void setParentStage(StageWithPort parentStage, int index);
+	void setParentStage(Stage parentStage, int index);
 
 	// BETTER remove this method since it will be replaced by onTerminating()
 	void onIsPipelineHead();
diff --git a/src/main/java/teetime/framework/pipe/AbstractPipe.java b/src/main/java/teetime/framework/pipe/AbstractPipe.java
index c89cd96408e16fc6aed56424adc0237a7ffa2a18..d59c660b7867405553f1e5efe9203e44b5228937 100644
--- a/src/main/java/teetime/framework/pipe/AbstractPipe.java
+++ b/src/main/java/teetime/framework/pipe/AbstractPipe.java
@@ -2,7 +2,7 @@ package teetime.framework.pipe;
 
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.StageWithPort;
+import teetime.framework.Stage;
 
 public abstract class AbstractPipe implements IPipe {
 
@@ -15,7 +15,7 @@ public abstract class AbstractPipe implements IPipe {
 	 * this.getPipe().getTargetPort().getOwningStage()
 	 * </pre>
 	 */
-	protected StageWithPort cachedTargetStage;
+	protected Stage cachedTargetStage;
 
 	protected <T> AbstractPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
 		this.targetPort = targetPort;
diff --git a/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java b/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java
index b5a59e24c8f8e61cbd5bf32b8fc93077f549678f..20f1285e20e44c00d5d68d8a3eec67fcad31c69a 100644
--- a/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java
+++ b/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java
@@ -21,7 +21,7 @@ import java.util.List;
 
 import teetime.framework.HeadPipeline;
 import teetime.framework.RunnableStage;
-import teetime.framework.StageWithPort;
+import teetime.framework.Stage;
 import teetime.framework.pipe.DummyPipe;
 import teetime.framework.pipe.IPipe;
 import teetime.framework.pipe.PipeFactory;
@@ -135,7 +135,7 @@ public class MethodCallThroughputAnalysis17 {
 	 * @param numNoopFilters
 	 * @since 1.10
 	 */
-	private HeadPipeline<Relay<TimestampObject>, CollectorSink<TimestampObject>> buildPipeline(final StageWithPort previousStage,
+	private HeadPipeline<Relay<TimestampObject>, CollectorSink<TimestampObject>> buildPipeline(final Stage previousStage,
 			final List<TimestampObject> timestampObjects) {
 		// create stages
 		Relay<TimestampObject> relay = new Relay<TimestampObject>();
diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
index fff9e149c7763ed976075d70f5215c4a851863b0..bddeaf9a7c1758e1810f2bb6ad6f35cbbee3bae7 100644
--- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
+++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
@@ -8,7 +8,7 @@ import java.util.List;
 
 import teetime.framework.AnalysisConfiguration;
 import teetime.framework.HeadPipeline;
-import teetime.framework.StageWithPort;
+import teetime.framework.Stage;
 import teetime.framework.pipe.SingleElementPipe;
 import teetime.framework.pipe.SpScPipe;
 import teetime.stage.Clock;
@@ -117,7 +117,7 @@ public class TcpTraceReconstructionAnalysisWithThreadsConfiguration extends Anal
 		return pipeline;
 	}
 
-	private static class StageFactory<T extends StageWithPort> {
+	private static class StageFactory<T extends Stage> {
 
 		private final Constructor<T> constructor;
 		private final List<T> stages = new ArrayList<T>();
diff --git a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java
index 7153c5ccf4e56d311314eb8feab575ad0eb35d09..f1b4e5df4f2f5fc01a8d6412a7e7b917878c7dd8 100644
--- a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java
+++ b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java
@@ -10,7 +10,7 @@ import java.util.TreeMap;
 
 import teetime.framework.HeadPipeline;
 import teetime.framework.RunnableStage;
-import teetime.framework.StageWithPort;
+import teetime.framework.Stage;
 import teetime.framework.pipe.SingleElementPipe;
 import teetime.framework.pipe.SpScPipe;
 import teetime.stage.Clock;
@@ -98,7 +98,7 @@ public class TcpTraceReductionAnalysisWithThreads {
 		return pipeline;
 	}
 
-	private static class StageFactory<T extends StageWithPort> {
+	private static class StageFactory<T extends Stage> {
 
 		private final Constructor<T> constructor;
 		private final List<T> stages = new ArrayList<T>();