diff --git a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java
index b01877090e32c69da43641ecf81b39fafbd7797e..78a22e3d4f8159f29655bcb4967bef2c27a27068 100644
--- a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java
+++ b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java
@@ -77,21 +77,26 @@ public class TraceAnalysisConfiguration extends Configuration {
 		GraphMLWriter graphMLWriter = new GraphMLWriter(graphFilesOutputDir);
 		DotGraphWriter dotGraphWriter = new DotGraphWriter(graphFilesOutputDir);
 
-		AggrTraceTraverserStage aggrTraceTraverser = new AggrTraceTraverserStage();
-		final Distributor<NamedGraph> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy());
-		GraphMLWriter graphMLWriter2 = new GraphMLWriter(graphFilesOutputDir);
-		DotGraphWriter dotGraphWriter2 = new DotGraphWriter(graphFilesOutputDir);
-
 		super.connectPorts(distributor.getNewOutputPort(), traceTraverserStage.getInputPort());
 		super.connectPorts(traceTraverserStage.getOutputPort(), graphDistributor.getInputPort());
 		super.connectPorts(graphDistributor.getNewOutputPort(), graphMLWriter.getInputPort());
 		super.connectPorts(graphDistributor.getNewOutputPort(), dotGraphWriter.getInputPort());
 
+		AggrTraceTraverserStage aggrTraceTraverser = new AggrTraceTraverserStage();
+		final Distributor<NamedGraph> graphDistributor2 = new Distributor<>(new CopyByReferenceStrategy());
+		GraphMLWriter graphMLWriter2 = new GraphMLWriter(graphFilesOutputDir);
+		DotGraphWriter dotGraphWriter2 = new DotGraphWriter(graphFilesOutputDir);
+
 		super.connectPorts(aggregation.getOutputPort(), aggrTraceTraverser.getInputPort());
 		super.connectPorts(aggrTraceTraverser.getOutputPort(), graphDistributor2.getInputPort());
 		super.connectPorts(graphDistributor2.getNewOutputPort(), graphMLWriter2.getInputPort());
 		super.connectPorts(graphDistributor2.getNewOutputPort(), dotGraphWriter2.getInputPort());
 
+		/*
+		 *
+		 *
+		 */
+
 		// TODO Temp Some examples for nested graphs
 
 		/*
diff --git a/src/main/java/kieker/analysis/dev/DependencyCreator.java b/src/main/java/kieker/analysis/dev/DependencyCreator.java
new file mode 100644
index 0000000000000000000000000000000000000000..85e4adca5b2e90cb645231816eaaf9b90109eff6
--- /dev/null
+++ b/src/main/java/kieker/analysis/dev/DependencyCreator.java
@@ -0,0 +1,25 @@
+package kieker.analysis.dev;
+
+import kieker.analysis.trace.traversal.OperationCallVisitor;
+import kieker.analysis.traceanalysisdomain.AggregatedOperationCall;
+
+public class DependencyCreator extends OperationCallVisitor<AggregatedOperationCall> {
+
+	private final OperationsDependency operationsDependency;
+
+	public DependencyCreator(final OperationsDependency operationsDependency) {
+		this.operationsDependency = operationsDependency;
+	}
+
+	@Override
+	public void visit(final AggregatedOperationCall operationCall) {
+
+		operationsDependency.addCall(operationCall);
+
+	}
+
+	public OperationsDependency getOperationsDependency() {
+		return operationsDependency;
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java
new file mode 100644
index 0000000000000000000000000000000000000000..003d583407922944341ff2e50e52fadc4730177e
--- /dev/null
+++ b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java
@@ -0,0 +1,28 @@
+package kieker.analysis.dev;
+
+import kieker.analysis.trace.traversal.TraceTraverser;
+import kieker.analysis.traceanalysisdomain.AggregatedTrace;
+
+import teetime.stage.basic.AbstractTransformation;
+
+public class DependencyCreatorStage extends AbstractTransformation<AggregatedTrace, OperationsDependency> {
+
+	private final OperationsDependency operationsDependency = new OperationsDependency();
+	private final DependencyCreator dependencyCreator = new DependencyCreator(operationsDependency);
+
+	@Override
+	protected void execute(final AggregatedTrace trace) {
+		new TraceTraverser<>(dependencyCreator).traverse(trace);
+	}
+
+	@Override
+	public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework)
+
+		// TODO Update Statistics
+
+		this.getOutputPort().send(operationsDependency);
+
+		super.onTerminating();
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/dev/OperationsDependency.java b/src/main/java/kieker/analysis/dev/OperationsDependency.java
new file mode 100644
index 0000000000000000000000000000000000000000..bfb6c5e197d6f3f32600b18174f64a303506a51d
--- /dev/null
+++ b/src/main/java/kieker/analysis/dev/OperationsDependency.java
@@ -0,0 +1,64 @@
+package kieker.analysis.dev;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import kieker.analysis.traceanalysisdomain.AggregatedOperationCall;
+
+public class OperationsDependency {
+
+	// TODO Move to Domain package
+
+	private final Map<String, List<AggregatedOperationCall>> operations = new HashMap<>();
+
+	private final Map<String, OperationsDependencyRelation> calls = new HashMap<>();
+
+	public void addCall(final AggregatedOperationCall call) {
+		// TODO
+		if (!operations.containsKey("Key")) {
+			operations.put("Key", new ArrayList<>());
+		}
+
+		operations.get("Key").add(call);
+
+		if (!calls.containsKey("Key")) {
+			calls.put("Key", new OperationsDependencyRelation(call.getParent(), call, call.getCalls()));
+		}
+
+		calls.get("Key").addToCalls(call.getCalls());
+
+	}
+
+	private class OperationsDependencyRelation {
+
+		private final AggregatedOperationCall caller;
+
+		private final AggregatedOperationCall callee;
+
+		private int calls;
+
+		public OperationsDependencyRelation(final AggregatedOperationCall caller, final AggregatedOperationCall callee, final int calls) {
+			this.caller = caller;
+			this.callee = callee;
+			this.calls = calls;
+		}
+
+		public void addToCalls(final int calls) {
+			this.calls += calls;
+		}
+
+		public AggregatedOperationCall getCaller() {
+			return caller;
+		}
+
+		public AggregatedOperationCall getCallee() {
+			return callee;
+		}
+
+		public int getCalls() {
+			return calls;
+		}
+	}
+}