diff --git a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
index 9513a2fe36292506668815a645c5f71218110b73..fc24b69869d6a62b98683e07ddf40ba5e7beb2fe 100644
--- a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
+++ b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
@@ -1,7 +1,6 @@
 package explorviz.live_trace_processing.filter.reduction;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.TreeMap;
@@ -78,7 +77,7 @@ public class TracesSummarizationFilter extends AbstractFilter implements ITraceR
 					final AbstractBeforeOperationEventRecord abstractBeforeOperationEventRecord = (AbstractBeforeOperationEventRecord) abstractBeforeEventRecord;
 
 					abstractBeforeOperationEventRecord.getRuntimeStatisticInformation()
-					.makeAccumulator(abstractBeforeOperationEventRecord.getObjectId());
+							.makeAccumulator(abstractBeforeOperationEventRecord.getObjectId());
 				} else {
 					abstractBeforeEventRecord.getRuntimeStatisticInformation().makeAccumulator(0);
 
@@ -89,21 +88,17 @@ public class TracesSummarizationFilter extends AbstractFilter implements ITraceR
 
 	private void processTimeoutQueue(final long timestamp) {
 		final long bufferTimeout = timestamp - maxCollectionDuration;
-		final List<Trace> toRemove = new ArrayList<Trace>();
-		for (final Entry<Trace, TracesSummarizationBuffer> traceBufferEntrySet : trace2buffer
-				.entrySet()) {
+		final Iterator<Entry<Trace, TracesSummarizationBuffer>> iter = trace2buffer.entrySet()
+				.iterator();
 
-			if (traceBufferEntrySet.getValue().getBufferCreatedTimestamp() <= bufferTimeout) {
-				final Trace aggregatedTrace = traceBufferEntrySet.getValue().getAggregatedTrace();
+		while (iter.hasNext()) {
+			final Entry<Trace, TracesSummarizationBuffer> traceBufferEntry = iter.next();
 
-				deliver(aggregatedTrace);
-				toRemove.add(traceBufferEntrySet.getKey());
-			}
+			if (traceBufferEntry.getValue().getBufferCreatedTimestamp() <= bufferTimeout) {
+				final Trace aggregatedTrace = traceBufferEntry.getValue().getAggregatedTrace();
 
-		}
-		for (final Trace trace : toRemove) {
-			if (trace2buffer.remove(trace) == null) {
-				System.out.println("no trace found :(");
+				deliver(aggregatedTrace);
+				iter.remove();
 			}
 		}
 	}