diff --git a/src/main/java/kieker/gui/mainview/Controller.java b/src/main/java/kieker/gui/mainview/Controller.java
index 0b0a927983a1985a96e6c1917cfa392b3d4a0a06..0026df57effe5b28a298f771e0ba60b8509f712a 100644
--- a/src/main/java/kieker/gui/mainview/Controller.java
+++ b/src/main/java/kieker/gui/mainview/Controller.java
@@ -16,9 +16,11 @@
 
 package kieker.gui.mainview;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import kieker.gui.common.model.DataModel;
 import kieker.gui.common.model.PropertiesModel;
-import kieker.gui.mainview.Model.SubView;
 import kieker.gui.subview.ISubController;
 import kieker.gui.subview.ISubView;
 
@@ -53,17 +55,18 @@ public final class Controller implements SelectionListener {
 		final ISubController subViewController7 = new kieker.gui.subview.aggregatedtraces.FailureController(this.dataModel, this.propertiesModel);
 
 		// Get the sub-views from the controllers
-		final ISubView subView1 = subViewController1.getView();
-		final ISubView subView2 = subViewController2.getView();
-		final ISubView subView3 = subViewController3.getView();
-		final ISubView subView4 = subViewController4.getView();
-		final ISubView subView5 = subViewController5.getView();
-		final ISubView subView6 = subViewController6.getView();
-		final ISubView subView7 = subViewController7.getView();
+		final Map<String, ISubView> subViews = new HashMap<>();
+		subViews.put(SubView.RECORDS_SUB_VIEW.name(), subViewController1.getView());
+		subViews.put(SubView.AGGREGATED_TRACES_SUB_VIEW.name(), subViewController2.getView());
+		subViews.put(SubView.FAILED_TRACES_SUB_VIEW.name(), subViewController3.getView());
+		subViews.put(SubView.TRACES_SUB_VIEW.name(), subViewController4.getView());
+		subViews.put(SubView.FAILURE_CONTAINING_TRACES_SUB_VIEW.name(), subViewController5.getView());
+		subViews.put(SubView.FAILED_AGGREGATED_TRACES_SUB_VIEW.name(), subViewController6.getView());
+		subViews.put(SubView.FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW.name(), subViewController7.getView());
 
 		// Create the main model and the main view
 		this.mainViewModel = new Model();
-		this.mainView = new View(this.dataModel, this.mainViewModel, this, subView1, subView2, subView3, subView4, subView5, subView6, subView7);
+		this.mainView = new View(this.dataModel, this.mainViewModel, this, subViews);
 	}
 
 	public void showView() {
@@ -108,28 +111,28 @@ public final class Controller implements SelectionListener {
 
 	private void handlePotentialTreeSelection(final SelectionEvent e) {
 		if (e.item == this.mainView.getTrtmExplorer()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.NONE);
+			this.mainViewModel.setCurrentActiveSubView(SubView.NONE.name());
 		}
 		if (e.item == this.mainView.getTrtmRecords()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.RECORDS_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.RECORDS_SUB_VIEW.name());
 		}
 		if (e.item == this.mainView.getTrtmTraces()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.TRACES_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.TRACES_SUB_VIEW.name());
 		}
 		if (e.item == this.mainView.getTrtmAggregatedTraces()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.AGGREGATED_TRACES_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.AGGREGATED_TRACES_SUB_VIEW.name());
 		}
 		if (e.item == this.mainView.getTrtmJustFailedTraces()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_TRACES_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_TRACES_SUB_VIEW.name());
 		}
 		if (e.item == this.mainView.getTrtmJustTracesContaining()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_TRACES_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_TRACES_SUB_VIEW.name());
 		}
 		if (e.item == this.mainView.getTrtmJustFailedAggTraces()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_AGGREGATED_TRACES_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.FAILED_AGGREGATED_TRACES_SUB_VIEW.name());
 		}
 		if (e.item == this.mainView.getTrtmJustAggTracesContaining()) {
-			this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW);
+			this.mainViewModel.setCurrentActiveSubView(SubView.FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW.name());
 		}
 	}
 
@@ -138,4 +141,8 @@ public final class Controller implements SelectionListener {
 		// Nothing to do here. This method is just required by the interface.
 	}
 
+	public enum SubView {
+		RECORDS_SUB_VIEW, TRACES_SUB_VIEW, FAILED_TRACES_SUB_VIEW, AGGREGATED_TRACES_SUB_VIEW, NONE, FAILURE_CONTAINING_TRACES_SUB_VIEW, FAILED_AGGREGATED_TRACES_SUB_VIEW, FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW
+	}
+
 }
diff --git a/src/main/java/kieker/gui/mainview/Model.java b/src/main/java/kieker/gui/mainview/Model.java
index 9d9751d0ce5b88a626a0ea9198921e2a673ac114..a3d5a3485d599cc111ee5e580aae2d41bf0142a1 100644
--- a/src/main/java/kieker/gui/mainview/Model.java
+++ b/src/main/java/kieker/gui/mainview/Model.java
@@ -20,21 +20,17 @@ import java.util.Observable;
 
 public final class Model extends Observable {
 
-	private SubView currentActiveSubView = SubView.NONE;
+	private String currentActiveSubViewKey = "";
 
-	public SubView getCurrentActiveSubView() {
-		return this.currentActiveSubView;
+	public String getCurrentActiveSubViewKey() {
+		return this.currentActiveSubViewKey;
 	}
 
-	public void setCurrentActiveSubView(final SubView currentActiveSubView) {
-		this.currentActiveSubView = currentActiveSubView;
+	public void setCurrentActiveSubView(final String currentActiveSubViewKey) {
+		this.currentActiveSubViewKey = currentActiveSubViewKey;
 
 		this.setChanged();
 		this.notifyObservers();
 	}
 
-	public enum SubView {
-		RECORDS_SUB_VIEW, TRACES_SUB_VIEW, FAILED_TRACES_SUB_VIEW, AGGREGATED_TRACES_SUB_VIEW, NONE, FAILURE_CONTAINING_TRACES_SUB_VIEW, FAILED_AGGREGATED_TRACES_SUB_VIEW, FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW
-	}
-
 }
diff --git a/src/main/java/kieker/gui/mainview/View.java b/src/main/java/kieker/gui/mainview/View.java
index b8aa552a0d8f35a6ddcab10ed683de601c8387dd..13e09a6e489160ee4544dfcfdad33a23562e9538 100644
--- a/src/main/java/kieker/gui/mainview/View.java
+++ b/src/main/java/kieker/gui/mainview/View.java
@@ -16,6 +16,7 @@
 
 package kieker.gui.mainview;
 
+import java.util.Map;
 import java.util.Observable;
 import java.util.Observer;
 
@@ -39,14 +40,8 @@ public class View implements Observer {
 
 	private final DataModel dataModel;
 	private final Model mainViewModel;
-	private final ISubView recordsSubView;
-	private final ISubView tracesSubView;
-	private final ISubView failedTracesSubView;
-	private final ISubView aggregatedTracesSubView;
-	private final ISubView failureContainingTracesSubView;
-	private final ISubView subView6;
-	private final ISubView subView7;
 	private final Controller controller;
+	private final Map<String, ISubView> subViews;
 
 	private Shell shell;
 	private Composite subViewComposite;
@@ -69,18 +64,10 @@ public class View implements Observer {
 	private TreeItem trtmJustFailedAggTraces;
 	private TreeItem trtmJustAggTracesContaining;
 
-	public View(final DataModel dataModel, final Model mainViewModel, final Controller controller, final ISubView recordsSubView, final ISubView tracesSubView,
-			final ISubView failedTracesSubView, final ISubView aggregatedTracesSubView, final ISubView failureContainingTracesSubView, final ISubView subView6,
-			final ISubView subView7) {
+	public View(final DataModel dataModel, final Model mainViewModel, final Controller controller, final Map<String, ISubView> subViews) {
 		this.dataModel = dataModel;
 		this.mainViewModel = mainViewModel;
-		this.recordsSubView = recordsSubView;
-		this.tracesSubView = tracesSubView;
-		this.failureContainingTracesSubView = failureContainingTracesSubView;
-		this.failedTracesSubView = failedTracesSubView;
-		this.aggregatedTracesSubView = aggregatedTracesSubView;
-		this.subView6 = subView6;
-		this.subView7 = subView7;
+		this.subViews = subViews;
 
 		this.controller = controller;
 	}
@@ -214,13 +201,9 @@ public class View implements Observer {
 		this.subViewComposite.setLayout(this.subViewLayout);
 		sashForm.setWeights(new int[] { 1, 4 });
 
-		this.recordsSubView.createComposite(this.subViewComposite);
-		this.tracesSubView.createComposite(this.subViewComposite);
-		this.failedTracesSubView.createComposite(this.subViewComposite);
-		this.aggregatedTracesSubView.createComposite(this.subViewComposite);
-		this.failureContainingTracesSubView.createComposite(this.subViewComposite);
-		this.subView6.createComposite(this.subViewComposite);
-		this.subView7.createComposite(this.subViewComposite);
+		for (final ISubView subview : this.subViews.values()) {
+			subview.createComposite(this.subViewComposite);
+		}
 
 		final Menu menu = new Menu(this.shell, SWT.BAR);
 		this.shell.setMenuBar(menu);
@@ -288,38 +271,12 @@ public class View implements Observer {
 	}
 
 	private void handleChangedSubView() {
-		final Composite subViewToShow;
-		switch (this.mainViewModel.getCurrentActiveSubView()) {
-		case NONE:
-			subViewToShow = null;
-			break;
-		case RECORDS_SUB_VIEW:
-			subViewToShow = this.recordsSubView.getComposite();
-			break;
-		case TRACES_SUB_VIEW:
-			subViewToShow = this.tracesSubView.getComposite();
-			break;
-		case AGGREGATED_TRACES_SUB_VIEW:
-			subViewToShow = this.aggregatedTracesSubView.getComposite();
-			break;
-		case FAILED_TRACES_SUB_VIEW:
-			subViewToShow = this.failedTracesSubView.getComposite();
-			break;
-		case FAILURE_CONTAINING_TRACES_SUB_VIEW:
-			subViewToShow = this.failureContainingTracesSubView.getComposite();
-			break;
-		case FAILED_AGGREGATED_TRACES_SUB_VIEW:
-			subViewToShow = this.subView6.getComposite();
-			break;
-		case FAILURE_CONTAINING_AGGREGATED_TRACES_SUB_VIEW:
-			subViewToShow = this.subView7.getComposite();
-			break;
-		default:
-			subViewToShow = null;
-			break;
-		}
+		final String subViewKey = this.mainViewModel.getCurrentActiveSubViewKey();
+
+		final ISubView subViewToShow = this.subViews.get(subViewKey);
+		final Composite compositeToShow = (subViewToShow != null) ? subViewToShow.getComposite() : null;
 
-		this.subViewLayout.topControl = subViewToShow;
+		this.subViewLayout.topControl = compositeToShow;
 		this.subViewComposite.layout();
 	}
 }