Move userDefinedWaypoints to its own namespace for clarity
Refactor classes for better encapsulation