diff --git a/.settings/edu.umd.cs.findbugs.core.prefs b/.settings/edu.umd.cs.findbugs.core.prefs
index 0e19b748021fa0ad94299d7c107ba0329ee6616a..5ce4d272957809afd699ae2bca04931cfbfc3849 100644
--- a/.settings/edu.umd.cs.findbugs.core.prefs
+++ b/.settings/edu.umd.cs.findbugs.core.prefs
@@ -1,5 +1,5 @@
 #FindBugs User Preferences
-#Wed Dec 17 07:42:45 CET 2014
+#Wed Dec 17 09:02:35 CET 2014
 detector_threshold=3
 effort=max
 excludefilter0=.fbExcludeFilterFile|true
diff --git a/src/main/java/util/KiekerLoadDriver.java b/src/main/java/util/KiekerLoadDriver.java
index d8d1a25cda342bf32e9dd11314c54057c0d19a62..410b823f7f2a5f94060020e0c1dae6738de01edf 100644
--- a/src/main/java/util/KiekerLoadDriver.java
+++ b/src/main/java/util/KiekerLoadDriver.java
@@ -14,7 +14,7 @@ import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 
-import teetime.framework.RunnableStage;
+import teetime.framework.RunnableProducerStage;
 import teetime.framework.Stage;
 import teetime.framework.pipe.IPipeFactory;
 import teetime.framework.pipe.PipeFactoryRegistry;
@@ -34,13 +34,13 @@ import kieker.common.util.registry.Registry;
 public class KiekerLoadDriver {
 
 	private final List<IMonitoringRecord> elementCollection = new LinkedList<IMonitoringRecord>();
-	private final RunnableStage runnableStage;
+	private final RunnableProducerStage runnableStage;
 	private long[] timings;
 	private final IPipeFactory intraThreadPipeFactory;
 
 	public KiekerLoadDriver(final File directory) {
 		Stage producerPipeline = this.buildProducerPipeline(directory);
-		runnableStage = new RunnableStage(producerPipeline);
+		runnableStage = new RunnableProducerStage(producerPipeline);
 		intraThreadPipeFactory = PipeFactoryRegistry.INSTANCE.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false);
 	}
 
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java
index 226b9baf69b8df5cea8ddc4f4de0a69a4f8725f3..76b249041db81342d2dc15dc5e99b3c3fcf63dfc 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java
@@ -1,7 +1,7 @@
 package teetime.examples.kiekerdays;
 
 import teetime.framework.Stage;
-import teetime.framework.RunnableStage;
+import teetime.framework.RunnableProducerStage;
 import teetime.stage.io.network.TcpReader;
 
 public class TcpTraceLogging {
@@ -10,7 +10,7 @@ public class TcpTraceLogging {
 
 	public void init() {
 		Stage tcpPipeline = this.buildTcpPipeline();
-		this.tcpThread = new Thread(new RunnableStage(tcpPipeline));
+		this.tcpThread = new Thread(new RunnableProducerStage(tcpPipeline));
 	}
 
 	public void start() {
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLoggingExplorviz.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLoggingExplorviz.java
index eec9b2aa87bb4a7c548197eec4f6ce77d6128857..2fef38d2e11bcf3b321e3771a7dbbb940ddb1404 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLoggingExplorviz.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLoggingExplorviz.java
@@ -1,7 +1,7 @@
 package teetime.examples.kiekerdays;
 
 import teetime.framework.Stage;
-import teetime.framework.RunnableStage;
+import teetime.framework.RunnableProducerStage;
 import teetime.framework.pipe.SingleElementPipe;
 import teetime.stage.basic.Sink;
 import teetime.stage.explorviz.KiekerRecordTcpReader;
@@ -14,7 +14,7 @@ public class TcpTraceLoggingExplorviz {
 
 	public void init() {
 		Stage tcpPipeline = this.buildTcpPipeline();
-		this.tcpThread = new Thread(new RunnableStage(tcpPipeline));
+		this.tcpThread = new Thread(new RunnableProducerStage(tcpPipeline));
 	}
 
 	public void start() {
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java
index 3357b1ad8f73e0a5c3ea25a80db90e27a436a5eb..1105940fa923c0401d34931929a0c3e4a3f6b6e8 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java
@@ -6,7 +6,7 @@ import java.util.List;
 
 import teetime.framework.Stage;
 import teetime.framework.Pipeline;
-import teetime.framework.RunnableStage;
+import teetime.framework.RunnableProducerStage;
 import teetime.framework.pipe.IPipe;
 import teetime.framework.pipe.IPipeFactory;
 import teetime.framework.pipe.PipeFactoryRegistry;
@@ -51,14 +51,14 @@ public class TcpTraceReconstruction {
 
 	public void init() {
 		Pipeline<Distributor<IMonitoringRecord>> tcpPipeline = this.buildTcpPipeline();
-		this.tcpThread = new Thread(new RunnableStage(tcpPipeline));
+		this.tcpThread = new Thread(new RunnableProducerStage(tcpPipeline));
 
 		this.numWorkerThreads = Math.min(NUM_VIRTUAL_CORES, this.numWorkerThreads);
 		this.workerThreads = new Thread[this.numWorkerThreads];
 
 		for (int i = 0; i < this.workerThreads.length; i++) {
 			Stage pipeline = this.buildPipeline(tcpPipeline.getLastStage());
-			this.workerThreads[i] = new Thread(new RunnableStage(pipeline));
+			this.workerThreads[i] = new Thread(new RunnableProducerStage(pipeline));
 		}
 	}
 
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java
index e248282aad73e5ab26ddc0134940d89fbf384ed3..d211ff0befae744992e59010fb5726a01e66d415 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java
@@ -8,7 +8,7 @@ import java.util.TreeMap;
 
 import teetime.framework.Stage;
 import teetime.framework.Pipeline;
-import teetime.framework.RunnableStage;
+import teetime.framework.RunnableProducerStage;
 import teetime.framework.pipe.IPipe;
 import teetime.framework.pipe.IPipeFactory;
 import teetime.framework.pipe.PipeFactoryRegistry;
@@ -59,17 +59,17 @@ public class TcpTraceReduction {
 
 	public void init() {
 		Pipeline<Distributor<IMonitoringRecord>> tcpPipeline = this.buildTcpPipeline();
-		this.tcpThread = new Thread(new RunnableStage(tcpPipeline));
+		this.tcpThread = new Thread(new RunnableProducerStage(tcpPipeline));
 
 		Pipeline<Distributor<Long>> clockStage = this.buildClockPipeline(5000);
-		this.clockThread = new Thread(new RunnableStage(clockStage));
+		this.clockThread = new Thread(new RunnableProducerStage(clockStage));
 
 		this.numWorkerThreads = Math.min(NUM_VIRTUAL_CORES, this.numWorkerThreads);
 		this.workerThreads = new Thread[this.numWorkerThreads];
 
 		for (int i = 0; i < this.workerThreads.length; i++) {
 			Stage pipeline = this.buildPipeline(tcpPipeline.getLastStage(), clockStage.getLastStage());
-			this.workerThreads[i] = new Thread(new RunnableStage(pipeline));
+			this.workerThreads[i] = new Thread(new RunnableProducerStage(pipeline));
 		}
 	}
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java
index 3341f172ed8403fc4a936080b531203e07744eb6..69e12db424e422ce789fe4db6a7cfe8b02743e09 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java
@@ -5,7 +5,7 @@ import java.util.LinkedList;
 import java.util.List;
 
 import teetime.framework.AnalysisConfiguration;
-import teetime.framework.RunnableStage;
+import teetime.framework.RunnableProducerStage;
 import teetime.framework.Stage;
 import teetime.framework.pipe.IPipeFactory;
 import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
@@ -59,10 +59,10 @@ public class TraceReconstructionAnalysis extends AnalysisConfiguration {
 
 	private void init() {
 		Clock clockStage = this.buildClockPipeline();
-		this.clockThread = new Thread(new RunnableStage(clockStage));
+		this.clockThread = new Thread(new RunnableProducerStage(clockStage));
 
 		Stage pipeline = this.buildPipeline(clockStage);
-		this.workerThread = new Thread(new RunnableStage(pipeline));
+		this.workerThread = new Thread(new RunnableProducerStage(pipeline));
 	}
 
 	private Clock buildClockPipeline() {