diff --git a/build.gradle b/build.gradle
index 43aee04b5662fe1f72d584b4ea7b8f07bdd075e9..d31c1b67308ec643efbb591c6ae1ba1a77c2dce4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -48,9 +48,6 @@ eclipse.classpath.plusConfigurations += [configurations.providedCompile]
 apply plugin: 'pmd'
 pmd { 
   ignoreFailures = true
-
-    // Clear the rule set first. Otherwise we would have a lot of additional rules in our rule set.
- // ruleSets = []
 }
 
 apply plugin: 'checkstyle'
@@ -64,6 +61,8 @@ findbugs {
   ignoreFailures = true 
   effort = "max"
   reportLevel = "low"
+  
+  excludeFilter = file('config/findbugs/excludeFilter.xml')
 }
 
 def commonStartScriptConfiguration = {
diff --git a/config/findbugs/excludeFilter.xml b/config/findbugs/excludeFilter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee9322e63b8354ed522c36262718cb396edefb0f
--- /dev/null
+++ b/config/findbugs/excludeFilter.xml
@@ -0,0 +1,8 @@
+<FindBugsFilter>
+
+	<Match>
+    <Class name="org.eclipse.wb.swt.SWTResourceManager" />
+    <Bug pattern="REC_CATCH_EXCEPTION" />
+	</Match>
+	
+</FindBugsFilter>  
\ No newline at end of file
diff --git a/src/main/java/kieker/gui/common/model/DataModel.java b/src/main/java/kieker/gui/common/model/DataModel.java
index a77941f9304bd190176b903f2bdf140ad811ef7f..49f9d1b8bcabd93ac77b1475f68c5803d7819b1e 100644
--- a/src/main/java/kieker/gui/common/model/DataModel.java
+++ b/src/main/java/kieker/gui/common/model/DataModel.java
@@ -67,7 +67,7 @@ public final class DataModel extends Observable {
 			final KiekerMetadataRecord metadataRecord = metadataRecords.get(0);
 			this.shortTimeUnit = this.convertToShortTimeUnit(TimeUnit.valueOf(metadataRecord.getTimeUnit()));
 		} else {
-			this.shortTimeUnit = this.convertToShortTimeUnit(null);
+			this.shortTimeUnit = "";
 		}
 
 		this.setChanged();
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionAvgDurationComparator.java b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionAvgDurationComparator.java
index 6646cadf404f8e56b27db43eb30ce3a4cb359580..78b6cc18d1f97f0ef9c58c8cd4ed3756ead81747 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionAvgDurationComparator.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionAvgDurationComparator.java
@@ -23,14 +23,19 @@ import org.eclipse.swt.SWT;
 
 public class AggregatedExecutionAvgDurationComparator extends AbstractDirectedComparator<AggregatedExecution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AggregatedExecution arg0, final AggregatedExecution arg1) {
-		int result = Long.compare(arg0.getAvgDuration(), arg1.getAvgDuration());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getAvgDuration(), arg0.getAvgDuration());
+		} else {
+			result = Long.compare(arg0.getAvgDuration(), arg1.getAvgDuration());
 		}
-		return result;
 
+		return result;
 	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionCallComparator.java b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionCallComparator.java
index a399d3ba04e80a1734b96671e926fd39997b07cb..01cc0c016c8abf2bbbf9a4625ff3ca7f46a58bee 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionCallComparator.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionCallComparator.java
@@ -23,14 +23,19 @@ import org.eclipse.swt.SWT;
 
 public class AggregatedExecutionCallComparator extends AbstractDirectedComparator<AggregatedExecution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AggregatedExecution arg0, final AggregatedExecution arg1) {
-		int result = Long.compare(arg0.getCalls(), arg1.getCalls());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getCalls(), arg0.getCalls());
+		} else {
+			result = Long.compare(arg0.getCalls(), arg1.getCalls());
 		}
-		return result;
 
+		return result;
 	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMaxDurationComparator.java b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMaxDurationComparator.java
index f6be97f52e3ba1d2a3f3fc05970c852ee1553400..00c97763e3028de5de071187775201b7614155f4 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMaxDurationComparator.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMaxDurationComparator.java
@@ -23,14 +23,19 @@ import org.eclipse.swt.SWT;
 
 public class AggregatedExecutionMaxDurationComparator extends AbstractDirectedComparator<AggregatedExecution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AggregatedExecution arg0, final AggregatedExecution arg1) {
-		int result = Long.compare(arg0.getMaxDuration(), arg1.getMaxDuration());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getMaxDuration(), arg0.getMaxDuration());
+		} else {
+			result = Long.compare(arg0.getMaxDuration(), arg1.getMaxDuration());
 		}
-		return result;
 
+		return result;
 	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMinDurationComparator.java b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMinDurationComparator.java
index bd94cb8af2e8941e991bbbe6a263b1b3d0fb7c14..c5cdff3b9941ff5ee48fcbb86e70a7f8cdb8dc22 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMinDurationComparator.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionMinDurationComparator.java
@@ -23,14 +23,19 @@ import org.eclipse.swt.SWT;
 
 public class AggregatedExecutionMinDurationComparator extends AbstractDirectedComparator<AggregatedExecution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AggregatedExecution arg0, final AggregatedExecution arg1) {
-		int result = Long.compare(arg0.getMinDuration(), arg1.getMinDuration());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getMinDuration(), arg0.getMinDuration());
+		} else {
+			result = Long.compare(arg0.getMinDuration(), arg1.getMinDuration());
 		}
-		return result;
 
+		return result;
 	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionTotalDurationComparator.java b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionTotalDurationComparator.java
index b9c46911f81a573e2c79e6b0781163d627caf988..11ff7ef3fd550c6629a3ebbdb72d183d1443abcb 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionTotalDurationComparator.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/util/AggregatedExecutionTotalDurationComparator.java
@@ -7,14 +7,19 @@ import org.eclipse.swt.SWT;
 
 public class AggregatedExecutionTotalDurationComparator extends AbstractDirectedComparator<AggregatedExecution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AggregatedExecution arg0, final AggregatedExecution arg1) {
-		int result = Long.compare(arg0.getTotalDuration(), arg1.getTotalDuration());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getTotalDuration(), arg0.getTotalDuration());
+		} else {
+			result = Long.compare(arg0.getTotalDuration(), arg1.getTotalDuration());
 		}
-		return result;
 
+		return result;
 	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/traces/util/ExecutionDurationComparator.java b/src/main/java/kieker/gui/subview/traces/util/ExecutionDurationComparator.java
index 475ced2aa3b196fa77b9cf76295131882eb576a8..77e5379ff23b6e86cb90e1e1c15a7193bffa7282 100644
--- a/src/main/java/kieker/gui/subview/traces/util/ExecutionDurationComparator.java
+++ b/src/main/java/kieker/gui/subview/traces/util/ExecutionDurationComparator.java
@@ -23,12 +23,18 @@ import org.eclipse.swt.SWT;
 
 public class ExecutionDurationComparator extends AbstractDirectedComparator<Execution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final Execution arg0, final Execution arg1) {
-		int result = Long.compare(arg0.getDuration(), arg1.getDuration());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getTraceID(), arg0.getTraceID());
+		} else {
+			result = Long.compare(arg0.getTraceID(), arg1.getTraceID());
 		}
+
 		return result;
 
 	}
diff --git a/src/main/java/kieker/gui/subview/traces/util/ExecutionTraceIDComparator.java b/src/main/java/kieker/gui/subview/traces/util/ExecutionTraceIDComparator.java
index cc2c156413c91c19c7a74eee8634aa22546744c4..a8e459f7972960c30344da4c59f939af84cd754a 100644
--- a/src/main/java/kieker/gui/subview/traces/util/ExecutionTraceIDComparator.java
+++ b/src/main/java/kieker/gui/subview/traces/util/ExecutionTraceIDComparator.java
@@ -23,14 +23,19 @@ import org.eclipse.swt.SWT;
 
 public class ExecutionTraceIDComparator extends AbstractDirectedComparator<Execution> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final Execution arg0, final Execution arg1) {
-		int result = Long.compare(arg0.getTraceID(), arg1.getTraceID());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = Long.compare(arg1.getTraceID(), arg0.getTraceID());
+		} else {
+			result = Long.compare(arg0.getTraceID(), arg1.getTraceID());
 		}
-		return result;
 
+		return result;
 	}
 
 }
diff --git a/src/main/java/kieker/gui/subview/util/AbstractDirectedComparator.java b/src/main/java/kieker/gui/subview/util/AbstractDirectedComparator.java
index 02749c579681594348f77256362c84d0d491f5a9..c16c195c4c257477b2cb5c1c6172e742575b6396 100644
--- a/src/main/java/kieker/gui/subview/util/AbstractDirectedComparator.java
+++ b/src/main/java/kieker/gui/subview/util/AbstractDirectedComparator.java
@@ -16,9 +16,12 @@
 
 package kieker.gui.subview.util;
 
+import java.io.Serializable;
 import java.util.Comparator;
 
-public abstract class AbstractDirectedComparator<T> implements Comparator<T> {
+public abstract class AbstractDirectedComparator<T> implements Comparator<T>, Serializable {
+
+	private static final long serialVersionUID = 1L;
 
 	private int direction;
 
diff --git a/src/main/java/kieker/gui/subview/util/ExecutionComponentComparator.java b/src/main/java/kieker/gui/subview/util/ExecutionComponentComparator.java
index 0b77c6ee8a8813ebffb8cea205de6cf210d2f617..3e84a7decacac77c51407e7ef0bcd6127d22772e 100644
--- a/src/main/java/kieker/gui/subview/util/ExecutionComponentComparator.java
+++ b/src/main/java/kieker/gui/subview/util/ExecutionComponentComparator.java
@@ -22,12 +22,18 @@ import org.eclipse.swt.SWT;
 
 public class ExecutionComponentComparator extends AbstractDirectedComparator<AbstractExecution<?>> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AbstractExecution<?> fst, final AbstractExecution<?> snd) {
-		int result = fst.getComponent().compareTo(snd.getComponent());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = snd.getComponent().compareTo(fst.getComponent());
+		} else {
+			result = fst.getComponent().compareTo(snd.getComponent());
 		}
+
 		return result;
 	}
 
diff --git a/src/main/java/kieker/gui/subview/util/ExecutionContainerComparator.java b/src/main/java/kieker/gui/subview/util/ExecutionContainerComparator.java
index 10e1a0492fdf0ac8096327a84edb1c4b0a4c3cee..25950ef044159d37039ffc6cdab8c4b4b4352a51 100644
--- a/src/main/java/kieker/gui/subview/util/ExecutionContainerComparator.java
+++ b/src/main/java/kieker/gui/subview/util/ExecutionContainerComparator.java
@@ -22,12 +22,18 @@ import org.eclipse.swt.SWT;
 
 public class ExecutionContainerComparator extends AbstractDirectedComparator<AbstractExecution<?>> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AbstractExecution<?> fst, final AbstractExecution<?> snd) {
-		int result = fst.getContainer().compareTo(snd.getContainer());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = snd.getComponent().compareTo(fst.getComponent());
+		} else {
+			result = fst.getComponent().compareTo(snd.getComponent());
 		}
+
 		return result;
 	}
 
diff --git a/src/main/java/kieker/gui/subview/util/ExecutionOperationComparator.java b/src/main/java/kieker/gui/subview/util/ExecutionOperationComparator.java
index 72b27604200dad033ee377a2277154db5861a978..16e039f01c25c1c3c4ca2c4bd31223f380cba27d 100644
--- a/src/main/java/kieker/gui/subview/util/ExecutionOperationComparator.java
+++ b/src/main/java/kieker/gui/subview/util/ExecutionOperationComparator.java
@@ -22,12 +22,18 @@ import org.eclipse.swt.SWT;
 
 public class ExecutionOperationComparator extends AbstractDirectedComparator<AbstractExecution<?>> {
 
+	private static final long serialVersionUID = 1L;
+
 	@Override
 	public int compare(final AbstractExecution<?> fst, final AbstractExecution<?> snd) {
-		int result = fst.getOperation().compareTo(snd.getOperation());
+		int result;
+
 		if (this.getDirection() == SWT.UP) {
-			result = -result;
+			result = snd.getComponent().compareTo(fst.getComponent());
+		} else {
+			result = fst.getComponent().compareTo(snd.getComponent());
 		}
+
 		return result;
 	}