diff --git a/src/main/java/kieker/diagnosis/components/DurationTableCellFactory.java b/src/main/java/kieker/diagnosis/components/DurationTableCellFactory.java
deleted file mode 100644
index 90eb07dbe9abc4a374f7f04ec19fd0ac19e49279..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/DurationTableCellFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import javafx.scene.control.TableCell;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableRow;
-import javafx.util.Callback;
-import kieker.diagnosis.domain.AbstractOperationCall;
-import kieker.diagnosis.model.PropertiesModel;
-import kieker.diagnosis.util.NameConverter;
-
-/**
- * @author Nils Christian Ehmke
- */
-public final class DurationTableCellFactory<S, T> implements Callback<TableColumn<S, T>, TableCell<S, T>> {
-
-	@Override
-	public TableCell<S, T> call(final TableColumn<S, T> p) {
-		final TableCell<S, T> cell = new TableCell<S, T>() {
-			@SuppressWarnings("unchecked")
-			@Override
-			protected void updateItem(final Object item, final boolean empty) {
-				final TableRow<?> currentRow = this.getTableRow();
-				if (currentRow != null) {
-					final Object rowItem = currentRow.getItem();
-
-					this.getStyleClass().remove("failed");
-					if ((rowItem != null) && AbstractOperationCall.class.isAssignableFrom(rowItem.getClass())) {
-						if (((AbstractOperationCall<?>) rowItem).isFailed()) {
-							this.getStyleClass().add("failed");
-						}
-					}
-				}
-
-				super.updateItem((T) item, empty);
-
-				if (item != null) {
-					this.setText(item.toString() + " " + NameConverter.toShortTimeUnit(PropertiesModel.getInstance().getTimeUnit()));
-				} else {
-					this.setText("");
-				}
-			}
-		};
-
-		return cell;
-
-	}
-}
diff --git a/src/main/java/kieker/diagnosis/components/DurationTreeCellFactory.java b/src/main/java/kieker/diagnosis/components/DurationTreeCellFactory.java
deleted file mode 100644
index b64cf0e209d340d5addb4433ade1b98ee1ddce2f..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/DurationTreeCellFactory.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import javafx.scene.control.TreeTableCell;
-import javafx.scene.control.TreeTableColumn;
-import javafx.scene.control.TreeTableRow;
-import javafx.util.Callback;
-import kieker.diagnosis.domain.AbstractOperationCall;
-import kieker.diagnosis.model.PropertiesModel;
-import kieker.diagnosis.util.NameConverter;
-
-/**
- * @author Nils Christian Ehmke
- */
-public final class DurationTreeCellFactory<S, T> implements Callback<TreeTableColumn<S, T>, TreeTableCell<S, T>> {
-
-	@Override
-	public TreeTableCell<S, T> call(final TreeTableColumn<S, T> p) {
-		final TreeTableCell<S, T> cell = new TreeTableCell<S, T>() {
-			@SuppressWarnings("unchecked")
-			@Override
-			protected void updateItem(final Object item, final boolean empty) {
-				final TreeTableRow<?> currentRow = this.getTreeTableRow();
-				if (currentRow != null) {
-					final Object rowItem = currentRow.getItem();
-
-					this.getStyleClass().remove("failed");
-					if ((rowItem != null) && AbstractOperationCall.class.isAssignableFrom(rowItem.getClass())) {
-						if (((AbstractOperationCall<?>) rowItem).isFailed()) {
-							this.getStyleClass().add("failed");
-						}
-					}
-				}
-
-				super.updateItem((T) item, empty);
-
-				if (item != null) {
-					this.setText(item.toString() + " " + NameConverter.toShortTimeUnit(PropertiesModel.getInstance().getTimeUnit()));
-				} else {
-					this.setText("");
-				}
-			}
-		};
-
-		return cell;
-
-	}
-}
diff --git a/src/main/java/kieker/diagnosis/components/FailedTreeCellFactory.java b/src/main/java/kieker/diagnosis/components/FailedTreeCellFactory.java
deleted file mode 100644
index b9c9d7b25237cce5d1214d03d14779404e01e452..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/FailedTreeCellFactory.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import javafx.scene.control.TreeTableCell;
-import javafx.scene.control.TreeTableColumn;
-import javafx.scene.control.TreeTableRow;
-import javafx.util.Callback;
-import kieker.diagnosis.domain.AbstractOperationCall;
-
-/**
- * @author Nils Christian Ehmke
- */
-public final class FailedTreeCellFactory<S, T> implements Callback<TreeTableColumn<S, T>, TreeTableCell<S, T>> {
-
-	@Override
-	public TreeTableCell<S, T> call(final TreeTableColumn<S, T> p) {
-		return new FailedTreeCell();
-	}
-
-	private final class FailedTreeCell extends TreeTableCell<S, T> {
-
-		@Override
-		protected void updateItem(final T item, final boolean empty) {
-			setFailedStyle();
-
-			super.updateItem(item, empty);
-
-			if (empty || item == null) {
-				setText(null);
-				setGraphic(null);
-			} else {
-				setText(item.toString());
-			}
-		}
-
-		private void setFailedStyle() {
-			final TreeTableRow<?> currentRow = this.getTreeTableRow();
-			
-			if (currentRow != null) {
-				final Object rowItem = currentRow.getItem();
-
-				super.getStyleClass().remove("failed");
-				if (rowItem instanceof AbstractOperationCall) {
-					if (((AbstractOperationCall<?>) rowItem).isFailed()) {
-						super.getStyleClass().add("failed");
-					}
-				}
-			}
-		}
-
-	}
-
-}
diff --git a/src/main/java/kieker/diagnosis/components/PercentTreeCellFactory.java b/src/main/java/kieker/diagnosis/components/PercentTreeCellFactory.java
deleted file mode 100644
index 2aeab1ebe0ffcdb5cb7e3d8535ba6879a7b48074..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/PercentTreeCellFactory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import javafx.scene.control.TreeTableCell;
-import javafx.scene.control.TreeTableColumn;
-import javafx.scene.control.TreeTableRow;
-import javafx.util.Callback;
-import kieker.diagnosis.domain.AbstractOperationCall;
-
-/**
- * @author Nils Christian Ehmke
- */
-public final class PercentTreeCellFactory<S, T> implements Callback<TreeTableColumn<S, T>, TreeTableCell<S, T>> {
-
-	@Override
-	public TreeTableCell<S, T> call(final TreeTableColumn<S, T> p) {
-		final TreeTableCell<S, T> cell = new TreeTableCell<S, T>() {
-			@SuppressWarnings("unchecked")
-			@Override
-			protected void updateItem(final Object item, final boolean empty) {
-				final TreeTableRow<?> currentRow = this.getTreeTableRow();
-				if (currentRow != null) {
-					final Object rowItem = currentRow.getItem();
-
-					this.getStyleClass().remove("failed");
-					if ((rowItem != null) && AbstractOperationCall.class.isAssignableFrom(rowItem.getClass())) {
-						if (((AbstractOperationCall<?>) rowItem).isFailed()) {
-							this.getStyleClass().add("failed");
-						}
-					}
-				}
-
-				super.updateItem((T) item, empty);
-
-				if (item != null) {
-					this.setText(item.toString() + " %");
-				} else {
-					this.setText("");
-				}
-			}
-		};
-
-		return cell;
-
-	}
-}
diff --git a/src/main/java/kieker/diagnosis/components/ThresholdStringConverter.java b/src/main/java/kieker/diagnosis/components/ThresholdStringConverter.java
deleted file mode 100644
index 84b71a7070b03a7e34606a1cca215faa82359459..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/ThresholdStringConverter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import javafx.util.StringConverter;
-import kieker.diagnosis.model.PropertiesModel.Threshold;
-import kieker.diagnosis.util.Mapper;
-
-public class ThresholdStringConverter extends StringConverter<Threshold> {
-
-	private static Mapper<Threshold, String> thresholdMapper;
-
-	static {
-		final String bundleBaseName = "locale.kieker.diagnosis.components.components";
-		final ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleBaseName, Locale.getDefault());
-		final String threshold = resourceBundle.getString("threshold");
-
-		ThresholdStringConverter.thresholdMapper = new Mapper<>();
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_0_5).to(threshold + " < 0.5 %");
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_1).to(threshold + " < 1 %");
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_10).to(threshold + " < 10 %");
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_20).to(threshold + " < 20 %");
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_30).to(threshold + " < 30 %");
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_40).to(threshold + " < 40 %");
-		ThresholdStringConverter.thresholdMapper.map(Threshold.THRESHOLD_50).to(threshold + " < 50 %");
-	}
-
-	@Override
-	public Threshold fromString(final String string) {
-		return ThresholdStringConverter.thresholdMapper.invertedResolve(string);
-	}
-
-	@Override
-	public String toString(final Threshold object) {
-		return ThresholdStringConverter.thresholdMapper.resolve(object);
-	}
-
-}
diff --git a/src/main/java/kieker/diagnosis/components/TimestampStringConverter.java b/src/main/java/kieker/diagnosis/components/TimestampStringConverter.java
deleted file mode 100644
index fda214d93700c048af5ed45972e248f1651dc6ad..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/TimestampStringConverter.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import javafx.util.StringConverter;
-import kieker.diagnosis.model.PropertiesModel.TimestampTypes;
-import kieker.diagnosis.util.Mapper;
-
-public class TimestampStringConverter extends StringConverter<TimestampTypes> {
-
-	private static Mapper<TimestampTypes, String> mapper;
-	
-	static {
-		TimestampStringConverter.mapper = new Mapper<>();
-		TimestampStringConverter.mapper.map(TimestampTypes.TIMESTAMP).to("1418993603113900610");
-		TimestampStringConverter.mapper.map(TimestampTypes.DATE).to("19.12.14");
-		TimestampStringConverter.mapper.map(TimestampTypes.SHORT_TIME).to("13:53");
-		TimestampStringConverter.mapper.map(TimestampTypes.LONG_TIME).to("13:53:23");
-		TimestampStringConverter.mapper.map(TimestampTypes.DATE_AND_TIME).to("19.12.2014 13:53:23");
-	}
-
-	@Override
-	public TimestampTypes fromString(final String string) {
-		return TimestampStringConverter.mapper.invertedResolve(string);
-	}
-
-	@Override
-	public String toString(final TimestampTypes object) {
-		return TimestampStringConverter.mapper.resolve(object);
-	}
-
-}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/components/TimestampTableCellFactory.java b/src/main/java/kieker/diagnosis/components/TimestampTableCellFactory.java
deleted file mode 100644
index aee5ea8f8938722f8e000f6f92da91b0994a104c..0000000000000000000000000000000000000000
--- a/src/main/java/kieker/diagnosis/components/TimestampTableCellFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/***************************************************************************
- * Copyright 2015 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.diagnosis.components;
-
-import javafx.scene.control.TableCell;
-import javafx.scene.control.TableColumn;
-import javafx.scene.control.TableRow;
-import javafx.util.Callback;
-import kieker.diagnosis.domain.AbstractOperationCall;
-import kieker.diagnosis.model.DataModel;
-import kieker.diagnosis.util.NameConverter;
-
-public class TimestampTableCellFactory<S, T> implements Callback<TableColumn<S, T>, TableCell<S, T>> {
-
-	@Override
-	public TableCell<S, T> call(final TableColumn<S, T> p) {
-		return new FailedTableCell();
-	}
-
-	private final class FailedTableCell extends TableCell<S, T> {
-
-		@Override
-		protected void updateItem(final T item, final boolean empty) {
-			setFailedStyle();
-
-			super.updateItem(item, empty);
-
-			if (empty || item == null) {
-				setText(null);
-				setGraphic(null);
-			} else {
-				setText(NameConverter.toTimestampString((Long) item, DataModel.getInstance().getTimeUnit()));
-			}
-		}
-
-		private void setFailedStyle() {
-			final TableRow<?> currentRow = super.getTableRow();
-
-			if (currentRow != null) {
-				final Object rowItem = currentRow.getItem();
-
-				super.getStyleClass().remove("failed");
-				if (rowItem instanceof AbstractOperationCall) {
-					if (((AbstractOperationCall<?>) rowItem).isFailed()) {
-						super.getStyleClass().add("failed");
-					}
-				}
-			}
-		}
-
-	}
-}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/components/converter/AbstractStringConverter.java b/src/main/java/kieker/diagnosis/components/converter/AbstractStringConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..1069e8b913be8e417b4342f1a0f43651875174f8
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/converter/AbstractStringConverter.java
@@ -0,0 +1,51 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.converter;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import javafx.util.StringConverter;
+import kieker.diagnosis.util.Mapper;
+
+/**
+ * @author Nils Christian Ehmke
+ */
+public abstract class AbstractStringConverter<T> extends StringConverter<T> {
+	
+	private final Mapper<T, String> mapper = new Mapper<>();
+	
+	public AbstractStringConverter() {
+		final String bundleBaseName = "locale.kieker.diagnosis.components.components";
+		final ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleBaseName, Locale.getDefault());
+		
+		this.fillMapper(mapper, resourceBundle); 
+	}
+	
+	protected abstract void fillMapper(final Mapper<T, String> mapper, final ResourceBundle resourceBundle);
+	
+	@Override
+	public T fromString(final String string) {
+		return this.mapper.invertedResolve(string);
+	}
+
+	@Override
+	public String toString(final T object) {
+		return this.mapper.resolve(object);
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/ComponentNamesStringConverter.java b/src/main/java/kieker/diagnosis/components/converter/ComponentNamesStringConverter.java
similarity index 54%
rename from src/main/java/kieker/diagnosis/components/ComponentNamesStringConverter.java
rename to src/main/java/kieker/diagnosis/components/converter/ComponentNamesStringConverter.java
index 36c61287051bf7648398ae1ec91361a146c230c6..6fd4d0792c1ea5f309cfc4b2834ea4de439f6f94 100644
--- a/src/main/java/kieker/diagnosis/components/ComponentNamesStringConverter.java
+++ b/src/main/java/kieker/diagnosis/components/converter/ComponentNamesStringConverter.java
@@ -14,33 +14,22 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.converter;
+
+import java.util.ResourceBundle;
 
-import javafx.util.StringConverter;
 import kieker.diagnosis.model.PropertiesModel.ComponentNames;
 import kieker.diagnosis.util.Mapper;
 
 /**
  * @author Nils Christian Ehmke
  */
-public class ComponentNamesStringConverter extends StringConverter<ComponentNames> {
-	
-	private static Mapper<ComponentNames, String> componentMapper;
-
-	static {
-		ComponentNamesStringConverter.componentMapper = new Mapper<>();
-		ComponentNamesStringConverter.componentMapper.map(ComponentNames.SHORT).to("Catalog");
-		ComponentNamesStringConverter.componentMapper.map(ComponentNames.LONG).to("kieker.examples.bookstore.Catalog");
-	}
-	
+public class ComponentNamesStringConverter extends AbstractStringConverter<ComponentNames> {
+		
 	@Override
-	public ComponentNames fromString(final String string) {
-		return ComponentNamesStringConverter.componentMapper.invertedResolve(string);
+	protected void fillMapper(final Mapper<ComponentNames, String> mapper, final ResourceBundle resourceBundle) {
+		mapper.map(ComponentNames.SHORT).to("Catalog");
+		mapper.map(ComponentNames.LONG).to("kieker.examples.bookstore.Catalog");
 	}
-
-	@Override
-	public String toString(final ComponentNames object) {
-		return ComponentNamesStringConverter.componentMapper.resolve(object);
-	}
-
+	
 }
diff --git a/src/main/java/kieker/diagnosis/components/OperationNamesStringConverter.java b/src/main/java/kieker/diagnosis/components/converter/OperationNamesStringConverter.java
similarity index 53%
rename from src/main/java/kieker/diagnosis/components/OperationNamesStringConverter.java
rename to src/main/java/kieker/diagnosis/components/converter/OperationNamesStringConverter.java
index 9c7b3dde6d1c1b22dd5fcd4630cbc990a0a8be04..9aec4387be68a8697fcfdec51f776f620c34db97 100644
--- a/src/main/java/kieker/diagnosis/components/OperationNamesStringConverter.java
+++ b/src/main/java/kieker/diagnosis/components/converter/OperationNamesStringConverter.java
@@ -14,33 +14,22 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.converter;
+
+import java.util.ResourceBundle;
 
-import javafx.util.StringConverter;
 import kieker.diagnosis.model.PropertiesModel.OperationNames;
 import kieker.diagnosis.util.Mapper;
 
 /**
  * @author Nils Christian Ehmke
  */
-public class OperationNamesStringConverter extends StringConverter<OperationNames> {
-
-	private static Mapper<OperationNames, String> operationMapper;
-
-	static {
-		OperationNamesStringConverter.operationMapper = new Mapper<>();
-		OperationNamesStringConverter.operationMapper.map(OperationNames.SHORT).to("getBook(...)");
-		OperationNamesStringConverter.operationMapper.map(OperationNames.LONG).to("public void kieker.examples.bookstore.Catalog.getBook(boolean)");
-	}
-
-	@Override
-	public OperationNames fromString(final String string) {
-		return OperationNamesStringConverter.operationMapper.invertedResolve(string);
-	}
+public class OperationNamesStringConverter extends AbstractStringConverter<OperationNames> {
 
 	@Override
-	public String toString(final OperationNames object) {
-		return OperationNamesStringConverter.operationMapper.resolve(object);
+	protected void fillMapper(final Mapper<OperationNames, String> mapper, final ResourceBundle resourceBundle) {
+		mapper.map(OperationNames.SHORT).to("getBook(...)");
+		mapper.map(OperationNames.LONG).to("public void kieker.examples.bookstore.Catalog.getBook(boolean)");
 	}
 
 }
diff --git a/src/main/java/kieker/diagnosis/components/converter/ThresholdStringConverter.java b/src/main/java/kieker/diagnosis/components/converter/ThresholdStringConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c2c116007f17d7234643e1fca2e95a57866b78b
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/converter/ThresholdStringConverter.java
@@ -0,0 +1,39 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.converter;
+
+import java.util.ResourceBundle;
+
+import kieker.diagnosis.model.PropertiesModel.Threshold;
+import kieker.diagnosis.util.Mapper;
+
+public class ThresholdStringConverter extends AbstractStringConverter<Threshold> {
+
+	@Override
+	protected void fillMapper(Mapper<Threshold, String> mapper, final ResourceBundle resourceBundle) {
+		final String threshold = resourceBundle.getString("threshold");
+
+		mapper.map(Threshold.THRESHOLD_0_5).to(threshold + " < 0.5 %");
+		mapper.map(Threshold.THRESHOLD_1).to(threshold + " < 1 %");
+		mapper.map(Threshold.THRESHOLD_10).to(threshold + " < 10 %");
+		mapper.map(Threshold.THRESHOLD_20).to(threshold + " < 20 %");
+		mapper.map(Threshold.THRESHOLD_30).to(threshold + " < 30 %");
+		mapper.map(Threshold.THRESHOLD_40).to(threshold + " < 40 %");
+		mapper.map(Threshold.THRESHOLD_50).to(threshold + " < 50 %");
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/TimeUnitStringConverter.java b/src/main/java/kieker/diagnosis/components/converter/TimeUnitStringConverter.java
similarity index 52%
rename from src/main/java/kieker/diagnosis/components/TimeUnitStringConverter.java
rename to src/main/java/kieker/diagnosis/components/converter/TimeUnitStringConverter.java
index 1e0e5f3bb9eeacae54cecb54ea90e0e1d2b6748b..acd41cfd57c72d0af52973fd1151bb309a2d8066 100644
--- a/src/main/java/kieker/diagnosis/components/TimeUnitStringConverter.java
+++ b/src/main/java/kieker/diagnosis/components/converter/TimeUnitStringConverter.java
@@ -14,26 +14,20 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.converter;
 
-import java.util.Locale;
 import java.util.ResourceBundle;
 import java.util.concurrent.TimeUnit;
 
-import javafx.util.StringConverter;
 import kieker.diagnosis.util.Mapper;
 
 /**
  * @author Nils Christian Ehmke
  */
-public class TimeUnitStringConverter extends StringConverter<TimeUnit> {
-
-	private static Mapper<TimeUnit, String> timeUnitMapper;
-
-	static {
-		final String bundleBaseName = "locale.kieker.diagnosis.components.components";
-		final ResourceBundle resourceBundle = ResourceBundle.getBundle(bundleBaseName, Locale.getDefault());
+public class TimeUnitStringConverter extends AbstractStringConverter<TimeUnit> {
 
+	@Override
+	protected void fillMapper(Mapper<TimeUnit, String> mapper, final ResourceBundle resourceBundle) {
 		final String nanoseconds = resourceBundle.getString("nanoseconds");
 		final String microseconds = resourceBundle.getString("microseconds");
 		final String milliseconds = resourceBundle.getString("milliseconds");
@@ -41,23 +35,12 @@ public class TimeUnitStringConverter extends StringConverter<TimeUnit> {
 		final String minutes = resourceBundle.getString("minutes");
 		final String hours = resourceBundle.getString("hours");
 
-		TimeUnitStringConverter.timeUnitMapper = new Mapper<>();
-		TimeUnitStringConverter.timeUnitMapper.map(TimeUnit.NANOSECONDS).to(nanoseconds);
-		TimeUnitStringConverter.timeUnitMapper.map(TimeUnit.MICROSECONDS).to(microseconds);
-		TimeUnitStringConverter.timeUnitMapper.map(TimeUnit.MILLISECONDS).to(milliseconds);
-		TimeUnitStringConverter.timeUnitMapper.map(TimeUnit.SECONDS).to(seconds);
-		TimeUnitStringConverter.timeUnitMapper.map(TimeUnit.MINUTES).to(minutes);
-		TimeUnitStringConverter.timeUnitMapper.map(TimeUnit.HOURS).to(hours);
-	}
-
-	@Override
-	public TimeUnit fromString(final String string) {
-		return TimeUnitStringConverter.timeUnitMapper.invertedResolve(string);
-	}
-
-	@Override
-	public String toString(final TimeUnit object) {
-		return TimeUnitStringConverter.timeUnitMapper.resolve(object);
+		mapper.map(TimeUnit.NANOSECONDS).to(nanoseconds);
+		mapper.map(TimeUnit.MICROSECONDS).to(microseconds);
+		mapper.map(TimeUnit.MILLISECONDS).to(milliseconds);
+		mapper.map(TimeUnit.SECONDS).to(seconds);
+		mapper.map(TimeUnit.MINUTES).to(minutes);
+		mapper.map(TimeUnit.HOURS).to(hours);
 	}
 
-}
+}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/components/converter/TimestampTypesStringConverter.java b/src/main/java/kieker/diagnosis/components/converter/TimestampTypesStringConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad8581770cc41306bcd98ee9dce07c02316ca6ad
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/converter/TimestampTypesStringConverter.java
@@ -0,0 +1,35 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.converter;
+
+import java.util.ResourceBundle;
+
+import kieker.diagnosis.model.PropertiesModel.TimestampTypes;
+import kieker.diagnosis.util.Mapper;
+
+public class TimestampTypesStringConverter extends AbstractStringConverter<TimestampTypes> {
+
+	@Override
+	protected void fillMapper(Mapper<TimestampTypes, String> mapper, final ResourceBundle resourceBundle) {
+		mapper.map(TimestampTypes.TIMESTAMP).to("1418993603113900610");
+		mapper.map(TimestampTypes.DATE).to("19.12.14");
+		mapper.map(TimestampTypes.SHORT_TIME).to("13:53");
+		mapper.map(TimestampTypes.LONG_TIME).to("13:53:23");
+		mapper.map(TimestampTypes.DATE_AND_TIME).to("19.12.2014 13:53:23");
+	}
+
+}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/components/FailedTableCellFactory.java b/src/main/java/kieker/diagnosis/components/table/AbstractTableCellFactory.java
similarity index 88%
rename from src/main/java/kieker/diagnosis/components/FailedTableCellFactory.java
rename to src/main/java/kieker/diagnosis/components/table/AbstractTableCellFactory.java
index 557e2e0e556683438150bc0bf37243cb974b79cc..bf54049f14bb84711245b324d4ffddb69d71ad13 100644
--- a/src/main/java/kieker/diagnosis/components/FailedTableCellFactory.java
+++ b/src/main/java/kieker/diagnosis/components/table/AbstractTableCellFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.table;
 
 import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
@@ -22,29 +22,28 @@ import javafx.scene.control.TableRow;
 import javafx.util.Callback;
 import kieker.diagnosis.domain.AbstractOperationCall;
 
-/**
- * @author Nils Christian Ehmke
- */
-public final class FailedTableCellFactory<S, T> implements Callback<TableColumn<S, T>, TableCell<S, T>> {
+public abstract class AbstractTableCellFactory<S, T> implements Callback<TableColumn<S, T>, TableCell<S, T>> {
 
 	@Override
 	public TableCell<S, T> call(final TableColumn<S, T> p) {
 		return new FailedTableCell();
 	}
+	
+	protected abstract String getItemLabel(T item);
 
 	private final class FailedTableCell extends TableCell<S, T> {
 
 		@Override
 		protected void updateItem(final T item, final boolean empty) {
 			setFailedStyle();
-			 
+
 			super.updateItem(item, empty);
 
 			if (empty || item == null) {
 				setText(null);
 				setGraphic(null);
 			} else {
-				setText(item.toString());
+				setText(getItemLabel(item));
 			}
 		}
 
@@ -64,4 +63,4 @@ public final class FailedTableCellFactory<S, T> implements Callback<TableColumn<
 		}
 
 	}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/components/ComponentCellValueFactory.java b/src/main/java/kieker/diagnosis/components/table/ComponentCellValueFactory.java
similarity index 98%
rename from src/main/java/kieker/diagnosis/components/ComponentCellValueFactory.java
rename to src/main/java/kieker/diagnosis/components/table/ComponentCellValueFactory.java
index 7c5c65e387b99f6aca789511807b2cf4d9e541b1..ede562d19d7a1278f6ef3bee8e88fe6d17e7c64c 100644
--- a/src/main/java/kieker/diagnosis/components/ComponentCellValueFactory.java
+++ b/src/main/java/kieker/diagnosis/components/table/ComponentCellValueFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.table;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/src/main/java/kieker/diagnosis/components/DurationCellValueFactory.java b/src/main/java/kieker/diagnosis/components/table/DurationCellValueFactory.java
similarity index 98%
rename from src/main/java/kieker/diagnosis/components/DurationCellValueFactory.java
rename to src/main/java/kieker/diagnosis/components/table/DurationCellValueFactory.java
index 5a6dfb7d8d3dd92b22f8b9e08ab3ed2bd294dae3..afccf51f44fd8b9d1a0de6e0a95cc95edecbfd0a 100644
--- a/src/main/java/kieker/diagnosis/components/DurationCellValueFactory.java
+++ b/src/main/java/kieker/diagnosis/components/table/DurationCellValueFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.table;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/src/main/java/kieker/diagnosis/components/table/DurationTableCellFactory.java b/src/main/java/kieker/diagnosis/components/table/DurationTableCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..4394bda94ef6f37c02745f04dbc440fcf8131a48
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/table/DurationTableCellFactory.java
@@ -0,0 +1,32 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.table;
+
+import kieker.diagnosis.model.PropertiesModel;
+import kieker.diagnosis.util.NameConverter;
+
+/**
+ * @author Nils Christian Ehmke
+ */
+public final class DurationTableCellFactory<S, T> extends AbstractTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return (item.toString() + " " + NameConverter.toShortTimeUnit(PropertiesModel.getInstance().getTimeUnit()));
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/table/FailedTableCellFactory.java b/src/main/java/kieker/diagnosis/components/table/FailedTableCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..64091c1b570e5e509788ee2d4722e5b1d268baa8
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/table/FailedTableCellFactory.java
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.table;
+
+/**
+ * @author Nils Christian Ehmke
+ */
+public final class FailedTableCellFactory<S, T> extends AbstractTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return item.toString();
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/OperationCellValueFactory.java b/src/main/java/kieker/diagnosis/components/table/OperationCellValueFactory.java
similarity index 95%
rename from src/main/java/kieker/diagnosis/components/OperationCellValueFactory.java
rename to src/main/java/kieker/diagnosis/components/table/OperationCellValueFactory.java
index 01ae5bc66830a67af6612fdd55a76d247ac786da..16465c9fc0b6831d21b0614a1507274476bbbe38 100644
--- a/src/main/java/kieker/diagnosis/components/OperationCellValueFactory.java
+++ b/src/main/java/kieker/diagnosis/components/table/OperationCellValueFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.table;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -28,6 +28,7 @@ import javafx.beans.property.ReadOnlyObjectWrapper;
 import javafx.beans.value.ObservableValue;
 import javafx.scene.control.TableColumn.CellDataFeatures;
 import javafx.util.Callback;
+import kieker.diagnosis.components.treetable.DurationTreeCellValueFactory;
 import kieker.diagnosis.model.PropertiesModel;
 import kieker.diagnosis.model.PropertiesModel.OperationNames;
 import kieker.diagnosis.util.NameConverter;
diff --git a/src/main/java/kieker/diagnosis/components/table/TimestampTableCellFactory.java b/src/main/java/kieker/diagnosis/components/table/TimestampTableCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ab7682ab62a4455be3d66171bc5764f7b9e1dfb
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/table/TimestampTableCellFactory.java
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.table;
+
+import kieker.diagnosis.model.DataModel;
+import kieker.diagnosis.util.NameConverter;
+
+public class TimestampTableCellFactory<S, T> extends AbstractTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return (NameConverter.toTimestampString((Long) item, DataModel.getInstance().getTimeUnit()));
+	}
+
+}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/components/AbstractLazyOperationCallTreeItem.java b/src/main/java/kieker/diagnosis/components/treetable/AbstractLazyOperationCallTreeItem.java
similarity index 97%
rename from src/main/java/kieker/diagnosis/components/AbstractLazyOperationCallTreeItem.java
rename to src/main/java/kieker/diagnosis/components/treetable/AbstractLazyOperationCallTreeItem.java
index e4ca9d7307e4e202cd8178ae3b046df3b8448e84..9d644eab9013ea8cda9f5e0400fa3fe609e76807 100644
--- a/src/main/java/kieker/diagnosis/components/AbstractLazyOperationCallTreeItem.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/AbstractLazyOperationCallTreeItem.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import javafx.collections.ObservableList;
 import javafx.scene.control.TreeItem;
diff --git a/src/main/java/kieker/diagnosis/components/TimestampTreeTableCellFactory.java b/src/main/java/kieker/diagnosis/components/treetable/AbstractTreeTableCellFactory.java
similarity index 84%
rename from src/main/java/kieker/diagnosis/components/TimestampTreeTableCellFactory.java
rename to src/main/java/kieker/diagnosis/components/treetable/AbstractTreeTableCellFactory.java
index 81138111d1306fefa60ca81c8bb36ecf91138dbe..a87fc62fb2e8f93a02459686b080913738935fe1 100644
--- a/src/main/java/kieker/diagnosis/components/TimestampTreeTableCellFactory.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/AbstractTreeTableCellFactory.java
@@ -14,22 +14,22 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import javafx.scene.control.TreeTableCell;
 import javafx.scene.control.TreeTableColumn;
 import javafx.scene.control.TreeTableRow;
 import javafx.util.Callback;
 import kieker.diagnosis.domain.AbstractOperationCall;
-import kieker.diagnosis.model.DataModel;
-import kieker.diagnosis.util.NameConverter;
 
-public class TimestampTreeTableCellFactory<S, T> implements Callback<TreeTableColumn<S, T>, TreeTableCell<S, T>> {
+public abstract class AbstractTreeTableCellFactory<S, T> implements Callback<TreeTableColumn<S, T>, TreeTableCell<S, T>> {
 
 	@Override
 	public TreeTableCell<S, T> call(final TreeTableColumn<S, T> p) {
 		return new FailedTableCell();
 	}
+	
+	protected abstract String getItemLabel(T item);
 
 	private final class FailedTableCell extends TreeTableCell<S, T> {
 
@@ -43,7 +43,7 @@ public class TimestampTreeTableCellFactory<S, T> implements Callback<TreeTableCo
 				setText(null);
 				setGraphic(null);
 			} else {
-				setText(NameConverter.toTimestampString((Long) item, DataModel.getInstance().getTimeUnit()));
+				setText(getItemLabel(item));
 			}
 		}
 
diff --git a/src/main/java/kieker/diagnosis/components/ComponentTreeCellValueFactory.java b/src/main/java/kieker/diagnosis/components/treetable/ComponentTreeCellValueFactory.java
similarity index 98%
rename from src/main/java/kieker/diagnosis/components/ComponentTreeCellValueFactory.java
rename to src/main/java/kieker/diagnosis/components/treetable/ComponentTreeCellValueFactory.java
index 07a32fd3b74342777d655deaca490249080ff460..edf52fa5afb25a10b52950023feb66507de94daf 100644
--- a/src/main/java/kieker/diagnosis/components/ComponentTreeCellValueFactory.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/ComponentTreeCellValueFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/src/main/java/kieker/diagnosis/components/treetable/DurationTreeCellFactory.java b/src/main/java/kieker/diagnosis/components/treetable/DurationTreeCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e3b414f5973b4092701dabe4cb1f5689ffa8890
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/treetable/DurationTreeCellFactory.java
@@ -0,0 +1,32 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.treetable;
+
+import kieker.diagnosis.model.PropertiesModel;
+import kieker.diagnosis.util.NameConverter;
+
+/**
+ * @author Nils Christian Ehmke
+ */
+public final class DurationTreeCellFactory<S, T> extends AbstractTreeTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return (item.toString() + " " + NameConverter.toShortTimeUnit(PropertiesModel.getInstance().getTimeUnit()));
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/DurationTreeCellValueFactory.java b/src/main/java/kieker/diagnosis/components/treetable/DurationTreeCellValueFactory.java
similarity index 98%
rename from src/main/java/kieker/diagnosis/components/DurationTreeCellValueFactory.java
rename to src/main/java/kieker/diagnosis/components/treetable/DurationTreeCellValueFactory.java
index 9d63d1ef52b1e10fa31bc1c8060b80618084232d..e2ac10c84a56e7c469fe3cc15876de40399ca042 100644
--- a/src/main/java/kieker/diagnosis/components/DurationTreeCellValueFactory.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/DurationTreeCellValueFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/src/main/java/kieker/diagnosis/components/treetable/FailedTreeCellFactory.java b/src/main/java/kieker/diagnosis/components/treetable/FailedTreeCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba6af095dbcb98afff9196e949cb3d81f985c587
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/treetable/FailedTreeCellFactory.java
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.treetable;
+
+/**
+ * @author Nils Christian Ehmke
+ */
+public final class FailedTreeCellFactory<S, T> extends AbstractTreeTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return item.toString();
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/LazyAggregatedOperationCallTreeItem.java b/src/main/java/kieker/diagnosis/components/treetable/LazyAggregatedOperationCallTreeItem.java
similarity index 96%
rename from src/main/java/kieker/diagnosis/components/LazyAggregatedOperationCallTreeItem.java
rename to src/main/java/kieker/diagnosis/components/treetable/LazyAggregatedOperationCallTreeItem.java
index 8d32b656d148e7ed3a93063760ab2d5e0d3fa284..65a9156cda59c20c5e28a96690be053412d782f8 100644
--- a/src/main/java/kieker/diagnosis/components/LazyAggregatedOperationCallTreeItem.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/LazyAggregatedOperationCallTreeItem.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/kieker/diagnosis/components/LazyOperationCallTreeItem.java b/src/main/java/kieker/diagnosis/components/treetable/LazyOperationCallTreeItem.java
similarity index 98%
rename from src/main/java/kieker/diagnosis/components/LazyOperationCallTreeItem.java
rename to src/main/java/kieker/diagnosis/components/treetable/LazyOperationCallTreeItem.java
index 72f1b6f4bb71bd32aa47f212f7aca455831aeafd..8cb994d81989eeff86a48264a55854176244919d 100644
--- a/src/main/java/kieker/diagnosis/components/LazyOperationCallTreeItem.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/LazyOperationCallTreeItem.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/src/main/java/kieker/diagnosis/components/OperationTreeCellValueFactory.java b/src/main/java/kieker/diagnosis/components/treetable/OperationTreeCellValueFactory.java
similarity index 98%
rename from src/main/java/kieker/diagnosis/components/OperationTreeCellValueFactory.java
rename to src/main/java/kieker/diagnosis/components/treetable/OperationTreeCellValueFactory.java
index 53a043f1384c3c16a2b738c68b73707f5340c8ef..ff734098a69fd806e3ff9e4e5585b3bba4d49b1a 100644
--- a/src/main/java/kieker/diagnosis/components/OperationTreeCellValueFactory.java
+++ b/src/main/java/kieker/diagnosis/components/treetable/OperationTreeCellValueFactory.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.diagnosis.components;
+package kieker.diagnosis.components.treetable;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/src/main/java/kieker/diagnosis/components/treetable/PercentTreeCellFactory.java b/src/main/java/kieker/diagnosis/components/treetable/PercentTreeCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..847e04c42d935e3c8d89b0cdc72a48f615ddebb6
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/treetable/PercentTreeCellFactory.java
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.treetable;
+
+/**
+ * @author Nils Christian Ehmke
+ */
+public final class PercentTreeCellFactory<S, T> extends AbstractTreeTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return (item.toString() + " %");
+	}
+
+}
diff --git a/src/main/java/kieker/diagnosis/components/treetable/TimestampTreeTableCellFactory.java b/src/main/java/kieker/diagnosis/components/treetable/TimestampTreeTableCellFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2a310d5d2bda605ff1171101df042560024623d
--- /dev/null
+++ b/src/main/java/kieker/diagnosis/components/treetable/TimestampTreeTableCellFactory.java
@@ -0,0 +1,29 @@
+/***************************************************************************
+ * Copyright 2015 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.diagnosis.components.treetable;
+
+import kieker.diagnosis.model.DataModel;
+import kieker.diagnosis.util.NameConverter;
+
+public final class TimestampTreeTableCellFactory<S, T> extends AbstractTreeTableCellFactory<S, T> {
+
+	@Override
+	protected String getItemLabel(T item) {
+		return NameConverter.toTimestampString((Long) item, DataModel.getInstance().getTimeUnit());
+	}
+
+}
\ No newline at end of file
diff --git a/src/main/java/kieker/diagnosis/controller/aggregatedtraces/AggregatedTracesViewController.java b/src/main/java/kieker/diagnosis/controller/aggregatedtraces/AggregatedTracesViewController.java
index a7a98766edde86e2fc4843a1bdf00d71a20a9212..3d446d8182163a3b3b2df350031bab763af34171 100644
--- a/src/main/java/kieker/diagnosis/controller/aggregatedtraces/AggregatedTracesViewController.java
+++ b/src/main/java/kieker/diagnosis/controller/aggregatedtraces/AggregatedTracesViewController.java
@@ -31,7 +31,7 @@ import javafx.scene.control.TextField;
 import javafx.scene.control.TreeItem;
 import javafx.scene.control.TreeTableView;
 import javafx.scene.input.MouseEvent;
-import kieker.diagnosis.components.LazyAggregatedOperationCallTreeItem;
+import kieker.diagnosis.components.treetable.LazyAggregatedOperationCallTreeItem;
 import kieker.diagnosis.controller.AbstractController;
 import kieker.diagnosis.domain.AggregatedOperationCall;
 import kieker.diagnosis.domain.AggregatedTrace;
diff --git a/src/main/java/kieker/diagnosis/controller/traces/TracesViewController.java b/src/main/java/kieker/diagnosis/controller/traces/TracesViewController.java
index f9b390de8c77f29a910874f3ef58d3926c7b0720..506845ec7d3a7e72e9525c57ec4ff31aca117870 100644
--- a/src/main/java/kieker/diagnosis/controller/traces/TracesViewController.java
+++ b/src/main/java/kieker/diagnosis/controller/traces/TracesViewController.java
@@ -33,7 +33,7 @@ import javafx.scene.control.TreeItem;
 import javafx.scene.control.TreeTableView;
 import javafx.scene.input.MouseEvent;
 import jfxtras.scene.control.CalendarTimeTextField;
-import kieker.diagnosis.components.LazyOperationCallTreeItem;
+import kieker.diagnosis.components.treetable.LazyOperationCallTreeItem;
 import kieker.diagnosis.controller.AbstractController;
 import kieker.diagnosis.domain.OperationCall;
 import kieker.diagnosis.domain.Trace;
diff --git a/src/main/resources/views/kieker/diagnosis/view/aggregatedcalls/AggregatedCallsView.fxml b/src/main/resources/views/kieker/diagnosis/view/aggregatedcalls/AggregatedCallsView.fxml
index 36cb598d54d1882850d370d8f25f0a0217765b15..e10da09c584f23680625b3c220fb8a34a13602ab 100644
--- a/src/main/resources/views/kieker/diagnosis/view/aggregatedcalls/AggregatedCallsView.fxml
+++ b/src/main/resources/views/kieker/diagnosis/view/aggregatedcalls/AggregatedCallsView.fxml
@@ -1,6 +1,7 @@
 <?import javafx.scene.control.*?>
 <?import javafx.scene.layout.*?>
 <?import javafx.scene.control.cell.*?>
+<?import kieker.diagnosis.components.table.*?>
 
 <GridPane xmlns:fx="http://javafx.com/fxml"
 	AnchorPane.bottomAnchor="0.0" AnchorPane.topAnchor="0.0"
@@ -43,7 +44,7 @@
 		<columns>
 			<TableColumn text="%AggregatedCallsView.tblclmnExecutionContainer.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<PropertyValueFactory property="container" />
@@ -52,25 +53,25 @@
 
 			<TableColumn text="%AggregatedCallsView.tblclmnComponent.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.ComponentCellValueFactory property="component" />
+					<ComponentCellValueFactory property="component" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%AggregatedCallsView.tblclmnOperation.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.OperationCellValueFactory property="operation" />
+					<OperationCellValueFactory property="operation" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%AggregatedCallsView.tblclmnNumberOfCalls.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<PropertyValueFactory property="calls" />
@@ -79,50 +80,50 @@
 
 			<TableColumn text="%AggregatedCallsView.tblclmnMinimalDuration.text">
 				<cellFactory>
-					<kieker.diagnosis.components.DurationTableCellFactory />
+					<DurationTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationCellValueFactory
+					<DurationCellValueFactory
 						property="minDuration" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%AggregatedCallsView.tblclmnMeanDuration.text">
 				<cellFactory>
-					<kieker.diagnosis.components.DurationTableCellFactory />
+					<DurationTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationCellValueFactory
+					<DurationCellValueFactory
 						property="meanDuration" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%AggregatedCallsView.tblclmnMedianDuration.text">
 				<cellFactory>
-					<kieker.diagnosis.components.DurationTableCellFactory />
+					<DurationTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationCellValueFactory
+					<DurationCellValueFactory
 						property="medianDuration" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%AggregatedCallsView.tblclmnMaximalDuration.text">
 				<cellFactory>
-					<kieker.diagnosis.components.DurationTableCellFactory />
+					<DurationTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationCellValueFactory
+					<DurationCellValueFactory
 						property="maxDuration" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%AggregatedCallsView.tblclmnTotalDuration.text">
 				<cellFactory>
-					<kieker.diagnosis.components.DurationTableCellFactory />
+					<DurationTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationCellValueFactory
+					<DurationCellValueFactory
 						property="totalDuration" />
 				</cellValueFactory>
 			</TableColumn>
diff --git a/src/main/resources/views/kieker/diagnosis/view/aggregatedtraces/AggregatedTracesView.fxml b/src/main/resources/views/kieker/diagnosis/view/aggregatedtraces/AggregatedTracesView.fxml
index 4d75fee24caee0b20f66f675bd590491b4a9b7a7..b518c4c78cdc9fd76615107faaf9b6eabd8b6ba9 100644
--- a/src/main/resources/views/kieker/diagnosis/view/aggregatedtraces/AggregatedTracesView.fxml
+++ b/src/main/resources/views/kieker/diagnosis/view/aggregatedtraces/AggregatedTracesView.fxml
@@ -1,6 +1,7 @@
 <?import javafx.scene.control.*?>
 <?import javafx.scene.layout.*?>
 <?import javafx.scene.control.cell.*?>
+<?import kieker.diagnosis.components.treetable.*?>
 
 <GridPane fx:id="view" xmlns:fx="http://javafx.com/fxml"
 	AnchorPane.bottomAnchor="0.0" AnchorPane.topAnchor="0.0"
@@ -44,7 +45,7 @@
 	<columns>
 			<TreeTableColumn text="%AggregatedTracesView.trclmnExecutionContainer.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory/>
+					<FailedTreeCellFactory/>
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory property="container" />
@@ -53,25 +54,25 @@
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnComponent.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.ComponentTreeCellValueFactory property="component" />
+					<ComponentTreeCellValueFactory property="component" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnOperation.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.OperationTreeCellValueFactory property="operation" />
+					<OperationTreeCellValueFactory property="operation" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnCalls.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory property="calls" />
@@ -80,7 +81,7 @@
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnTraceDepth.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory property="stackDepth" />
@@ -89,7 +90,7 @@
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnTraceSize.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory property="stackSize" />
@@ -98,50 +99,50 @@
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnMinimalDuration.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.DurationTreeCellFactory />
+					<DurationTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationTreeCellValueFactory
+					<DurationTreeCellValueFactory
 						property="minDuration" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnAverageDuration.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.DurationTreeCellFactory />
+					<DurationTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationTreeCellValueFactory
+					<DurationTreeCellValueFactory
 						property="meanDuration" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnMeanDuration.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.DurationTreeCellFactory />
+					<DurationTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationTreeCellValueFactory
+					<DurationTreeCellValueFactory
 						property="medianDuration" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnMaximalDuration.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.DurationTreeCellFactory />
+					<DurationTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationTreeCellValueFactory
+					<DurationTreeCellValueFactory
 						property="maxDuration" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%AggregatedTracesView.trclmnTotalDuration.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.DurationTreeCellFactory />
+					<DurationTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationTreeCellValueFactory
+					<DurationTreeCellValueFactory
 						property="totalDuration" />
 				</cellValueFactory>
 			</TreeTableColumn>
diff --git a/src/main/resources/views/kieker/diagnosis/view/calls/CallsView.fxml b/src/main/resources/views/kieker/diagnosis/view/calls/CallsView.fxml
index a98c1c6142f5e149a51f2a878f57bfbb47b4c368..b38e787f23021b1d3589cdae1bb30781a85528e7 100644
--- a/src/main/resources/views/kieker/diagnosis/view/calls/CallsView.fxml
+++ b/src/main/resources/views/kieker/diagnosis/view/calls/CallsView.fxml
@@ -3,6 +3,7 @@
 <?import javafx.scene.control.cell.*?>
 <?import javafx.scene.layout.VBox?>
 <?import jfxtras.scene.control.*?>
+<?import kieker.diagnosis.components.table.*?>
 
 <GridPane xmlns:fx="http://javafx.com/fxml"
 	AnchorPane.bottomAnchor="0.0" AnchorPane.topAnchor="0.0"
@@ -52,7 +53,7 @@
 		<columns>
 			<TableColumn text="%CallsView.tblclmnExecutionContainer.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<PropertyValueFactory property="container" />
@@ -61,34 +62,34 @@
 
 			<TableColumn text="%CallsView.tblclmnComponent.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.ComponentCellValueFactory property="component" />
+					<ComponentCellValueFactory property="component" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%CallsView.tblclmnOperation.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.OperationCellValueFactory property="operation" />
+					<OperationCellValueFactory property="operation" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%CallsView.tblclmnDuration.text">
 				<cellFactory>
-					<kieker.diagnosis.components.DurationTableCellFactory />
+					<DurationTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationCellValueFactory property="duration" />
+					<DurationCellValueFactory property="duration" />
 				</cellValueFactory>
 			</TableColumn>
 
 			<TableColumn text="%CallsView.tblclmnTraceID.text">
 				<cellFactory>
-					<kieker.diagnosis.components.FailedTableCellFactory />
+					<FailedTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<PropertyValueFactory property="traceID" />
@@ -97,7 +98,7 @@
 
 			<TableColumn text="%CallsView.tblclmnTimestamp.text">
 				<cellFactory>
-					<kieker.diagnosis.components.TimestampTableCellFactory />
+					<TimestampTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<PropertyValueFactory property="timestamp" />
diff --git a/src/main/resources/views/kieker/diagnosis/view/settings/SettingsDialogView.fxml b/src/main/resources/views/kieker/diagnosis/view/settings/SettingsDialogView.fxml
index 63df492c3cd3a04b49e45be6d2f26b3e8bea36b8..b7a1baf66369d303e375df0a492dfd52b4d741da 100644
--- a/src/main/resources/views/kieker/diagnosis/view/settings/SettingsDialogView.fxml
+++ b/src/main/resources/views/kieker/diagnosis/view/settings/SettingsDialogView.fxml
@@ -2,6 +2,7 @@
 <?import javafx.scene.layout.*?>
 <?import javafx.scene.control.cell.*?>
 <?import javafx.scene.control.CheckBox?>
+<?import kieker.diagnosis.components.converter.*?>
 
 <VBox xmlns:fx="http://javafx.com/fxml" fx:id="view" AnchorPane.bottomAnchor="0.0" AnchorPane.topAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
 
@@ -14,27 +15,27 @@
 
 			<Label text="%SettingsDialog.lblTimeUnit.text" GridPane.columnIndex="1" GridPane.rowIndex="1" />
 			<ComboBox fx:id="timeunits" GridPane.columnIndex="2" GridPane.rowIndex="1" GridPane.fillWidth="true" GridPane.hgrow="ALWAYS" maxWidth="Infinity">
-				<converter><kieker.diagnosis.components.TimeUnitStringConverter/></converter>
+				<converter><TimeUnitStringConverter/></converter>
 			</ComboBox>
 
 			<Label text="%SettingsDialog.lblOperationNames.text" GridPane.columnIndex="1" GridPane.rowIndex="2" />
 			<ComboBox fx:id="operationNames" GridPane.columnIndex="2" GridPane.rowIndex="2" GridPane.fillWidth="true" GridPane.hgrow="ALWAYS" maxWidth="Infinity" >
-				<converter><kieker.diagnosis.components.OperationNamesStringConverter/></converter>
+				<converter><OperationNamesStringConverter/></converter>
 			</ComboBox>
 			
 			<Label text="%SettingsDialog.lblComponentNames.text" GridPane.columnIndex="1" GridPane.rowIndex="3" />
 			<ComboBox fx:id="componentNames" GridPane.columnIndex="2" GridPane.rowIndex="3" GridPane.fillWidth="true" GridPane.hgrow="ALWAYS" maxWidth="Infinity">
-				<converter><kieker.diagnosis.components.ComponentNamesStringConverter/></converter>
+				<converter><ComponentNamesStringConverter/></converter>
 			</ComboBox>
 			
 			<Label text="%timestamps" GridPane.columnIndex="1" GridPane.rowIndex="4" />
 			<ComboBox fx:id="timestamps" GridPane.columnIndex="2" GridPane.rowIndex="4" GridPane.fillWidth="true" GridPane.hgrow="ALWAYS" maxWidth="Infinity">
-				<converter><kieker.diagnosis.components.TimestampStringConverter/></converter>
+				<converter><TimestampTypesStringConverter/></converter>
 			</ComboBox>
 			
  			<CheckBox text="%aggregateMethodCalls" fx:id="aggregateMethodCalls" GridPane.columnIndex="1" GridPane.rowIndex="5" GridPane.fillWidth="true" GridPane.hgrow="ALWAYS" maxWidth="Infinity"/>
 			<ComboBox fx:id="thresholds" GridPane.columnIndex="2" GridPane.rowIndex="5" GridPane.fillWidth="true" GridPane.hgrow="ALWAYS" maxWidth="Infinity">
-				<converter><kieker.diagnosis.components.ThresholdStringConverter/></converter>
+				<converter><ThresholdStringConverter/></converter>
 			</ComboBox>
 			
 		</GridPane>
diff --git a/src/main/resources/views/kieker/diagnosis/view/traces/TracesView.fxml b/src/main/resources/views/kieker/diagnosis/view/traces/TracesView.fxml
index 181861a3dbefdefecf2b45009777d9d51ef5fde1..070720c1af5d845544fea121b2d48bf2e5318dc5 100644
--- a/src/main/resources/views/kieker/diagnosis/view/traces/TracesView.fxml
+++ b/src/main/resources/views/kieker/diagnosis/view/traces/TracesView.fxml
@@ -2,6 +2,7 @@
 <?import javafx.scene.layout.*?>
 <?import javafx.scene.control.cell.*?>
 <?import jfxtras.scene.control.*?>
+<?import kieker.diagnosis.components.treetable.*?>
 
 <GridPane fx:id="view" xmlns:fx="http://javafx.com/fxml"
 	AnchorPane.bottomAnchor="0.0" AnchorPane.topAnchor="0.0"
@@ -52,7 +53,7 @@
 		<columns>
 			<TreeTableColumn text="%TracesView.trclmnExecutionContainer.text">
 			<cellFactory>
-						<kieker.diagnosis.components.FailedTreeCellFactory />
+						<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory
@@ -62,25 +63,25 @@
 
 			<TreeTableColumn text="%TracesView.trclmnComponent.text">
 			<cellFactory>
-						<kieker.diagnosis.components.FailedTreeCellFactory />
+						<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.ComponentTreeCellValueFactory property="component" />
+					<ComponentTreeCellValueFactory property="component" />
 				</cellValueFactory>
 			</TreeTableColumn>
 
 			<TreeTableColumn text="%TracesView.trclmnOperation.text">
 			<cellFactory>
-						<kieker.diagnosis.components.FailedTreeCellFactory />
+						<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.OperationTreeCellValueFactory property="operation" />
+					<OperationTreeCellValueFactory property="operation" />
 				</cellValueFactory>
 			</TreeTableColumn>
 
 			<TreeTableColumn text="%TracesView.trclmnTraceDepth.text">
 			<cellFactory>
-						<kieker.diagnosis.components.FailedTreeCellFactory />
+						<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory
@@ -90,7 +91,7 @@
 
 			<TreeTableColumn text="%TracesView.trclmnTraceSize.text">
 			<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory
@@ -100,17 +101,17 @@
 
 			<TreeTableColumn text="%TracesView.trclmnDuration.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.DurationTreeCellFactory />
+					<DurationTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
-					<kieker.diagnosis.components.DurationTreeCellValueFactory
+					<DurationTreeCellValueFactory
 						property="duration" />
 				</cellValueFactory>
 			</TreeTableColumn>
 			
 			<TreeTableColumn text="%TracesView.trclmnPercent.text" >
 			<cellFactory>
-						<kieker.diagnosis.components.PercentTreeCellFactory />
+						<PercentTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory
@@ -120,7 +121,7 @@
 			
 			<TreeTableColumn text="%TracesView.trclmnTraceId.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.FailedTreeCellFactory />
+					<FailedTreeCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory
@@ -130,7 +131,7 @@
 			
 			<TreeTableColumn text="%TracesView.trclmnTimestamp.text" >
 			<cellFactory>
-					<kieker.diagnosis.components.TimestampTreeTableCellFactory />
+					<TimestampTreeTableCellFactory />
 				</cellFactory>
 				<cellValueFactory>
 					<TreeItemPropertyValueFactory