diff --git a/src/test/java/teetime/framework/AnalysisTest.java b/src/test/java/teetime/framework/AnalysisTest.java
index 0ebf719eda3f5148e746d5a2e514a14dea1da04b..4c64c25f10dc077361542cca79fbd14650b3f0b2 100644
--- a/src/test/java/teetime/framework/AnalysisTest.java
+++ b/src/test/java/teetime/framework/AnalysisTest.java
@@ -18,6 +18,7 @@ package teetime.framework;
 import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.lessThan;
+import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
@@ -26,6 +27,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import teetime.stage.InitialElementProducer;
+import teetime.stage.basic.Sink;
 import teetime.util.StopWatch;
 
 public class AnalysisTest {
@@ -98,4 +100,25 @@ public class AnalysisTest {
 
 	}
 
+	@Test
+	public void testInstantiatePipes() throws Exception {
+		Analysis<AnalysisTestConfig> interAnalysis = new Analysis<AnalysisTestConfig>(new AnalysisTestConfig(true));
+		assertThat(interAnalysis.getConfiguration().init.getOwningThread(), is(not(interAnalysis.getConfiguration().sink.getOwningThread())));
+
+		Analysis<AnalysisTestConfig> intraAnalysis = new Analysis<AnalysisTestConfig>(new AnalysisTestConfig(false));
+		assertThat(intraAnalysis.getConfiguration().init.getOwningThread(), is(intraAnalysis.getConfiguration().sink.getOwningThread()));
+	}
+
+	private class AnalysisTestConfig extends AnalysisConfiguration {
+		public InitialElementProducer<Object> init = new InitialElementProducer<Object>();
+		public Sink<Object> sink = new Sink<Object>();
+
+		public AnalysisTestConfig(final boolean inter) {
+			connectStages(init.getOutputPort(), sink.getInputPort());
+			addThreadableStage(init);
+			if (inter) {
+				addThreadableStage(sink);
+			}
+		}
+	}
 }