done with queues, stacks, dijkstra eval