diff --git a/src/main/java/teetime/framework/test/StageTester.java b/src/main/java/teetime/framework/test/StageTester.java
index d9f978537c3deab582fc162e629e04971c3510ac..4ece770476f6db94c3b217c611445600b1d4ddc4 100644
--- a/src/main/java/teetime/framework/test/StageTester.java
+++ b/src/main/java/teetime/framework/test/StageTester.java
@@ -25,7 +25,7 @@ import teetime.framework.AnalysisException;
 import teetime.framework.Stage;
 import teetime.framework.StageState;
 import teetime.stage.CollectorSink;
-import teetime.stage.IterableProducer;
+import teetime.stage.InitialElementProducer;
 
 /**
  * This class can be used to test single stages in JUnit test cases.
@@ -87,7 +87,7 @@ public final class StageTester {
 
 		public Configuration(final List<InputHolder<?>> inputHolders, final Stage stage, final List<OutputHolder<?>> outputHolders) {
 			for (InputHolder<?> inputHolder : inputHolders) {
-				final IterableProducer<Object> producer = new IterableProducer<Object>(inputHolder.getInput());
+				final InitialElementProducer<Object> producer = new InitialElementProducer<Object>(inputHolder.getInput());
 				connectBoundedInterThreads(producer.getOutputPort(), inputHolder.getPort());
 				addThreadableStage(producer);
 			}
diff --git a/src/main/java/teetime/stage/InitialElementProducer.java b/src/main/java/teetime/stage/InitialElementProducer.java
index 01535b6704233f7de273bf6685a5d173a25f9f68..bd8fdb43d11abe28872a30f3f1f987f3d25357aa 100644
--- a/src/main/java/teetime/stage/InitialElementProducer.java
+++ b/src/main/java/teetime/stage/InitialElementProducer.java
@@ -15,34 +15,60 @@
  */
 package teetime.stage;
 
+import java.util.Arrays;
+import java.util.List;
+
 import teetime.framework.AbstractProducerStage;
 
 public final class InitialElementProducer<T> extends AbstractProducerStage<T> {
 
-	private T[] elements;
+	private Iterable<T> iter;
 
 	public InitialElementProducer(final T... elements) {
-		this.elements = elements;
+		this.iter = Arrays.asList(elements);
+	}
+
+	public <O extends Iterable<T>> InitialElementProducer(final O iter) {
+		this.iter = iter;
 	}
 
 	@Override
 	protected void execute() {
-		for (T e : this.elements) {
-			outputPort.send(e);
+		for (final T i : this.iter) {
+			this.outputPort.send(i);
 		}
 		this.terminate();
 	}
 
-	public void setIter(final T[] elements) {
-		this.elements = elements;
+	public void setIter(final Iterable<T> iter) {
+		this.iter = iter;
+	}
+
+	public void setIter(final T... elements) {
+		this.iter = Arrays.asList(elements);
 	}
 
 	@Override
 	public void onStarting() throws Exception {
-		if (elements == null) {
-			throw new IllegalArgumentException("elements must not be null");
+		if (iter == null) {
+			throw new IllegalArgumentException("iter must not be null");
 		}
 		super.onStarting();
 	}
 
+	public static void main(final String[] args) {
+		// int[] array = new int[] { 0, 0, 0 };
+		// new IterableProducer<Integer>(array);
+		//
+		// new InitialElementProducer<Integer>(array);
+
+		Integer[] array = new Integer[] { 0, 0, 0 };
+		new InitialElementProducer<Integer>(array);
+
+		new InitialElementProducer<Integer>(0, 0, 0);
+
+		List<Integer> iterable = Arrays.asList(0, 0, 0);
+		new InitialElementProducer<Integer>(iterable);
+	}
+
 }
diff --git a/src/main/java/teetime/stage/IterableProducer.java b/src/main/java/teetime/stage/IterableProducer.java
deleted file mode 100644
index 3a31136bb129843eaaba5965b71d3c2073102396..0000000000000000000000000000000000000000
--- a/src/main/java/teetime/stage/IterableProducer.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *         http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package teetime.stage;
-
-import java.util.Arrays;
-import java.util.List;
-
-import teetime.framework.AbstractProducerStage;
-
-public final class IterableProducer<T> extends AbstractProducerStage<T> {
-
-	private Iterable<T> iter;
-
-	public IterableProducer(final T... elements) {
-		this.iter = Arrays.asList(elements);
-	}
-
-	public <O extends Iterable<T>> IterableProducer(final O iter) {
-		this.iter = iter;
-	}
-
-	@Override
-	protected void execute() {
-		for (final T i : this.iter) {
-			this.outputPort.send(i);
-		}
-		this.terminate();
-	}
-
-	public void setIter(final Iterable<T> iter) {
-		this.iter = iter;
-	}
-
-	@Override
-	public void onStarting() throws Exception {
-		if (iter == null) {
-			throw new IllegalArgumentException("iter must not be null");
-		}
-		super.onStarting();
-	}
-
-	public static void main(final String[] args) {
-		// int[] array = new int[] { 0, 0, 0 };
-		// new IterableProducer<Integer>(array);
-		//
-		// new InitialElementProducer<Integer>(array);
-
-		Integer[] array = new Integer[] { 0, 0, 0 };
-		new IterableProducer<Integer>(array);
-
-		new IterableProducer<Integer>(0, 0, 0);
-
-		List<Integer> iterable = Arrays.asList(0, 0, 0);
-		new IterableProducer<Integer>(iterable);
-	}
-
-}