Add testing and code quality project scaffolding.
Split out classes into files.
Fix tailor failures.
Add code documentation.