diff --git a/src/main/java/teetime/framework/pipe/IPipeFactory.java b/src/main/java/teetime/framework/pipe/IPipeFactory.java
index 48627dbac5369b2ec6d7fa7cb1bf849f333c1955..8ff43cae918cbad003e0282a9af5e794cdf41c06 100644
--- a/src/main/java/teetime/framework/pipe/IPipeFactory.java
+++ b/src/main/java/teetime/framework/pipe/IPipeFactory.java
@@ -2,8 +2,8 @@ package teetime.framework.pipe;
 
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 
 public interface IPipeFactory {
 
diff --git a/src/main/java/teetime/framework/pipe/OrderedGrowableArrayPipeFactory.java b/src/main/java/teetime/framework/pipe/OrderedGrowableArrayPipeFactory.java
index 76f17f5d48014dbb4a1a66e6eadb80eee92c7ca4..9142b80e11d7cbcfe4cd057f857840bf167ae9ab 100644
--- a/src/main/java/teetime/framework/pipe/OrderedGrowableArrayPipeFactory.java
+++ b/src/main/java/teetime/framework/pipe/OrderedGrowableArrayPipeFactory.java
@@ -2,8 +2,8 @@ package teetime.framework.pipe;
 
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 
 public class OrderedGrowableArrayPipeFactory implements IPipeFactory {
 
diff --git a/src/main/java/teetime/framework/pipe/PipeFactory.java b/src/main/java/teetime/framework/pipe/PipeFactoryRegistry.java
similarity index 93%
rename from src/main/java/teetime/framework/pipe/PipeFactory.java
rename to src/main/java/teetime/framework/pipe/PipeFactoryRegistry.java
index fffb32b100b40aeebdab6f62f386695c66af36c9..2817b034be35f965bdc93254ae719d92b60f7dfc 100644
--- a/src/main/java/teetime/framework/pipe/PipeFactory.java
+++ b/src/main/java/teetime/framework/pipe/PipeFactoryRegistry.java
@@ -8,9 +8,9 @@ import java.util.Map;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class PipeFactory {
+public class PipeFactoryRegistry {
 
-	private static final Logger LOGGER = LoggerFactory.getLogger(PipeFactory.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(PipeFactoryRegistry.class);
 
 	public enum ThreadCommunication {
 		INTER, INTRA
@@ -30,9 +30,9 @@ public class PipeFactory {
 
 	private final Map<String, IPipeFactory> pipeFactories = new HashMap<String, IPipeFactory>();
 
-	public static PipeFactory INSTANCE = new PipeFactory();
+	public static PipeFactoryRegistry INSTANCE = new PipeFactoryRegistry();
 
-	private PipeFactory() {
+	private PipeFactoryRegistry() {
 		try {
 			List<IPipeFactory> pipeFactories = PipeFactoryLoader.loadFromFile("conf/pipe-factories.conf");
 			for (IPipeFactory pipeFactory : pipeFactories) {
diff --git a/src/main/java/teetime/framework/pipe/SingleElementPipeFactory.java b/src/main/java/teetime/framework/pipe/SingleElementPipeFactory.java
index ee8d3cf499fd6b11456fd43198895afa41cac0f2..b51000fab0dc391fcb2c627cc3089e3508a5044d 100644
--- a/src/main/java/teetime/framework/pipe/SingleElementPipeFactory.java
+++ b/src/main/java/teetime/framework/pipe/SingleElementPipeFactory.java
@@ -2,8 +2,8 @@ package teetime.framework.pipe;
 
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 
 public class SingleElementPipeFactory implements IPipeFactory {
 
diff --git a/src/main/java/teetime/framework/pipe/SpScPipeFactory.java b/src/main/java/teetime/framework/pipe/SpScPipeFactory.java
index 25331aa398d0955c2bfd7d34eef94ce4fd924743..745e79715025cb5e4d5ad6690f1d6ba7c5265147 100644
--- a/src/main/java/teetime/framework/pipe/SpScPipeFactory.java
+++ b/src/main/java/teetime/framework/pipe/SpScPipeFactory.java
@@ -2,8 +2,8 @@ package teetime.framework.pipe;
 
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 
 public class SpScPipeFactory implements IPipeFactory {
 
diff --git a/src/main/java/teetime/framework/pipe/UnorderedGrowablePipeFactory.java b/src/main/java/teetime/framework/pipe/UnorderedGrowablePipeFactory.java
index e18e896d1d4903cf61407fdb70e75cb6a1ba9211..219d95d796c6d688dbf09e8356c283bd24ac75c3 100644
--- a/src/main/java/teetime/framework/pipe/UnorderedGrowablePipeFactory.java
+++ b/src/main/java/teetime/framework/pipe/UnorderedGrowablePipeFactory.java
@@ -2,8 +2,8 @@ package teetime.framework.pipe;
 
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 
 public class UnorderedGrowablePipeFactory implements IPipeFactory {
 
diff --git a/src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java b/src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java
index eaf453f8e418c71c69d41a9497cb7b3eb9216cd9..fb413551aa03961a549e6d2f14091c7b40702fd4 100644
--- a/src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java
+++ b/src/main/java/teetime/stage/kieker/Dir2RecordsFilter.java
@@ -20,10 +20,10 @@ import java.io.File;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
 import teetime.framework.Pipeline;
-import teetime.framework.pipe.PipeFactory;
+import teetime.framework.pipe.PipeFactoryRegistry;
 import teetime.framework.pipe.SingleElementPipe;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+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.io.Directory2FilesFilter;
@@ -44,7 +44,7 @@ import kieker.common.util.filesystem.FSUtil;
  */
 public class Dir2RecordsFilter extends Pipeline<ClassNameRegistryCreationFilter, Merger<IMonitoringRecord>> {
 
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 	private ClassNameRegistryRepository classNameRegistryRepository;
 
 	/**
diff --git a/src/performancetest/java/teetime/examples/experiment14/MethodCallThroughputAnalysis14.java b/src/performancetest/java/teetime/examples/experiment14/MethodCallThroughputAnalysis14.java
index 3b32e2bdadd7c333e92dda19187ec7e673eb8e3c..18b24367366c357d69c8ab9ca43dfc90dfe8d596 100644
--- a/src/performancetest/java/teetime/examples/experiment14/MethodCallThroughputAnalysis14.java
+++ b/src/performancetest/java/teetime/examples/experiment14/MethodCallThroughputAnalysis14.java
@@ -22,9 +22,9 @@ import teetime.framework.HeadStage;
 import teetime.framework.OldAnalysis;
 import teetime.framework.RunnableStage;
 import teetime.framework.pipe.IPipeFactory;
-import teetime.framework.pipe.PipeFactory;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.CollectorSink;
 import teetime.stage.NoopFilter;
 import teetime.stage.ObjectProducer;
@@ -45,7 +45,7 @@ public class MethodCallThroughputAnalysis14 extends OldAnalysis {
 	private int numNoopFilters;
 	private List<TimestampObject> timestampObjects;
 	private Runnable runnable;
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 
 	@Override
 	public void init() {
diff --git a/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java b/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java
index c1954504e7a0a135138dceffa148ffcb4dd030a1..bb17e0fb66a5df954cffba32bc14589b55890248 100644
--- a/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java
+++ b/src/performancetest/java/teetime/examples/experiment17/MethodCallThroughputAnalysis17.java
@@ -25,7 +25,7 @@ import teetime.framework.RunnableStage;
 import teetime.framework.StageWithPort;
 import teetime.framework.pipe.DummyPipe;
 import teetime.framework.pipe.IPipe;
-import teetime.framework.pipe.PipeFactory;
+import teetime.framework.pipe.PipeFactoryRegistry;
 import teetime.framework.pipe.RelayTestPipe;
 import teetime.framework.pipe.UnorderedGrowablePipe;
 import teetime.framework.signal.TerminatingSignal;
@@ -54,7 +54,7 @@ public class MethodCallThroughputAnalysis17 extends OldAnalysis {
 	private ConstructorClosure<TimestampObject> inputObjectCreator;
 	private int numNoopFilters;
 
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 	private final List<List<TimestampObject>> timestampObjectsList = new LinkedList<List<TimestampObject>>();
 
 	private Thread producerThread;
diff --git a/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java b/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java
index 348fca73b12cf185fb00ccdb2075cd2a4f3dcc78..33e262c8eb21c5d879ffddbba8d6e0b4e56e11a7 100644
--- a/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java
+++ b/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java
@@ -2,15 +2,15 @@ package teetime.examples.loopStage;
 
 import teetime.framework.AnalysisConfiguration;
 import teetime.framework.pipe.IPipeFactory;
-import teetime.framework.pipe.PipeFactory;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 
 import teetime.examples.loopStage.Countdown;
 
 public class LoopStageAnalysisConfiguration extends AnalysisConfiguration {
 
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 
 	public LoopStageAnalysisConfiguration() {
 		Countdown countdown = new Countdown(10);
diff --git a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
index cbcae8ca4682990a65859571749545dbec312cfc..e84ce2a1382202b1eb96cf41fdac2c1fa58201a6 100644
--- a/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
+++ b/src/performancetest/java/teetime/examples/recordReader/RecordReaderConfiguration.java
@@ -21,9 +21,9 @@ import java.util.List;
 
 import teetime.framework.AnalysisConfiguration;
 import teetime.framework.HeadStage;
-import teetime.framework.pipe.PipeFactory;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry;
+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;
@@ -39,7 +39,7 @@ import kieker.common.record.IMonitoringRecord;
 public class RecordReaderConfiguration extends AnalysisConfiguration {
 
 	private final List<IMonitoringRecord> elementCollection = new LinkedList<IMonitoringRecord>();
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 
 	public RecordReaderConfiguration() {
 		this.buildConfiguration();
diff --git a/src/performancetest/java/teetime/runtime/typeCheck/ConnectionTypeTest.java b/src/performancetest/java/teetime/runtime/typeCheck/ConnectionTypeTest.java
index 3caa3cf553562ed30dc35d3da1c9450cfc752e6f..6b92dbf3c49e4bb7de1b08fc7a0ee7e1570463f9 100644
--- a/src/performancetest/java/teetime/runtime/typeCheck/ConnectionTypeTest.java
+++ b/src/performancetest/java/teetime/runtime/typeCheck/ConnectionTypeTest.java
@@ -9,9 +9,9 @@ import java.lang.reflect.InvocationTargetException;
 import org.junit.Test;
 
 import teetime.framework.pipe.IPipeFactory;
-import teetime.framework.pipe.PipeFactory;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.ObjectProducer;
 import teetime.stage.PortTypeConfiguration;
 import teetime.stage.StartTimestampFilter;
@@ -22,7 +22,7 @@ import teetime.util.TimestampObject;
 
 public class ConnectionTypeTest {
 
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 
 	// tests for load-time validation
 
diff --git a/src/test/java/teetime/examples/cipher/CipherConfiguration.java b/src/test/java/teetime/examples/cipher/CipherConfiguration.java
index 54fef5a38c3c34bebeb528979a15fdd0c63e05cd..c34d4aac600e1719003732245a22b9ebcffc0057 100644
--- a/src/test/java/teetime/examples/cipher/CipherConfiguration.java
+++ b/src/test/java/teetime/examples/cipher/CipherConfiguration.java
@@ -3,20 +3,21 @@ package teetime.examples.cipher;
 import java.io.File;
 
 import teetime.framework.AnalysisConfiguration;
-import teetime.framework.pipe.PipeFactory;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.CipherByteArray;
+import teetime.stage.CipherByteArray.CipherMode;
 import teetime.stage.InitialElementProducer;
 import teetime.stage.ZipByteArray;
-import teetime.stage.CipherByteArray.CipherMode;
 import teetime.stage.ZipByteArray.ZipMode;
 import teetime.stage.io.ByteArrayFileWriter;
 import teetime.stage.io.File2ByteArray;
 
 public class CipherConfiguration extends AnalysisConfiguration {
 
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private static final PipeFactoryRegistry pipeFactoryRegistry = PipeFactoryRegistry.INSTANCE;
+
 	private final File input, output;
 	private final String password;
 
@@ -33,17 +34,17 @@ public class CipherConfiguration extends AnalysisConfiguration {
 		CipherByteArray decrypt = new CipherByteArray(this.password, CipherMode.DECRYPT);
 		ByteArrayFileWriter writer = new ByteArrayFileWriter(output);
 
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
+		pipeFactoryRegistry.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(init.getOutputPort(), f2b.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
+		pipeFactoryRegistry.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(f2b.getOutputPort(), enc.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
+		pipeFactoryRegistry.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(enc.getOutputPort(), comp.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
+		pipeFactoryRegistry.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(comp.getOutputPort(), decomp.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
+		pipeFactoryRegistry.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(decomp.getOutputPort(), decrypt.getInputPort());
-		this.pipeFactory.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
+		pipeFactoryRegistry.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false)
 				.create(decrypt.getOutputPort(), writer.getInputPort());
 
 		this.getFiniteProducerStages().add(init);
diff --git a/src/test/java/teetime/examples/cipher/CipherTest.java b/src/test/java/teetime/examples/cipher/CipherTest.java
index be4c3b50c4897cba43d39c65515a586505c6c0b4..2607b032da3e5ec0e603af35f28ed9d30214c5f9 100644
--- a/src/test/java/teetime/examples/cipher/CipherTest.java
+++ b/src/test/java/teetime/examples/cipher/CipherTest.java
@@ -13,21 +13,17 @@ import com.google.common.io.Files;
 
 public class CipherTest {
 
-	static String inputFile = "src/test/resources/data/input.txt";
-	static String outputFile = "src/test/resources/data/output.txt";
-	static String password = "Password";
-	static long start;
-	long stop;
-
-	static AnalysisConfiguration configuration = new CipherConfiguration(inputFile, outputFile, password);
-
-	final static Analysis analysis = new Analysis(configuration);
-
 	@Test
 	public void executeTest() throws IOException {
+		final String inputFile = "src/test/resources/data/input.txt";
+		final String outputFile = "src/test/resources/data/output.txt";
+		final String password = "Password";
+
+		AnalysisConfiguration configuration = new CipherConfiguration(inputFile, outputFile, password);
+		Analysis analysis = new Analysis(configuration);
 		analysis.init();
-		start = System.currentTimeMillis();
 		analysis.start();
+
 		Assert.assertTrue(Files.equal(new File(inputFile), new File(outputFile)));
 	}
 
diff --git a/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java b/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java
index 7ae1bb77ba066d10c8f0349c1d14b4bd400827ee..2d333cf8861ea37f4ab9be0b8713c577a6030da6 100644
--- a/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java
+++ b/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java
@@ -3,9 +3,9 @@ package teetime.examples.tokenizer;
 import java.io.File;
 
 import teetime.framework.AnalysisConfiguration;
-import teetime.framework.pipe.PipeFactory;
-import teetime.framework.pipe.PipeFactory.PipeOrdering;
-import teetime.framework.pipe.PipeFactory.ThreadCommunication;
+import teetime.framework.pipe.PipeFactoryRegistry;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.ByteArray2String;
 import teetime.stage.CipherByteArray;
 import teetime.stage.CipherByteArray.CipherMode;
@@ -18,7 +18,7 @@ import teetime.stage.io.File2ByteArray;
 
 public class TokenizerConfiguration extends AnalysisConfiguration {
 
-	private final PipeFactory pipeFactory = PipeFactory.INSTANCE;
+	private final PipeFactoryRegistry pipeFactory = PipeFactoryRegistry.INSTANCE;
 	private final File input;
 	private final String password;
 	private final TokenCounter counter;