Most of the tests do not yet pass and the main.rs doesn't compile
but we are snapshotting here so we can start fixing unit tests
before we hook directly into the main.rs.
This will help us implement functions and modules.
Also move each of the operations into a separate method.
This will help the readability of our run method.