diff --git a/src/main/java/kieker/analysis/TraceAnalysis.java b/src/main/java/kieker/analysis/TraceAnalysis.java
index a1af2225141ae7bbce562cc0b9d66bc2faf85f1a..2be3f3291dde9d61b42e3c9b1df89633a283c613 100644
--- a/src/main/java/kieker/analysis/TraceAnalysis.java
+++ b/src/main/java/kieker/analysis/TraceAnalysis.java
@@ -5,6 +5,11 @@ package kieker.analysis;
 
 import java.io.File;
 
+import com.tinkerpop.blueprints.Edge;
+import com.tinkerpop.blueprints.Graph;
+import com.tinkerpop.blueprints.Vertex;
+import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
+
 import teetime.framework.Execution;
 
 /**
@@ -21,6 +26,19 @@ public final class TraceAnalysis {
 		final Execution<TraceAnalysisConfiguration> analysis = new Execution<>(traceAnalysisConfiguration);
 		analysis.executeBlocking();
 
+		/*
+		 *
+		 *
+		 *
+		 * TODO
+		 */
+
+		Graph graph = new TinkerGraph();
+
+		Vertex vertex = graph.addVertex(101);
+
+		Edge edge = vertex.addEdge("Label", vertex);
+
 	}
 
 }
diff --git a/src/main/java/kieker/analysis/domain/ComponentDependency.java b/src/main/java/kieker/analysis/domain/ComponentDependency.java
index fc51d2f1f3a1da2a9ce10613ac479cff9d55620a..b237c11eff95d47593ba4cc9eb28296bfe1a0684 100644
--- a/src/main/java/kieker/analysis/domain/ComponentDependency.java
+++ b/src/main/java/kieker/analysis/domain/ComponentDependency.java
@@ -19,6 +19,16 @@ public class ComponentDependency {
 			components.put(componentCall.getIdentifier(), componentCall);
 		}
 
+		// TODO Better ->
+
+		// TODO Add method in OperationCall to receive the key/identifier
+		String componentKey = operationCall.getContainer() + ',' + operationCall.getComponent();
+
+		if (!components.containsKey(componentKey)) {
+			components.put(componentKey, new ComponentCall(operationCall));
+		}
+
+		// TODO Add data to this ComonentCall
 	}
 
 	public void addRelation(final OperationsDependencyRelation relation) {
diff --git a/src/main/java/kieker/analysis/graph/impl/EdgeImp.java b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java
similarity index 71%
rename from src/main/java/kieker/analysis/graph/impl/EdgeImp.java
rename to src/main/java/kieker/analysis/graph/impl/EdgeImpl.java
index fcf66bd41088f66225d9f274e9ecc3e0949bceed..126eec949cc4f4b900cc3642d693c1cd05816162 100644
--- a/src/main/java/kieker/analysis/graph/impl/EdgeImp.java
+++ b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java
@@ -2,7 +2,7 @@ package kieker.analysis.graph.impl;
 
 import kieker.analysis.graph.Edge;
 
-class EdgeImp extends ElementImpl implements Edge {
+class EdgeImpl extends ElementImpl implements Edge {
 
 	// public Vertex getVertex(Direction direction) throws IllegalArgumentException;
 
diff --git a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
index 6a1af0ef8ed0df07f6b6af5d52481ec6f832b65a..5f23f4cc54be5db30c35f45bc34800101f43f37a 100644
--- a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
+++ b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
@@ -1,33 +1,43 @@
 package kieker.analysis.graph.impl;
 
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import kieker.analysis.graph.Element;
 
 abstract class ElementImpl implements Element {
 
+	protected Map<String, Object> properties = new HashMap<String, Object>();
+	protected final String id;
+	protected final GraphImpl graph; // TODO Maybe Graph as type?
+
+	protected ElementImpl(final String id, final GraphImpl graph) {
+		this.graph = graph;
+		this.id = id;
+	}
+
 	@Override
+	@SuppressWarnings("unchecked")
 	public <T> T getProperty(final String key) {
-		// TODO Auto-generated method stub
-		return null;
+		return (T) this.properties.get(key);
 	}
 
 	@Override
 	public Set<String> getPropertyKeys() {
-		// TODO Auto-generated method stub
-		return null;
+		return new HashSet<String>(this.properties.keySet());
 	}
 
 	@Override
 	public void setProperty(final String key, final Object value) {
-		// TODO Auto-generated method stub
-
+		this.properties.put(key, value);
 	}
 
 	@Override
+	@SuppressWarnings("unchecked")
 	public <T> T removeProperty(final String key) {
-		// TODO Auto-generated method stub
-		return null;
+		return (T) this.properties.remove(key);
 	}
 
 	@Override
@@ -38,8 +48,7 @@ abstract class ElementImpl implements Element {
 
 	@Override
 	public Object getId() {
-		// TODO Auto-generated method stub
-		return null;
+		return this.id;
 	}
 
 }
diff --git a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
index c6bc37f577956056c6a979c76b44faa1ab4dbba6..faa216dc6f484db63a189d37ddb2476c01e0dee1 100644
--- a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
+++ b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
@@ -13,11 +13,26 @@ public class GraphImpl implements Graph {
 	protected Map<String, Vertex> vertices = new HashMap<String, Vertex>();
 	protected Map<String, Edge> edges = new HashMap<String, Edge>();
 
+	protected Long currentDefaultId = 0l;
+
 	public GraphImpl() {}
 
 	@Override
 	public Vertex addVertex(final Object id) {
-		// TODO Auto-generated method stub
+		String idString = null;
+		if (id == null) {
+			do {
+				idString = getDefaultId();
+			} while (vertices.containsKey(idString));
+		} else {
+			idString = id.toString();
+			if (vertices.containsKey(idString)) {
+				// TODO Throw Exception ExceptionFactory.vertexWithIdAlreadyExists(id)
+			}
+		}
+
+		Vertex vertex = new VertexImpl(idString, this);
+		vertices.put(vertex.getId().toString(), vertex);
 		return null;
 	}
 
@@ -35,14 +50,34 @@ public class GraphImpl implements Graph {
 
 	@Override
 	public void removeVertex(final Vertex vertex) {
-		// TODO Auto-generated method stub
+		// TODO Check whether the vertex exists
+
+		// TODO Remove all edges
+
+		// TODO remove this vertex from map
 
 	}
 
 	@Override
 	public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex) {
-		// TODO Auto-generated method stub
-		return null;
+		String idString = null;
+		if (id == null) {
+			do {
+				idString = getDefaultId();
+			} while (edges.containsKey(idString));
+		} else {
+			idString = id.toString();
+			if (edges.containsKey(idString)) {
+				// TODO Throw Exception ExceptionFactory.edgeWithIdAlreadyExists(id)
+			}
+		}
+
+		Edge edge = EdgeImpl(id, outVertex, inVertex, this);
+		edges.put(edge.getId().toString(), edge);
+
+		// TODO Add Edge to vertices
+
+		return edge;
 	}
 
 	@Override
@@ -63,4 +98,13 @@ public class GraphImpl implements Graph {
 
 	}
 
+	private String getDefaultId() {
+		String idString;
+		do {
+			idString = currentDefaultId.toString();
+			currentDefaultId++;
+		} while (vertices.containsKey(idString) || edges.containsKey(idString));
+		return idString;
+	}
+
 }