diff --git a/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java b/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java
new file mode 100644
index 0000000000000000000000000000000000000000..c13ec79044435907082df76e7204e09d974a3dc2
--- /dev/null
+++ b/src/main/java/kieker/analysis/trace/traversal/AbstractTraceToGraphTransformer.java
@@ -0,0 +1,38 @@
+package kieker.analysis.trace.traversal;
+
+import com.tinkerpop.blueprints.Edge;
+import com.tinkerpop.blueprints.Graph;
+import com.tinkerpop.blueprints.Vertex;
+import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
+
+import kieker.analysis.traceanalysisdomain.AbstractOperationCall;
+
+public abstract class AbstractTraceToGraphTransformer<C extends AbstractOperationCall<C>> extends OperationCallVisitor<C> {
+
+	protected final Graph graph;
+
+	public AbstractTraceToGraphTransformer() {
+		super();
+		this.graph = new TinkerGraph();
+	}
+
+	public Graph getGraph() {
+		return graph;
+	}
+
+	@Override
+	public void visit(final C operationCall) {
+
+		addVertex(operationCall);
+
+		if (operationCall.getParent() != null) {
+			addEdge(operationCall, operationCall.getParent());
+		}
+
+	}
+
+	protected abstract Vertex addVertex(C operationCall);
+
+	protected abstract Edge addEdge(C operationCall, C parentOperationCall);
+
+}