API cleanups and integration test.

* Split things into files where appropriate
* Finish deprecating everything.
* Create unit test to ensure Reporter is passed all the way through.