implement point to point pathfinding