diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index 35674e8a3f976c3bacd4e0b0ef941301f2a3336e..4812ea1f950b08b4c3f8a230cf12e6da71c8a870 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -109,7 +109,7 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught
 
 	// BETTER validate concurrently
 	private void validateStages() {
-		final List<Stage> threadableStageJobs = this.configuration.getThreadableStageJobs();
+		final Set<Stage> threadableStageJobs = this.configuration.getThreadableStageJobs();
 		for (Stage stage : threadableStageJobs) {
 			// // portConnectionValidator.validate(stage);
 			// }
@@ -134,7 +134,7 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught
 
 		instantiatePipes();
 
-		final List<Stage> threadableStageJobs = this.configuration.getThreadableStageJobs();
+		final Set<Stage> threadableStageJobs = this.configuration.getThreadableStageJobs();
 		if (threadableStageJobs.isEmpty()) {
 			throw new IllegalStateException("No stage was added using the addThreadableStage(..) method. Add at least one stage.");
 		}
@@ -177,7 +177,7 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught
 	}
 
 	private void instantiatePipes() {
-		List<Stage> threadableStageJobs = configuration.getThreadableStageJobs();
+		Set<Stage> threadableStageJobs = configuration.getThreadableStageJobs();
 		for (Connection connection : configuration.getConnections()) {
 			if (threadableStageJobs.contains(connection.getTargetPort().getOwningStage())) {
 				if (connection.getCapacity() != 0) {
diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java
index c32f2a29a9aa449532a8f0b64bc5ffec28fa83cc..99dd093aab37a289ce7305438293296c8f609c3f 100644
--- a/src/main/java/teetime/framework/AnalysisConfiguration.java
+++ b/src/main/java/teetime/framework/AnalysisConfiguration.java
@@ -15,8 +15,8 @@
  */
 package teetime.framework;
 
-import java.util.LinkedList;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
 
 import teetime.framework.pipe.IPipe;
 import teetime.framework.pipe.IPipeFactory;
@@ -31,8 +31,8 @@ import teetime.util.Connection;
  */
 public abstract class AnalysisConfiguration {
 
-	private final List<Stage> threadableStageJobs = new LinkedList<Stage>();
-	private final List<Connection<?>> connections = new LinkedList<Connection<?>>();
+	private final Set<Stage> threadableStageJobs = new HashSet<Stage>();
+	private final Set<Connection<?>> connections = new HashSet<Connection<?>>();
 
 	@SuppressWarnings("deprecation")
 	private static final PipeFactoryRegistry PIPE_FACTORY_REGISTRY = PipeFactoryRegistry.INSTANCE;
@@ -50,7 +50,7 @@ public abstract class AnalysisConfiguration {
 	 */
 	private final static IPipeFactory interUnboundedThreadFactory = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTER, PipeOrdering.QUEUE_BASED, true);
 
-	List<Stage> getThreadableStageJobs() {
+	Set<Stage> getThreadableStageJobs() {
 		return this.threadableStageJobs;
 	}
 
@@ -180,7 +180,7 @@ public abstract class AnalysisConfiguration {
 	 *
 	 * @return a list of pairs of Out- and InputPorts, which are connected
 	 */
-	protected List<Connection<?>> getConnections() {
+	protected Set<Connection<?>> getConnections() {
 		return connections;
 	}