Index: branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/AStarAlgorithm.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/AStarAlgorithm.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/AStarAlgorithm.cs	(revision 8429)
@@ -5,5 +5,5 @@
 namespace HeuristicLab.Algorithms.GraphRouting {
   public class AStarAlgorithm : IRouter {
-    private Graph graph;
+    private OsmGraph graph;
 
     private Dictionary<long, float> distances;
@@ -14,5 +14,5 @@
     private PriorityQueue<float, long> openList;
 
-    public AStarAlgorithm(Graph graph) {
+    public AStarAlgorithm(OsmGraph graph) {
       this.graph = graph;
     }
Index: branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/AStarAlgorithmV2.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/AStarAlgorithmV2.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/AStarAlgorithmV2.cs	(revision 8429)
@@ -5,5 +5,5 @@
 namespace HeuristicLab.Algorithms.GraphRouting {
   public class AStarAlgorithmV2 : IRouter {
-    private Graph graph;
+    private OsmGraph graph;
 
     private Dictionary<long, float> distances;
@@ -14,5 +14,5 @@
     private Dictionary<long, NodeData> openListLookup;
 
-    public AStarAlgorithmV2(Graph graph) {
+    public AStarAlgorithmV2(OsmGraph graph) {
       this.graph = graph;
     }
Index: branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/BidirectionalDijkstraAlgorithm.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/BidirectionalDijkstraAlgorithm.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/BidirectionalDijkstraAlgorithm.cs	(revision 8429)
@@ -5,5 +5,5 @@
 namespace HeuristicLab.Algorithms.GraphRouting {
   public class BidrectionalDijkstraAlgorithm : IRouter {
-    private Graph graph;
+    private OsmGraph graph;
 
     private HashSet<long> visitedNodesForward;
@@ -16,5 +16,5 @@
     private Dictionary<long, long> predecessorsBackward;
 
-    public BidrectionalDijkstraAlgorithm(Graph graph) {
+    public BidrectionalDijkstraAlgorithm(OsmGraph graph) {
       this.graph = graph;
     }
Index: branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/DijkstraAlgorithm.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/DijkstraAlgorithm.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Algorithms.GraphRouting/3.3/DijkstraAlgorithm.cs	(revision 8429)
@@ -5,5 +5,5 @@
 namespace HeuristicLab.Algorithms.GraphRouting {
   public class DijkstraAlgorithm : IRouter {
-    private Graph graph;
+    private OsmGraph graph;
 
     private HashSet<long> visitedNodes;
@@ -12,5 +12,5 @@
     private Dictionary<long, long> predecessors;
 
-    public DijkstraAlgorithm(Graph graph) {
+    public DijkstraAlgorithm(OsmGraph graph) {
       this.graph = graph;
     }
Index: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning.Test/Program.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning.Test/Program.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning.Test/Program.cs	(revision 8429)
@@ -23,9 +23,9 @@
 
       IDataSource ds = TestLoad(file6);
-      Graph.Graph graph = new Graph.Graph(ds);
-      TestRouter(new DijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb
-      TestRouter(new AStarAlgorithm(graph), 529102170, 31372732, false); // inz - hgb
+      OsmGraph graph = new OsmGraph(ds);
+      //TestRouter(new DijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb
+      //TestRouter(new AStarAlgorithm(graph), 529102170, 31372732, false); // inz - hgb
       TestRouter(new AStarAlgorithmV2(graph), 529102170, 31372732, false); // inz - hgb
-      TestRouter(new BidrectionalDijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb
+      //TestRouter(new BidrectionalDijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb
 
       //TestLoadAndRouter(file6, typeof(DijkstraAlgorithm), 529102170, 31372732, false, false); // inz - hgb
@@ -96,5 +96,5 @@
       Console.WriteLine("Loading Time: {0}", sw.Elapsed);
       Console.WriteLine();
-      Graph.Graph graph = new Graph.Graph(xmlDs);
+      OsmGraph graph = new OsmGraph(xmlDs);
       IRouter router = (IRouter)Activator.CreateInstance(routerType, graph);
       Console.Write("Calculate route ... ");
@@ -122,5 +122,5 @@
     }
 
-    private static void WriteGPXFile(Graph.Graph graph, long[] route, string file) {
+    private static void WriteGPXFile(OsmGraph graph, long[] route, string file) {
       XmlWriterSettings settings = new XmlWriterSettings();
       settings.Indent = true;
Index: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/Graph.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/Graph.cs	(revision 8426)
+++ 	(revision )
@@ -1,97 +1,0 @@
-﻿
-using System.Collections.Generic;
-using HeuristicLab.Problems.RoutePlanning.Osm;
-namespace HeuristicLab.Problems.RoutePlanning.Graph {
-  public class Graph {
-    private IDataSource dataSource;
-    private Dictionary<Node, List<Node>> vertexEdges;
-    private Dictionary<long, Vertex<Node>> vertices;
-    private Dictionary<Way, Dictionary<long, List<Vertex<Node>>>> resolvedList;
-
-    public Graph(IDataSource ds) {
-      dataSource = ds;
-      vertexEdges = new Dictionary<Node, List<Node>>();
-      vertices = new Dictionary<long, Vertex<Node>>();
-      resolvedList = new Dictionary<Way, Dictionary<long, List<Vertex<Node>>>>();
-    }
-
-    public Vertex<Node> GetVertex(long id) {
-      return new Vertex<Node>(dataSource.GetNode(id));
-    }
-
-    public List<Way> GetEdges(Vertex<Node> vertex) {
-      return dataSource.GetWays(vertex.Node);
-    }
-
-    public Dictionary<long, float> GetNeighbors(long id) {
-      Vertex<Node> vertex = GetVertex(id);
-      Dictionary<long, float> neighbors = new Dictionary<long, float>();
-      List<Way> edges = GetEdges(vertex);
-      foreach (Way edge in edges) {
-        //TODO: check if edge can be traversed (eg. highway tag for car roads, ...)
-
-        // get all naighbours of current vertex on this edge
-        List<Vertex<Node>> vertices = GetNeighborVerticesOnEdge(edge, vertex);
-        foreach (Vertex<Node> neighbor in vertices) {
-          if (edge.CanBeTraversed(vertex.Node, neighbor.Node)) {
-            float weight = GetWeight(edge, vertex, neighbor);
-            neighbors[neighbor.Node.Id] = weight;
-          }
-        }
-      }
-      return neighbors;
-    }
-
-    public Dictionary<long, float> GetNeighborsReversed(long id) {
-      Vertex<Node> vertex = GetVertex(id);
-      Dictionary<long, float> neighbors = new Dictionary<long, float>();
-      List<Way> edges = GetEdges(vertex);
-      foreach (Way edge in edges) {
-        List<Vertex<Node>> vertices = GetNeighborVerticesOnEdge(edge, vertex);
-        foreach (Vertex<Node> neighbor in vertices) {
-          if (edge.CanBeTraversed(neighbor.Node, vertex.Node)) {
-            float weight = GetWeight(edge, vertex, neighbor);
-            neighbors[neighbor.Node.Id] = weight;
-          }
-        }
-      }
-      return neighbors;
-    }
-
-    public List<Vertex<Node>> GetNeighborVerticesOnEdge(Way edge, Vertex<Node> vertex) {
-      List<Vertex<Node>> neighbors = new List<Vertex<Node>>();
-      for (int i = 0; i < edge.Nodes.Count; i++) {
-        Node node = edge.Nodes[i];
-        if (node.Id == vertex.Node.Id) {
-          if (i > 0) {
-            neighbors.Add(GetVertex(edge.Nodes[i - 1].Id));
-          }
-          if (i < edge.Nodes.Count - 1) {
-            neighbors.Add(GetVertex(edge.Nodes[i + 1].Id));
-          }
-        }
-      }
-      return neighbors;
-    }
-
-    public float GetWeight(Way edge, Vertex<Node> source, Vertex<Node> target) {
-      double distance = Utils.Distance(source.Node.Point, target.Node.Point);
-      int speed = edge.GetMaxSpeed();
-      double weight = (distance / speed) * 3.6;
-      return (float)weight;
-    }
-
-    public float EstimatedCosts(long sourceId, long targetId) {
-      Vertex<Node> source = GetVertex(sourceId);
-      Vertex<Node> target = GetVertex(targetId);
-      return EstimatedCosts(source, target);
-    }
-
-    public float EstimatedCosts(Vertex<Node> source, Vertex<Node> target) {
-      double distance = Utils.Distance(source.Node.Point, target.Node.Point);
-      int speed = 130;
-      double costs = (distance / speed) * 3.6;
-      return (float)costs;
-    }
-  }
-}
Index: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/IEdge.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/IEdge.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/IEdge.cs	(revision 8429)
@@ -1,7 +1,7 @@
 ﻿
 namespace HeuristicLab.Problems.RoutePlanning.Graph {
-  public interface IEdge<Vertex> {
-    Vertex Source { get; }
-    Vertex Target { get; }
+  public interface IEdge<T> {
+    T Source { get; }
+    T Target { get; }
   }
 }
Index: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/OsmGraph.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/OsmGraph.cs	(revision 8429)
+++ branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/OsmGraph.cs	(revision 8429)
@@ -0,0 +1,91 @@
+﻿
+using System.Collections.Generic;
+using HeuristicLab.Problems.RoutePlanning.Osm;
+namespace HeuristicLab.Problems.RoutePlanning.Graph {
+  public class OsmGraph {
+    private IDataSource dataSource;
+
+    public OsmGraph(IDataSource ds) {
+      dataSource = ds;
+    }
+
+    public Vertex<Node> GetVertex(long id) {
+      return new Vertex<Node>(dataSource.GetNode(id));
+    }
+
+    public List<Way> GetEdges(Vertex<Node> vertex) {
+      return dataSource.GetWays(vertex.Node);
+    }
+
+    public Dictionary<long, float> GetNeighbors(long id) {
+      Vertex<Node> vertex = GetVertex(id);
+      Dictionary<long, float> neighbors = new Dictionary<long, float>();
+      List<Way> edges = GetEdges(vertex);
+      foreach (Way edge in edges) {
+        //TODO: check if edge can be traversed (eg. highway tag for car roads, ...)
+
+        // get all naighbours of current vertex on this edge
+        List<Vertex<Node>> vertices = GetNeighborVerticesOnEdge(edge, vertex);
+        foreach (Vertex<Node> neighbor in vertices) {
+          if (edge.CanBeTraversed(vertex.Node, neighbor.Node)) {
+            float weight = GetWeight(edge, vertex, neighbor);
+            neighbors[neighbor.Node.Id] = weight;
+          }
+        }
+      }
+      return neighbors;
+    }
+
+    public Dictionary<long, float> GetNeighborsReversed(long id) {
+      Vertex<Node> vertex = GetVertex(id);
+      Dictionary<long, float> neighbors = new Dictionary<long, float>();
+      List<Way> edges = GetEdges(vertex);
+      foreach (Way edge in edges) {
+        List<Vertex<Node>> vertices = GetNeighborVerticesOnEdge(edge, vertex);
+        foreach (Vertex<Node> neighbor in vertices) {
+          if (edge.CanBeTraversed(neighbor.Node, vertex.Node)) {
+            float weight = GetWeight(edge, vertex, neighbor);
+            neighbors[neighbor.Node.Id] = weight;
+          }
+        }
+      }
+      return neighbors;
+    }
+
+    public List<Vertex<Node>> GetNeighborVerticesOnEdge(Way edge, Vertex<Node> vertex) {
+      List<Vertex<Node>> neighbors = new List<Vertex<Node>>();
+      for (int i = 0; i < edge.Nodes.Count; i++) {
+        Node node = edge.Nodes[i];
+        if (node.Id == vertex.Node.Id) {
+          if (i > 0) {
+            neighbors.Add(GetVertex(edge.Nodes[i - 1].Id));
+          }
+          if (i < edge.Nodes.Count - 1) {
+            neighbors.Add(GetVertex(edge.Nodes[i + 1].Id));
+          }
+        }
+      }
+      return neighbors;
+    }
+
+    public float GetWeight(Way edge, Vertex<Node> source, Vertex<Node> target) {
+      double distance = Utils.Distance(source.Node.Point, target.Node.Point);
+      int speed = edge.GetMaxSpeed();
+      double weight = (distance / speed) * 3.6;
+      return (float)weight;
+    }
+
+    public float EstimatedCosts(long sourceId, long targetId) {
+      Vertex<Node> source = GetVertex(sourceId);
+      Vertex<Node> target = GetVertex(targetId);
+      return EstimatedCosts(source, target);
+    }
+
+    public float EstimatedCosts(Vertex<Node> source, Vertex<Node> target) {
+      double distance = Utils.Distance(source.Node.Point, target.Node.Point);
+      int speed = 130;
+      double costs = (distance / speed) * 3.6;
+      return (float)costs;
+    }
+  }
+}
Index: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/HeuristicLab.Problems.RoutePlanning.csproj
===================================================================
--- branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/HeuristicLab.Problems.RoutePlanning.csproj	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/HeuristicLab.Problems.RoutePlanning.csproj	(revision 8429)
@@ -57,5 +57,5 @@
   <ItemGroup>
     <Compile Include="Graph\Edge.cs" />
-    <Compile Include="Graph\Graph.cs" />
+    <Compile Include="Graph\OsmGraph.cs" />
     <Compile Include="Graph\IEdge.cs" />
     <Compile Include="Graph\Route.cs" />
Index: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/RoutePlanningProblem.cs
===================================================================
--- branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/RoutePlanningProblem.cs	(revision 8426)
+++ branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/RoutePlanningProblem.cs	(revision 8429)
@@ -27,4 +27,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.RoutePlanning.Graph;
 using HeuristicLab.Problems.RoutePlanning.Osm;
 using HeuristicLab.Problems.RoutePlanning.Osm.Data;
@@ -41,5 +42,5 @@
 
     IDataSource dataSource;
-    Graph.Graph graph;
+    OsmGraph graph;
 
     #region Parameter Properties
@@ -105,5 +106,5 @@
       FileInfo f = new FileInfo(file);
       dataSource = new XmlDataSource(file);
-      graph = new Graph.Graph(dataSource);
+      graph = new OsmGraph(dataSource);
 
       Name = f.Name;
Index: branches/RoutePlanning/RoutePlanning.sln
===================================================================
--- branches/RoutePlanning/RoutePlanning.sln	(revision 8426)
+++ branches/RoutePlanning/RoutePlanning.sln	(revision 8429)
@@ -9,4 +9,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.GraphRouting", "HeuristicLab.Algorithms.GraphRouting\3.3\HeuristicLab.Algorithms.GraphRouting.csproj", "{4FE72407-6CAA-4F41-9F2D-D45FDA19ED3C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9FD7CBFA-D7D9-4FA3-9038-CD867CA9B3B6}"
 EndProject
 Global
