Move code files around for maintainability.
Something updated along the way a few months ago.
Add test files and update config to point to them.
Finalize program logic.
More changes to application logic with new tests.
Modify separation of concerns for mocking purposes.
Total refactor moving all logic into ProgramDefinition.
Verify logic with new tests!