diff --git a/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis5Test.java b/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis5Test.java
new file mode 100644
index 0000000000000000000000000000000000000000..5288049d141bb33dd95bb9da9575a713bb2b0cbb
--- /dev/null
+++ b/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis5Test.java
@@ -0,0 +1,77 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.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.examples.throughput;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import teetime.examples.throughput.methodcall.MethodCallThroughputAnalysis5;
+import teetime.util.StatisticsUtil;
+import teetime.util.StopWatch;
+
+import kieker.common.logging.LogFactory;
+
+/**
+ * @author Christian Wulf
+ * 
+ * @since 1.10
+ */
+public class MethodCallThoughputTimestampAnalysis5Test {
+
+	private static final int NUM_OBJECTS_TO_CREATE = 100000;
+	private static final int NUM_NOOP_FILTERS = 800;
+
+	@Before
+	public void before() {
+		System.setProperty(LogFactory.CUSTOM_LOGGER_JVM, "NONE");
+	}
+
+	// 500 times faster than our new framework
+	// TODO check why
+
+	@Test
+	public void testWithManyObjects() {
+		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
+				+ NUM_NOOP_FILTERS + "...");
+		final StopWatch stopWatch = new StopWatch();
+		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
+
+		final MethodCallThroughputAnalysis5 analysis = new MethodCallThroughputAnalysis5();
+		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
+		analysis.setTimestampObjects(timestampObjects);
+		analysis.setInput(NUM_OBJECTS_TO_CREATE, new Callable<TimestampObject>() {
+			@Override
+			public TimestampObject call() throws Exception {
+				return new TimestampObject();
+			}
+		});
+		analysis.init();
+
+		stopWatch.start();
+		try {
+			analysis.start();
+		} finally {
+			stopWatch.end();
+		}
+
+		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
+	}
+
+}
diff --git a/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis6Test.java b/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis6Test.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a7923f3ba9d37fbdad423f7a5d2febc494ee207
--- /dev/null
+++ b/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis6Test.java
@@ -0,0 +1,77 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.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.examples.throughput;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import teetime.examples.throughput.methodcall.MethodCallThroughputAnalysis6;
+import teetime.util.StatisticsUtil;
+import teetime.util.StopWatch;
+
+import kieker.common.logging.LogFactory;
+
+/**
+ * @author Christian Wulf
+ * 
+ * @since 1.10
+ */
+public class MethodCallThoughputTimestampAnalysis6Test {
+
+	private static final int NUM_OBJECTS_TO_CREATE = 100000;
+	private static final int NUM_NOOP_FILTERS = 800;
+
+	@Before
+	public void before() {
+		System.setProperty(LogFactory.CUSTOM_LOGGER_JVM, "NONE");
+	}
+
+	// 500 times faster than our new framework
+	// TODO check why
+
+	@Test
+	public void testWithManyObjects() {
+		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
+				+ NUM_NOOP_FILTERS + "...");
+		final StopWatch stopWatch = new StopWatch();
+		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
+
+		final MethodCallThroughputAnalysis6 analysis = new MethodCallThroughputAnalysis6();
+		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
+		analysis.setTimestampObjects(timestampObjects);
+		analysis.setInput(NUM_OBJECTS_TO_CREATE, new Callable<TimestampObject>() {
+			@Override
+			public TimestampObject call() throws Exception {
+				return new TimestampObject();
+			}
+		});
+		analysis.init();
+
+		stopWatch.start();
+		try {
+			analysis.start();
+		} finally {
+			stopWatch.end();
+		}
+
+		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
+	}
+
+}
diff --git a/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis7Test.java b/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis7Test.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d816c11d38d3d96a128b669b6dcc6a6231ddaeb
--- /dev/null
+++ b/src/test/java/teetime/examples/throughput/MethodCallThoughputTimestampAnalysis7Test.java
@@ -0,0 +1,78 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.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.examples.throughput;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import teetime.examples.throughput.methodcall.MethodCallThroughputAnalysis6;
+import teetime.examples.throughput.methodcall.MethodCallThroughputAnalysis7;
+import teetime.util.StatisticsUtil;
+import teetime.util.StopWatch;
+
+import kieker.common.logging.LogFactory;
+
+/**
+ * @author Christian Wulf
+ * 
+ * @since 1.10
+ */
+public class MethodCallThoughputTimestampAnalysis7Test {
+
+	private static final int NUM_OBJECTS_TO_CREATE = 100000;
+	private static final int NUM_NOOP_FILTERS = 800;
+
+	@Before
+	public void before() {
+		System.setProperty(LogFactory.CUSTOM_LOGGER_JVM, "NONE");
+	}
+
+	// 500 times faster than our new framework
+	// TODO check why
+
+	@Test
+	public void testWithManyObjects() {
+		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
+				+ NUM_NOOP_FILTERS + "...");
+		final StopWatch stopWatch = new StopWatch();
+		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
+
+		final MethodCallThroughputAnalysis7 analysis = new MethodCallThroughputAnalysis7();
+		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
+		analysis.setTimestampObjects(timestampObjects);
+		analysis.setInput(NUM_OBJECTS_TO_CREATE, new Callable<TimestampObject>() {
+			@Override
+			public TimestampObject call() throws Exception {
+				return new TimestampObject();
+			}
+		});
+		analysis.init();
+
+		stopWatch.start();
+		try {
+			analysis.start();
+		} finally {
+			stopWatch.end();
+		}
+
+		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
+	}
+
+}
diff --git a/src/test/java/teetime/examples/throughput/methodcall/AbstractStage.java b/src/test/java/teetime/examples/throughput/methodcall/AbstractStage.java
index 83a53368c9236ed9ecc3925626689f0e12e44740..18f43603251edb14f64ee41f0b5c6d190140277f 100644
--- a/src/test/java/teetime/examples/throughput/methodcall/AbstractStage.java
+++ b/src/test/java/teetime/examples/throughput/methodcall/AbstractStage.java
@@ -18,6 +18,8 @@ abstract class AbstractStage<I, O> implements Stage<I, O> {
 
 	private int index;
 
+	private Stage successor;
+
 	// @Override
 	// public InputPort<I> getInputPort() {
 	// return this.inputPort;
@@ -100,8 +102,19 @@ abstract class AbstractStage<I, O> implements Stage<I, O> {
 		return this.listener;
 	}
 
+	@Override
 	public void setListener(final OnDisableListener listener) {
 		this.listener = listener;
 	}
 
+	@Override
+	public Stage next() {
+		return this.successor;
+	}
+
+	@Override
+	public void setSuccessor(final Stage<?, ?> successor) {
+		this.successor = successor;
+	}
+
 }
diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java
index 4f98f4c760ea3814ee1e2828ea39fd007f68e3cd..c627098aff98288cf1f4d2dac3f4f3157adc863e 100644
--- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java
+++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis3.java
@@ -88,6 +88,7 @@ public class MethodCallThroughputAnalysis3 extends Analysis {
 					stage = stages[i];
 					element = stage.execute(element);
 				}
+
 				return true;
 			}
 
diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java
index bb17235f4a90ecd085a9ac51a9973f461cd860f8..eaf0c945dd22ae8dc7fe72861bd8039dc5e55a3a 100644
--- a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java
+++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis4.java
@@ -82,6 +82,7 @@ public class MethodCallThroughputAnalysis4 extends Analysis {
 				for (final NoopFilter<TimestampObject> noopFilter : noopFilters) {
 					object = noopFilter.execute(object);
 				}
+
 				object = stopTimestampFilter.execute(object);
 				collectorSink.execute(object);
 				return true;
diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java
new file mode 100644
index 0000000000000000000000000000000000000000..394e28a6854c26f2a21819dfaaf36c1781f84c2b
--- /dev/null
+++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis5.java
@@ -0,0 +1,140 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.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.examples.throughput.methodcall;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import teetime.examples.throughput.TimestampObject;
+import teetime.framework.core.Analysis;
+
+/**
+ * @author Christian Wulf
+ * 
+ * @since 1.10
+ */
+public class MethodCallThroughputAnalysis5 extends Analysis {
+
+	public abstract class WrappingPipeline {
+
+		public abstract boolean execute();
+
+	}
+
+	private long numInputObjects;
+	private Callable<TimestampObject> inputObjectCreator;
+	private int numNoopFilters;
+	private List<TimestampObject> timestampObjects;
+	private Runnable runnable;
+
+	@Override
+	public void init() {
+		super.init();
+		this.runnable = this.buildPipeline();
+	}
+
+	/**
+	 * @param numNoopFilters
+	 * @since 1.10
+	 */
+	private Runnable buildPipeline() {
+		@SuppressWarnings("unchecked")
+		final NoopFilter<TimestampObject>[] noopFilters = new NoopFilter[this.numNoopFilters];
+		// create stages
+		final ObjectProducer<TimestampObject> objectProducer = new ObjectProducer<TimestampObject>(this.numInputObjects, this.inputObjectCreator);
+		final StartTimestampFilter startTimestampFilter = new StartTimestampFilter();
+		for (int i = 0; i < noopFilters.length; i++) {
+			noopFilters[i] = new NoopFilter<TimestampObject>();
+		}
+		final StopTimestampFilter stopTimestampFilter = new StopTimestampFilter();
+		final CollectorSink<TimestampObject> collectorSink = new CollectorSink<TimestampObject>(this.timestampObjects);
+
+		final List<Stage> stageList = new ArrayList<Stage>();
+		stageList.add(objectProducer);
+		stageList.add(startTimestampFilter);
+		stageList.addAll(Arrays.asList(noopFilters));
+		stageList.add(stopTimestampFilter);
+		stageList.add(collectorSink);
+
+		// using an array decreases the performance from 60ms to 440ms (by 7x)
+		final Stage[] stages = stageList.toArray(new Stage[0]);
+		for (int i = 0; i < stages.length - 1; i++) {
+			stages[i].setSuccessor(stages[i + 1]);
+		}
+		final Stage startStage = stages[0];
+
+		final WrappingPipeline pipeline = new WrappingPipeline() {
+			@Override
+			public boolean execute() {
+				Object element = null;
+				Stage stage = startStage;
+
+				element = stage.execute(element);
+				if (element == null) {
+					return false;
+				}
+				stage = stage.next();
+
+				do {
+					element = stage.execute(element);
+					stage = stage.next();
+				} while (stage != null);
+				return true;
+			}
+
+		};
+
+		final Runnable runnable = new Runnable() {
+			@Override
+			public void run() {
+				boolean success;
+				do {
+					success = pipeline.execute();
+				} while (success);
+			}
+		};
+		return runnable;
+	}
+
+	@Override
+	public void start() {
+		super.start();
+		this.runnable.run();
+	}
+
+	public void setInput(final int numInputObjects, final Callable<TimestampObject> inputObjectCreator) {
+		this.numInputObjects = numInputObjects;
+		this.inputObjectCreator = inputObjectCreator;
+	}
+
+	public int getNumNoopFilters() {
+		return this.numNoopFilters;
+	}
+
+	public void setNumNoopFilters(final int numNoopFilters) {
+		this.numNoopFilters = numNoopFilters;
+	}
+
+	public List<TimestampObject> getTimestampObjects() {
+		return this.timestampObjects;
+	}
+
+	public void setTimestampObjects(final List<TimestampObject> timestampObjects) {
+		this.timestampObjects = timestampObjects;
+	}
+}
diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java
new file mode 100644
index 0000000000000000000000000000000000000000..2b74c99a09b5624e6a96a83ab052db3f75b6d2aa
--- /dev/null
+++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis6.java
@@ -0,0 +1,933 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.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.examples.throughput.methodcall;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import teetime.examples.throughput.TimestampObject;
+import teetime.framework.core.Analysis;
+
+/**
+ * @author Christian Wulf
+ * 
+ * @since 1.10
+ */
+public class MethodCallThroughputAnalysis6 extends Analysis {
+
+	public abstract class WrappingPipeline {
+
+		public abstract boolean execute();
+
+	}
+
+	private long numInputObjects;
+	private Callable<TimestampObject> inputObjectCreator;
+	private int numNoopFilters;
+	private List<TimestampObject> timestampObjects;
+	private Runnable runnable;
+
+	@Override
+	public void init() {
+		super.init();
+		this.runnable = this.buildPipeline();
+	}
+
+	/**
+	 * @param numNoopFilters
+	 * @since 1.10
+	 */
+	private Runnable buildPipeline() {
+		@SuppressWarnings("unchecked")
+		final NoopFilter<TimestampObject>[] noopFilters = new NoopFilter[this.numNoopFilters];
+		// create stages
+		final ObjectProducer<TimestampObject> objectProducer = new ObjectProducer<TimestampObject>(this.numInputObjects, this.inputObjectCreator);
+		final StartTimestampFilter startTimestampFilter = new StartTimestampFilter();
+		for (int i = 0; i < noopFilters.length; i++) {
+			noopFilters[i] = new NoopFilter<TimestampObject>();
+		}
+		final StopTimestampFilter stopTimestampFilter = new StopTimestampFilter();
+		final CollectorSink<TimestampObject> collectorSink = new CollectorSink<TimestampObject>(this.timestampObjects);
+
+		List<Stage> stages = new ArrayList<Stage>();
+		stages.add(objectProducer);
+		stages.add(startTimestampFilter);
+		stages.addAll(Arrays.asList(noopFilters));
+		stages.add(stopTimestampFilter);
+		stages.add(collectorSink);
+
+		final WrappingPipeline pipeline = new WrappingPipeline() {
+			@Override
+			public boolean execute() {
+				TimestampObject object = objectProducer.execute(null);
+				if (object == null) {
+					return false;
+				}
+				object = startTimestampFilter.execute(object);
+				// for (final NoopFilter<TimestampObject> noopFilter : noopFilters) {
+				// object = noopFilter.execute(object);
+				// }
+
+				int i = 0;
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+				object = noopFilters[i++].execute(object);
+
+				object = stopTimestampFilter.execute(object);
+				collectorSink.execute(object);
+				return true;
+			}
+
+		};
+
+		final Runnable runnable = new Runnable() {
+			@Override
+			public void run() {
+				boolean success;
+				do {
+					success = pipeline.execute();
+				} while (success);
+			}
+		};
+		return runnable;
+	}
+
+	@Override
+	public void start() {
+		super.start();
+		this.runnable.run();
+	}
+
+	public void setInput(final int numInputObjects, final Callable<TimestampObject> inputObjectCreator) {
+		this.numInputObjects = numInputObjects;
+		this.inputObjectCreator = inputObjectCreator;
+	}
+
+	public int getNumNoopFilters() {
+		return this.numNoopFilters;
+	}
+
+	public void setNumNoopFilters(final int numNoopFilters) {
+		this.numNoopFilters = numNoopFilters;
+	}
+
+	public List<TimestampObject> getTimestampObjects() {
+		return this.timestampObjects;
+	}
+
+	public void setTimestampObjects(final List<TimestampObject> timestampObjects) {
+		this.timestampObjects = timestampObjects;
+	}
+}
diff --git a/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java
new file mode 100644
index 0000000000000000000000000000000000000000..965a101b534040d7b4a0601e33622f0cfa86fc09
--- /dev/null
+++ b/src/test/java/teetime/examples/throughput/methodcall/MethodCallThroughputAnalysis7.java
@@ -0,0 +1,131 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.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.examples.throughput.methodcall;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import teetime.examples.throughput.TimestampObject;
+import teetime.framework.core.Analysis;
+
+/**
+ * @author Christian Wulf
+ * 
+ * @since 1.10
+ */
+public class MethodCallThroughputAnalysis7 extends Analysis {
+
+	public abstract class WrappingPipeline {
+
+		public abstract boolean execute();
+
+	}
+
+	private long numInputObjects;
+	private Callable<TimestampObject> inputObjectCreator;
+	private int numNoopFilters;
+	private List<TimestampObject> timestampObjects;
+	private Runnable runnable;
+
+	@Override
+	public void init() {
+		super.init();
+		this.runnable = this.buildPipeline();
+	}
+
+	/**
+	 * @param numNoopFilters
+	 * @since 1.10
+	 */
+	private Runnable buildPipeline() {
+		@SuppressWarnings("unchecked")
+		final NoopFilter<TimestampObject>[] noopFilters = new NoopFilter[this.numNoopFilters];
+		// create stages
+		final ObjectProducer<TimestampObject> objectProducer = new ObjectProducer<TimestampObject>(this.numInputObjects, this.inputObjectCreator);
+		final StartTimestampFilter startTimestampFilter = new StartTimestampFilter();
+		for (int i = 0; i < noopFilters.length; i++) {
+			noopFilters[i] = new NoopFilter<TimestampObject>();
+		}
+		final StopTimestampFilter stopTimestampFilter = new StopTimestampFilter();
+		final CollectorSink<TimestampObject> collectorSink = new CollectorSink<TimestampObject>(this.timestampObjects);
+
+		final List<Stage> stageList = new ArrayList<Stage>();
+		stageList.add(objectProducer);
+		stageList.add(startTimestampFilter);
+		stageList.addAll(Arrays.asList(noopFilters));
+		stageList.add(stopTimestampFilter);
+		stageList.add(collectorSink);
+
+		// using an array decreases the performance from 60ms to 200ms (by 3x)
+		final Stage[] stages = stageList.toArray(new Stage[0]);
+
+		final WrappingPipeline pipeline = new WrappingPipeline() {
+			@Override
+			public boolean execute() {
+				// using the foreach for arrays (i.e., w/o using an iterator variable) increases the performance from 200ms to 130ms
+				Object element = null;
+				for (Stage stage : stages) {
+					element = stage.execute(element);
+					if (element == null) {
+						return false;
+					}
+				}
+				return true;
+			}
+
+		};
+
+		final Runnable runnable = new Runnable() {
+			@Override
+			public void run() {
+				boolean success;
+				do {
+					success = pipeline.execute();
+				} while (success);
+			}
+		};
+		return runnable;
+	}
+
+	@Override
+	public void start() {
+		super.start();
+		this.runnable.run();
+	}
+
+	public void setInput(final int numInputObjects, final Callable<TimestampObject> inputObjectCreator) {
+		this.numInputObjects = numInputObjects;
+		this.inputObjectCreator = inputObjectCreator;
+	}
+
+	public int getNumNoopFilters() {
+		return this.numNoopFilters;
+	}
+
+	public void setNumNoopFilters(final int numNoopFilters) {
+		this.numNoopFilters = numNoopFilters;
+	}
+
+	public List<TimestampObject> getTimestampObjects() {
+		return this.timestampObjects;
+	}
+
+	public void setTimestampObjects(final List<TimestampObject> timestampObjects) {
+		this.timestampObjects = timestampObjects;
+	}
+}
diff --git a/src/test/java/teetime/examples/throughput/methodcall/Pipeline.java b/src/test/java/teetime/examples/throughput/methodcall/Pipeline.java
index 975f9e0092b1aec1296b806c4c66d0099948e8d0..f0789f7b7dd7bc58d6c03021d5c497ba9b8cf6c8 100644
--- a/src/test/java/teetime/examples/throughput/methodcall/Pipeline.java
+++ b/src/test/java/teetime/examples/throughput/methodcall/Pipeline.java
@@ -146,6 +146,16 @@ public class Pipeline<I, O> implements Stage<I, O>, OnDisableListener {
 		throw new IllegalStateException();
 	}
 
+	@Override
+	public Stage next() {
+		throw new IllegalStateException();
+	}
+
+	@Override
+	public void setSuccessor(final Stage<?, ?> successor) {
+		throw new IllegalStateException();
+	}
+
 	// @Override
 	// public OutputPort getOutputPort() {
 	// return this.lastStage.getOutputPort();
diff --git a/src/test/java/teetime/examples/throughput/methodcall/Stage.java b/src/test/java/teetime/examples/throughput/methodcall/Stage.java
index d9e397246beeeeb54d27e57e23908b78698489c6..d9c0670ea165f9c0a95517f11fc74991907c5b4c 100644
--- a/src/test/java/teetime/examples/throughput/methodcall/Stage.java
+++ b/src/test/java/teetime/examples/throughput/methodcall/Stage.java
@@ -23,4 +23,8 @@ public interface Stage<I, O> {
 	void setParentStage(Stage parentStage, int index);
 
 	void setListener(OnDisableListener listener);
+
+	Stage next();
+
+	void setSuccessor(Stage<?, ?> successor);
 }