Finished write up. This is the commit which will be turned in. TODO: Lots of cleanup.