framework
 for dijkstra's