diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index 6dc3e14cabc13e4623aac2e9c1f21fecf27b7cc6..ed595de60d4a551a37086133e79a61a103be5591 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -43,6 +43,8 @@ import teetime.util.Pair;
  * To start the analysis {@link #executeBlocking()} needs to be executed.
  * This class will automatically create threads and join them without any further commitment.
  *
+ * @author Christian Wulf, Nelson Tavares de Sousa
+ *
  * @param <T>
  *            the type of the {@link AnalysisConfiguration}
  */
diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java
index bcf85239d542a27b232a4fe9879bfcf59e61c7e8..f9b9e4ef17824c93de73606c796faa31b599e18d 100644
--- a/src/main/java/teetime/framework/AnalysisConfiguration.java
+++ b/src/main/java/teetime/framework/AnalysisConfiguration.java
@@ -61,7 +61,11 @@ public abstract class AnalysisConfiguration {
 	 *            A arbitrary stage, which will be added to the configuration and executed in a thread.
 	 */
 	protected void addThreadableStage(final Stage stage) {
-		this.threadableStageJobs.add(stage);
+		if (stage instanceof AbstractCompositeStage) {
+			this.threadableStageJobs.add(((AbstractCompositeStage) stage).getFirstStage());
+		} else {
+			this.threadableStageJobs.add(stage);
+		}
 	}
 
 	/**
diff --git a/src/test/java/teetime/framework/TraversorTest.java b/src/test/java/teetime/framework/TraversorTest.java
index eaf4be71872531692654ccd7a4295b6232a823c5..f447dc204c2e3551b9d08ac44d482d0d6d9c7bd2 100644
--- a/src/test/java/teetime/framework/TraversorTest.java
+++ b/src/test/java/teetime/framework/TraversorTest.java
@@ -15,7 +15,10 @@
  */
 package teetime.framework;
 
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
 
 import java.io.File;
 import java.util.HashSet;
@@ -39,12 +42,14 @@ public class TraversorTest {
 	@Test
 	public void traverse() {
 		TestConfiguration tc = new TestConfiguration();
+		new Analysis<TestConfiguration>(tc);
 		traversor.traverse(tc.init);
 		Set<Stage> comparingStages = new HashSet<Stage>();
 		comparingStages.add(tc.init);
 		comparingStages.add(tc.f2b);
 		comparingStages.add(tc.distributor);
-		assertTrue(comparingStages.equals(traversor.getVisitedStage()));
+		assertThat(tc.distributor.getOwningThread(), is(not(tc.distributor.getOutputPorts()[0].pipe.getTargetPort().getOwningStage().getOwningThread())));
+		assertEquals(comparingStages, traversor.getVisitedStage());
 	}
 
 	// WordCounterConfiguration