Step 3: object-oriented refactoring

Same code as geo2, but refactored as independent objects and a launcher for easier maintenance/testing.

Results

Sources