diff --git a/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java b/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java
index 7305d60e56f98672b07e9ccfaf0106243dfeabdf..f2e475a2106bc8f4386156ec1c67d969a00135b5 100644
--- a/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/AggregatedFailedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.AggregatedTracesSubViewModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
@@ -38,7 +41,14 @@ public final class AggregatedFailedTracesSubViewController implements SelectionL
 
 	public AggregatedFailedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(AggregatedTracesSubView.Type.SHOW_JUST_FAILED_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
+
+			@Override
+			public List<AggregatedExecution> getContent() {
+				return super.dataModel.getFailedAggregatedTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java b/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java
index a6addc5128a39d2ccb644c64c23303ae67ee4734..111e16e89d0051c210461cd887a86e3a128297c4 100644
--- a/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/AggregatedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.AggregatedTracesSubViewModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
@@ -38,7 +41,13 @@ public final class AggregatedTracesSubViewController implements SelectionListene
 
 	public AggregatedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(AggregatedTracesSubView.Type.SHOW_ALL_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
+
+			@Override
+			public List<AggregatedExecution> getContent() {
+				return super.dataModel.getAggregatedTracesCopy();
+			}
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java b/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java
index 6593bb65510666c2dd6de4ab5a4a61d3706235fa..efd3588f97fc56da3c74d0e59e1b12008c04a1f4 100644
--- a/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/FailedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
@@ -38,7 +41,14 @@ public final class FailedTracesSubViewController implements SelectionListener, I
 
 	public FailedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(TracesSubView.Type.SHOW_JUST_FAILED_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+
+			@Override
+			public final List<Execution> getContent() {
+				return this.dataModel.getFailedTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java b/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java
index c46401d30cd0096d5b7626fde927901ba537fabd..af999e307f0c88936903711aa396a8d32449697c 100644
--- a/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/FailureContainingAggregatedTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.AggregatedTracesSubViewModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
@@ -38,7 +41,13 @@ public final class FailureContainingAggregatedTracesSubViewController implements
 
 	public FailureContainingAggregatedTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new AggregatedTracesSubViewModel();
-		this.view = new AggregatedTracesSubView(AggregatedTracesSubView.Type.SHOW_JUST_FAILURE_CONTAINING_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new AggregatedTracesSubView(new AbstractProxyDataModel<AggregatedExecution>(dataModel) {
+
+			@Override
+			public List<AggregatedExecution> getContent() {
+				return super.dataModel.getFailureContainingAggregatedTracesCopy();
+			}
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java b/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java
index ef4e42722d68518576ba81d9377c945d35ecce3e..3f8b340bb936cd94537a8c3380b7f71ba65054bf 100644
--- a/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/FailureContainingTracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
@@ -38,7 +41,14 @@ public final class FailureContainingTracesSubViewController implements Selection
 
 	public FailureContainingTracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(TracesSubView.Type.SHOW_JUST_FAILURE_CONTAINING_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+
+			@Override
+			public final List<Execution> getContent() {
+				return this.dataModel.getFailureContainingTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/controller/TracesSubViewController.java b/src/main/java/kieker/gui/controller/TracesSubViewController.java
index a1e505796769ff2a654b875f4302cb713c150163..dda0c8afab8a8f8ecdf46bab3129af33df9438d6 100644
--- a/src/main/java/kieker/gui/controller/TracesSubViewController.java
+++ b/src/main/java/kieker/gui/controller/TracesSubViewController.java
@@ -16,6 +16,9 @@
 
 package kieker.gui.controller;
 
+import java.util.List;
+
+import kieker.gui.model.AbstractProxyDataModel;
 import kieker.gui.model.DataModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
@@ -38,7 +41,14 @@ public final class TracesSubViewController implements SelectionListener, ISubCon
 
 	public TracesSubViewController(final DataModel dataModel, final PropertiesModel propertiesModel) {
 		this.model = new TracesSubViewModel();
-		this.view = new TracesSubView(TracesSubView.Type.SHOW_ALL_TRACES, dataModel, this.model, propertiesModel, this);
+		this.view = new TracesSubView(new AbstractProxyDataModel<Execution>(dataModel) {
+
+			@Override
+			public final List<Execution> getContent() {
+				return this.dataModel.getTracesCopy();
+			}
+
+		}, this.model, propertiesModel, this);
 	}
 
 	@Override
diff --git a/src/main/java/kieker/gui/model/AbstractProxyDataModel.java b/src/main/java/kieker/gui/model/AbstractProxyDataModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..90a15b9cc600b77c1e0febb41dcb77f9da0a4250
--- /dev/null
+++ b/src/main/java/kieker/gui/model/AbstractProxyDataModel.java
@@ -0,0 +1,26 @@
+package kieker.gui.model;
+
+import java.util.Observable;
+import java.util.Observer;
+
+public abstract class AbstractProxyDataModel<T> extends Observable implements IModel<T>, Observer {
+
+	protected final DataModel dataModel;
+
+	public AbstractProxyDataModel(final DataModel dataModel) {
+		this.dataModel = dataModel;
+		this.dataModel.addObserver(this);
+	}
+
+	@Override
+	public final void update(final Observable o, final Object arg) {
+		this.setChanged();
+		this.notifyObservers(arg);
+	}
+
+	@Override
+	public final String getShortTimeUnit() {
+		return this.dataModel.getShortTimeUnit();
+	}
+
+}
diff --git a/src/main/java/kieker/gui/model/IModel.java b/src/main/java/kieker/gui/model/IModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a5370f6ed26a2226cf96d24a3bc0efc252533d1
--- /dev/null
+++ b/src/main/java/kieker/gui/model/IModel.java
@@ -0,0 +1,14 @@
+package kieker.gui.model;
+
+import java.util.List;
+import java.util.Observer;
+
+public interface IModel<T> {
+
+	public List<T> getContent();
+
+	public String getShortTimeUnit();
+
+	public void addObserver(Observer observer);
+
+}
diff --git a/src/main/java/kieker/gui/view/AggregatedTracesSubView.java b/src/main/java/kieker/gui/view/AggregatedTracesSubView.java
index 6b12eebc446c0a2febb797af5d9f3fa66230e5b6..a4a08f2f3021d2d5941b26c387074daa9b77af62 100644
--- a/src/main/java/kieker/gui/view/AggregatedTracesSubView.java
+++ b/src/main/java/kieker/gui/view/AggregatedTracesSubView.java
@@ -21,7 +21,7 @@ import java.util.Observable;
 import java.util.Observer;
 
 import kieker.gui.model.AggregatedTracesSubViewModel;
-import kieker.gui.model.DataModel;
+import kieker.gui.model.IModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.domain.AggregatedExecution;
 import kieker.gui.view.util.AggregatedExecutionAvgDurationComparator;
@@ -54,7 +54,7 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 
 	private final AggregatedTracesSubViewModel aggregatedTracesSubViewModel;
 	private final SelectionListener controller;
-	private final DataModel model;
+	private final IModel<AggregatedExecution> model;
 	private Composite composite;
 	private Tree tree;
 	private Composite detailComposite;
@@ -71,15 +71,13 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 	private Label lblFailed;
 	private final PropertiesModel propertiesModel;
 	private Label lblTotalDurationDisplay;
-	private final Type type;
 
-	public AggregatedTracesSubView(final Type type, final DataModel model, final AggregatedTracesSubViewModel aggregatedTracesSubViewModel, final PropertiesModel propertiesModel,
+	public AggregatedTracesSubView(final IModel<AggregatedExecution> model, final AggregatedTracesSubViewModel aggregatedTracesSubViewModel, final PropertiesModel propertiesModel,
 			final SelectionListener controller) {
 		this.controller = controller;
 		this.model = model;
 		this.propertiesModel = propertiesModel;
 		this.aggregatedTracesSubViewModel = aggregatedTracesSubViewModel;
-		this.type = type;
 
 		model.addObserver(this);
 		aggregatedTracesSubViewModel.addObserver(this);
@@ -260,14 +258,8 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 	}
 
 	private void updateTree() {
-		final List<AggregatedExecution> records;
-		if (this.type == Type.SHOW_JUST_FAILED_TRACES) {
-			records = this.model.getFailedAggregatedTracesCopy();
-		} else if (this.type == Type.SHOW_JUST_FAILURE_CONTAINING_TRACES) {
-			records = this.model.getFailureContainingAggregatedTracesCopy();
-		} else {
-			records = this.model.getAggregatedTracesCopy();
-		}
+		final List<AggregatedExecution> records = this.model.getContent();
+
 		this.tree.setData(records);
 		this.tree.setItemCount(records.size());
 
@@ -356,7 +348,7 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 				item.setText(new String[] { executionEntry.getContainer(), componentName, operationString, "", minDuration, avgDuration, maxDuration, totalDuration });
 			} else {
 				item.setText(new String[] { executionEntry.getContainer(), componentName, operationString, Integer.toString(executionEntry.getCalls()), minDuration, avgDuration,
-						maxDuration, totalDuration });
+					maxDuration, totalDuration });
 			}
 
 			if (executionEntry.isFailed()) {
@@ -370,8 +362,4 @@ public class AggregatedTracesSubView implements Observer, ISubView {
 
 	}
 
-	public enum Type {
-		SHOW_ALL_TRACES, SHOW_JUST_FAILED_TRACES, SHOW_JUST_FAILURE_CONTAINING_TRACES
-	}
-
 }
diff --git a/src/main/java/kieker/gui/view/MainView.java b/src/main/java/kieker/gui/view/MainView.java
index 5a24def990febbb0d76de1ca6714b83a5c53ae4d..493ad1ec79ca8410f6c6ce7d4c33e7012451ce7e 100644
--- a/src/main/java/kieker/gui/view/MainView.java
+++ b/src/main/java/kieker/gui/view/MainView.java
@@ -94,6 +94,8 @@ public class MainView implements Observer {
 		this.shell.open();
 		this.shell.layout();
 
+		this.dataModel.loadMonitoringLogFromFS("example/kieker-20141217-134719867-UTC-SE-Nils-Ehmke-KIEKER");
+
 		while (!this.shell.isDisposed()) {
 			if (!display.readAndDispatch()) {
 				display.sleep();
diff --git a/src/main/java/kieker/gui/view/TracesSubView.java b/src/main/java/kieker/gui/view/TracesSubView.java
index 6183c75dcd9827c0dd09870e4336398e5b2ee029..34c5a6fb703a203904fdb70de789d66269b8561e 100644
--- a/src/main/java/kieker/gui/view/TracesSubView.java
+++ b/src/main/java/kieker/gui/view/TracesSubView.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Observable;
 import java.util.Observer;
 
-import kieker.gui.model.DataModel;
+import kieker.gui.model.IModel;
 import kieker.gui.model.PropertiesModel;
 import kieker.gui.model.TracesSubViewModel;
 import kieker.gui.model.domain.Execution;
@@ -49,7 +49,7 @@ import org.eclipse.wb.swt.SWTResourceManager;
 
 public class TracesSubView implements Observer, ISubView {
 
-	private final DataModel model;
+	private final IModel<Execution> model;
 	private final TracesSubViewModel tracesSubViewModel;
 	private final SelectionListener controller;
 	private Composite composite;
@@ -65,10 +65,8 @@ public class TracesSubView implements Observer, ISubView {
 	private Label lblExecutionContainerDisplay;
 	private Label lblFailed;
 	private final PropertiesModel propertiesModel;
-	private final Type type;
 
-	public TracesSubView(final Type type, final DataModel model, final TracesSubViewModel tracesSubViewModel, final PropertiesModel propertiesModel,
-			final SelectionListener controller) {
+	public TracesSubView(final IModel<Execution> model, final TracesSubViewModel tracesSubViewModel, final PropertiesModel propertiesModel, final SelectionListener controller) {
 		this.model = model;
 		this.propertiesModel = propertiesModel;
 		this.tracesSubViewModel = tracesSubViewModel;
@@ -77,8 +75,6 @@ public class TracesSubView implements Observer, ISubView {
 		model.addObserver(this);
 		tracesSubViewModel.addObserver(this);
 		propertiesModel.addObserver(this);
-
-		this.type = type;
 	}
 
 	/**
@@ -226,14 +222,7 @@ public class TracesSubView implements Observer, ISubView {
 	}
 
 	private void updateTree() {
-		final List<Execution> records;
-		if (this.type == Type.SHOW_JUST_FAILED_TRACES) {
-			records = this.model.getFailedTracesCopy();
-		} else if (this.type == Type.SHOW_JUST_FAILURE_CONTAINING_TRACES) {
-			records = this.model.getFailureContainingTracesCopy();
-		} else {
-			records = this.model.getTracesCopy();
-		}
+		final List<Execution> records = this.model.getContent();
 
 		this.tree.setData(records);
 		this.tree.setItemCount(records.size());
@@ -324,8 +313,4 @@ public class TracesSubView implements Observer, ISubView {
 		}
 	}
 
-	public enum Type {
-		SHOW_ALL_TRACES, SHOW_JUST_FAILED_TRACES, SHOW_JUST_FAILURE_CONTAINING_TRACES
-	}
-
 }