diff --git a/.classpath b/.classpath
index 9022062d8dfa64335dc564f900678538dac21bd5..31223dc742592f137f39dc384bc12c47bdaecc00 100644
--- a/.classpath
+++ b/.classpath
@@ -23,8 +23,16 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
-	<classpathentry including="**/*.java" kind="src" path="src/main/resources"/>
-	<classpathentry including="**/*.java" kind="src" path="src/test/resources"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="src" path="conf"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/.settings/edu.umd.cs.findbugs.core.prefs b/.settings/edu.umd.cs.findbugs.core.prefs
index af7d163d7df5db16611a9d3fa014f685b53e43d2..aa459302fcd46c3d10841046d2ebbb6fdf30d3d7 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 Jun 24 10:24:19 CEST 2015
+#Thu Jul 30 15:19:22 CEST 2015
 detector_threshold=3
 effort=max
 excludefilter0=.fbExcludeFilterFile|true
diff --git a/src/main/java/teetime/framework/Pipeline.java b/src/main/java/teetime/framework/Pipeline.java
index f818703d477586c8feda385281aa0c24b1e4953b..efe021216f497e95b7f14a66cde655dea4df029c 100644
--- a/src/main/java/teetime/framework/Pipeline.java
+++ b/src/main/java/teetime/framework/Pipeline.java
@@ -26,17 +26,17 @@ import java.util.List;
  *            the type of the last stage in this pipeline
  */
 // TODO Consider to move it in the framework
-public final class Pipeline<L extends Stage> extends AbstractCompositeStage {
+public final class Pipeline<L extends AbstractStage> extends AbstractCompositeStage {
 
-	private final Stage firstStage;
+	private final AbstractStage firstStage;
 	private final List<L> lastStages = new LinkedList<L>();
 
-	public Pipeline(final Stage firstStage, final L lastStage) {
+	public Pipeline(final AbstractStage firstStage, final L lastStage) {
 		this.firstStage = firstStage;
 		this.lastStages.add(lastStage);
 	}
 
-	public Stage getFirstStage() {
+	public AbstractStage getFirstStage() {
 		return firstStage;
 	}
 
diff --git a/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java b/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java
index 66189863d431c24d18111993c52372f8aec48148..37671f222e0f1a5213deed77227e99f755d9b694 100644
--- a/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java
@@ -20,7 +20,7 @@ import java.io.File;
 import teetime.framework.AbstractCompositeStage;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.Stage;
+import teetime.framework.AbstractStage;
 import teetime.stage.FileExtensionSwitch;
 import teetime.stage.basic.merger.Merger;
 import teetime.stage.className.ClassNameRegistryCreationFilter;
@@ -85,7 +85,7 @@ public final class Dir2RecordsFilter extends AbstractCompositeStage {
 		this.classNameRegistryCreationFilter = classNameRegistryCreationFilter;
 	}
 
-	public Stage getFirstStage() {
+	public AbstractStage getFirstStage() {
 		return classNameRegistryCreationFilter;
 	}
 
diff --git a/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java
index bed16b27225276be0c940dafd871d4a22cf79641..26f72fc33f5c5a4a7a4339fa77a710ad6938d3f9 100644
--- a/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java
@@ -20,7 +20,7 @@ import java.io.File;
 import teetime.framework.AbstractCompositeStage;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.Stage;
+import teetime.framework.AbstractStage;
 import teetime.stage.className.ClassNameRegistryCreationFilter;
 import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.io.filesystem.format.binary.file.BinaryFile2RecordFilter;
@@ -53,7 +53,7 @@ public class DirWithBin2RecordFilter extends AbstractCompositeStage {
 		this.classNameRegistryRepository = classNameRegistryRepository;
 	}
 
-	protected Stage getFirstStage() {
+	protected AbstractStage getFirstStage() {
 		return classNameRegistryCreationFilter;
 	}
 
diff --git a/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java
index d2ae9fe419e84f2cf24ee74f044274fa0aa0882f..0bdc1c0027f48185e3403fb6d210772c4efe296d 100644
--- a/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java
@@ -20,7 +20,7 @@ import java.io.File;
 import teetime.framework.AbstractCompositeStage;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.Stage;
+import teetime.framework.AbstractStage;
 import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.io.File2TextLinesFilter;
 
@@ -43,7 +43,7 @@ public class DatFile2RecordFilter extends AbstractCompositeStage {
 		connectPorts(file2TextLinesFilter.getOutputPort(), textLine2RecordFilter.getInputPort());
 	}
 
-	public Stage getFirstStage() {
+	public AbstractStage getFirstStage() {
 		return file2TextLinesFilter;
 	}
 
diff --git a/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java b/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java
index 395da32495071c867cbb22ec1375fc617c851f52..8b558ac5e74a8233e12e364650aee1f9e8cce110 100644
--- a/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java
+++ b/src/performancetest/java/teetime/examples/recordReader/RecordReaderAnalysisTest.java
@@ -23,13 +23,13 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import teetime.framework.Execution;
-import teetime.util.StopWatch;
-
 import kieker.common.record.IMonitoringRecord;
 import kieker.common.record.controlflow.OperationExecutionRecord;
 import kieker.common.record.misc.KiekerMetadataRecord;
 
+import teetime.framework.Execution;
+import teetime.util.StopWatch;
+
 /**
  * @author Christian Wulf
  *
@@ -54,7 +54,7 @@ public class RecordReaderAnalysisTest {
 	public void performAnalysis() {
 		final RecordReaderConfiguration configuration = new RecordReaderConfiguration();
 
-		Execution analysis = new Execution(configuration);
+		Execution<RecordReaderConfiguration> analysis = new Execution<RecordReaderConfiguration>(configuration);
 
 		this.stopWatch.start();
 		analysis.executeBlocking();
diff --git a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
index f50b52208325806eafa34f92f4d230ebd6f1e173..d68de9b9d180257b4e323d8660cdf3a995f066b2 100644
--- a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
+++ b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
@@ -19,15 +19,15 @@ import java.io.File;
 import java.util.LinkedList;
 import java.util.List;
 
+import kieker.common.record.IMonitoringRecord;
+
+import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
-import teetime.framework.Stage;
 import teetime.stage.CollectorSink;
 import teetime.stage.InitialElementProducer;
 import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.io.filesystem.Dir2RecordsFilter;
 
-import kieker.common.record.IMonitoringRecord;
-
 /**
  * @author Christian Wulf
  *
@@ -41,12 +41,7 @@ public class RecordReaderConfiguration extends Configuration {
 		this.buildConfiguration();
 	}
 
-	private void buildConfiguration() {
-		final Stage producerPipeline = this.buildProducerPipeline();
-		declareActive(producerPipeline);
-	}
-
-	private Stage buildProducerPipeline() {
+	private AbstractStage buildConfiguration() {
 		ClassNameRegistryRepository classNameRegistryRepository = new ClassNameRegistryRepository();
 		File logDir = new File("src/test/data/bookstore-logs");
 		// create stages
diff --git a/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java b/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java
index 1e145c27f2d2a16cb0c28630437dc5d0a48efab0..85e6215cbde9710ab1fbcd249682eb13e18c57b5 100644
--- a/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java
+++ b/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysisConfiguration.java
@@ -17,9 +17,11 @@ package teetime.examples.traceReading;
 
 import java.util.List;
 
+import kieker.common.record.IMonitoringRecord;
+
+import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
 import teetime.framework.Pipeline;
-import teetime.framework.Stage;
 import teetime.stage.Clock;
 import teetime.stage.Counter;
 import teetime.stage.ElementThroughputMeasuringStage;
@@ -27,8 +29,6 @@ import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
 import teetime.stage.io.network.TcpReaderStage;
 
-import kieker.common.record.IMonitoringRecord;
-
 public class TcpTraceLoggingExtAnalysisConfiguration extends Configuration {
 
 	private Counter<IMonitoringRecord> recordCounter;
@@ -40,9 +40,7 @@ public class TcpTraceLoggingExtAnalysisConfiguration extends Configuration {
 
 	private void init() {
 		final Pipeline<Distributor<Long>> clockPipeline = this.buildClockPipeline(1000);
-		declareActive(clockPipeline.getFirstStage());
-		final Stage tcpPipeline = this.buildTcpPipeline(clockPipeline.getLastStage());
-		declareActive(tcpPipeline);
+		this.buildTcpPipeline(clockPipeline.getLastStage());
 	}
 
 	private Pipeline<Distributor<Long>> buildClockPipeline(final long intervalDelayInMs) {
@@ -56,7 +54,7 @@ public class TcpTraceLoggingExtAnalysisConfiguration extends Configuration {
 		return new Pipeline<Distributor<Long>>(clockStage, distributor);
 	}
 
-	private Stage buildTcpPipeline(final Distributor<Long> previousClockStage) {
+	private AbstractStage buildTcpPipeline(final Distributor<Long> previousClockStage) {
 		TcpReaderStage tcpReader = new TcpReaderStage();
 		this.recordCounter = new Counter<IMonitoringRecord>();
 		this.recordThroughputStage = new ElementThroughputMeasuringStage<IMonitoringRecord>();
@@ -69,6 +67,8 @@ public class TcpTraceLoggingExtAnalysisConfiguration extends Configuration {
 
 		connectPorts(previousClockStage.getNewOutputPort(), this.recordThroughputStage.getTriggerInputPort(), 10);
 
+		recordThroughputStage.declareActive();
+
 		return tcpReader;
 	}
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java b/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java
index c05eb5a65729e20d4d07c2612b7ea6ae8d0376f7..2b2d2caa340f64de60b6b3b47f275a302537e935 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionConf.java
@@ -17,9 +17,12 @@ package teetime.examples.traceReconstruction;
 
 import java.util.List;
 
+import kieker.common.record.IMonitoringRecord;
+import kieker.common.record.flow.IFlowRecord;
+
+import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
 import teetime.framework.Pipeline;
-import teetime.framework.Stage;
 import teetime.stage.Clock;
 import teetime.stage.Counter;
 import teetime.stage.ElementThroughputMeasuringStage;
@@ -32,9 +35,6 @@ import teetime.stage.trace.traceReconstruction.EventBasedTraceFactory;
 import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.ConcurrentHashMapWithDefault;
 
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.record.flow.IFlowRecord;
-
 public class TcpTraceReconstructionConf extends Configuration {
 
 	private static final int MIO = 1000000;
@@ -54,13 +54,8 @@ public class TcpTraceReconstructionConf extends Configuration {
 
 	private void init() {
 		Pipeline<Distributor<Long>> clockStage = this.buildClockPipeline(1000);
-		declareActive(clockStage.getFirstStage());
-
 		Pipeline<Distributor<Long>> clock2Stage = this.buildClockPipeline(2000);
-		declareActive(clock2Stage.getFirstStage());
-
-		Stage pipeline = this.buildPipeline(clockStage.getLastStage(), clock2Stage.getLastStage());
-		declareActive(pipeline);
+		this.buildPipeline(clockStage.getLastStage(), clock2Stage.getLastStage());
 	}
 
 	private Pipeline<Distributor<Long>> buildClockPipeline(final long intervalDelayInMs) {
@@ -73,7 +68,7 @@ public class TcpTraceReconstructionConf extends Configuration {
 		return new Pipeline<Distributor<Long>>(clock, distributor);
 	}
 
-	private Stage buildPipeline(final Distributor<Long> clockStage, final Distributor<Long> clock2Stage) {
+	private AbstractStage buildPipeline(final Distributor<Long> clockStage, final Distributor<Long> clock2Stage) {
 		// create stages
 		TcpReaderStage tcpReader = new TcpReaderStage();
 		this.recordCounter = new Counter<IMonitoringRecord>();
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java
index 0afcb0504113fdb7cd703cb0428844697b55890c..25cc3a92e68cb889c2a51a90a1f3970b6c9f888f 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionConf.java
@@ -19,8 +19,11 @@ import java.io.File;
 import java.util.LinkedList;
 import java.util.List;
 
+import kieker.common.record.IMonitoringRecord;
+import kieker.common.record.flow.IFlowRecord;
+
+import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
-import teetime.framework.Stage;
 import teetime.stage.Cache;
 import teetime.stage.Clock;
 import teetime.stage.CollectorSink;
@@ -39,9 +42,6 @@ import teetime.stage.trace.traceReconstruction.EventBasedTraceFactory;
 import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.ConcurrentHashMapWithDefault;
 
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.record.flow.IFlowRecord;
-
 public class TraceReconstructionConf extends Configuration {
 
 	private final List<EventBasedTrace> elementCollection = new LinkedList<EventBasedTrace>();
@@ -62,10 +62,7 @@ public class TraceReconstructionConf extends Configuration {
 
 	private void init() {
 		Clock clockStage = this.buildClockPipeline();
-		declareActive(clockStage);
-
-		Stage pipeline = this.buildPipeline(clockStage);
-		declareActive(pipeline);
+		this.buildPipeline(clockStage);
 	}
 
 	private Clock buildClockPipeline() {
@@ -75,7 +72,7 @@ public class TraceReconstructionConf extends Configuration {
 		return clock;
 	}
 
-	private Stage buildPipeline(final Clock clockStage) {
+	private AbstractStage buildPipeline(final Clock clockStage) {
 		this.classNameRegistryRepository = new ClassNameRegistryRepository();
 
 		// create stages
diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
index 6484124baa62987c0d606cdca3ad0510fb571a2f..759131901f53addc332828d71bfc751c8eccbefe 100644
--- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
+++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
@@ -21,10 +21,13 @@ import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
+import kieker.common.record.IMonitoringRecord;
+import kieker.common.record.flow.IFlowRecord;
+import kieker.common.record.flow.trace.TraceMetadata;
+
 import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
 import teetime.framework.Pipeline;
-import teetime.framework.Stage;
 import teetime.framework.pipe.IMonitorablePipe;
 import teetime.stage.Clock;
 import teetime.stage.Counter;
@@ -41,10 +44,6 @@ import teetime.stage.trace.traceReconstruction.EventBasedTraceFactory;
 import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.ConcurrentHashMapWithDefault;
 
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.record.flow.IFlowRecord;
-import kieker.common.record.flow.trace.TraceMetadata;
-
 public class TcpTraceReconstructionAnalysisWithThreadsConfiguration extends Configuration {
 
 	private static final int NUM_VIRTUAL_CORES = Runtime.getRuntime().availableProcessors();
@@ -92,17 +91,12 @@ public class TcpTraceReconstructionAnalysisWithThreadsConfiguration extends Conf
 
 	private void init() {
 		Pipeline<Distributor<IMonitoringRecord>> tcpPipeline = this.buildTcpPipeline();
-		declareActive(tcpPipeline.getFirstStage());
-
 		Pipeline<Distributor<Long>> clockStage = this.buildClockPipeline(1000);
-		declareActive(clockStage.getFirstStage());
-
 		Pipeline<Distributor<Long>> clock2Stage = this.buildClockPipeline(2000);
-		declareActive(clock2Stage.getFirstStage());
 
 		for (int i = 0; i < this.numWorkerThreads; i++) {
-			Stage pipeline = this.buildPipeline(tcpPipeline.getLastStage(), clockStage.getLastStage(), clock2Stage.getLastStage());
-			declareActive(pipeline);
+			AbstractStage pipeline = this.buildPipeline(tcpPipeline.getLastStage(), clockStage.getLastStage(), clock2Stage.getLastStage());
+			pipeline.declareActive();
 		}
 	}
 
@@ -156,7 +150,7 @@ public class TcpTraceReconstructionAnalysisWithThreadsConfiguration extends Conf
 		}
 	}
 
-	private Stage buildPipeline(final Distributor<IMonitoringRecord> tcpReaderPipeline, final Distributor<Long> clockStage,
+	private AbstractStage buildPipeline(final Distributor<IMonitoringRecord> tcpReaderPipeline, final Distributor<Long> clockStage,
 			final Distributor<Long> clock2Stage) {
 		// create stages
 		Relay<IMonitoringRecord> relay = new Relay<IMonitoringRecord>();
@@ -191,6 +185,9 @@ public class TcpTraceReconstructionAnalysisWithThreadsConfiguration extends Conf
 		// connectPorts(traceThroughputFilter.getOutputPort(), traceCounter.getInputPort());
 		connectPorts(traceCounter.getOutputPort(), endStage.getInputPort());
 
+		recordThroughputFilter.declareActive();
+		traceThroughputFilter.declareActive();
+
 		return relay;
 	}
 
diff --git a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java
index ebea3fcdabeb5be84c6c2dc468a4064e639663a4..876d38e92ad8593919791e73ff7010efb2ab702d 100644
--- a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java
+++ b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreadsConfiguration.java
@@ -23,10 +23,13 @@ import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
+import kieker.common.record.IMonitoringRecord;
+import kieker.common.record.flow.IFlowRecord;
+import kieker.common.record.flow.trace.TraceMetadata;
+
 import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
 import teetime.framework.Pipeline;
-import teetime.framework.Stage;
 import teetime.framework.pipe.IMonitorablePipe;
 import teetime.stage.Clock;
 import teetime.stage.Counter;
@@ -46,10 +49,6 @@ import teetime.stage.trace.traceReduction.TraceAggregationBuffer;
 import teetime.stage.trace.traceReduction.TraceReductionFilter;
 import teetime.util.ConcurrentHashMapWithDefault;
 
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.record.flow.IFlowRecord;
-import kieker.common.record.flow.trace.TraceMetadata;
-
 public class TcpTraceReductionAnalysisWithThreadsConfiguration extends Configuration {
 
 	private static final int NUM_VIRTUAL_CORES = Runtime.getRuntime().availableProcessors();
@@ -88,17 +87,11 @@ public class TcpTraceReductionAnalysisWithThreadsConfiguration extends Configura
 
 	private void init() {
 		final Pipeline<Distributor<IMonitoringRecord>> tcpPipeline = this.buildTcpPipeline();
-		declareActive(tcpPipeline.getFirstStage());
-
 		final Pipeline<Distributor<Long>> clockStage = this.buildClockPipeline(1000);
-		declareActive(clockStage.getFirstStage());
-
 		final Pipeline<Distributor<Long>> clock2Stage = this.buildClockPipeline(5000);
-		declareActive(clock2Stage.getFirstStage());
-
 		for (int i = 0; i < this.numWorkerThreads; i++) {
-			final Stage pipeline = this.buildPipeline(tcpPipeline, clockStage, clock2Stage);
-			declareActive(pipeline);
+			final AbstractStage pipeline = this.buildPipeline(tcpPipeline, clockStage, clock2Stage);
+			pipeline.declareActive();
 		}
 	}
 
@@ -158,7 +151,7 @@ public class TcpTraceReductionAnalysisWithThreadsConfiguration extends Configura
 	private final StageFactory<Counter<TraceAggregationBuffer>> traceCounterFactory;
 	private final StageFactory<ElementThroughputMeasuringStage<TraceAggregationBuffer>> traceThroughputFilterFactory;
 
-	private Stage buildPipeline(final Pipeline<Distributor<IMonitoringRecord>> tcpPipeline, final Pipeline<Distributor<Long>> clockStage,
+	private AbstractStage buildPipeline(final Pipeline<Distributor<IMonitoringRecord>> tcpPipeline, final Pipeline<Distributor<Long>> clockStage,
 			final Pipeline<Distributor<Long>> clock2Stage) {
 		// create stages
 		Relay<IMonitoringRecord> relay = new Relay<IMonitoringRecord>();
@@ -192,6 +185,9 @@ public class TcpTraceReductionAnalysisWithThreadsConfiguration extends Configura
 		connectPorts(clock2Stage.getLastStage().getNewOutputPort(), traceReductionFilter.getTriggerInputPort(), 10);
 		connectPorts(clockStage.getLastStage().getNewOutputPort(), traceThroughputFilter.getTriggerInputPort(), 10);
 
+		traceReductionFilter.declareActive();
+		traceThroughputFilter.declareActive();
+
 		return relay;
 	}
 
diff --git a/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java b/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java
index dc3f1d3242f1b3dd6159d5348f5b11172dc2f409..8839df2177cdd3bf3b8be23e8d35dd370960f9ed 100644
--- a/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java
+++ b/src/test/java/teetime/stage/io/filesystem/Dir2RecordsFilterTest.java
@@ -19,17 +19,17 @@ import java.io.File;
 
 import org.junit.Test;
 
+import kieker.common.record.IMonitoringRecord;
+
 import teetime.framework.AbstractCompositeStage;
+import teetime.framework.AbstractStage;
 import teetime.framework.Configuration;
 import teetime.framework.Execution;
 import teetime.framework.OutputPort;
-import teetime.framework.Stage;
 import teetime.stage.InitialElementProducer;
 import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.io.Printer;
 
-import kieker.common.record.IMonitoringRecord;
-
 public class Dir2RecordsFilterTest {
 
 	class TestConfiguration extends Configuration {
@@ -52,14 +52,13 @@ public class Dir2RecordsFilterTest {
 			this.reader = new Dir2RecordsFilter(new ClassNameRegistryRepository());
 
 			connectPorts(this.producer.getOutputPort(), this.reader.getInputPort());
-			declareActive(producer);
 		}
 
 		public OutputPort<IMonitoringRecord> getOutputPort() {
 			return this.reader.getOutputPort();
 		}
 
-		public Stage getFirstStage() {
+		public AbstractStage getFirstStage() {
 			return this.producer;
 		}