diff --git a/src/main/java/teetime/framework/AbstractCompositeStage.java b/src/main/java/teetime/framework/AbstractCompositeStage.java
index 582ef9b0f13db78f301e05f696ea709f0b7b1a9c..e0d860633369437076eb17adb6fa37a749535b23 100644
--- a/src/main/java/teetime/framework/AbstractCompositeStage.java
+++ b/src/main/java/teetime/framework/AbstractCompositeStage.java
@@ -25,11 +25,9 @@ package teetime.framework;
  */
 public abstract class AbstractCompositeStage extends Network {
 
-	private final AnalysisConfiguration context;
+	private final AnalysisContext context;
 
-	public abstract Stage getFirstStage();
-
-	public AbstractCompositeStage(final AnalysisConfiguration context) {
+	public AbstractCompositeStage(final AnalysisContext context) {
 		this.context = context;
 	}
 
@@ -48,7 +46,7 @@ public abstract class AbstractCompositeStage extends Network {
 		context.addThreadableStage(stage);
 	}
 
-	AnalysisConfiguration getContext() {
+	protected AnalysisContext getContext() {
 		return context;
 	}
 
diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index a8fc0514bf9697495140cb317db28cace9af5ec8..0b376d32d1552ffdcab30773030de4978c3e463e 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -35,7 +35,7 @@ import teetime.util.Pair;
 
 /**
  * Represents an Analysis to which stages can be added and executed later.
- * This needs a {@link AnalysisConfiguration},
+ * This needs a {@link AnalysisContext},
  * in which the adding and configuring of stages takes place.
  * To start the analysis {@link #executeBlocking()} needs to be executed.
  * This class will automatically create threads and join them without any further commitment.
@@ -43,9 +43,9 @@ import teetime.util.Pair;
  * @author Christian Wulf, Nelson Tavares de Sousa
  *
  * @param <T>
- *            the type of the {@link AnalysisConfiguration}
+ *            the type of the {@link AnalysisContext}
  */
-public final class Analysis<T extends AnalysisConfiguration> implements UncaughtExceptionHandler {
+public final class Analysis<T extends AnalysisContext> implements UncaughtExceptionHandler {
 
 	private static final Logger LOGGER = LoggerFactory.getLogger(Analysis.class);
 
diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisContext.java
similarity index 99%
rename from src/main/java/teetime/framework/AnalysisConfiguration.java
rename to src/main/java/teetime/framework/AnalysisContext.java
index 7b285bcd2c3e23f5f7c414fdf95c435d5500b58c..67348213fad569acb04b68f84eca90cc7d64fd1d 100644
--- a/src/main/java/teetime/framework/AnalysisConfiguration.java
+++ b/src/main/java/teetime/framework/AnalysisContext.java
@@ -29,7 +29,7 @@ import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
  * Represents a configuration of connected stages, which is needed to run a analysis.
  * Stages can be added by executing {@link #addThreadableStage(Stage)}.
  */
-public abstract class AnalysisConfiguration extends Network {
+public abstract class AnalysisContext extends Network {
 
 	private final Set<Stage> threadableStages = new HashSet<Stage>();
 
diff --git a/src/main/java/teetime/framework/AnalysisInstantiation.java b/src/main/java/teetime/framework/AnalysisInstantiation.java
index 2eba9e4c7fb85f572a4f75e568b14df2fee3145a..aa4217b8498c5f589e338c0a440bd360cab6a2b5 100644
--- a/src/main/java/teetime/framework/AnalysisInstantiation.java
+++ b/src/main/java/teetime/framework/AnalysisInstantiation.java
@@ -36,14 +36,14 @@ class AnalysisInstantiation {
 	private final IPipeFactory interUnboundedThreadPipeFactory = new UnboundedSpScPipeFactory();
 	private final IPipeFactory intraThreadPipeFactory = new SingleElementPipeFactory();
 
-	private final AnalysisConfiguration configuration;
+	private final AnalysisContext configuration;
 
-	public AnalysisInstantiation(final AnalysisConfiguration configuration) {
+	public AnalysisInstantiation(final AnalysisContext configuration) {
 		this.configuration = configuration;
 	}
 
 	@SuppressWarnings("rawtypes")
-	Integer colorAndConnectStages(final Integer i, final Map<Stage, Integer> colors, final Stage threadableStage, final AnalysisConfiguration configuration) {
+	Integer colorAndConnectStages(final Integer i, final Map<Stage, Integer> colors, final Stage threadableStage, final AnalysisContext configuration) {
 		Integer createdConnections = new Integer(0);
 		Set<Stage> threadableStageJobs = configuration.getThreadableStages();
 		for (OutputPort outputPort : threadableStage.getOutputPorts()) {
diff --git a/src/main/java/teetime/framework/test/StageTester.java b/src/main/java/teetime/framework/test/StageTester.java
index 59092010e96fdb08cf4e783d8aae1143eb317313..e40c4d91a1af0d62782bd0a50267b1b5f1c3514e 100644
--- a/src/main/java/teetime/framework/test/StageTester.java
+++ b/src/main/java/teetime/framework/test/StageTester.java
@@ -20,7 +20,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import teetime.framework.Analysis;
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 import teetime.framework.AnalysisException;
 import teetime.framework.Stage;
 import teetime.framework.StageState;
@@ -78,12 +78,12 @@ public final class StageTester {
 	 *
 	 */
 	public void start() {
-		final AnalysisConfiguration configuration = new Configuration(inputHolders, stage, outputHolders);
-		final Analysis<AnalysisConfiguration> analysis = new Analysis<AnalysisConfiguration>(configuration);
+		final AnalysisContext configuration = new Configuration(inputHolders, stage, outputHolders);
+		final Analysis<AnalysisContext> analysis = new Analysis<AnalysisContext>(configuration);
 		analysis.executeBlocking();
 	}
 
-	private final class Configuration extends AnalysisConfiguration {
+	private final class Configuration extends AnalysisContext {
 
 		public Configuration(final List<InputHolder<?>> inputHolders, final Stage stage, final List<OutputHolder<?>> outputHolders) {
 			for (InputHolder<?> inputHolder : inputHolders) {
diff --git a/src/main/java/teetime/stage/io/EveryXthPrinter.java b/src/main/java/teetime/stage/io/EveryXthPrinter.java
index 3b57c7dfb4458e9499680bfc41170a72b0fdffc8..2641bb720aa8acb3abfb94409c00b991924183b3 100644
--- a/src/main/java/teetime/stage/io/EveryXthPrinter.java
+++ b/src/main/java/teetime/stage/io/EveryXthPrinter.java
@@ -19,7 +19,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import teetime.framework.AbstractCompositeStage;
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
 import teetime.framework.Stage;
@@ -32,7 +32,7 @@ public final class EveryXthPrinter<T> extends AbstractCompositeStage {
 	private final Distributor<T> distributor;
 	private final List<Stage> lastStages = new ArrayList<Stage>();
 
-	public EveryXthPrinter(final int threshold, final AnalysisConfiguration context) {
+	public EveryXthPrinter(final int threshold, final AnalysisContext context) {
 		super(context);
 		distributor = new Distributor<T>(new CopyByReferenceStrategy());
 		EveryXthStage<T> everyXthStage = new EveryXthStage<T>(threshold);
@@ -52,7 +52,6 @@ public final class EveryXthPrinter<T> extends AbstractCompositeStage {
 		return distributor.getNewOutputPort();
 	}
 
-	@Override
 	public Stage getFirstStage() {
 		return distributor;
 	}
diff --git a/src/main/java/teetime/stage/string/WordCounter.java b/src/main/java/teetime/stage/string/WordCounter.java
index fad4c1102ae43080f136f70d8ff6b879627ecc36..4ca80c651fcdd48d829b786b64483fcd7d35630a 100644
--- a/src/main/java/teetime/stage/string/WordCounter.java
+++ b/src/main/java/teetime/stage/string/WordCounter.java
@@ -18,7 +18,7 @@ package teetime.stage.string;
 import java.util.ArrayList;
 
 import teetime.framework.AbstractCompositeStage;
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
 import teetime.framework.Stage;
@@ -42,7 +42,7 @@ public final class WordCounter extends AbstractCompositeStage {
 	private final ArrayList<Stage> lastStages = new ArrayList<Stage>();
 
 	// The connection of the different stages is realized within the construction of a instance of this class.
-	public WordCounter(final AnalysisConfiguration context) {
+	public WordCounter(final AnalysisContext context) {
 		super(context);
 		this.lastStages.add(this.mapCounter);
 		final ToLowerCase toLowerCase = new ToLowerCase();
@@ -52,7 +52,6 @@ public final class WordCounter extends AbstractCompositeStage {
 		// connectStages(wordcharacterFilter.getOutputPort(), this.mapCounter.getInputPort());
 	}
 
-	@Override
 	public Stage getFirstStage() {
 		return this.tokenizer;
 	}
diff --git a/src/test/java/teetime/examples/cipher/CipherConfiguration.java b/src/test/java/teetime/examples/cipher/CipherConfiguration.java
index 95ba33f4357662d7014573bfe67f6f5d810582f7..11861a8773c40d171bb2f435f589db9c658bbbe7 100644
--- a/src/test/java/teetime/examples/cipher/CipherConfiguration.java
+++ b/src/test/java/teetime/examples/cipher/CipherConfiguration.java
@@ -17,7 +17,7 @@ package teetime.examples.cipher;
 
 import java.io.File;
 
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 import teetime.stage.CipherStage;
 import teetime.stage.CipherStage.CipherMode;
 import teetime.stage.InitialElementProducer;
@@ -26,7 +26,7 @@ import teetime.stage.ZipByteArray.ZipMode;
 import teetime.stage.io.ByteArrayFileWriter;
 import teetime.stage.io.File2ByteArray;
 
-public class CipherConfiguration extends AnalysisConfiguration {
+public class CipherConfiguration extends AnalysisContext {
 
 	public CipherConfiguration(final String inputFile, final String outputFile, final String password) {
 		final File input = new File(inputFile);
diff --git a/src/test/java/teetime/examples/cipher/CipherTest.java b/src/test/java/teetime/examples/cipher/CipherTest.java
index ac03de784a47b3a892d4ecdf9724898965a0ff1f..38a8d1f6eaa7dde34ca5fded33c05026f713584d 100644
--- a/src/test/java/teetime/examples/cipher/CipherTest.java
+++ b/src/test/java/teetime/examples/cipher/CipherTest.java
@@ -22,7 +22,7 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import teetime.framework.Analysis;
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 
 import com.google.common.io.Files;
 
@@ -43,7 +43,7 @@ public class CipherTest {
 		final String outputFile = "src/test/resources/data/output.txt";
 		final String password = "Password";
 
-		final AnalysisConfiguration configuration = new CipherConfiguration(inputFile, outputFile, password);
+		final AnalysisContext configuration = new CipherConfiguration(inputFile, outputFile, password);
 		final Analysis analysis = new Analysis(configuration);
 		analysis.executeBlocking();
 
diff --git a/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java b/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java
index 15c325dad0a5cca3f7df333d092a8444ec16af55..90dea5d20d358f20bae59ca72d0b7b88d8af6460 100644
--- a/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java
+++ b/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java
@@ -17,7 +17,7 @@ package teetime.examples.tokenizer;
 
 import java.io.File;
 
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 import teetime.stage.ByteArray2String;
 import teetime.stage.CipherStage;
 import teetime.stage.CipherStage.CipherMode;
@@ -28,7 +28,7 @@ import teetime.stage.ZipByteArray.ZipMode;
 import teetime.stage.io.File2ByteArray;
 import teetime.stage.string.Tokenizer;
 
-public class TokenizerConfiguration extends AnalysisConfiguration {
+public class TokenizerConfiguration extends AnalysisContext {
 
 	private final Counter<String> counter;
 
diff --git a/src/test/java/teetime/framework/AnalysisTest.java b/src/test/java/teetime/framework/AnalysisTest.java
index 5c347dfe763eaa8627db1930e973dcf26eac1594..fd15835d21f2516b9921ad421abd9b36ba8097af 100644
--- a/src/test/java/teetime/framework/AnalysisTest.java
+++ b/src/test/java/teetime/framework/AnalysisTest.java
@@ -70,7 +70,7 @@ public class AnalysisTest {
 		assertThat(watch.getDurationInMs() + ABSOLUTE_MAX_ERROR_IN_MS, is(greaterThanOrEqualTo(DELAY_IN_MS)));
 	}
 
-	private static class TestConfig extends AnalysisConfiguration {
+	private static class TestConfig extends AnalysisContext {
 		public final DelayAndTerminate delay;
 
 		public TestConfig() {
@@ -112,7 +112,7 @@ public class AnalysisTest {
 		assertThat(intraAnalysis.getConfiguration().init.getOwningThread(), is(intraAnalysis.getConfiguration().sink.getOwningThread()));
 	}
 
-	private class AnalysisTestConfig extends AnalysisConfiguration {
+	private class AnalysisTestConfig extends AnalysisContext {
 		public InitialElementProducer<Object> init = new InitialElementProducer<Object>();
 		public Sink<Object> sink = new Sink<Object>();
 
@@ -136,7 +136,7 @@ public class AnalysisTest {
 		new Analysis<InvalidTestConfig>(configuration);
 	}
 
-	private class InvalidTestConfig extends AnalysisConfiguration {
+	private class InvalidTestConfig extends AnalysisContext {
 		public InitialElementProducer<Object> init = new InitialElementProducer<Object>();
 		public InstanceOfFilter<Object, Object> iof = new InstanceOfFilter<Object, Object>(Object.class);
 		public Sink<Object> sink = new Sink<Object>();
diff --git a/src/test/java/teetime/framework/RunnableConsumerStageTestConfiguration.java b/src/test/java/teetime/framework/RunnableConsumerStageTestConfiguration.java
index 74d0cd73531a604c7170771fb699788ae80cbde0..89be476145b6b43fd9c49b5bec199c5337b79f63 100644
--- a/src/test/java/teetime/framework/RunnableConsumerStageTestConfiguration.java
+++ b/src/test/java/teetime/framework/RunnableConsumerStageTestConfiguration.java
@@ -21,7 +21,7 @@ import java.util.List;
 import teetime.stage.CollectorSink;
 import teetime.stage.InitialElementProducer;
 
-public class RunnableConsumerStageTestConfiguration extends AnalysisConfiguration {
+public class RunnableConsumerStageTestConfiguration extends AnalysisContext {
 
 	private final List<Integer> collectedElements = new ArrayList<Integer>();
 	private final CollectorSink<Integer> collectorSink;
diff --git a/src/test/java/teetime/framework/StageTest.java b/src/test/java/teetime/framework/StageTest.java
index 19580dcb72e9573163c2c40755d4f18a45b60e4c..5531fb48a0b822a7c883c1584e58f462e5321082 100644
--- a/src/test/java/teetime/framework/StageTest.java
+++ b/src/test/java/teetime/framework/StageTest.java
@@ -53,7 +53,7 @@ public class StageTest {
 		assertEquals(tc.init.exceptionHandler, tc.delay.exceptionHandler);
 	}
 
-	private static class TestConfig extends AnalysisConfiguration {
+	private static class TestConfig extends AnalysisContext {
 		public final DelayAndTerminate delay;
 		public InitialElementProducer<String> init;
 
diff --git a/src/test/java/teetime/framework/TraversorTest.java b/src/test/java/teetime/framework/TraversorTest.java
index 6c092ac9da4c36429fad8c7bb1dd3241646ce9db..7244e13a7b52b215272d20e657540b3447b00d89 100644
--- a/src/test/java/teetime/framework/TraversorTest.java
+++ b/src/test/java/teetime/framework/TraversorTest.java
@@ -53,7 +53,7 @@ public class TraversorTest {
 	}
 
 	// WordCounterConfiguration
-	private class TestConfiguration extends AnalysisConfiguration {
+	private class TestConfiguration extends AnalysisContext {
 
 		public final CountingMapMerger<String> result = new CountingMapMerger<String>();
 		public final InitialElementProducer<File> init;
diff --git a/src/test/java/teetime/framework/WaitStrategyConfiguration.java b/src/test/java/teetime/framework/WaitStrategyConfiguration.java
index 191f8460e6f68a04007a05f7cc29338e3c2789f2..2e7cb2ffeabcbdf523e19d0959c1af73dedab0ae 100644
--- a/src/test/java/teetime/framework/WaitStrategyConfiguration.java
+++ b/src/test/java/teetime/framework/WaitStrategyConfiguration.java
@@ -21,7 +21,7 @@ import teetime.stage.InitialElementProducer;
 import teetime.stage.Relay;
 import teetime.stage.basic.Delay;
 
-class WaitStrategyConfiguration extends AnalysisConfiguration {
+class WaitStrategyConfiguration extends AnalysisContext {
 
 	private Delay<Object> delay;
 	private CollectorSink<Object> collectorSink;
diff --git a/src/test/java/teetime/framework/YieldStrategyConfiguration.java b/src/test/java/teetime/framework/YieldStrategyConfiguration.java
index a63025947a38b2db8f3e12e3bad6c1637d52fa8a..41edee019cf1f79ebaa874f24ca204843fc12eba 100644
--- a/src/test/java/teetime/framework/YieldStrategyConfiguration.java
+++ b/src/test/java/teetime/framework/YieldStrategyConfiguration.java
@@ -19,7 +19,7 @@ import teetime.stage.CollectorSink;
 import teetime.stage.InitialElementProducer;
 import teetime.stage.Relay;
 
-class YieldStrategyConfiguration extends AnalysisConfiguration {
+class YieldStrategyConfiguration extends AnalysisContext {
 
 	private CollectorSink<Object> collectorSink;
 
diff --git a/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java b/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java
index d985faf23a7c09a0eb2ee3e1727c289047a3f209..8dd38b07baaff6cb6f7192bf3ccaf11ca6b51b66 100644
--- a/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java
+++ b/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java
@@ -15,9 +15,9 @@
  */
 package teetime.framework.exceptionHandling;
 
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 
-public class ExceptionTestConfiguration extends AnalysisConfiguration {
+public class ExceptionTestConfiguration extends AnalysisContext {
 
 	ExceptionTestProducerStage first;
 	ExceptionTestConsumerStage second;
diff --git a/src/test/java/teetime/stage/InstanceOfFilterTest.java b/src/test/java/teetime/stage/InstanceOfFilterTest.java
index b87d2ec385f2918c6e364531a649fe37c5ac3427..d33822476103b154f16860ee7a45162f3fad84e3 100644
--- a/src/test/java/teetime/stage/InstanceOfFilterTest.java
+++ b/src/test/java/teetime/stage/InstanceOfFilterTest.java
@@ -30,7 +30,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import teetime.framework.Analysis;
-import teetime.framework.AnalysisConfiguration;
+import teetime.framework.AnalysisContext;
 import teetime.framework.AnalysisException;
 import teetime.util.Pair;
 
@@ -122,7 +122,7 @@ public class InstanceOfFilterTest {
 		}
 	}
 
-	private static class InstanceOfFilterTestConfig extends AnalysisConfiguration {
+	private static class InstanceOfFilterTestConfig extends AnalysisContext {
 
 		public InstanceOfFilterTestConfig() {
 			InitialElementProducer<Object> elementProducer = new InitialElementProducer<Object>();