diff --git a/src/main/java/teetime/stage/kieker/className/ClassNameRegistry.java b/src/main/java/teetime/stage/className/ClassNameRegistry.java
similarity index 96%
rename from src/main/java/teetime/stage/kieker/className/ClassNameRegistry.java
rename to src/main/java/teetime/stage/className/ClassNameRegistry.java
index 15e300ede691b9ff5d9a1c33d8b6ba15f7cd1daa..6e3c077db81963714daa7fa51704fb1774eecdd8 100644
--- a/src/main/java/teetime/stage/kieker/className/ClassNameRegistry.java
+++ b/src/main/java/teetime/stage/className/ClassNameRegistry.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.className;
+package teetime.stage.className;
 
 import java.util.HashMap;
 
diff --git a/src/main/java/teetime/stage/kieker/className/ClassNameRegistryCreationFilter.java b/src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java
similarity index 98%
rename from src/main/java/teetime/stage/kieker/className/ClassNameRegistryCreationFilter.java
rename to src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java
index 4171c34ac0a81ee87fab469bdc41e75ab05adc72..ee175d08512ce0685bf25a53d3740b775ddf1864 100644
--- a/src/main/java/teetime/stage/kieker/className/ClassNameRegistryCreationFilter.java
+++ b/src/main/java/teetime/stage/className/ClassNameRegistryCreationFilter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.className;
+package teetime.stage.className;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/src/main/java/teetime/stage/kieker/className/ClassNameRegistryRepository.java b/src/main/java/teetime/stage/className/ClassNameRegistryRepository.java
similarity index 97%
rename from src/main/java/teetime/stage/kieker/className/ClassNameRegistryRepository.java
rename to src/main/java/teetime/stage/className/ClassNameRegistryRepository.java
index bbbd79117109f14dc6e59b2850a5f7a26cb9a3a1..a9baa21301b8807bc2110e6459c44f25ed4fc6e8 100644
--- a/src/main/java/teetime/stage/kieker/className/ClassNameRegistryRepository.java
+++ b/src/main/java/teetime/stage/className/ClassNameRegistryRepository.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.className;
+package teetime.stage.className;
 
 import java.io.File;
 import java.util.concurrent.ConcurrentHashMap;
diff --git a/src/main/java/teetime/stage/kieker/className/MappingFileParser.java b/src/main/java/teetime/stage/className/MappingFileParser.java
similarity index 99%
rename from src/main/java/teetime/stage/kieker/className/MappingFileParser.java
rename to src/main/java/teetime/stage/className/MappingFileParser.java
index a428056aa49840f02f889a5bd9d8c74a5c64317e..93c23df3af439347d19c1b36433d8fc585f12cdb 100644
--- a/src/main/java/teetime/stage/kieker/className/MappingFileParser.java
+++ b/src/main/java/teetime/stage/className/MappingFileParser.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.className;
+package teetime.stage.className;
 
 import java.io.BufferedReader;
 import java.io.File;
diff --git a/src/main/java/teetime/stage/io/IRecordFactoryMethod.java b/src/main/java/teetime/stage/io/IRecordFactoryMethod.java
deleted file mode 100644
index 10849cd49654ddb762f835a01f4214419c659aa6..0000000000000000000000000000000000000000
--- a/src/main/java/teetime/stage/io/IRecordFactoryMethod.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package teetime.stage.io;
-
-import java.nio.ByteBuffer;
-
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.util.registry.ILookup;
-
-public interface IRecordFactoryMethod {
-
-	IMonitoringRecord create(ByteBuffer buffer, ILookup<String> stringRegistry);
-
-}
diff --git a/src/main/java/teetime/stage/io/RecordFactory.java b/src/main/java/teetime/stage/io/RecordFactory.java
deleted file mode 100644
index 0d012dbcf83cd872520eebc04259f082bbafdb19..0000000000000000000000000000000000000000
--- a/src/main/java/teetime/stage/io/RecordFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package teetime.stage.io;
-
-import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.Map;
-
-import kieker.common.exception.MonitoringRecordException;
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.util.registry.ILookup;
-
-public final class RecordFactory {
-
-	private final Map<String, IRecordFactoryMethod> recordFactoryMethods = new HashMap<String, IRecordFactoryMethod>();
-
-	public IMonitoringRecord create(final int clazzId, final ByteBuffer buffer, final ILookup<String> stringRegistry) throws MonitoringRecordException {
-		String recordClassName = stringRegistry.get(clazzId);
-		IRecordFactoryMethod recordFactoryMethod = this.recordFactoryMethods.get(recordClassName);
-		if (recordFactoryMethod == null) {
-			throw new IllegalStateException("recordClassName: " + recordClassName);
-		}
-		return recordFactoryMethod.create(buffer, stringRegistry);
-	}
-
-	public void register(final String recordClassName, final IRecordFactoryMethod recordFactoryMethod) {
-		this.recordFactoryMethods.put(recordClassName, recordFactoryMethod);
-	}
-}
diff --git a/src/main/java/teetime/stage/io/DbReader.java b/src/main/java/teetime/stage/io/database/DbReader.java
similarity index 99%
rename from src/main/java/teetime/stage/io/DbReader.java
rename to src/main/java/teetime/stage/io/database/DbReader.java
index 82f4a4e76dd6d21bd75fe5c52b6590eddfaba522..c196c34349f427814f5cb16061492a7f4423ad5c 100644
--- a/src/main/java/teetime/stage/io/DbReader.java
+++ b/src/main/java/teetime/stage/io/database/DbReader.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package teetime.stage.io;
+package teetime.stage.io.database;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git a/src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java b/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java
similarity index 93%
rename from src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java
rename to src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java
index 64ea7fdbbb09ba53d472e13f77432094ef197ffa..d5749921d2d15bab2ec9548abbfac6bb8fae7d43 100644
--- a/src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/Dir2RecordsFilter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker;
+package teetime.stage.io.filesystem;
 
 import java.io.File;
 
@@ -26,11 +26,11 @@ import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
 import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.FileExtensionSwitch;
 import teetime.stage.basic.merger.Merger;
+import teetime.stage.className.ClassNameRegistryCreationFilter;
+import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.io.Directory2FilesFilter;
-import teetime.stage.kieker.className.ClassNameRegistryCreationFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
-import teetime.stage.kieker.fileToRecord.BinaryFile2RecordFilter;
-import teetime.stage.kieker.fileToRecord.DatFile2RecordFilter;
+import teetime.stage.io.filesystem.format.binary.file.BinaryFile2RecordFilter;
+import teetime.stage.io.filesystem.format.text.file.DatFile2RecordFilter;
 
 import kieker.common.record.IMonitoringRecord;
 import kieker.common.util.filesystem.BinaryCompressionMethod;
diff --git a/src/main/java/teetime/stage/kieker/DirWithBin2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java
similarity index 85%
rename from src/main/java/teetime/stage/kieker/DirWithBin2RecordFilter.java
rename to src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java
index ae11d6e6f3b013d2c7f2b7aec4fa57728d437791..feb0cb4f9f047aeeddda9ff7d4b3c4ee3d9f7145 100644
--- a/src/main/java/teetime/stage/kieker/DirWithBin2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/binary/DirWithBin2RecordFilter.java
@@ -1,13 +1,13 @@
-package teetime.stage.kieker;
+package teetime.stage.io.filesystem.format.binary;
 
 import java.io.File;
 
 import teetime.framework.InputPort;
 import teetime.framework.OldPipeline;
 import teetime.framework.OutputPort;
-import teetime.stage.kieker.className.ClassNameRegistryCreationFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
-import teetime.stage.kieker.fileToRecord.BinaryFile2RecordFilter;
+import teetime.stage.className.ClassNameRegistryCreationFilter;
+import teetime.stage.className.ClassNameRegistryRepository;
+import teetime.stage.io.filesystem.format.binary.file.BinaryFile2RecordFilter;
 
 import kieker.common.record.IMonitoringRecord;
 
diff --git a/src/main/java/teetime/stage/kieker/fileToRecord/BinaryFile2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java
similarity index 96%
rename from src/main/java/teetime/stage/kieker/fileToRecord/BinaryFile2RecordFilter.java
rename to src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java
index a6c917f468919c16fa74b52d82c2484cd780b53e..c74e26243bc6c9ef0df29f478cb72cd799de8661 100644
--- a/src/main/java/teetime/stage/kieker/fileToRecord/BinaryFile2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/binary/file/BinaryFile2RecordFilter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.fileToRecord;
+package teetime.stage.io.filesystem.format.binary.file;
 
 import java.io.DataInputStream;
 import java.io.File;
@@ -22,7 +22,7 @@ import java.io.IOException;
 import teetime.framework.ConsumerStage;
 import teetime.framework.OutputPort;
 import teetime.framework.signal.OnStartingException;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
+import teetime.stage.className.ClassNameRegistryRepository;
 
 import kieker.common.exception.MonitoringRecordException;
 import kieker.common.record.IMonitoringRecord;
diff --git a/src/main/java/teetime/stage/kieker/fileToRecord/RecordFromBinaryFileCreator.java b/src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java
similarity index 96%
rename from src/main/java/teetime/stage/kieker/fileToRecord/RecordFromBinaryFileCreator.java
rename to src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java
index 17700c2a93973eb11c4a519e76711fa62ded3667..7f661166a954fcf2a6d6c7ba39c65a6d16024251 100644
--- a/src/main/java/teetime/stage/kieker/fileToRecord/RecordFromBinaryFileCreator.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/binary/file/RecordFromBinaryFileCreator.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.fileToRecord;
+package teetime.stage.io.filesystem.format.binary.file;
 
 import java.io.DataInputStream;
 import java.io.EOFException;
@@ -22,8 +22,8 @@ import java.io.IOException;
 
 import org.slf4j.Logger;
 
-import teetime.stage.kieker.className.ClassNameRegistry;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
+import teetime.stage.className.ClassNameRegistry;
+import teetime.stage.className.ClassNameRegistryRepository;
 
 import kieker.common.exception.MonitoringRecordException;
 import kieker.common.record.AbstractMonitoringRecord;
diff --git a/src/main/java/teetime/stage/kieker/DirWithDat2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/DirWithDat2RecordFilter.java
similarity index 85%
rename from src/main/java/teetime/stage/kieker/DirWithDat2RecordFilter.java
rename to src/main/java/teetime/stage/io/filesystem/format/text/DirWithDat2RecordFilter.java
index ae8795bfd61091557471a1ce35a84f2d79b7c51a..1db084810d3f10f804cb77e11e7597da878ae977 100644
--- a/src/main/java/teetime/stage/kieker/DirWithDat2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/text/DirWithDat2RecordFilter.java
@@ -1,13 +1,13 @@
-package teetime.stage.kieker;
+package teetime.stage.io.filesystem.format.text;
 
 import java.io.File;
 
 import teetime.framework.InputPort;
 import teetime.framework.OldPipeline;
 import teetime.framework.OutputPort;
-import teetime.stage.kieker.className.ClassNameRegistryCreationFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
-import teetime.stage.kieker.fileToRecord.DatFile2RecordFilter;
+import teetime.stage.className.ClassNameRegistryCreationFilter;
+import teetime.stage.className.ClassNameRegistryRepository;
+import teetime.stage.io.filesystem.format.text.file.DatFile2RecordFilter;
 
 import kieker.common.record.IMonitoringRecord;
 
diff --git a/src/main/java/teetime/stage/kieker/fileToRecord/DatFile2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java
similarity index 91%
rename from src/main/java/teetime/stage/kieker/fileToRecord/DatFile2RecordFilter.java
rename to src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java
index 30dfa1b59b3c4076081acc7a68249e5dfa3d78db..fba4593100a19579b5632b4fce6deeb92812fd75 100644
--- a/src/main/java/teetime/stage/kieker/fileToRecord/DatFile2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/DatFile2RecordFilter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.fileToRecord;
+package teetime.stage.io.filesystem.format.text.file;
 
 import java.io.File;
 
@@ -21,9 +21,8 @@ import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
 import teetime.framework.OldPipeline;
 import teetime.framework.pipe.SingleElementPipe;
+import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.io.File2TextLinesFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
-import teetime.stage.kieker.fileToRecord.textLine.TextLine2RecordFilter;
 
 import kieker.common.record.IMonitoringRecord;
 
diff --git a/src/main/java/teetime/stage/kieker/fileToRecord/RecordFromTextLineCreator.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java
similarity index 96%
rename from src/main/java/teetime/stage/kieker/fileToRecord/RecordFromTextLineCreator.java
rename to src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java
index 118fec7521f3645ebf0650dd6fce7d2d09de2e10..89dbbafac21a70f706cff1d8da9f6bdd21d94ec3 100644
--- a/src/main/java/teetime/stage/kieker/fileToRecord/RecordFromTextLineCreator.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/RecordFromTextLineCreator.java
@@ -13,12 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.fileToRecord;
+package teetime.stage.io.filesystem.format.text.file;
 
 import java.io.File;
 
-import teetime.stage.kieker.className.ClassNameRegistry;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
+import teetime.stage.className.ClassNameRegistry;
+import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.util.MappingException;
 
 import kieker.common.exception.IllegalRecordFormatException;
diff --git a/src/main/java/teetime/stage/kieker/fileToRecord/textLine/TextLine2MappingRegistryFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java
similarity index 97%
rename from src/main/java/teetime/stage/kieker/fileToRecord/textLine/TextLine2MappingRegistryFilter.java
rename to src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java
index e15f352f7d121bb8f174efa80413c9c4c9776fe1..e2ee19c803d2c8dded445e421d90323d9a28cdbc 100644
--- a/src/main/java/teetime/stage/kieker/fileToRecord/textLine/TextLine2MappingRegistryFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2MappingRegistryFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package teetime.stage.kieker.fileToRecord.textLine;
+package teetime.stage.io.filesystem.format.text.file;
 
 import java.util.Map;
 
diff --git a/src/main/java/teetime/stage/kieker/fileToRecord/textLine/TextLine2RecordFilter.java b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java
similarity index 95%
rename from src/main/java/teetime/stage/kieker/fileToRecord/textLine/TextLine2RecordFilter.java
rename to src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java
index b730d2d5bc8cd289fa53ebc0df290721e2fbe591..a39985f037404947d6a60b879f189608a9299b62 100644
--- a/src/main/java/teetime/stage/kieker/fileToRecord/textLine/TextLine2RecordFilter.java
+++ b/src/main/java/teetime/stage/io/filesystem/format/text/file/TextLine2RecordFilter.java
@@ -14,15 +14,14 @@
  * limitations under the License.
  ***************************************************************************/
 
-package teetime.stage.kieker.fileToRecord.textLine;
+package teetime.stage.io.filesystem.format.text.file;
 
 import java.util.HashSet;
 import java.util.Set;
 
 import teetime.framework.ConsumerStage;
 import teetime.framework.OutputPort;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
-import teetime.stage.kieker.fileToRecord.RecordFromTextLineCreator;
+import teetime.stage.className.ClassNameRegistryRepository;
 import teetime.stage.util.MappingException;
 import teetime.stage.util.TextLine;
 
diff --git a/src/main/java/teetime/stage/io/TCPReader.java b/src/main/java/teetime/stage/io/network/TCPReader.java
similarity index 99%
rename from src/main/java/teetime/stage/io/TCPReader.java
rename to src/main/java/teetime/stage/io/network/TCPReader.java
index 3d4931a217c30be4fd2873ad01ba0848ba95ec90..d4235192c72475a26c0ff7ba2bac2c5e5a05fa0b 100644
--- a/src/main/java/teetime/stage/io/TCPReader.java
+++ b/src/main/java/teetime/stage/io/network/TCPReader.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.io;
+package teetime.stage.io.network;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
diff --git a/src/main/java/teetime/stage/kieker/traceReconstruction/TraceReconstructionFilter.java b/src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java
similarity index 99%
rename from src/main/java/teetime/stage/kieker/traceReconstruction/TraceReconstructionFilter.java
rename to src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java
index 51d3752befc04a5c7e13e758ddbd72951a83aa65..53d4bb6876768d7570bf2c852f62e1d524727e66 100644
--- a/src/main/java/teetime/stage/kieker/traceReconstruction/TraceReconstructionFilter.java
+++ b/src/main/java/teetime/stage/trace/traceReconstruction/TraceReconstructionFilter.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package teetime.stage.kieker.traceReconstruction;
+package teetime.stage.trace.traceReconstruction;
 
 import java.util.concurrent.TimeUnit;
 
diff --git a/src/main/java/teetime/stage/kieker/traceReduction/TraceAggregationBuffer.java b/src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java
similarity index 95%
rename from src/main/java/teetime/stage/kieker/traceReduction/TraceAggregationBuffer.java
rename to src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java
index 56b1c257953d1f1ab940b060e73c0719a0ace656..2a43b7bfed5ffb60985e5157af25b4b2317e8100 100644
--- a/src/main/java/teetime/stage/kieker/traceReduction/TraceAggregationBuffer.java
+++ b/src/main/java/teetime/stage/trace/traceReduction/TraceAggregationBuffer.java
@@ -1,4 +1,4 @@
-package teetime.stage.kieker.traceReduction;
+package teetime.stage.trace.traceReduction;
 
 import kieker.analysis.plugin.filter.flow.TraceEventRecords;
 
diff --git a/src/main/java/teetime/stage/kieker/traceReduction/TraceComperator.java b/src/main/java/teetime/stage/trace/traceReduction/TraceComperator.java
similarity index 97%
rename from src/main/java/teetime/stage/kieker/traceReduction/TraceComperator.java
rename to src/main/java/teetime/stage/trace/traceReduction/TraceComperator.java
index b1fadaeb1faee62b27261ed50da76cc5da4137a0..382188e4d39a6852e170ea5a90ed40b4cd65b9ad 100644
--- a/src/main/java/teetime/stage/kieker/traceReduction/TraceComperator.java
+++ b/src/main/java/teetime/stage/trace/traceReduction/TraceComperator.java
@@ -1,4 +1,4 @@
-package teetime.stage.kieker.traceReduction;
+package teetime.stage.trace.traceReduction;
 
 import java.io.Serializable;
 import java.util.Comparator;
diff --git a/src/main/java/teetime/stage/kieker/traceReduction/TraceReductionFilter.java b/src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java
similarity index 99%
rename from src/main/java/teetime/stage/kieker/traceReduction/TraceReductionFilter.java
rename to src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java
index 874b3fd3cccc650bbc90d950393866cc2d942ca5..9efe901e0c80a92521e746943af9b403ce9209a2 100644
--- a/src/main/java/teetime/stage/kieker/traceReduction/TraceReductionFilter.java
+++ b/src/main/java/teetime/stage/trace/traceReduction/TraceReductionFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package teetime.stage.kieker.traceReduction;
+package teetime.stage.trace.traceReduction;
 
 import java.util.Iterator;
 import java.util.Map;
diff --git a/src/main/java/util/KiekerLoadDriver.java b/src/main/java/util/KiekerLoadDriver.java
index 65795567b3a578a10f2d459991a89dedd8836672..a7a5a238b3e9a2a3de1629770ea5318484c596df 100644
--- a/src/main/java/util/KiekerLoadDriver.java
+++ b/src/main/java/util/KiekerLoadDriver.java
@@ -20,8 +20,8 @@ import teetime.framework.RunnableStage;
 import teetime.framework.pipe.SingleElementPipe;
 import teetime.stage.CollectorSink;
 import teetime.stage.InitialElementProducer;
-import teetime.stage.kieker.Dir2RecordsFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
+import teetime.stage.className.ClassNameRegistryRepository;
+import teetime.stage.io.filesystem.Dir2RecordsFilter;
 
 import kieker.common.record.IMonitoringRecord;
 import kieker.common.record.flow.trace.TraceMetadata;
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java
index 20e61eb6b5dca3d74bf8f95aaf3c3fdc0d147830..37e5fe5daa7525cdda57f96e90c6b1666edc75ff 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceLogging.java
@@ -2,7 +2,7 @@ package teetime.examples.kiekerdays;
 
 import teetime.framework.HeadStage;
 import teetime.framework.RunnableStage;
-import teetime.stage.io.TCPReader;
+import teetime.stage.io.network.TCPReader;
 
 public class TcpTraceLogging {
 
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java
index ccafe970b144bbbfc68ed7adc1c50568c22f94a7..4d1269d9ae2dac16d342873219abb2491c8cb309 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReconstruction.java
@@ -13,8 +13,8 @@ import teetime.stage.InstanceOfFilter;
 import teetime.stage.Relay;
 import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.io.TCPReader;
-import teetime.stage.kieker.traceReconstruction.TraceReconstructionFilter;
+import teetime.stage.io.network.TCPReader;
+import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
 import teetime.util.concurrent.hashmap.TraceBuffer;
 
diff --git a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java
index a5f865400f00b4773a1b9c3b1e3ede2b68e292ef..9db6f2d5178d3d6f36ea453967457669b67adbdb 100644
--- a/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java
+++ b/src/performancetest/java/teetime/examples/kiekerdays/TcpTraceReduction.java
@@ -16,11 +16,11 @@ import teetime.stage.InstanceOfFilter;
 import teetime.stage.Relay;
 import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.io.TCPReader;
-import teetime.stage.kieker.traceReconstruction.TraceReconstructionFilter;
-import teetime.stage.kieker.traceReduction.TraceAggregationBuffer;
-import teetime.stage.kieker.traceReduction.TraceComperator;
-import teetime.stage.kieker.traceReduction.TraceReductionFilter;
+import teetime.stage.io.network.TCPReader;
+import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
+import teetime.stage.trace.traceReduction.TraceAggregationBuffer;
+import teetime.stage.trace.traceReduction.TraceComperator;
+import teetime.stage.trace.traceReduction.TraceReductionFilter;
 import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
 import teetime.util.concurrent.hashmap.TraceBuffer;
 
diff --git a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
index fa289c0af832521ab19df88024c0b7853ef91b09..955057cbb4d3257ec8115247be1261573710bcdd 100644
--- a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
+++ b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
@@ -25,8 +25,8 @@ import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
 import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.CollectorSink;
 import teetime.stage.InitialElementProducer;
-import teetime.stage.kieker.Dir2RecordsFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
+import teetime.stage.className.ClassNameRegistryRepository;
+import teetime.stage.io.filesystem.Dir2RecordsFilter;
 
 import kieker.common.record.IMonitoringRecord;
 
diff --git a/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysis.java b/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysis.java
index fcf14f30f008543a81800f190fcebce259ad03fc..3d090b71a08964278d8393ce3b64f1d42bd071d6 100644
--- a/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysis.java
+++ b/src/performancetest/java/teetime/examples/traceReading/TcpTraceLoggingExtAnalysis.java
@@ -11,7 +11,7 @@ import teetime.stage.Counter;
 import teetime.stage.ElementThroughputMeasuringStage;
 import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.io.TCPReader;
+import teetime.stage.io.network.TCPReader;
 
 import kieker.common.record.IMonitoringRecord;
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionAnalysis.java b/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionAnalysis.java
index ff835b17817bc32b0bfe5d532b39b53a4822ca5d..b3099a8279c0daaf42ef23e143b983c505cc8555 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionAnalysis.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/TcpTraceReconstructionAnalysis.java
@@ -13,8 +13,8 @@ import teetime.stage.ElementThroughputMeasuringStage;
 import teetime.stage.InstanceOfFilter;
 import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.io.TCPReader;
-import teetime.stage.kieker.traceReconstruction.TraceReconstructionFilter;
+import teetime.stage.io.network.TCPReader;
+import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
 import teetime.util.concurrent.hashmap.TraceBuffer;
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java
index dd4545c820858902263ef4c5aca20a7490884c06..f1246f5aa16e624f94d691136149a79dc4d5b2c0 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/TraceReconstructionAnalysis.java
@@ -16,12 +16,12 @@ import teetime.stage.ElementThroughputMeasuringStage;
 import teetime.stage.InitialElementProducer;
 import teetime.stage.InstanceOfFilter;
 import teetime.stage.basic.merger.Merger;
-import teetime.stage.kieker.Dir2RecordsFilter;
-import teetime.stage.kieker.className.ClassNameRegistryRepository;
-import teetime.stage.kieker.traceReconstruction.TraceReconstructionFilter;
+import teetime.stage.className.ClassNameRegistryRepository;
+import teetime.stage.io.filesystem.Dir2RecordsFilter;
 import teetime.stage.stringBuffer.StringBufferFilter;
 import teetime.stage.stringBuffer.handler.IMonitoringRecordHandler;
 import teetime.stage.stringBuffer.handler.StringHandler;
+import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
 import teetime.util.concurrent.hashmap.TraceBuffer;
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
index bddeaf9a7c1758e1810f2bb6ad6f35cbbee3bae7..253a861fd148ae308fc03210cd9fabe026226fed 100644
--- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
+++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/TcpTraceReconstructionAnalysisWithThreadsConfiguration.java
@@ -20,8 +20,8 @@ import teetime.stage.InstanceOfFilter;
 import teetime.stage.Relay;
 import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.io.TCPReader;
-import teetime.stage.kieker.traceReconstruction.TraceReconstructionFilter;
+import teetime.stage.io.network.TCPReader;
+import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
 import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
 import teetime.util.concurrent.hashmap.TraceBuffer;
 
diff --git a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java
index f1b4e5df4f2f5fc01a8d6412a7e7b917878c7dd8..598b92e4463e01f8386ab7aa9c8f38499b296b6e 100644
--- a/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java
+++ b/src/performancetest/java/teetime/examples/traceReductionWithThreads/TcpTraceReductionAnalysisWithThreads.java
@@ -22,11 +22,11 @@ import teetime.stage.InstanceOfFilter;
 import teetime.stage.Relay;
 import teetime.stage.basic.Sink;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.io.TCPReader;
-import teetime.stage.kieker.traceReconstruction.TraceReconstructionFilter;
-import teetime.stage.kieker.traceReduction.TraceAggregationBuffer;
-import teetime.stage.kieker.traceReduction.TraceComperator;
-import teetime.stage.kieker.traceReduction.TraceReductionFilter;
+import teetime.stage.io.network.TCPReader;
+import teetime.stage.trace.traceReconstruction.TraceReconstructionFilter;
+import teetime.stage.trace.traceReduction.TraceAggregationBuffer;
+import teetime.stage.trace.traceReduction.TraceComperator;
+import teetime.stage.trace.traceReduction.TraceReductionFilter;
 import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
 import teetime.util.concurrent.hashmap.TraceBuffer;