added A* path finder