diff --git a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
index 0f56a6e3a7f592e9b7d7ee5d4a19ebd3491beeb3..9513a2fe36292506668815a645c5f71218110b73 100644
--- a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
+++ b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
@@ -3,6 +3,7 @@ package explorviz.live_trace_processing.filter.reduction;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.TreeMap;
 
 import explorviz.live_trace_processing.Constants;
@@ -77,7 +78,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,15 +90,21 @@ 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 TracesSummarizationBuffer traceBuffer : trace2buffer.values()) {
-			if (traceBuffer.getBufferCreatedTimestamp() <= bufferTimeout) {
-				final Trace aggregatedTrace = traceBuffer.getAggregatedTrace();
+		for (final Entry<Trace, TracesSummarizationBuffer> traceBufferEntrySet : trace2buffer
+				.entrySet()) {
+
+			if (traceBufferEntrySet.getValue().getBufferCreatedTimestamp() <= bufferTimeout) {
+				final Trace aggregatedTrace = traceBufferEntrySet.getValue().getAggregatedTrace();
+
 				deliver(aggregatedTrace);
-				toRemove.add(aggregatedTrace);
+				toRemove.add(traceBufferEntrySet.getKey());
 			}
+
 		}
-		for (final Trace traceEventRecords : toRemove) {
-			trace2buffer.remove(traceEventRecords);
+		for (final Trace trace : toRemove) {
+			if (trace2buffer.remove(trace) == null) {
+				System.out.println("no trace found :(");
+			}
 		}
 	}