diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
index 502fd82fdb876befaf25dc670870397ae8c0bceb..b923155178f1ea5945e44459af23a1ea26a2a895 100644
--- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
+++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
@@ -97,6 +97,6 @@ class TraceReconstructionBuffer {
 				}
 			}
 		}
-		return new Trace(new ArrayList<AbstractEventRecord>(events), valid);
+		return new Trace(new ArrayList<AbstractEventRecord>(events), valid, 1);
 	}
 }
diff --git a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationBuffer.java b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationBuffer.java
index 18ee675983b2f61e8b6855435751aa67066e9dea..5f1cbf414b8e40d707810aa7d86a9ce31dcd6a06 100644
--- a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationBuffer.java
+++ b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationBuffer.java
@@ -26,6 +26,8 @@ class TracesSummarizationBuffer {
 		if (accumulator == null) {
 			accumulator = trace;
 		} else {
+			accumulator.setCalledTimes(accumulator.getCalledTimes() + trace.getCalledTimes());
+
 			final List<AbstractEventRecord> aggregatedRecords = accumulator.getTraceEvents();
 			final List<AbstractEventRecord> records = trace.getTraceEvents();
 
diff --git a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
index 95893c553359a5b0bee6eb2dfe99c781d24a5795..b08ffe5873dcc850e481b5edbc632fbf1b664b12 100644
--- a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
+++ b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java
@@ -23,8 +23,6 @@ public class TracesSummarizationFilter extends AbstractFilter implements ITraceR
 	private final Map<Trace, TracesSummarizationBuffer> trace2buffer = new ConcurrentSkipListMap<Trace, TracesSummarizationBuffer>(
 			new TraceComperator());
 
-	// TODO cache for buffer objects
-
 	public TracesSummarizationFilter(final long maxCollectionDuration,
 			final IPipeReceiver sinkReceiver) {
 		super(sinkReceiver, Constants.TRACE_SUMMARIZATION_DISRUPTOR_SIZE,
diff --git a/src/explorviz/live_trace_processing/filter/reduction/evaluation/ad_hoc/FragmentationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/evaluation/ad_hoc/FragmentationFilter.java
deleted file mode 100644
index ec176a5cafc975496ec9c1e17dcb7c94578ab5ff..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/evaluation/ad_hoc/FragmentationFilter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.evaluation.ad_hoc;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class FragmentationFilter extends AbstractReductionFilter {
-
-	private final int objectId;
-
-	/*
-	 * The FragmentationFilter keeps all Records with the given objectId.
-	 */
-	public FragmentationFilter(final IPipeReceiver receiver, final int objectId) {
-		super(receiver, "FragmentationFilter");
-		this.objectId = objectId;
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-		final Stack<Integer> stack = new Stack<Integer>();
-		int count = 0;
-		for (final AbstractEventRecord event : trace.getTraceEvents()) {
-			if (event instanceof AbstractBeforeEventRecord) {
-				count++;
-				final int objectId = ((AbstractBeforeEventRecord) event).getObjectId();
-				if (this.objectId == objectId) {
-					traceEvents.add(event);
-					stack.push(new Integer(count));
-				}
-			} else if (event instanceof AbstractAfterEventRecord) {
-				if (!stack.isEmpty() && (stack.peek() == count)) {
-					traceEvents.add(event);
-					stack.pop();
-				}
-				count--;
-			}
-		}
-
-		return new Trace(traceEvents, true);
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/evaluation/ad_hoc/SamplingFilter.java b/src/explorviz/live_trace_processing/filter/reduction/evaluation/ad_hoc/SamplingFilter.java
deleted file mode 100644
index 549f1935cf803de8cb7de0c091c77aa0a20fa3c7..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/evaluation/ad_hoc/SamplingFilter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.evaluation.ad_hoc;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractAfterFailedEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class SamplingFilter extends AbstractReductionFilter {
-
-	private final int samplingDistance;
-
-	public SamplingFilter(final IPipeReceiver receiver, final int samplingDistance) {
-		super(receiver, "Sampling");
-		this.samplingDistance = samplingDistance;
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> newTraceEvents = new ArrayList<AbstractEventRecord>();
-		int stackDepth = 0;
-		int counter = samplingDistance;
-		final Stack<Integer> stack = new Stack<Integer>();
-		for (final AbstractEventRecord record : trace.getTraceEvents()) {
-			if (record instanceof AbstractBeforeEventRecord) {
-				stackDepth++;
-				if (counter == samplingDistance) {
-					newTraceEvents.add(record);
-					stack.push(new Integer(stackDepth));
-					counter = 0;
-				}
-				counter++;
-			} else if ((record instanceof AbstractAfterEventRecord)
-					|| (record instanceof AbstractAfterFailedEventRecord)) {
-				if (!stack.isEmpty() && (stackDepth == stack.peek())) {
-					stack.pop();
-					newTraceEvents.add(record);
-				}
-				stackDepth--;
-			} else {
-				newTraceEvents.add(record);
-			}
-		}
-		return new Trace(newTraceEvents, true);
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/evaluation/language_based/RemoveNonPublicMethodsFilter.java b/src/explorviz/live_trace_processing/filter/reduction/evaluation/language_based/RemoveNonPublicMethodsFilter.java
deleted file mode 100644
index 4b754f36d4493b6f21156f3781a19ed0105c76d4..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/evaluation/language_based/RemoveNonPublicMethodsFilter.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.evaluation.language_based;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.language_based.AbstractLanguageBasedFilter;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-
-public class RemoveNonPublicMethodsFilter extends AbstractLanguageBasedFilter {
-
-	public RemoveNonPublicMethodsFilter(final IPipeReceiver receiver) {
-		super(receiver, "NonPublic");
-	}
-
-	@Override
-	protected boolean isSoughtEvent(final AbstractBeforeEventRecord abstractBeforeEventRecord) {
-		return !abstractBeforeEventRecord.getOperationSignature().contains("public");
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/evaluation/language_based/RemovePackageFilter.java b/src/explorviz/live_trace_processing/filter/reduction/evaluation/language_based/RemovePackageFilter.java
deleted file mode 100644
index ce792003612e00931bc8f8b5262cb8f374d80d3a..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/evaluation/language_based/RemovePackageFilter.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.evaluation.language_based;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.language_based.AbstractLanguageBasedFilter;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-
-public class RemovePackageFilter extends AbstractLanguageBasedFilter {
-
-	String packageName;
-
-	public RemovePackageFilter(final IPipeReceiver receiver, final String packageName) {
-		super(receiver, "packageFiltering");
-		this.packageName = packageName;
-	}
-
-	@Override
-	protected boolean isSoughtEvent(final AbstractBeforeEventRecord abstractBeforeEventRecord) {
-		return abstractBeforeEventRecord.getOperationSignature().contains(packageName);
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/evaluation/metrics_based/StackDepthFilter.java b/src/explorviz/live_trace_processing/filter/reduction/evaluation/metrics_based/StackDepthFilter.java
deleted file mode 100644
index b94e11af7629be7166724cd94088559263ea681c..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/evaluation/metrics_based/StackDepthFilter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.evaluation.metrics_based;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractAfterFailedEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractRemoteEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class StackDepthFilter extends AbstractReductionFilter {
-
-	private final int maxStackDepth;
-
-	public StackDepthFilter(final IPipeReceiver receiver, final int maxStackDepth) {
-		super(receiver, "StackDepthLimitation");
-		this.maxStackDepth = maxStackDepth;
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> newTraceEvents = new ArrayList<AbstractEventRecord>();
-		int count = 0;
-		for (final AbstractEventRecord record : trace.getTraceEvents()) {
-			if (record instanceof AbstractBeforeEventRecord) {
-				if (count < maxStackDepth) {
-					newTraceEvents.add(record);
-				}
-				count++;
-			} else if ((record instanceof AbstractAfterEventRecord)
-					|| (record instanceof AbstractAfterFailedEventRecord)) {
-				count--;
-				if (count < maxStackDepth) {
-					newTraceEvents.add(record);
-				}
-			} else if (record instanceof AbstractRemoteEventRecord) {
-				newTraceEvents.add(record);
-			} else {
-				newTraceEvents.add(record);
-			}
-		}
-		return new Trace(newTraceEvents, true);
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/evaluation/summarization/MonotoneSubsequenceFilter.java b/src/explorviz/live_trace_processing/filter/reduction/evaluation/summarization/MonotoneSubsequenceFilter.java
deleted file mode 100644
index 16497e8fa09d10507c4bf3c64a86753cfba25385..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/evaluation/summarization/MonotoneSubsequenceFilter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.evaluation.summarization;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class MonotoneSubsequenceFilter extends AbstractReductionFilter {
-
-	public MonotoneSubsequenceFilter(final IPipeReceiver receiver) {
-		super(receiver, "MonotoneSubsequence");
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> newTraceEvents = new ArrayList<AbstractEventRecord>();
-		int count = 0;
-		boolean keepNextBeforeEvent = true;
-		boolean lastEventWasAfterEvent = false;
-		final Stack<Integer> searchCorrespondingAfterEvent = new Stack<Integer>();
-		for (final AbstractEventRecord event : trace.getTraceEvents()) {
-			if (event instanceof AbstractBeforeEventRecord) {
-				count++;
-				lastEventWasAfterEvent = false;
-				if (keepNextBeforeEvent) {
-					newTraceEvents.add(event);
-					searchCorrespondingAfterEvent.push(new Integer(count));
-					keepNextBeforeEvent = false;
-				}
-			} else if (event instanceof AbstractAfterEventRecord) {
-				if (lastEventWasAfterEvent) {
-					keepNextBeforeEvent = true;
-				} else {
-					lastEventWasAfterEvent = true;
-				}
-				if (!searchCorrespondingAfterEvent.isEmpty()
-						&& (count == searchCorrespondingAfterEvent.peek())) {
-					searchCorrespondingAfterEvent.pop();
-					newTraceEvents.add(event);
-				}
-				count--;
-			} else {
-				newTraceEvents.add(event);
-			}
-		}
-		return new Trace(newTraceEvents, true);
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/language_based/AbstractLanguageBasedFilter.java b/src/explorviz/live_trace_processing/filter/reduction/language_based/AbstractLanguageBasedFilter.java
deleted file mode 100644
index 0adb80f92322bf8c683c9a28bc29c1e0abeba786..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/language_based/AbstractLanguageBasedFilter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.language_based;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public abstract class AbstractLanguageBasedFilter extends AbstractReductionFilter {
-
-	public AbstractLanguageBasedFilter(final IPipeReceiver receiver, final String counterString) {
-		super(receiver, counterString);
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-		final Stack<Integer> stack = new Stack<Integer>();
-		int count = 0;
-		for (final AbstractEventRecord event : trace.getTraceEvents()) {
-			if (event instanceof AbstractBeforeEventRecord) {
-				count++;
-				final AbstractBeforeEventRecord abstractBeforeEventRecord = (AbstractBeforeEventRecord) event;
-				if (isSoughtEvent(abstractBeforeEventRecord)) {
-					stack.push(new Integer(count));
-				} else {
-					traceEvents.add(event);
-				}
-			} else if (event instanceof AbstractAfterEventRecord) {
-				if (!stack.isEmpty() && (count == stack.peek())) {
-					stack.pop();
-				} else {
-					traceEvents.add(event);
-				}
-				count--;
-			}
-		}
-		if (traceEvents.size() > 0) {
-			return new Trace(traceEvents, true);
-		} else {
-			return new Trace(traceEvents, false);
-		}
-	}
-
-	protected abstract boolean isSoughtEvent(AbstractBeforeEventRecord abstractBeforeEventRecord);
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/language_based/RemoveConstructorsFilter.java b/src/explorviz/live_trace_processing/filter/reduction/language_based/RemoveConstructorsFilter.java
deleted file mode 100644
index 18e7db140c117bab0511f7554b17fea992ac4f45..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/language_based/RemoveConstructorsFilter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.language_based;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.event.constructor.AfterConstructorEventRecord;
-import explorviz.live_trace_processing.record.event.constructor.BeforeConstructorEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class RemoveConstructorsFilter extends AbstractLanguageBasedFilter {
-
-	public RemoveConstructorsFilter(final IPipeReceiver receiver) {
-		super(receiver, "ConstructorHiding");
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-		for (final AbstractEventRecord event : trace.getTraceEvents()) {
-			if (event instanceof BeforeConstructorEventRecord) {
-
-			} else if (event instanceof AfterConstructorEventRecord) {
-
-			} else {
-				traceEvents.add(event);
-			}
-		}
-		return new Trace(traceEvents, true);
-	}
-
-	@Override
-	protected boolean isSoughtEvent(final AbstractBeforeEventRecord abstractBeforeEventRecord) {
-		// not used
-		return false;
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/language_based/RemoveGettersAndSettersFilter.java b/src/explorviz/live_trace_processing/filter/reduction/language_based/RemoveGettersAndSettersFilter.java
deleted file mode 100644
index 66af394e916072a6fd9e5866d9169d4381085e59..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/language_based/RemoveGettersAndSettersFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.language_based;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-
-public class RemoveGettersAndSettersFilter extends AbstractLanguageBasedFilter {
-
-	public RemoveGettersAndSettersFilter(final IPipeReceiver receiver) {
-		super(receiver, "GettersAndSetters");
-	}
-
-	@Override
-	protected boolean isSoughtEvent(final AbstractBeforeEventRecord abstractBeforeEventRecord) {
-		return isGetterOrSetter(abstractBeforeEventRecord.getOperationSignature());
-	}
-
-	private boolean isGetterOrSetter(final String operationSignature) {
-		final String methodName = getMethodName(operationSignature);
-		return methodName.startsWith("get") || methodName.startsWith("set");
-	}
-
-	private String getMethodName(final String operationSignatureStr) {
-		final String[] a = operationSignatureStr.split("\\(")[0].split("\\s");
-		final String b = a[a.length - 1];
-		final int c = b.lastIndexOf('.');
-		final String methodName = b.substring(c + 1);
-		return methodName;
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/AssociativityFilter.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/AssociativityFilter.java
deleted file mode 100644
index f1828d1c6cb4b07831962fa29ac5b3fa20d4765c..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/AssociativityFilter.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.summarization;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractAfterFailedEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class AssociativityFilter extends AbstractReductionFilter {
-
-	public AssociativityFilter(final IPipeReceiver receiver) {
-		super(receiver, "AssoziationFilter");
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> newTraceEvents = new ArrayList<AbstractEventRecord>();
-		String caller = null;
-		int count = 0;
-		final Stack<Integer> stack = new Stack<Integer>();
-		final Stack<String> callerStack = new Stack<String>();
-		for (final AbstractEventRecord record : trace.getTraceEvents()) {
-			if (record instanceof AbstractBeforeEventRecord) {
-				count++;
-				final AbstractBeforeEventRecord abstractBeforeEventRecord = (AbstractBeforeEventRecord) record;
-				final String signature = abstractBeforeEventRecord.getOperationSignature();
-				final String callee = getClazzFullQName(signature);
-				if (!callee.equals(caller)) {
-					newTraceEvents.add(record);
-				} else {
-					stack.push(new Integer(count));
-				}
-				caller = callee;
-				callerStack.push(caller);
-			} else if ((record instanceof AbstractAfterEventRecord)
-					|| (record instanceof AbstractAfterFailedEventRecord)) {
-				callerStack.pop();
-				if (!callerStack.isEmpty()) {
-					caller = callerStack.peek();
-				}
-				if (!stack.isEmpty() && (count == stack.peek())) {
-					stack.pop();
-				} else {
-					newTraceEvents.add(record);
-				}
-				count--;
-			} else {
-				newTraceEvents.add(record);
-			}
-		}
-		return new Trace(newTraceEvents, true);
-	}
-
-	private String getClazzFullQName(final String operationSignatureStr) {
-		final int brace = operationSignatureStr.indexOf('(');
-		final String signatureWithoutArguments = operationSignatureStr.substring(0, brace);
-		final int lastWhiteSpace = signatureWithoutArguments.lastIndexOf(' ');
-		final int lastDot = signatureWithoutArguments.lastIndexOf('.');
-		if (lastDot == -1) {
-			return "";
-		}
-		final String fullQClazzName = signatureWithoutArguments.substring(lastWhiteSpace + 1,
-				lastDot);
-
-		if (fullQClazzName.indexOf("$") > 0) {
-			return fullQClazzName.substring(0, fullQClazzName.indexOf("$"));
-		} else {
-			return fullQClazzName;
-		}
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/Edge.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/Edge.java
deleted file mode 100644
index 7aab3b84e071f17ee7e17edd54e952de021a289a..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/Edge.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.summarization;
-
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-
-public class Edge {
-
-	private AbstractBeforeEventRecord caller;
-	private AbstractBeforeEventRecord callee;
-	private AbstractAfterEventRecord callee_end;
-	private boolean taken;
-
-	public Edge(final AbstractBeforeEventRecord caller, final AbstractBeforeEventRecord callee) {
-		this.caller = caller;
-		this.callee = callee;
-		taken = false;
-	}
-
-	public AbstractAfterEventRecord getCallee_end() {
-		return callee_end;
-	}
-
-	public void setCallee_end(final AbstractAfterEventRecord callee_end) {
-		this.callee_end = callee_end;
-	}
-
-	public boolean isTaken() {
-		return taken;
-	}
-
-	public void setTaken(final boolean taken) {
-		this.taken = taken;
-	}
-
-	public AbstractBeforeEventRecord getCaller() {
-		return caller;
-	}
-
-	public void setCaller(final AbstractBeforeEventRecord caller) {
-		this.caller = caller;
-	}
-
-	public AbstractBeforeEventRecord getCallee() {
-		return callee;
-	}
-
-	public void setCallee(final AbstractBeforeEventRecord callee) {
-		this.callee = callee;
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/IterationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/IterationFilter.java
deleted file mode 100644
index f6a93e60ca0afc0e62d1e4674006976f4330b163..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/IterationFilter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.summarization;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.filter.reduction.ITraceReduction;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class IterationFilter extends AbstractReductionFilter implements ITraceReduction {
-
-	public IterationFilter(final IPipeReceiver receiver) {
-		super(receiver, "IterationFilter");
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		final List<AbstractEventRecord> newTraceEvents = new ArrayList<AbstractEventRecord>();
-		final List<AbstractEventRecord> traceEvents = trace.getTraceEvents();
-		int i = 0;
-		while (i < (traceEvents.size() - 3)) {
-			if (traceEvents.get(i) instanceof AbstractBeforeEventRecord) {
-				final AbstractBeforeEventRecord firstBeforeEvent = (AbstractBeforeEventRecord) traceEvents
-						.get(i);
-				if (traceEvents.get(i + 1) instanceof AbstractAfterEventRecord) {
-					final AbstractAfterEventRecord firstAfterEvent = (AbstractAfterEventRecord) traceEvents
-							.get(i + 1);
-					if (traceEvents.get(i + 2) instanceof AbstractBeforeEventRecord) {
-						final AbstractBeforeEventRecord secondBeforeEvent = (AbstractBeforeEventRecord) traceEvents
-								.get(i + 2);
-						if (firstBeforeEvent.compareTo(secondBeforeEvent) == 0) {
-							if (traceEvents.get(i + 3) instanceof AbstractAfterEventRecord) {
-								secondBeforeEvent.getRuntimeStatisticInformation().makeAccumulator(
-										0);
-								secondBeforeEvent.getRuntimeStatisticInformation().merge(
-										firstBeforeEvent.getRuntimeStatisticInformation(),
-										firstBeforeEvent.getObjectId());
-								i += 2;
-							} else {
-								newTraceEvents.add(firstBeforeEvent);
-								newTraceEvents.add(firstAfterEvent);
-								newTraceEvents.add(secondBeforeEvent);
-								i += 3;
-							}
-						} else {
-							newTraceEvents.add(firstBeforeEvent);
-							newTraceEvents.add(firstAfterEvent);
-							i += 2;
-						}
-					} else {
-						newTraceEvents.add(firstBeforeEvent);
-						newTraceEvents.add(firstAfterEvent);
-						i += 2;
-					}
-				} else {
-					newTraceEvents.add(firstBeforeEvent);
-					i++;
-				}
-			} else {
-				newTraceEvents.add(traceEvents.get(i));
-				i++;
-			}
-		}
-		while (i < traceEvents.size()) {
-			newTraceEvents.add(traceEvents.get(i));
-			i++;
-		}
-		final Trace reducedTrace = new Trace(newTraceEvents, true);
-		return reducedTrace;
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/PatternSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/PatternSummarizationFilter.java
deleted file mode 100644
index 8f668a2deaefa1f367abfee93c3da40b31207095..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/PatternSummarizationFilter.java
+++ /dev/null
@@ -1,181 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.summarization;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class PatternSummarizationFilter extends AbstractReductionFilter {
-
-	public static final int DEFAULT_DISTANCE = 300;
-	public static final int DEFAULT_NESTINGLEVEL = 1;
-	private final int distance;
-	private final int nestingLevel;
-
-	// private int maxDistance = 0;
-	// private boolean nextRound = false;
-	// private int maxNestingLevel = 0;
-
-	public PatternSummarizationFilter(final IPipeReceiver receiver, final int distance,
-			final int nestingLevel) {
-		super(receiver, "PatternSummarization");
-		if (distance < 1) {
-			this.distance = DEFAULT_DISTANCE;
-		} else {
-			this.distance = distance;
-		}
-		if (nestingLevel < 1) {
-			this.nestingLevel = DEFAULT_NESTINGLEVEL;
-		} else {
-			this.nestingLevel = nestingLevel;
-		}
-	}
-
-	@Override
-	protected Trace reduceTrace(Trace trace) {
-		int t = 0;
-		while (t < nestingLevel) {
-			trace = summarizePattern(trace);
-			// if (!nextRound) {
-			// System.out.println("max distance: " + maxDistance);
-			// System.out.println("max nesting level: " + maxNestingLevel);
-			// return trace;
-			// }
-			// nextRound = false;
-			// maxNestingLevel++;
-			t++;
-		}
-		return trace;
-	}
-
-	private Trace summarizePattern(final Trace trace) {
-		final List<AbstractEventRecord> newTraceEvents = new ArrayList<AbstractEventRecord>();
-		final List<AbstractEventRecord> traceEvents = trace.getTraceEvents();
-		int index = 0;
-		final int traceLength = traceEvents.size();
-		int count = 0;
-		final Stack<Integer> stack = new Stack<Integer>();
-
-		while (index < traceLength) {
-			final AbstractEventRecord event = traceEvents.get(index);
-			if (event instanceof AbstractBeforeEventRecord) {
-				count++;
-				final AbstractBeforeEventRecord beforeEvent = (AbstractBeforeEventRecord) event;
-				final int possibleRepititionStart = findPatternStart(beforeEvent, traceEvents,
-						index, traceLength);
-				if (possibleRepititionStart != -1) {
-					final int numberOfPatternRepititions = findPatternRepititions(traceEvents,
-							index, possibleRepititionStart, traceLength);
-					if (numberOfPatternRepititions != 0) {
-						// nextRound = true;
-						removeRepititions(index, numberOfPatternRepititions,
-								possibleRepititionStart, traceEvents, newTraceEvents);
-						count--;
-						index += (numberOfPatternRepititions + 1)
-								* (possibleRepititionStart - index);
-					} else {
-						newTraceEvents.add(event);
-						stack.push(new Integer(count));
-						index++;
-					}
-				} else {
-					newTraceEvents.add(event);
-					stack.push(new Integer(count));
-					index++;
-				}
-			} else if (event instanceof AbstractAfterEventRecord) {
-				if (!stack.isEmpty() && (stack.peek() == count)) {
-					stack.pop();
-					newTraceEvents.add(event);
-				}
-				index++;
-				count--;
-			} else {
-				newTraceEvents.add(event);
-				index++;
-			}
-		}
-
-		return new Trace(newTraceEvents, true);
-	}
-
-	// summarize a found pattern
-	private void removeRepititions(final int start, final int numberOfPatternRepititions,
-			final int end, final List<AbstractEventRecord> traceEvents,
-			final List<AbstractEventRecord> newTraceEvents) {
-		final int d = end - start;
-		// if (d > maxDistance) {
-		// maxDistance = d;
-		// }
-		for (int i = start; i < end; i++) {
-			final AbstractEventRecord event = traceEvents.get(i);
-			if (event instanceof AbstractBeforeEventRecord) {
-				final AbstractBeforeEventRecord beforeEvent = (AbstractBeforeEventRecord) event;
-				for (int r = 1; r <= numberOfPatternRepititions; r++) {
-					final AbstractBeforeEventRecord nextEqualEvent = (AbstractBeforeEventRecord) traceEvents
-							.get(i + (r * d));
-					beforeEvent.getRuntimeStatisticInformation().merge(
-							nextEqualEvent.getRuntimeStatisticInformation(),
-							nextEqualEvent.getObjectId());
-
-				}
-			}
-			newTraceEvents.add(event);
-		}
-
-	}
-
-	// check if a pattern repetition is present, i.e., t[i+1]=t[j+1] ...
-	private int findPatternRepititions(final List<AbstractEventRecord> traceEvents, int i, int j,
-			final int traceLength) {
-		int numberOfRepititions = 0;
-		final int d = j - i;
-		int counter = 0;
-		while (j < traceLength) {
-			final AbstractEventRecord event1 = traceEvents.get(i);
-			final AbstractEventRecord event2 = traceEvents.get(j);
-			if (event1.compareTo(event2) != 0) {
-				return numberOfRepititions;
-			}
-			counter++;
-			if (counter == d) {
-				numberOfRepititions++;
-				counter = 0;
-			}
-			i++;
-			j++;
-		}
-		return numberOfRepititions;
-	}
-
-	// search j with trace[i]==trace[j] and j-i<=d and equal caller(count==0)
-	// -1: no hit
-	private int findPatternStart(final AbstractBeforeEventRecord beforeEvent,
-			final List<AbstractEventRecord> traceEvents, int i, final int traceLength) {
-		int end = i + distance;
-		if (end >= traceLength) {
-			end = traceLength - 1;
-		}
-		int count = 0;
-		while (i < end) {
-			i++;
-			final AbstractEventRecord event = traceEvents.get(i);
-			if (event instanceof AbstractBeforeEventRecord) {
-				count++;
-				if ((count == 0) && (beforeEvent.compareTo(event) == 0)) {
-					return i;
-				}
-			} else if (event instanceof AbstractAfterEventRecord) {
-				count--;
-			}
-		}
-		return -1;
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/TreeSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/TreeSummarizationFilter.java
deleted file mode 100644
index f924140f62a3f15890c5f4b5bacf061320d7067e..0000000000000000000000000000000000000000
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/TreeSummarizationFilter.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction.summarization;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-import explorviz.live_trace_processing.filter.IPipeReceiver;
-import explorviz.live_trace_processing.filter.reduction.AbstractReductionFilter;
-import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class TreeSummarizationFilter extends AbstractReductionFilter {
-
-	public TreeSummarizationFilter(final IPipeReceiver receiver) {
-		super(receiver, "TreeSummarization");
-	}
-
-	@Override
-	protected Trace reduceTrace(final Trace trace) {
-		if (trace.getTraceEvents().size() < 4) {
-			return trace;
-		}
-		final List<Edge> edges = new ArrayList<Edge>();
-		buildEdgesfromTrace(edges, trace.getTraceEvents());
-		final Trace newTrace = buildTraceFromEdges(edges);
-		return newTrace;
-	}
-
-	private void buildEdgesfromTrace(final List<Edge> edges,
-			final List<AbstractEventRecord> traceEvents) {
-		AbstractBeforeEventRecord caller;
-		AbstractBeforeEventRecord callee = null;
-		final Stack<AbstractBeforeEventRecord> callerStack = new Stack<AbstractBeforeEventRecord>();
-		callerStack.push(callee);
-		final Stack<Integer> stack = new Stack<Integer>();
-		final Stack<Edge> edgeStack = new Stack<Edge>();
-		int count = 0;
-		for (final AbstractEventRecord event : traceEvents) {
-			if (event instanceof AbstractBeforeEventRecord) {
-				count++;
-				caller = callerStack.peek();
-				callee = (AbstractBeforeEventRecord) event;
-				callerStack.push(callee);
-				if (!callerEqualsCallee(caller, callee)
-						&& addToList(caller, callee, edges, edgeStack)) {
-					stack.push(new Integer(count));
-				}
-			} else if (event instanceof AbstractAfterEventRecord) {
-				callerStack.pop();
-				if (!stack.isEmpty() && (count == stack.peek())) {
-					stack.pop();
-					final Edge edge = edgeStack.pop();
-					final AbstractAfterEventRecord callee_end = (AbstractAfterEventRecord) event;
-					edge.setCallee_end(callee_end);
-				}
-				count--;
-			} else {
-				// TODO: handle remote calls
-			}
-		}
-	}
-
-	private boolean addToList(final AbstractBeforeEventRecord caller,
-			final AbstractBeforeEventRecord callee, final List<Edge> edges,
-			final Stack<Edge> edgeStack) {
-		for (final Edge edge : edges) {
-			if (callerEqualsCallee(caller, edge.getCaller())
-					&& callerEqualsCallee(callee, edge.getCallee())) {
-				mergeInformation(edge, caller, callee);
-				return false;
-			}
-		}
-		final Edge edge = new Edge(caller, callee);
-		edges.add(edge);
-		edgeStack.add(edge);
-		return true;
-	}
-
-	private void mergeInformation(final Edge edge, final AbstractBeforeEventRecord caller,
-			final AbstractBeforeEventRecord callee) {
-		edge.getCallee().getRuntimeStatisticInformation()
-				.merge(callee.getRuntimeStatisticInformation(), callee.getObjectId());
-	}
-
-	private Trace buildTraceFromEdges(final List<Edge> edges) {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-		final Edge start = edges.get(0);
-		traceEvents.add(start.getCallee());
-		start.setTaken(true);
-		recursiveCall(traceEvents, edges, start.getCallee());
-		traceEvents.add(start.getCallee_end());
-		return new Trace(traceEvents, true);
-	}
-
-	private void recursiveCall(final List<AbstractEventRecord> traceEvents, final List<Edge> edges,
-			final AbstractBeforeEventRecord callee) {
-		for (final Edge edge : edges) {
-			if (!edge.isTaken() && (callerEqualsCallee(edge.getCaller(), callee))) {
-				traceEvents.add(edge.getCallee());
-				edge.setTaken(true);
-				recursiveCall(traceEvents, edges, edge.getCallee());
-				traceEvents.add(edge.getCallee_end());
-			}
-		}
-
-	}
-
-	private boolean callerEqualsCallee(final AbstractBeforeEventRecord caller,
-			final AbstractBeforeEventRecord callee) {
-		if (caller == null) {
-			if (callee == null) {
-				return true;
-			} else {
-				return false;
-			}
-		} else if (callee == null) {
-			return false;
-		}
-		final String callerClazz = getClazzFullQName(caller.getOperationSignature());
-		final String calleeClazz = getClazzFullQName(callee.getOperationSignature());
-		return callerClazz.equals(calleeClazz);
-	}
-
-	private String getClazzFullQName(final String operationSignatureStr) {
-		final int brace = operationSignatureStr.indexOf('(');
-		final String signatureWithoutArguments = operationSignatureStr.substring(0, brace);
-		final int lastWhiteSpace = signatureWithoutArguments.lastIndexOf(' ');
-		final int lastDot = signatureWithoutArguments.lastIndexOf('.');
-		if (lastDot == -1) {
-			return "";
-		}
-		final String fullQClazzName = signatureWithoutArguments.substring(lastWhiteSpace + 1,
-				lastDot);
-
-		if (fullQClazzName.indexOf("$") > 0) {
-			return fullQClazzName.substring(0, fullQClazzName.indexOf("$"));
-		} else {
-			return fullQClazzName;
-		}
-	}
-
-}
diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
index 1fa722d459e0137d659a0562913bd42678e21943..9f4e5ae1f85de543015bca62fd5103a2efe4ef57 100644
--- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
+++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
@@ -155,6 +155,7 @@ class TCPReaderOneClient extends Thread {
 						if (validByte == (byte) 0) {
 							valid = false;
 						}
+						final int calledTimes = buffer.getInt();
 						final int eventsLength = buffer.getInt();
 						final int byteLength = buffer.getInt();
 						if ((buffer.remaining() >= byteLength) && (eventsLength > 0)) {
@@ -170,7 +171,7 @@ class TCPReaderOneClient extends Thread {
 								}
 							}
 
-							putInRingBuffer(new Trace(events, valid));
+							putInRingBuffer(new Trace(events, valid, calledTimes));
 							break;
 						}
 						buffer.position(buffer.position() - 10);
diff --git a/test/explorviz/live_trace_processing/filter/reduction/AssociativityFilterTest.java b/test/explorviz/live_trace_processing/filter/reduction/AssociativityFilterTest.java
deleted file mode 100644
index 77985ddcedaab6beacd48a36940d70eb6610b872..0000000000000000000000000000000000000000
--- a/test/explorviz/live_trace_processing/filter/reduction/AssociativityFilterTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import explorviz.live_trace_processing.filter.reduction.summarization.AssociativityFilter;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord;
-import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord;
-import explorviz.live_trace_processing.record.trace.HostApplicationMetaDataRecord;
-import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class AssociativityFilterTest {
-
-	private Trace testTrace;
-
-	@Before
-	public void init() {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-
-		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
-				"test.package.Clazz.method1()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(11L));
-		traceEvents.add(beforeEvent);
-
-		final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
-		traceEvents.add(beforeEvent1);
-
-		final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent1);
-
-		final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
-				0, "test.package.OtherClazz.method3()", "ClazzF",
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent2);
-
-		final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent2);
-
-		final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
-		traceEvents.add(beforeEvent3);
-
-		final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(9L, 1L, 6,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent3);
-
-		final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(10L, 1L, 7,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent4);
-
-		final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(11L, 1L, 8,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent4);
-
-		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(12L, 1L, 9,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent);
-
-		testTrace = new Trace(traceEvents, true);
-	}
-
-	@Test
-	public void testReduction() {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-
-		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
-				"test.package.Clazz.method1()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(11L));
-		traceEvents.add(beforeEvent);
-
-		final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
-				0, "test.package.OtherClazz.method3()", "ClazzF",
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent2);
-
-		final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent2);
-
-		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(12L, 1L, 9,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent);
-
-		final Trace compareTrace = new Trace(traceEvents, true);
-		final AssociativityFilter assoziationFilter = new AssociativityFilter(null);
-		final Trace reducedTrace = assoziationFilter.testReduction(testTrace);
-		Assert.assertTrue(compareTrace.compareTo(reducedTrace) == 0);
-
-	}
-
-}
diff --git a/test/explorviz/live_trace_processing/filter/reduction/IterationFilterTest.java b/test/explorviz/live_trace_processing/filter/reduction/IterationFilterTest.java
deleted file mode 100644
index ae7ebc04bdaac8df880237f9f943530565e2e70a..0000000000000000000000000000000000000000
--- a/test/explorviz/live_trace_processing/filter/reduction/IterationFilterTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import explorviz.live_trace_processing.filter.reduction.summarization.IterationFilter;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord;
-import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord;
-import explorviz.live_trace_processing.record.trace.HostApplicationMetaDataRecord;
-import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class IterationFilterTest {
-
-	private Trace trace;
-
-	@Before
-	public void init() {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-
-		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
-				"test.package.Clazz.method1()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(11L));
-		traceEvents.add(beforeEvent);
-
-		beforeEvent.getRuntimeStatisticInformation().makeAccumulator(0);
-
-		final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
-		traceEvents.add(beforeEvent1);
-
-		final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent1);
-
-		final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent2);
-
-		final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent2);
-
-		final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
-		traceEvents.add(beforeEvent3);
-
-		final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(9L, 1L, 6,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent3);
-
-		final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(10L, 1L, 7,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent4);
-
-		final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(11L, 1L, 8,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent4);
-
-		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(12L, 1L, 9,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent);
-
-		trace = new Trace(traceEvents, true);
-	}
-
-	@Test
-	public void testReduction() {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-		final HostApplicationMetaDataRecord hostApplicationMetadata = new HostApplicationMetaDataRecord(
-				"testSystem", "testIp", "host", "application");
-		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
-				"test.package.Clazz.method1()", "ClazzF", hostApplicationMetadata);
-		traceEvents.add(beforeEvent);
-		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(11L));
-		final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(10L, 1L, 7,
-				0, "test.package.Clazz.method2()", "ClazzF", hostApplicationMetadata);
-		traceEvents.add(beforeEvent1);
-		beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(4, 6, 10));
-		final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(11L, 1L, 8,
-				hostApplicationMetadata);
-		traceEvents.add(afterEvent1);
-		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(12L, 1L, 9,
-				hostApplicationMetadata);
-		traceEvents.add(afterEvent);
-		final Trace compareTrace = new Trace(traceEvents, true);
-		final IterationFilter iterationFilter = new IterationFilter(null);
-		final Trace reducedTrace = iterationFilter.testReduction(trace);
-		Assert.assertTrue(compareTrace.compareTo(reducedTrace) == 0);
-
-	}
-
-}
diff --git a/test/explorviz/live_trace_processing/filter/reduction/MonotoneSubsequenceTest.java b/test/explorviz/live_trace_processing/filter/reduction/MonotoneSubsequenceTest.java
deleted file mode 100644
index b03b3334983fb57cc7a6ec1064d815876778c27b..0000000000000000000000000000000000000000
--- a/test/explorviz/live_trace_processing/filter/reduction/MonotoneSubsequenceTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package explorviz.live_trace_processing.filter.reduction;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import explorviz.live_trace_processing.filter.reduction.evaluation.summarization.MonotoneSubsequenceFilter;
-import explorviz.live_trace_processing.record.event.AbstractEventRecord;
-import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord;
-import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord;
-import explorviz.live_trace_processing.record.trace.HostApplicationMetaDataRecord;
-import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation;
-import explorviz.live_trace_processing.record.trace.Trace;
-
-public class MonotoneSubsequenceTest {
-
-	private Trace trace;
-
-	@Before
-	public void init() {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-
-		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
-				"test.package.Clazz.method1()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(11L));
-		traceEvents.add(beforeEvent);
-
-		final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
-		traceEvents.add(beforeEvent1);
-
-		final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent1);
-
-		final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent2);
-
-		final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent2);
-
-		final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
-		traceEvents.add(beforeEvent3);
-
-		final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(9L, 1L, 6,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent3);
-
-		final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(10L, 1L, 7,
-				0, "test.package.Clazz.method2()", "ClazzF", new HostApplicationMetaDataRecord(
-						"testSystem", "testIp", "host", "application"));
-		beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
-		traceEvents.add(beforeEvent4);
-
-		final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(11L, 1L, 8,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent4);
-
-		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(12L, 1L, 9,
-				new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application"));
-		traceEvents.add(afterEvent);
-
-		trace = new Trace(traceEvents, true);
-	}
-
-	@Test
-	public void testReduction() {
-		final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
-
-		final HostApplicationMetaDataRecord hostApplicationMetadata = new HostApplicationMetaDataRecord(
-				"testSystem", "testIp", "host", "application");
-
-		final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
-				"test.package.Clazz.method1()", "ClazzF", hostApplicationMetadata);
-		traceEvents.add(beforeEvent);
-		beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(11L));
-
-		final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(12L, 1L, 9,
-				hostApplicationMetadata);
-		traceEvents.add(afterEvent);
-
-		final Trace compareTrace = new Trace(traceEvents, true);
-		final MonotoneSubsequenceFilter subseqFilter = new MonotoneSubsequenceFilter(null);
-		final Trace reducedTrace = subseqFilter.testReduction(trace);
-		Assert.assertTrue(compareTrace.compareTo(reducedTrace) == 0);
-
-	}
-}