diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/Dir2RecordsFilter.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/Dir2RecordsFilter.java
index 85941999d4d6e0c006b8792fd9b7a1a3b11ea19b..d0735a73daa42322e5924ae6d8e024b2df61e2c1 100644
--- a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/Dir2RecordsFilter.java
+++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/Dir2RecordsFilter.java
@@ -17,6 +17,7 @@ package teetime.variant.methodcallWithPorts.stage.kieker;
 
 import java.io.File;
 
+import teetime.variant.methodcallWithPorts.framework.core.InputPort;
 import teetime.variant.methodcallWithPorts.framework.core.OutputPort;
 import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
 import teetime.variant.methodcallWithPorts.framework.core.pipe.SingleElementPipe;
@@ -38,7 +39,7 @@ import kieker.common.util.filesystem.FSUtil;
  * 
  * @since 1.10
  */
-public class Dir2RecordsFilter extends Pipeline<File, IMonitoringRecord> {
+public class Dir2RecordsFilter extends Pipeline<ClassNameRegistryCreationFilter, Merger<IMonitoringRecord>> {
 
 	private ClassNameRegistryRepository classNameRegistryRepository;
 
@@ -79,13 +80,13 @@ public class Dir2RecordsFilter extends Pipeline<File, IMonitoringRecord> {
 		SingleElementPipe.connect(zipFile2RecordFilter.getOutputPort(), recordMerger.getNewInputPort());
 
 		// prepare pipeline
-		this.setFirstStage(classNameRegistryCreationFilter, classNameRegistryCreationFilter.getInputPort());
+		this.setFirstStage(classNameRegistryCreationFilter);
 		this.addIntermediateStage(directory2FilesFilter);
 		this.addIntermediateStage(fileExtensionSwitch);
 		this.addIntermediateStage(datFile2RecordFilter);
 		this.addIntermediateStage(binaryFile2RecordFilter);
 		this.addIntermediateStage(zipFile2RecordFilter);
-		this.setLastStage(recordMerger, recordMerger.getOutputPort());
+		this.setLastStage(recordMerger);
 	}
 
 	/**
@@ -103,4 +104,12 @@ public class Dir2RecordsFilter extends Pipeline<File, IMonitoringRecord> {
 		this.classNameRegistryRepository = classNameRegistryRepository;
 	}
 
+	public InputPort<File> getInputPort() {
+		return this.getFirstStage().getInputPort();
+	}
+
+	public OutputPort<IMonitoringRecord> getOutputPort() {
+		return this.getLastStage().getOutputPort();
+	}
+
 }
diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithBin2RecordFilter.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithBin2RecordFilter.java
index 0ac7e9728cd5248f345592b008308592f546a2b5..c305843472faa90cadfd2566a5ae97686f5a0204 100644
--- a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithBin2RecordFilter.java
+++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithBin2RecordFilter.java
@@ -2,6 +2,8 @@ package teetime.variant.methodcallWithPorts.stage.kieker;
 
 import java.io.File;
 
+import teetime.variant.methodcallWithPorts.framework.core.InputPort;
+import teetime.variant.methodcallWithPorts.framework.core.OutputPort;
 import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
 import teetime.variant.methodcallWithPorts.stage.io.Directory2FilesFilter;
 import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryCreationFilter;
@@ -10,7 +12,7 @@ import teetime.variant.methodcallWithPorts.stage.kieker.fileToRecord.BinaryFile2
 
 import kieker.common.record.IMonitoringRecord;
 
-public class DirWithBin2RecordFilter extends Pipeline<File, IMonitoringRecord> {
+public class DirWithBin2RecordFilter extends Pipeline<ClassNameRegistryCreationFilter, BinaryFile2RecordFilter> {
 
 	private ClassNameRegistryRepository classNameRegistryRepository;
 
@@ -21,9 +23,9 @@ public class DirWithBin2RecordFilter extends Pipeline<File, IMonitoringRecord> {
 		final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter();
 		final BinaryFile2RecordFilter binaryFile2RecordFilter = new BinaryFile2RecordFilter(classNameRegistryRepository);
 
-		this.setFirstStage(classNameRegistryCreationFilter, classNameRegistryCreationFilter.getInputPort());
+		this.setFirstStage(classNameRegistryCreationFilter);
 		this.addIntermediateStage(directory2FilesFilter);
-		this.setLastStage(binaryFile2RecordFilter, binaryFile2RecordFilter.getOutputPort());
+		this.setLastStage(binaryFile2RecordFilter);
 	}
 
 	public DirWithBin2RecordFilter() {
@@ -37,4 +39,12 @@ public class DirWithBin2RecordFilter extends Pipeline<File, IMonitoringRecord> {
 	public void setClassNameRegistryRepository(final ClassNameRegistryRepository classNameRegistryRepository) {
 		this.classNameRegistryRepository = classNameRegistryRepository;
 	}
+
+	public InputPort<File> getInputPort() {
+		return this.getFirstStage().getInputPort();
+	}
+
+	public OutputPort<IMonitoringRecord> getOutputPort() {
+		return this.getLastStage().getOutputPort();
+	}
 }
diff --git a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithDat2RecordFilter.java b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithDat2RecordFilter.java
index 7a4eeab5490008ce50fdac2b70e7aac5fa98b9c1..cfa54ecfaaa32632850df48b36a134db415812ac 100644
--- a/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithDat2RecordFilter.java
+++ b/src/main/java/teetime/variant/methodcallWithPorts/stage/kieker/DirWithDat2RecordFilter.java
@@ -2,6 +2,8 @@ package teetime.variant.methodcallWithPorts.stage.kieker;
 
 import java.io.File;
 
+import teetime.variant.methodcallWithPorts.framework.core.InputPort;
+import teetime.variant.methodcallWithPorts.framework.core.OutputPort;
 import teetime.variant.methodcallWithPorts.framework.core.Pipeline;
 import teetime.variant.methodcallWithPorts.stage.io.Directory2FilesFilter;
 import teetime.variant.methodcallWithPorts.stage.kieker.className.ClassNameRegistryCreationFilter;
@@ -10,7 +12,7 @@ import teetime.variant.methodcallWithPorts.stage.kieker.fileToRecord.DatFile2Rec
 
 import kieker.common.record.IMonitoringRecord;
 
-public class DirWithDat2RecordFilter extends Pipeline<File, IMonitoringRecord> {
+public class DirWithDat2RecordFilter extends Pipeline<ClassNameRegistryCreationFilter, DatFile2RecordFilter> {
 
 	private ClassNameRegistryRepository classNameRegistryRepository;
 
@@ -21,9 +23,9 @@ public class DirWithDat2RecordFilter extends Pipeline<File, IMonitoringRecord> {
 		final Directory2FilesFilter directory2FilesFilter = new Directory2FilesFilter();
 		final DatFile2RecordFilter datFile2RecordFilter = new DatFile2RecordFilter(classNameRegistryRepository);
 
-		this.setFirstStage(classNameRegistryCreationFilter, classNameRegistryCreationFilter.getInputPort());
+		this.setFirstStage(classNameRegistryCreationFilter);
 		this.addIntermediateStage(directory2FilesFilter);
-		this.setLastStage(datFile2RecordFilter, datFile2RecordFilter.getOutputPort());
+		this.setLastStage(datFile2RecordFilter);
 	}
 
 	public DirWithDat2RecordFilter() {
@@ -37,4 +39,12 @@ public class DirWithDat2RecordFilter extends Pipeline<File, IMonitoringRecord> {
 	public void setClassNameRegistryRepository(final ClassNameRegistryRepository classNameRegistryRepository) {
 		this.classNameRegistryRepository = classNameRegistryRepository;
 	}
+
+	public InputPort<File> getInputPort() {
+		return this.getFirstStage().getInputPort();
+	}
+
+	public OutputPort<IMonitoringRecord> getOutputPort() {
+		return this.getLastStage().getOutputPort();
+	}
 }