diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java
index b7c758aeb725b6281b43b775ffd10c066073baf9..bcf85239d542a27b232a4fe9879bfcf59e61c7e8 100644
--- a/src/main/java/teetime/framework/AnalysisConfiguration.java
+++ b/src/main/java/teetime/framework/AnalysisConfiguration.java
@@ -32,7 +32,7 @@ import teetime.util.Pair;
 public abstract class AnalysisConfiguration {
 
 	private final List<Stage> threadableStageJobs = new LinkedList<Stage>();
-	private final List<Pair<Stage, Stage>> connections = new LinkedList<Pair<Stage, Stage>>();
+	private final List<Pair<OutputPort, InputPort>> connections = new LinkedList<Pair<OutputPort, InputPort>>();
 
 	@SuppressWarnings("deprecation")
 	private static final PipeFactoryRegistry PIPE_FACTORY_REGISTRY = PipeFactoryRegistry.INSTANCE;
@@ -141,12 +141,16 @@ public abstract class AnalysisConfiguration {
 		return interUnboundedThreadFactory.create(sourcePort, targetPort, capacity);
 	}
 
+	protected <T> void connectStages(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) {
+		connections.add(new Pair<OutputPort, InputPort>(sourcePort, targetPort));
+	}
+
 	/**
 	 * Returns a list of pairs, which describe the connections among all stages.
 	 *
-	 * @return a list of pairs of stages, which are connected
+	 * @return a list of pairs of Out- and InputPorts, which are connected
 	 */
-	protected List<Pair<Stage, Stage>> getConnections() {
+	protected List<Pair<OutputPort, InputPort>> getConnections() {
 		return connections;
 	}