Add distance tests and canReach logic