diff --git a/src/main/java/kieker/analysis/graph/Edge.java b/src/main/java/kieker/analysis/graph/Edge.java
index 75fdbd09e8c8308323a3d12a12c2dcc848c76be8..78e516be22a7cc29baf4176c32ab44882a6ee5b3 100644
--- a/src/main/java/kieker/analysis/graph/Edge.java
+++ b/src/main/java/kieker/analysis/graph/Edge.java
@@ -1,6 +1,6 @@
 package kieker.analysis.graph;
 
-public interface Edge extends Element {
+public interface Edge extends GraphElement {
 
 	public Vertex getVertex(Direction direction) throws IllegalArgumentException;
 
diff --git a/src/main/java/kieker/analysis/graph/Element.java b/src/main/java/kieker/analysis/graph/Element.java
index 9682cead451b9861c1a504c94fd9474ebe5a02c8..1e39d8d663abc5e08a93878dbce22d78f4802a84 100644
--- a/src/main/java/kieker/analysis/graph/Element.java
+++ b/src/main/java/kieker/analysis/graph/Element.java
@@ -1,18 +1,15 @@
-package kieker.analysis.graph;
-
-import java.util.Set;
-
-public abstract interface Element {
-
-	public <T> T getProperty(String key);
-
-	public Set<String> getPropertyKeys();
-
-	public void setProperty(String key, Object value);
-
-	public <T> T removeProperty(String key);
-
-	public void remove();
-
-	public Object getId();
-}
+package kieker.analysis.graph;
+
+import java.util.Set;
+
+public abstract interface Element {
+
+	public <T> T getProperty(String key);
+
+	public Set<String> getPropertyKeys();
+
+	public void setProperty(String key, Object value);
+
+	public <T> T removeProperty(String key);
+
+}
diff --git a/src/main/java/kieker/analysis/graph/Graph.java b/src/main/java/kieker/analysis/graph/Graph.java
index 36593bf60b293eec50e563202f7613b5d44470cd..ca9f3de21f99d30ffa7713494179ea7c748b0ac0 100644
--- a/src/main/java/kieker/analysis/graph/Graph.java
+++ b/src/main/java/kieker/analysis/graph/Graph.java
@@ -1,6 +1,6 @@
 package kieker.analysis.graph;
 
-public interface Graph {
+public interface Graph extends Element {
 
 	public String getName();
 
diff --git a/src/main/java/kieker/analysis/graph/GraphTester.java b/src/main/java/kieker/analysis/graph/GraphTester.java
index 19cbaaedc9d3e1955e34e89388aeb6bc1f901e69..91a804922c3d8a61807f0a664a17d11ae11ed115 100644
--- a/src/main/java/kieker/analysis/graph/GraphTester.java
+++ b/src/main/java/kieker/analysis/graph/GraphTester.java
@@ -3,7 +3,7 @@ package kieker.analysis.graph;
 import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 
-import kieker.analysis.graph.export.dot.DotWriter;
+import kieker.analysis.graph.export.dot.DotExporter;
 import kieker.analysis.graph.export.graphml.GraphMLExporter;
 import kieker.analysis.graph.impl.GraphImpl;
 
@@ -99,7 +99,7 @@ public class GraphTester {
 		GraphMLExporter graphMLExporter = new GraphMLExporter();
 		graphMLExporter.export(graph, System.out);
 
-		DotWriter dotWriter = new DotWriter(graph, new OutputStreamWriter(System.out));
+		DotExporter dotWriter = new DotExporter(graph, new OutputStreamWriter(System.out));
 		dotWriter.transform();
 
 		// DotExporter dotExporter = new DotExporter();
diff --git a/src/main/java/kieker/analysis/graph/Vertex.java b/src/main/java/kieker/analysis/graph/Vertex.java
index 24464338acb0e4f0b9a16cac01ca92be28a10946..5fa0403d76bfcbeccccab564646ac515c0d7ab57 100644
--- a/src/main/java/kieker/analysis/graph/Vertex.java
+++ b/src/main/java/kieker/analysis/graph/Vertex.java
@@ -1,6 +1,6 @@
 package kieker.analysis.graph;
 
-public interface Vertex extends Element {
+public interface Vertex extends GraphElement {
 
 	public Graph addChildGraph();
 
diff --git a/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java
index 6909533ce83b20b2247b23cf5a2030af6555371e..16e53e25a2b8d29e8bdedcfd270ebe642261932b 100644
--- a/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java
+++ b/src/main/java/kieker/analysis/graph/impl/EdgeImpl.java
@@ -4,7 +4,7 @@ import kieker.analysis.graph.Direction;
 import kieker.analysis.graph.Edge;
 import kieker.analysis.graph.Vertex;
 
-class EdgeImpl extends ElementImpl implements Edge {
+class EdgeImpl extends GraphElementImpl implements Edge {
 
 	private final Vertex outVertex;
 	private final Vertex inVertex;
diff --git a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
index f1c2dd91928b5bcfbce4191c07fe44f55cf23f98..02861de24475f15ab1d203e731f3e8360d7baafa 100644
--- a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
+++ b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
@@ -1,51 +1,36 @@
-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;
-
-	protected ElementImpl(final String id, final GraphImpl graph) {
-		this.graph = graph;
-		this.id = id;
-	}
-
-	@Override
-	@SuppressWarnings("unchecked")
-	public <T> T getProperty(final String key) {
-		return (T) this.properties.get(key);
-	}
-
-	@Override
-	public Set<String> getPropertyKeys() {
-		return new HashSet<String>(this.properties.keySet());
-	}
-
-	@Override
-	public void setProperty(final String key, final Object value) {
-		this.properties.put(key, value);
-	}
-
-	@Override
-	@SuppressWarnings("unchecked")
-	public <T> T removeProperty(final String key) {
-		return (T) this.properties.remove(key);
-	}
-
-	@Override
-	abstract public void remove();
-
-	@Override
-	public Object getId() {
-		return this.id;
-	}
-
-}
+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>();
+
+	@Override
+	@SuppressWarnings("unchecked")
+	public <T> T getProperty(final String key) {
+		return (T) this.properties.get(key);
+	}
+
+	@Override
+	public Set<String> getPropertyKeys() {
+		return new HashSet<String>(this.properties.keySet());
+	}
+
+	@Override
+	public void setProperty(final String key, final Object value) {
+		this.properties.put(key, value);
+	}
+
+	@Override
+	@SuppressWarnings("unchecked")
+	public <T> T removeProperty(final String key) {
+		return (T) this.properties.remove(key);
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/graph/impl/GraphElementImpl.java b/src/main/java/kieker/analysis/graph/impl/GraphElementImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..efbf231d23ea8cf1aed92ca55d7be79aee91f0ac
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/impl/GraphElementImpl.java
@@ -0,0 +1,24 @@
+package kieker.analysis.graph.impl;
+
+import kieker.analysis.graph.GraphElement;
+
+abstract class GraphElementImpl extends ElementImpl implements GraphElement {
+
+	protected final String id;
+	protected final GraphImpl graph;
+
+	protected GraphElementImpl(final String id, final GraphImpl graph) {
+		super();
+		this.graph = graph;
+		this.id = id;
+	}
+
+	@Override
+	abstract public void remove();
+
+	@Override
+	public Object getId() {
+		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 ce3ef5ef8ace261b182e63492c07675293cdf39c..27dc1641f96c68e723743a34870201cc527b4e37 100644
--- a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
+++ b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
@@ -9,7 +9,7 @@ import kieker.analysis.graph.Edge;
 import kieker.analysis.graph.Graph;
 import kieker.analysis.graph.Vertex;
 
-public class GraphImpl implements Graph {
+public class GraphImpl extends ElementImpl implements Graph {
 
 	protected String name = "G";
 
diff --git a/src/main/java/kieker/analysis/graph/impl/VertexImpl.java b/src/main/java/kieker/analysis/graph/impl/VertexImpl.java
index f733eb0f9aa4b12c8dd0160792ab7b529b29205b..8d0b1de8e83d5f9a4e7e8abde802c6a275c5b9b4 100644
--- a/src/main/java/kieker/analysis/graph/impl/VertexImpl.java
+++ b/src/main/java/kieker/analysis/graph/impl/VertexImpl.java
@@ -9,7 +9,7 @@ import kieker.analysis.graph.Edge;
 import kieker.analysis.graph.Graph;
 import kieker.analysis.graph.Vertex;
 
-class VertexImpl extends ElementImpl implements Vertex {
+class VertexImpl extends GraphElementImpl implements Vertex {
 
 	protected Map<String, Edge> outEdges = new HashMap<String, Edge>();
 	protected Map<String, Edge> inEdges = new HashMap<String, Edge>();