add astar function