add Astar implementation