diff --git a/src/main/java/teetime/framework/A3PipeInstantiation.java b/src/main/java/teetime/framework/A3PipeInstantiation.java
index c1103fda09ead8ddd1c65f5b35324081ba7a6654..31a694d9ad6c7c4bd1e8e713c5e426602c72ea11 100644
--- a/src/main/java/teetime/framework/A3PipeInstantiation.java
+++ b/src/main/java/teetime/framework/A3PipeInstantiation.java
@@ -35,7 +35,8 @@ import teetime.framework.pipe.UnboundedSpScPipeFactory;
  */
 class A3PipeInstantiation implements ITraverserVisitor {
 
-	private static final Logger LOGGER = LoggerFactory.getLogger(Execution.class);
+	private static final Logger LOGGER = LoggerFactory.getLogger(A3PipeInstantiation.class);
+
 	private static final IPipeFactory interBoundedThreadPipeFactory = new SpScPipeFactory();
 	private static final IPipeFactory interUnboundedThreadPipeFactory = new UnboundedSpScPipeFactory();
 	private static final IPipeFactory intraThreadPipeFactory = new SingleElementPipeFactory();
@@ -72,12 +73,21 @@ class A3PipeInstantiation implements ITraverserVisitor {
 			// inter
 			if (pipe.capacity() != 0) {
 				interBoundedThreadPipeFactory.create(pipe.getSourcePort(), pipe.getTargetPort(), pipe.capacity());
+				if (LOGGER.isDebugEnabled()) {
+					LOGGER.debug("Connected (bounded) " + pipe.getSourcePort() + " and " + pipe.getTargetPort());
+				}
 			} else {
 				interUnboundedThreadPipeFactory.create(pipe.getSourcePort(), pipe.getTargetPort(), 4);
+				if (LOGGER.isDebugEnabled()) {
+					LOGGER.debug("Connected (unbounded) " + pipe.getSourcePort() + " and " + pipe.getTargetPort());
+				}
 			}
 		} else {
 			// normal or reflexive pipe => intra
 			intraThreadPipeFactory.create(pipe.getSourcePort(), pipe.getTargetPort(), 4);
+			if (LOGGER.isDebugEnabled()) {
+				LOGGER.debug("Connected (unsynch) " + pipe.getSourcePort() + " and " + pipe.getTargetPort());
+			}
 		}
 
 	}
diff --git a/src/main/java/teetime/framework/AbstractStage.java b/src/main/java/teetime/framework/AbstractStage.java
index 6a6769cae34e0e2bdad803326a9bddcedfefa4dd..6496217823a2f07bbff3fe2f16c83472b803db13 100644
--- a/src/main/java/teetime/framework/AbstractStage.java
+++ b/src/main/java/teetime/framework/AbstractStage.java
@@ -91,7 +91,9 @@ public abstract class AbstractStage extends Stage {
 
 	private void changeState(final StageState newState) {
 		currentState = newState;
-		logger.trace(newState.toString());
+		if (logger.isTraceEnabled()) {
+			logger.trace(newState.toString());
+		}
 	}
 
 	@Override
diff --git a/src/main/java/teetime/framework/InputPort.java b/src/main/java/teetime/framework/InputPort.java
index a11035a31c38955dde678e29dedcc40a28838c05..d4409bb173d5c282510c0886842f70e954867ee2 100644
--- a/src/main/java/teetime/framework/InputPort.java
+++ b/src/main/java/teetime/framework/InputPort.java
@@ -24,7 +24,7 @@ package teetime.framework;
  *
  * @since 1.0
  */
-public class InputPort<T> extends AbstractPort<T> {
+public final class InputPort<T> extends AbstractPort<T> {
 
 	InputPort(final Class<T> type, final Stage owningStage, final String portName) {
 		super(type, owningStage, portName);
diff --git a/src/main/java/teetime/framework/OutputPort.java b/src/main/java/teetime/framework/OutputPort.java
index 7bdb677d051222714f339b8674ea6194cec3fe57..0f2db809a9c3edd66a1c6d07b478247cfce4fe94 100644
--- a/src/main/java/teetime/framework/OutputPort.java
+++ b/src/main/java/teetime/framework/OutputPort.java
@@ -28,7 +28,7 @@ import teetime.framework.signal.TerminatingSignal;
  *
  * @since 1.0
  */
-public class OutputPort<T> extends AbstractPort<T> {
+public final class OutputPort<T> extends AbstractPort<T> {
 
 	OutputPort(final Class<T> type, final Stage owningStage, final String portName) {
 		super(type, owningStage, portName);
diff --git a/src/main/java/teetime/stage/InitialElementProducer.java b/src/main/java/teetime/stage/InitialElementProducer.java
index d29d675ead1e5f47c71db3d2a43faba931dfd455..33a6822e13de4bf6b66941f2e3943d3cf6a42383 100644
--- a/src/main/java/teetime/stage/InitialElementProducer.java
+++ b/src/main/java/teetime/stage/InitialElementProducer.java
@@ -19,24 +19,19 @@ import java.util.Arrays;
 
 import teetime.framework.AbstractProducerStage;
 
-public final class InitialElementProducer<T> extends AbstractProducerStage<T> {
+public class InitialElementProducer<T> extends AbstractProducerStage<T> {
 
-	private Iterable<T> elements;
+	private final Iterable<T> elements;
 
 	public InitialElementProducer(final T... elements) {
-		this.elements = Arrays.asList(elements);
+		this(Arrays.asList(elements));
 	}
 
 	public InitialElementProducer(final Iterable<T> elements) {
-		this.elements = elements;
-	}
-
-	@Override
-	public void onStarting() throws Exception {
 		if (elements == null) {
 			throw new IllegalArgumentException("The given iterable must not be null");
 		}
-		super.onStarting();
+		this.elements = elements;
 	}
 
 	@Override
@@ -47,12 +42,4 @@ public final class InitialElementProducer<T> extends AbstractProducerStage<T> {
 		this.terminate();
 	}
 
-	public void setIter(final T... elements) {
-		this.elements = Arrays.asList(elements);
-	}
-
-	public void setIter(final Iterable<T> elements) {
-		this.elements = elements;
-	}
-
 }
diff --git a/src/test/java/teetime/stage/InitialElementProducerTest.java b/src/test/java/teetime/stage/InitialElementProducerTest.java
index ad9e03b4bff52807ebac4d2419001606af0149ae..9c96b14f42da3c9f46bcb22fdefd59b950e36159 100644
--- a/src/test/java/teetime/stage/InitialElementProducerTest.java
+++ b/src/test/java/teetime/stage/InitialElementProducerTest.java
@@ -31,45 +31,37 @@ import org.junit.Test;
  */
 public class InitialElementProducerTest {
 
-	private InitialElementProducer<Integer> producer;
-
-	// @Before
-	public void initializeProducer() {
-		producer = new InitialElementProducer<Integer>();
-	}
-
 	@Test
 	public void producerShouldByDefaultSendNothing() {
-		initializeProducer();
+		InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>();
 		List<Integer> results = new ArrayList<Integer>();
 
 		test(producer).and().receive(results).from(producer.getOutputPort()).start();
 		assertThat(results, is(empty()));
 	}
 
-	@Test
-	public void testSetIterArray() {
-		initializeProducer();
-		producer.setIter(new Integer[] { 1, 2, 3 });
-		List<Integer> results = new ArrayList<Integer>();
-
-		test(producer).and().receive(results).from(producer.getOutputPort()).start();
-		assertThat(results, contains(1, 2, 3));
-	}
-
-	@Test
-	public void testSetIterVarargs() {
-		initializeProducer();
-		producer.setIter(1, 2, 3);
-		List<Integer> results = new ArrayList<Integer>();
-
-		test(producer).and().receive(results).from(producer.getOutputPort()).start();
-		assertThat(results, contains(1, 2, 3));
-	}
+	// @Test
+	// public void testSetIterArray() {
+	// InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>(new Integer[] { 1, 2, 3 });
+	//
+	// List<Integer> results = new ArrayList<Integer>();
+	//
+	// test(producer).and().receive(results).from(producer.getOutputPort()).start();
+	// assertThat(results, contains(1, 2, 3));
+	// }
+	//
+	// @Test
+	// public void testSetIterVarargs() {
+	// InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>(1, 2, 3);
+	// List<Integer> results = new ArrayList<Integer>();
+	//
+	// test(producer).and().receive(results).from(producer.getOutputPort()).start();
+	// assertThat(results, contains(1, 2, 3));
+	// }
 
 	@Test
 	public void instantiateWithArray() {
-		producer = new InitialElementProducer<Integer>(new Integer[] { 1, 2, 3 });
+		InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>(new Integer[] { 1, 2, 3 });
 		List<Integer> results = new ArrayList<Integer>();
 
 		test(producer).and().receive(results).from(producer.getOutputPort()).start();
@@ -78,7 +70,7 @@ public class InitialElementProducerTest {
 
 	@Test
 	public void instantiateWithVarargs() {
-		producer = new InitialElementProducer<Integer>(1, 2, 3);
+		InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>(1, 2, 3);
 		List<Integer> results = new ArrayList<Integer>();
 
 		test(producer).and().receive(results).from(producer.getOutputPort()).start();
@@ -91,7 +83,7 @@ public class InitialElementProducerTest {
 		testIntegers.add(1);
 		testIntegers.add(2);
 		testIntegers.add(3);
-		producer = new InitialElementProducer<Integer>(testIntegers);
+		InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>(testIntegers);
 		List<Integer> results = new ArrayList<Integer>();
 
 		test(producer).and().receive(results).from(producer.getOutputPort()).start();