diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java
index 67eb52d9b2961cebaf1c9b866552230beee879cf..434410124a93abf1535b1f12f560a08acdf3fd1e 100644
--- a/src/main/java/teetime/framework/AnalysisConfiguration.java
+++ b/src/main/java/teetime/framework/AnalysisConfiguration.java
@@ -1,7 +1,9 @@
 package teetime.framework;
 
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
 import teetime.framework.pipe.PipeFactoryRegistry;
 
@@ -11,19 +13,19 @@ public class AnalysisConfiguration {
 
 	private final List<Runnable> threadableStageJobs = new LinkedList<Runnable>();
 
-	private final List<Stage> consumerStages = new LinkedList<Stage>();
-	private final List<Stage> finiteProducerStages = new LinkedList<Stage>();
-	private final List<Stage> infiniteProducerStages = new LinkedList<Stage>();
+	private final Set<Stage> consumerStages = new HashSet<Stage>();
+	private final Set<Stage> finiteProducerStages = new HashSet<Stage>();
+	private final Set<Stage> infiniteProducerStages = new HashSet<Stage>();
 
-	public List<Stage> getConsumerStages() {
+	public Set<Stage> getConsumerStages() {
 		return this.consumerStages;
 	}
 
-	public List<Stage> getFiniteProducerStages() {
+	public Set<Stage> getFiniteProducerStages() {
 		return this.finiteProducerStages;
 	}
 
-	public List<Stage> getInfiniteProducerStages() {
+	public Set<Stage> getInfiniteProducerStages() {
 		return this.infiniteProducerStages;
 	}
 
diff --git a/src/main/java/teetime/stage/Clock.java b/src/main/java/teetime/stage/Clock.java
index e9439886d9c0ac1d5df7d225d43ec46cb49d753f..5cf5375016107c23123f056c047c0517d1b24b97 100644
--- a/src/main/java/teetime/stage/Clock.java
+++ b/src/main/java/teetime/stage/Clock.java
@@ -1,6 +1,7 @@
 package teetime.stage;
 
 import teetime.framework.ProducerStage;
+import teetime.framework.TerminationStrategy;
 
 public class Clock extends ProducerStage<Long> {
 
@@ -9,6 +10,11 @@ public class Clock extends ProducerStage<Long> {
 	private long initialDelayInMs;
 	private long intervalDelayInMs;
 
+	@Override
+	public TerminationStrategy getTerminationStrategy() {
+		return TerminationStrategy.BY_INTERRUPT;
+	}
+
 	@Override
 	protected void execute() {
 		if (!this.initialDelayExceeded) {