diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6ed7a57dd69949696e17dd850c36b61a52c536c3..5f4f395322c11f1d0ac2e3ef8a24a60d30254dad 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -21,8 +21,7 @@
 			</action>
 			<action dev="ntd" type="add" issue="171">
 				Configurations are now
-				built within the Configuration class which is passed on to nested
-				CompositeStages.
+				built within the Configuration class.
 				This removes any constraints on CompositeStages and
 				enables therefore multiple connections and multithreading.
 			</action>
diff --git a/src/main/java/teetime/framework/Stage.java b/src/main/java/teetime/framework/Stage.java
index 7b9398ca6c254c464f4c28c77e80c55d9325f86a..4625f610869d10e0240778e26ddba87c39ec5151 100644
--- a/src/main/java/teetime/framework/Stage.java
+++ b/src/main/java/teetime/framework/Stage.java
@@ -48,7 +48,7 @@ public abstract class Stage {
 	/** The owning thread of this stage if this stage is directly executed by a {@link AbstractRunnableStage}, <code>null</code> otherwise. */
 	protected Thread owningThread;
 
-	protected ConfigurationContext owningContext = EmptyContext.getInstance();
+	public ConfigurationContext owningContext = EmptyContext.getInstance();
 
 	protected Stage() {
 		this.id = this.createId();
diff --git a/src/test/java/teetime/framework/AbstractCompositeStageTest.java b/src/test/java/teetime/framework/AbstractCompositeStageTest.java
index 3ca971fb3f31ea250e8ebcc718693f526e8df1f5..2d8848e254988267fb20e473af0655f793d2895a 100644
--- a/src/test/java/teetime/framework/AbstractCompositeStageTest.java
+++ b/src/test/java/teetime/framework/AbstractCompositeStageTest.java
@@ -15,7 +15,62 @@
  */
 package teetime.framework;
 
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+import teetime.stage.Counter;
+import teetime.stage.InitialElementProducer;
+import teetime.stage.basic.Sink;
 
 public class AbstractCompositeStageTest {
 
+	@Test
+	public void testNestedStages() {
+		Execution<NestesConfig> exec = new Execution<NestesConfig>(new NestesConfig());
+		assertThat(exec.getConfiguration().getContext().getThreadableStages().size(), is(3));
+	}
+
+	private class NestesConfig extends Configuration {
+
+		private final InitialElementProducer<Object> init;
+		private final Sink sink;
+		private final TestNestingCompositeStage compositeStage;
+
+		public NestesConfig() {
+			init = new InitialElementProducer<Object>(new Object());
+			sink = new Sink();
+			compositeStage = new TestNestingCompositeStage();
+			connectPorts(init.getOutputPort(), compositeStage.firstCompositeStage.firstCounter.getInputPort());
+			connectPorts(compositeStage.secondCompositeStage.secondCounter.getOutputPort(), sink.getInputPort());
+
+		}
+	}
+
+	private class TestCompositeStage extends AbstractCompositeStage {
+
+		private final Counter firstCounter = new Counter();
+		private final Counter secondCounter = new Counter();
+
+		public TestCompositeStage() {
+			addThreadableStage(firstCounter);
+			connectPorts(firstCounter.getOutputPort(), secondCounter.getInputPort());
+		}
+
+	}
+
+	private class TestNestingCompositeStage extends AbstractCompositeStage {
+
+		public TestCompositeStage firstCompositeStage;
+		public TestCompositeStage secondCompositeStage;
+
+		public TestNestingCompositeStage() {
+			firstCompositeStage = new TestCompositeStage();
+			secondCompositeStage = new TestCompositeStage();
+			connectPorts(firstCompositeStage.secondCounter.getOutputPort(), secondCompositeStage.firstCounter.getInputPort());
+		}
+
+	}
+
 }