diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java
index 496be3073971103bfbe6f51ad4c9cdf85164a6c0..d63418239f4bcb835338229fcb5a90011547c05b 100644
--- a/src/main/java/teetime/framework/ConfigurationContext.java
+++ b/src/main/java/teetime/framework/ConfigurationContext.java
@@ -18,6 +18,9 @@ package teetime.framework;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import teetime.framework.pipe.IPipe;
 import teetime.framework.pipe.IPipeFactory;
 import teetime.framework.pipe.InstantiationPipe;
@@ -31,6 +34,8 @@ import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
  */
 public abstract class ConfigurationContext extends Configuration {
 
+	private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationContext.class);
+
 	private final Set<Stage> threadableStages = new HashSet<Stage>();
 
 	@SuppressWarnings("deprecation")
@@ -61,7 +66,9 @@ public abstract class ConfigurationContext extends Configuration {
 	 */
 	@Override
 	protected final void addThreadableStage(final Stage stage) {
-		this.threadableStages.add(stage);
+		if (this.threadableStages.add(stage)) {
+			LOGGER.warn("Stage " + stage.getId() + " was already marked as threadable stage.");
+		}
 	}
 
 	/**
@@ -192,9 +199,12 @@ public abstract class ConfigurationContext extends Configuration {
 	 */
 	@Override
 	protected final <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) {
-		if (sourcePort.getOwningStage().getInputPorts().length == 0) {
+		if (sourcePort.getOwningStage().getInputPorts().length == 0 && !threadableStages.contains(sourcePort.getOwningStage())) {
 			addThreadableStage(sourcePort.getOwningStage());
 		}
+		if (sourcePort.pipe != null) {
+			LOGGER.warn("Overwritting existing pipe connecting stages " + sourcePort.getOwningStage().getId() + " and " + targetPort.getOwningStage().getId() + ".");
+		}
 		new InstantiationPipe(sourcePort, targetPort, capacity);
 	}
 
diff --git a/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java b/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java
index 15b5023bf46e7336a52fd71ebf2ffe1af7ae966b..bf9d3c7ae4cf98147fced1df41db3e3e1503d7d8 100644
--- a/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java
+++ b/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java
@@ -31,8 +31,7 @@ public class ExceptionTestConfiguration extends ConfigurationContext {
 		connectPorts(first.getOutputPort(), second.getInputPort());
 		// this.addThreadableStage(new ExceptionTestStage());
 
-		this.addThreadableStage(first);
 		this.addThreadableStage(second);
-		this.addThreadableStage(third);
+		// this.addThreadableStage(third);
 	}
 }