A* implemented