Code ready, need to put things together

There was a pretty big re-design inside my head so stuff may look
different.  This comit includes my tests.
Initial release done