Refactor Positionable to CLocateable for consistency, and create DistanceUtil