diff --git a/src/main/java/kieker/gui/Main.java b/src/main/java/kieker/gui/Main.java
index 48048b687e969a295790f9bab327581af1b20112..3600738d11f59f99d05dba3ab00138a4499681b9 100644
--- a/src/main/java/kieker/gui/Main.java
+++ b/src/main/java/kieker/gui/Main.java
@@ -23,11 +23,11 @@ import kieker.gui.mainview.Controller;
  *
  * @author Nils Christian Ehmke
  */
-public class Main {
+public final class Main {
 
 	/**
 	 * The main method of this application.
-	 * 
+	 *
 	 * @param args
 	 *            The command line arguments. They have no effect.
 	 */
diff --git a/src/main/java/kieker/gui/common/model/DataModel.java b/src/main/java/kieker/gui/common/model/DataModel.java
index 152c4cabfa15def3ce12a9266c6d154a4a65dc86..770c7356f56fbac45a9f9b0909e055d00acd67db 100644
--- a/src/main/java/kieker/gui/common/model/DataModel.java
+++ b/src/main/java/kieker/gui/common/model/DataModel.java
@@ -27,7 +27,7 @@ import kieker.common.record.misc.KiekerMetadataRecord;
 import kieker.gui.common.domain.AggregatedExecution;
 import kieker.gui.common.domain.Execution;
 import kieker.gui.common.domain.Record;
-import kieker.gui.common.importer.ImportAnalysisConfiguration;
+import kieker.gui.common.model.importer.ImportAnalysisConfiguration;
 import teetime.framework.Analysis;
 
 /**
diff --git a/src/main/java/kieker/gui/common/importer/ImportAnalysisConfiguration.java b/src/main/java/kieker/gui/common/model/importer/ImportAnalysisConfiguration.java
similarity index 93%
rename from src/main/java/kieker/gui/common/importer/ImportAnalysisConfiguration.java
rename to src/main/java/kieker/gui/common/model/importer/ImportAnalysisConfiguration.java
index 92e0aa22ecca09479d205ed21b54f5074ba97f92..35f0a6686975ae5b7ad0ceae0ef118ba6b01bb97 100644
--- a/src/main/java/kieker/gui/common/importer/ImportAnalysisConfiguration.java
+++ b/src/main/java/kieker/gui/common/model/importer/ImportAnalysisConfiguration.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer;
+package kieker.gui.common.model.importer;
 
 import java.io.File;
 import java.util.List;
@@ -26,13 +26,13 @@ import kieker.common.record.misc.KiekerMetadataRecord;
 import kieker.gui.common.domain.AggregatedExecution;
 import kieker.gui.common.domain.Execution;
 import kieker.gui.common.domain.Record;
-import kieker.gui.common.importer.stages.FailedAggregatedTraceFilter;
-import kieker.gui.common.importer.stages.FailedTraceFilter;
-import kieker.gui.common.importer.stages.FailureContainingAggregatedTraceFilter;
-import kieker.gui.common.importer.stages.FailureContainingTraceFilter;
-import kieker.gui.common.importer.stages.RecordSimplificator;
-import kieker.gui.common.importer.stages.TraceAggregator;
-import kieker.gui.common.importer.stages.TraceReconstructor;
+import kieker.gui.common.model.importer.stages.FailedAggregatedTraceFilter;
+import kieker.gui.common.model.importer.stages.FailedTraceFilter;
+import kieker.gui.common.model.importer.stages.FailureContainingAggregatedTraceFilter;
+import kieker.gui.common.model.importer.stages.FailureContainingTraceFilter;
+import kieker.gui.common.model.importer.stages.RecordSimplificator;
+import kieker.gui.common.model.importer.stages.TraceAggregator;
+import kieker.gui.common.model.importer.stages.TraceReconstructor;
 import teetime.framework.AnalysisConfiguration;
 import teetime.framework.pipe.IPipeFactory;
 import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
diff --git a/src/main/java/kieker/gui/common/importer/stages/FailedAggregatedTraceFilter.java b/src/main/java/kieker/gui/common/model/importer/stages/FailedAggregatedTraceFilter.java
similarity index 96%
rename from src/main/java/kieker/gui/common/importer/stages/FailedAggregatedTraceFilter.java
rename to src/main/java/kieker/gui/common/model/importer/stages/FailedAggregatedTraceFilter.java
index c8958943fb418cfd2997cbfcacd55a2bef7dd047..f02d0976ab59f850a637c69e6d61406ce493cb57 100644
--- a/src/main/java/kieker/gui/common/importer/stages/FailedAggregatedTraceFilter.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/FailedAggregatedTraceFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import kieker.gui.common.domain.AggregatedExecution;
 import teetime.framework.AbstractConsumerStage;
diff --git a/src/main/java/kieker/gui/common/importer/stages/FailedTraceFilter.java b/src/main/java/kieker/gui/common/model/importer/stages/FailedTraceFilter.java
similarity index 96%
rename from src/main/java/kieker/gui/common/importer/stages/FailedTraceFilter.java
rename to src/main/java/kieker/gui/common/model/importer/stages/FailedTraceFilter.java
index a40391829fbd444b6b44ffd49aa7574998d20612..11e3d189727622906d2d6708d58ac50752eef002 100644
--- a/src/main/java/kieker/gui/common/importer/stages/FailedTraceFilter.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/FailedTraceFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import kieker.gui.common.domain.Execution;
 import teetime.framework.AbstractConsumerStage;
diff --git a/src/main/java/kieker/gui/common/importer/stages/FailureContainingAggregatedTraceFilter.java b/src/main/java/kieker/gui/common/model/importer/stages/FailureContainingAggregatedTraceFilter.java
similarity index 96%
rename from src/main/java/kieker/gui/common/importer/stages/FailureContainingAggregatedTraceFilter.java
rename to src/main/java/kieker/gui/common/model/importer/stages/FailureContainingAggregatedTraceFilter.java
index 352d4cb2c3b0686876da55f834bc2c1521b2df16..9bdf795935fdfb1ced5229e57e30cc3abe002ec6 100644
--- a/src/main/java/kieker/gui/common/importer/stages/FailureContainingAggregatedTraceFilter.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/FailureContainingAggregatedTraceFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import kieker.gui.common.domain.AggregatedExecution;
 import teetime.framework.AbstractConsumerStage;
diff --git a/src/main/java/kieker/gui/common/importer/stages/FailureContainingTraceFilter.java b/src/main/java/kieker/gui/common/model/importer/stages/FailureContainingTraceFilter.java
similarity index 96%
rename from src/main/java/kieker/gui/common/importer/stages/FailureContainingTraceFilter.java
rename to src/main/java/kieker/gui/common/model/importer/stages/FailureContainingTraceFilter.java
index 6ce1c1beac0397836a48a243458006623c4faaf3..5b71e3f3bf3cf9fcfef02b81d264050d9908e122 100644
--- a/src/main/java/kieker/gui/common/importer/stages/FailureContainingTraceFilter.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/FailureContainingTraceFilter.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import kieker.gui.common.domain.Execution;
 import teetime.framework.AbstractConsumerStage;
diff --git a/src/main/java/kieker/gui/common/importer/stages/RecordSimplificator.java b/src/main/java/kieker/gui/common/model/importer/stages/RecordSimplificator.java
similarity index 97%
rename from src/main/java/kieker/gui/common/importer/stages/RecordSimplificator.java
rename to src/main/java/kieker/gui/common/model/importer/stages/RecordSimplificator.java
index 8a455e8667aa337e2c563afcd65a10f58f04e882..644a82c5cb149b2b52b1f587ad7db50c79d4fae8 100644
--- a/src/main/java/kieker/gui/common/importer/stages/RecordSimplificator.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/RecordSimplificator.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import kieker.common.record.IMonitoringRecord;
 import kieker.gui.common.domain.Record;
diff --git a/src/main/java/kieker/gui/common/importer/stages/TraceAggregator.java b/src/main/java/kieker/gui/common/model/importer/stages/TraceAggregator.java
similarity index 97%
rename from src/main/java/kieker/gui/common/importer/stages/TraceAggregator.java
rename to src/main/java/kieker/gui/common/model/importer/stages/TraceAggregator.java
index 15f9462743705f1e607b763e71ce230b7907d73b..652e56a385542660abaa72afd34e2cc91f0e8401 100644
--- a/src/main/java/kieker/gui/common/importer/stages/TraceAggregator.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/TraceAggregator.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/kieker/gui/common/importer/stages/TraceReconstructor.java b/src/main/java/kieker/gui/common/model/importer/stages/TraceReconstructor.java
similarity index 98%
rename from src/main/java/kieker/gui/common/importer/stages/TraceReconstructor.java
rename to src/main/java/kieker/gui/common/model/importer/stages/TraceReconstructor.java
index b2c1a5a7f3e54f4cfcc024b8b13512741ead54cc..7bb687b931201757d08127de972cbc4d16f945a6 100644
--- a/src/main/java/kieker/gui/common/importer/stages/TraceReconstructor.java
+++ b/src/main/java/kieker/gui/common/model/importer/stages/TraceReconstructor.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import java.util.Deque;
 import java.util.HashMap;
diff --git a/src/main/java/kieker/gui/mainview/Controller.java b/src/main/java/kieker/gui/mainview/Controller.java
index 0026df57effe5b28a298f771e0ba60b8509f712a..c279e1bae8be304b5cfe4b94c46c27b364709cd6 100644
--- a/src/main/java/kieker/gui/mainview/Controller.java
+++ b/src/main/java/kieker/gui/mainview/Controller.java
@@ -23,6 +23,8 @@ import kieker.gui.common.model.DataModel;
 import kieker.gui.common.model.PropertiesModel;
 import kieker.gui.subview.ISubController;
 import kieker.gui.subview.ISubView;
+import kieker.gui.subview.aggregatedtraces.Controller.Filter;
+import kieker.gui.subview.traces.Controller.Type;
 
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -47,12 +49,12 @@ public final class Controller implements SelectionListener {
 
 		// Create the sub-controllers
 		final ISubController subViewController1 = new kieker.gui.subview.records.Controller(this.dataModel);
-		final ISubController subViewController2 = new kieker.gui.subview.aggregatedtraces.Controller(this.dataModel, this.propertiesModel);
-		final ISubController subViewController3 = new kieker.gui.subview.traces.FailedController(this.dataModel, this.propertiesModel);
-		final ISubController subViewController4 = new kieker.gui.subview.traces.Controller(this.dataModel, this.propertiesModel);
-		final ISubController subViewController5 = new kieker.gui.subview.traces.FailureController(this.dataModel, this.propertiesModel);
-		final ISubController subViewController6 = new kieker.gui.subview.aggregatedtraces.FailedController(this.dataModel, this.propertiesModel);
-		final ISubController subViewController7 = new kieker.gui.subview.aggregatedtraces.FailureController(this.dataModel, this.propertiesModel);
+		final ISubController subViewController2 = new kieker.gui.subview.aggregatedtraces.Controller(Filter.NONE, this.dataModel, this.propertiesModel);
+		final ISubController subViewController3 = new kieker.gui.subview.traces.Controller(Type.JUST_FAILED_TRACES, this.dataModel, this.propertiesModel);
+		final ISubController subViewController4 = new kieker.gui.subview.traces.Controller(Type.NONE, this.dataModel, this.propertiesModel);
+		final ISubController subViewController5 = new kieker.gui.subview.traces.Controller(Type.JUST_FAILURE_CONTAINING_TRACES, this.dataModel, this.propertiesModel);
+		final ISubController subViewController6 = new kieker.gui.subview.aggregatedtraces.Controller(Filter.JUST_FAILED_TRACES, this.dataModel, this.propertiesModel);
+		final ISubController subViewController7 = new kieker.gui.subview.aggregatedtraces.Controller(Filter.JUST_FAILURE_CONTAINING_TRACES, this.dataModel, this.propertiesModel);
 
 		// Get the sub-views from the controllers
 		final Map<String, ISubView> subViews = new HashMap<>();
diff --git a/src/main/java/kieker/gui/mainview/Model.java b/src/main/java/kieker/gui/mainview/Model.java
index a3d5a3485d599cc111ee5e580aae2d41bf0142a1..bd5bdceea18d5c46836d252df2ceffcf4c44c557 100644
--- a/src/main/java/kieker/gui/mainview/Model.java
+++ b/src/main/java/kieker/gui/mainview/Model.java
@@ -18,9 +18,14 @@ package kieker.gui.mainview;
 
 import java.util.Observable;
 
+/**
+ * The model of the main view.
+ *
+ * @author Nils Christian Ehmke
+ */
 public final class Model extends Observable {
 
-	private String currentActiveSubViewKey = "";
+	private String currentActiveSubViewKey;
 
 	public String getCurrentActiveSubViewKey() {
 		return this.currentActiveSubViewKey;
diff --git a/src/main/java/kieker/gui/mainview/View.java b/src/main/java/kieker/gui/mainview/View.java
index 13e09a6e489160ee4544dfcfdad33a23562e9538..9e4ba0a2efc3c2ba603d5c82809d179a51c9705a 100644
--- a/src/main/java/kieker/gui/mainview/View.java
+++ b/src/main/java/kieker/gui/mainview/View.java
@@ -36,7 +36,12 @@ import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.swt.widgets.TreeItem;
 
-public class View implements Observer {
+/**
+ * The main view of the application. For the most part it uses sub-views to show data.
+ *
+ * @author Nils Christian Ehmke
+ */
+public final class View implements Observer {
 
 	private final DataModel dataModel;
 	private final Model mainViewModel;
@@ -46,20 +51,22 @@ public class View implements Observer {
 	private Shell shell;
 	private Composite subViewComposite;
 	private StackLayout subViewLayout;
-	private Tree tree;
-	private TreeItem trtmExplorer;
-	private TreeItem trtmRecords;
-	private TreeItem trtmTraces;
+
+	private DirectoryDialog dialog;
+
 	private MenuItem mntmExit;
 	private MenuItem mntmShortOperationNames;
 	private MenuItem mntmLongOperationNames;
 	private MenuItem mntmShortComponentNames;
 	private MenuItem mntmLongComponentNames;
 	private MenuItem mntmOpenMonitoringLog;
-	private DirectoryDialog dialog;
+
+	private Tree tree;
+	private TreeItem trtmExplorer;
+	private TreeItem trtmRecords;
+	private TreeItem trtmTraces;
 	private TreeItem trtmAggregatedTraces;
 	private TreeItem trtmJustFailedTraces;
-
 	private TreeItem trtmJustTracesContaining;
 	private TreeItem trtmJustFailedAggTraces;
 	private TreeItem trtmJustAggTracesContaining;
diff --git a/src/main/java/kieker/gui/subview/ISubController.java b/src/main/java/kieker/gui/subview/ISubController.java
index f5d511940fc346221d09b7b614c34f040a1d1e5f..a59d5b16579e17cd7f68f7c3266f25275c7a5789 100644
--- a/src/main/java/kieker/gui/subview/ISubController.java
+++ b/src/main/java/kieker/gui/subview/ISubController.java
@@ -16,7 +16,6 @@
 
 package kieker.gui.subview;
 
-
 /**
  * A commons interface for all sub-controllers to reduce dependencies.
  *
diff --git a/src/main/java/kieker/gui/subview/ISubView.java b/src/main/java/kieker/gui/subview/ISubView.java
index f396224881340f4d06bc7b905c7b034648932e75..982b393beab0a334c4dfa68685666fe7040aab50 100644
--- a/src/main/java/kieker/gui/subview/ISubView.java
+++ b/src/main/java/kieker/gui/subview/ISubView.java
@@ -18,6 +18,11 @@ package kieker.gui.subview;
 
 import org.eclipse.swt.widgets.Composite;
 
+/**
+ * An interface for classes representing sub-views within the main view.
+ *
+ * @author Nils Christian Ehmke
+ */
 public interface ISubView {
 
 	public void createComposite(final Composite parent);
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/AbstractController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/AbstractController.java
deleted file mode 100644
index cd0eab526e4848ed1244fde2976c414fc5e0fa33..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/AbstractController.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package kieker.gui.subview.aggregatedtraces;
-
-import kieker.gui.common.domain.AggregatedExecution;
-import kieker.gui.common.model.DataModel;
-import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.subview.ISubController;
-import kieker.gui.subview.ISubView;
-import kieker.gui.subview.util.IModel;
-
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-
-public abstract class AbstractController implements ISubController, SelectionListener {
-
-	private final ISubView view;
-	private final Model model;
-
-	public AbstractController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		final IModel<AggregatedExecution> modelProxy = this.createModelProxy(dataModel);
-		this.model = new Model();
-
-		this.view = new View(modelProxy, this.model, propertiesModel, this);
-	}
-
-	@Override
-	public ISubView getView() {
-		return this.view;
-	}
-
-	@Override
-	public void widgetSelected(final SelectionEvent e) {
-		if (e.item.getData() instanceof AggregatedExecution) {
-			this.model.setCurrentActiveTrace((AggregatedExecution) e.item.getData());
-		}
-	}
-
-	@Override
-	public void widgetDefaultSelected(final SelectionEvent e) {}
-
-	protected abstract IModel<AggregatedExecution> createModelProxy(final DataModel dataModel);
-
-}
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/Controller.java b/src/main/java/kieker/gui/subview/aggregatedtraces/Controller.java
index 8a0f312f92cba519a5fec2a3b788d7ac8acd2d17..7a60deae0ee4255eac41f12a2fdef64d8eaad98e 100644
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/Controller.java
+++ b/src/main/java/kieker/gui/subview/aggregatedtraces/Controller.java
@@ -1,19 +1,3 @@
-/***************************************************************************
- * 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 kieker.gui.subview.aggregatedtraces;
 
 import java.util.List;
@@ -21,33 +5,58 @@ import java.util.List;
 import kieker.gui.common.domain.AggregatedExecution;
 import kieker.gui.common.model.DataModel;
 import kieker.gui.common.model.PropertiesModel;
+import kieker.gui.subview.ISubController;
+import kieker.gui.subview.ISubView;
 import kieker.gui.subview.util.AbstractDataModelProxy;
 import kieker.gui.subview.util.IModel;
 
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+public class Controller implements ISubController, SelectionListener {
+
+	private final ISubView view;
+	private final Model model;
 
-/**
- * The sub-controller responsible for the sub-view presenting the available aggregated traces.
- *
- * @author Nils Christian Ehmke
- */
-public final class Controller extends AbstractController {
+	public Controller(final Filter filter, final DataModel dataModel, final PropertiesModel propertiesModel) {
+		final IModel<AggregatedExecution> modelProxy = createModelProxy(dataModel, filter);
+		this.model = new Model();
 
-	public Controller(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		super(dataModel, propertiesModel);
+		this.view = new View(modelProxy, this.model, propertiesModel, this);
 	}
 
 	@Override
-	protected IModel<AggregatedExecution> createModelProxy(final DataModel dataModel) {
-		return new ModelProxy(dataModel);
+	public ISubView getView() {
+		return this.view;
+	}
+
+	@Override
+	public void widgetSelected(final SelectionEvent e) {
+		if (e.item.getData() instanceof AggregatedExecution) {
+			this.model.setCurrentActiveTrace((AggregatedExecution) e.item.getData());
+		}
 	}
 
 	@Override
 	public void widgetDefaultSelected(final SelectionEvent e) {}
 
-	private final class ModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
+	private static IModel<AggregatedExecution> createModelProxy(final DataModel dataModel, final Filter filter) {
+		if (filter == Filter.JUST_FAILED_TRACES) {
+			return new FailedTracesModelProxy(dataModel);
+		}
+		if (filter == Filter.JUST_FAILURE_CONTAINING_TRACES) {
+			return new FailureContainingTracesModelProxy(dataModel);
+		}
+		return new TracesModelProxy(dataModel);
+	}
+
+	public enum Filter {
+		NONE, JUST_FAILED_TRACES, JUST_FAILURE_CONTAINING_TRACES
+	}
+
+	private static final class TracesModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
 
-		private ModelProxy(final DataModel dataModel) {
+		private TracesModelProxy(final DataModel dataModel) {
 			super(dataModel);
 		}
 
@@ -58,4 +67,30 @@ public final class Controller extends AbstractController {
 
 	}
 
+	private static final class FailedTracesModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
+
+		private FailedTracesModelProxy(final DataModel dataModel) {
+			super(dataModel);
+		}
+
+		@Override
+		public List<AggregatedExecution> getContent() {
+			return super.dataModel.getFailedAggregatedTracesCopy();
+		}
+
+	}
+
+	private static final class FailureContainingTracesModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
+
+		private FailureContainingTracesModelProxy(final DataModel dataModel) {
+			super(dataModel);
+		}
+
+		@Override
+		public List<AggregatedExecution> getContent() {
+			return super.dataModel.getFailureContainingAggregatedTracesCopy();
+		}
+
+	}
+
 }
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/FailedController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/FailedController.java
deleted file mode 100644
index 2f55b7e6aba0632811d1b6430f7fe623ced92060..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/FailedController.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
- * 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 kieker.gui.subview.aggregatedtraces;
-
-import java.util.List;
-
-import kieker.gui.common.domain.AggregatedExecution;
-import kieker.gui.common.model.DataModel;
-import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.subview.util.AbstractDataModelProxy;
-import kieker.gui.subview.util.IModel;
-
-/**
- * The sub-controller responsible for the sub-view presenting the available aggregated traces.
- *
- * @author Nils Christian Ehmke
- */
-public final class FailedController extends AbstractController {
-
-	public FailedController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		super(dataModel, propertiesModel);
-	}
-
-	@Override
-	protected IModel<AggregatedExecution> createModelProxy(final DataModel dataModel) {
-		return new ModelProxy(dataModel);
-	}
-
-	private final class ModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
-
-		private ModelProxy(final DataModel dataModel) {
-			super(dataModel);
-		}
-
-		@Override
-		public List<AggregatedExecution> getContent() {
-			return super.dataModel.getFailedAggregatedTracesCopy();
-		}
-
-	}
-
-}
diff --git a/src/main/java/kieker/gui/subview/aggregatedtraces/FailureController.java b/src/main/java/kieker/gui/subview/aggregatedtraces/FailureController.java
deleted file mode 100644
index d4effffa9e8e09cb62bcc64ae10b0bee10b5c06c..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/gui/subview/aggregatedtraces/FailureController.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
- * 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 kieker.gui.subview.aggregatedtraces;
-
-import java.util.List;
-
-import kieker.gui.common.domain.AggregatedExecution;
-import kieker.gui.common.model.DataModel;
-import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.subview.util.AbstractDataModelProxy;
-import kieker.gui.subview.util.IModel;
-
-/**
- * The sub-controller responsible for the sub-view presenting the available aggregated traces.
- *
- * @author Nils Christian Ehmke
- */
-public final class FailureController extends AbstractController {
-
-	public FailureController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		super(dataModel, propertiesModel);
-	}
-
-	@Override
-	protected IModel<AggregatedExecution> createModelProxy(final DataModel dataModel) {
-		return new ModelProxy(dataModel);
-	}
-
-	private final class ModelProxy extends AbstractDataModelProxy<AggregatedExecution> {
-
-		private ModelProxy(final DataModel dataModel) {
-			super(dataModel);
-		}
-
-		@Override
-		public List<AggregatedExecution> getContent() {
-			return super.dataModel.getFailureContainingAggregatedTracesCopy();
-		}
-
-	}
-
-}
diff --git a/src/main/java/kieker/gui/subview/traces/AbstractController.java b/src/main/java/kieker/gui/subview/traces/AbstractController.java
deleted file mode 100644
index be95a30a39d11edd7237867cd1fbf3e18050d199..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/gui/subview/traces/AbstractController.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package kieker.gui.subview.traces;
-
-import kieker.gui.common.domain.Execution;
-import kieker.gui.common.model.DataModel;
-import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.subview.ISubController;
-import kieker.gui.subview.ISubView;
-import kieker.gui.subview.util.IModel;
-
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-
-public abstract class AbstractController implements ISubController, SelectionListener {
-
-	private final ISubView view;
-	private final Model model;
-
-	public AbstractController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		final IModel<Execution> modelProxy = this.createModelProxy(dataModel);
-		this.model = new Model();
-
-		this.view = new View(modelProxy, this.model, propertiesModel, this);
-	}
-
-	@Override
-	public ISubView getView() {
-		return this.view;
-	}
-
-	@Override
-	public void widgetSelected(final SelectionEvent e) {
-		if (e.item.getData() instanceof Execution) {
-			this.model.setCurrentActiveTrace((Execution) e.item.getData());
-		}
-	}
-
-	@Override
-	public void widgetDefaultSelected(final SelectionEvent e) {}
-
-	protected abstract IModel<Execution> createModelProxy(final DataModel dataModel);
-
-}
diff --git a/src/main/java/kieker/gui/subview/traces/Controller.java b/src/main/java/kieker/gui/subview/traces/Controller.java
index 6c6b76ba359b5e5ffd0f441e193e6ab3f396d251..022e275f67fc7ec10146231517bdb66b7bda2711 100644
--- a/src/main/java/kieker/gui/subview/traces/Controller.java
+++ b/src/main/java/kieker/gui/subview/traces/Controller.java
@@ -21,28 +21,63 @@ import java.util.List;
 import kieker.gui.common.domain.Execution;
 import kieker.gui.common.model.DataModel;
 import kieker.gui.common.model.PropertiesModel;
+import kieker.gui.subview.ISubController;
+import kieker.gui.subview.ISubView;
 import kieker.gui.subview.util.AbstractDataModelProxy;
 import kieker.gui.subview.util.IModel;
 
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
 /**
  * The sub-controller responsible for the sub-view presenting the available traces.
  *
  * @author Nils Christian Ehmke
  */
-public final class Controller extends AbstractController {
+public final class Controller implements ISubController, SelectionListener {
+
+	private final ISubView view;
+	private final Model model;
+
+	public Controller(final Type filter, final DataModel dataModel, final PropertiesModel propertiesModel) {
+		final IModel<Execution> modelProxy = createModelProxy(dataModel, filter);
+		this.model = new Model();
+
+		this.view = new View(modelProxy, this.model, propertiesModel, this);
+	}
 
-	public Controller(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		super(dataModel, propertiesModel);
+	@Override
+	public ISubView getView() {
+		return this.view;
+	}
+
+	@Override
+	public void widgetSelected(final SelectionEvent e) {
+		if (e.item.getData() instanceof Execution) {
+			this.model.setCurrentActiveTrace((Execution) e.item.getData());
+		}
 	}
 
 	@Override
-	protected IModel<Execution> createModelProxy(final DataModel dataModel) {
-		return new ModelProxy(dataModel);
+	public void widgetDefaultSelected(final SelectionEvent e) {}
+
+	private static IModel<Execution> createModelProxy(final DataModel dataModel, final Type filter) {
+		if (filter == Type.JUST_FAILED_TRACES) {
+			return new FailedTracesModelProxy(dataModel);
+		}
+		if (filter == Type.JUST_FAILURE_CONTAINING_TRACES) {
+			return new FailureContainingTracesModelProxy(dataModel);
+		}
+		return new TracesModelProxy(dataModel);
 	}
 
-	private final class ModelProxy extends AbstractDataModelProxy<Execution> {
+	public enum Type {
+		NONE, JUST_FAILED_TRACES, JUST_FAILURE_CONTAINING_TRACES
+	}
 
-		private ModelProxy(final DataModel dataModel) {
+	private static final class TracesModelProxy extends AbstractDataModelProxy<Execution> {
+
+		private TracesModelProxy(final DataModel dataModel) {
 			super(dataModel);
 		}
 
@@ -53,4 +88,30 @@ public final class Controller extends AbstractController {
 
 	}
 
+	private static final class FailedTracesModelProxy extends AbstractDataModelProxy<Execution> {
+
+		private FailedTracesModelProxy(final DataModel dataModel) {
+			super(dataModel);
+		}
+
+		@Override
+		public List<Execution> getContent() {
+			return super.dataModel.getFailedTracesCopy();
+		}
+
+	}
+
+	private static final class FailureContainingTracesModelProxy extends AbstractDataModelProxy<Execution> {
+
+		private FailureContainingTracesModelProxy(final DataModel dataModel) {
+			super(dataModel);
+		}
+
+		@Override
+		public List<Execution> getContent() {
+			return super.dataModel.getFailureContainingTracesCopy();
+		}
+
+	}
+
 }
diff --git a/src/main/java/kieker/gui/subview/traces/FailedController.java b/src/main/java/kieker/gui/subview/traces/FailedController.java
deleted file mode 100644
index 4bd6798c050dc2173171ddc7e1226fa8478f25be..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/gui/subview/traces/FailedController.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
- * 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 kieker.gui.subview.traces;
-
-import java.util.List;
-
-import kieker.gui.common.domain.Execution;
-import kieker.gui.common.model.DataModel;
-import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.subview.util.AbstractDataModelProxy;
-import kieker.gui.subview.util.IModel;
-
-/**
- * The sub-controller responsible for the sub-view presenting the available failed traces.
- *
- * @author Nils Christian Ehmke
- */
-public final class FailedController extends AbstractController {
-
-	public FailedController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		super(dataModel, propertiesModel);
-	}
-
-	@Override
-	protected IModel<Execution> createModelProxy(final DataModel dataModel) {
-		return new ModelProxy(dataModel);
-	}
-
-	private final class ModelProxy extends AbstractDataModelProxy<Execution> {
-
-		private ModelProxy(final DataModel dataModel) {
-			super(dataModel);
-		}
-
-		@Override
-		public List<Execution> getContent() {
-			return super.dataModel.getFailedTracesCopy();
-		}
-
-	}
-
-}
diff --git a/src/main/java/kieker/gui/subview/traces/FailureController.java b/src/main/java/kieker/gui/subview/traces/FailureController.java
deleted file mode 100644
index 2864ac4b1b96381815169c8c1c436a64c26a802e..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/gui/subview/traces/FailureController.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/***************************************************************************
- * 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 kieker.gui.subview.traces;
-
-import java.util.List;
-
-import kieker.gui.common.domain.Execution;
-import kieker.gui.common.model.DataModel;
-import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.subview.util.AbstractDataModelProxy;
-import kieker.gui.subview.util.IModel;
-
-/**
- * The sub-controller responsible for the sub-view presenting the available failure-containing traces.
- *
- * @author Nils Christian Ehmke
- */
-public final class FailureController extends AbstractController {
-
-	public FailureController(final DataModel dataModel, final PropertiesModel propertiesModel) {
-		super(dataModel, propertiesModel);
-	}
-
-	@Override
-	protected IModel<Execution> createModelProxy(final DataModel dataModel) {
-		return new ModelProxy(dataModel);
-	}
-
-	private final class ModelProxy extends AbstractDataModelProxy<Execution> {
-
-		private ModelProxy(final DataModel dataModel) {
-			super(dataModel);
-		}
-
-		@Override
-		public List<Execution> getContent() {
-			return super.dataModel.getFailureContainingTracesCopy();
-		}
-
-	}
-
-}
diff --git a/src/test/java/kieker/gui/common/importer/stages/RecordSimplificatorTest.java b/src/test/java/kieker/gui/common/model/importer/stages/RecordSimplificatorTest.java
similarity index 93%
rename from src/test/java/kieker/gui/common/importer/stages/RecordSimplificatorTest.java
rename to src/test/java/kieker/gui/common/model/importer/stages/RecordSimplificatorTest.java
index 3fac242aa3db57047cbbf57e945555d56979a71a..168168886a070651b5f2ae63ad4f313da9d86981 100644
--- a/src/test/java/kieker/gui/common/importer/stages/RecordSimplificatorTest.java
+++ b/src/test/java/kieker/gui/common/model/importer/stages/RecordSimplificatorTest.java
@@ -1,4 +1,4 @@
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
@@ -9,7 +9,7 @@ import java.util.List;
 
 import kieker.common.record.flow.trace.operation.BeforeOperationEvent;
 import kieker.gui.common.domain.Record;
-import kieker.gui.common.importer.stages.RecordSimplificator;
+import kieker.gui.common.model.importer.stages.RecordSimplificator;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/src/test/java/kieker/gui/common/importer/stages/TraceReconstructorTest.java b/src/test/java/kieker/gui/common/model/importer/stages/TraceReconstructorTest.java
similarity index 98%
rename from src/test/java/kieker/gui/common/importer/stages/TraceReconstructorTest.java
rename to src/test/java/kieker/gui/common/model/importer/stages/TraceReconstructorTest.java
index c344c0d5f0e9bf406021e17c4fb877676aee950f..cd3a13f97d5aaba8d032e454203a1d223cac4c19 100644
--- a/src/test/java/kieker/gui/common/importer/stages/TraceReconstructorTest.java
+++ b/src/test/java/kieker/gui/common/model/importer/stages/TraceReconstructorTest.java
@@ -1,4 +1,4 @@
-package kieker.gui.common.importer.stages;
+package kieker.gui.common.model.importer.stages;
 
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
@@ -13,7 +13,7 @@ import kieker.common.record.flow.trace.operation.AfterOperationEvent;
 import kieker.common.record.flow.trace.operation.AfterOperationFailedEvent;
 import kieker.common.record.flow.trace.operation.BeforeOperationEvent;
 import kieker.gui.common.domain.Execution;
-import kieker.gui.common.importer.stages.TraceReconstructor;
+import kieker.gui.common.model.importer.stages.TraceReconstructor;
 
 import org.junit.Before;
 import org.junit.Test;