added ShortestPath and updated Graph and Edge