firstworking version.
Now Object Oriented (BUT NOT QUITE WORKING)

there is at least one bug that I'm currently working out, but this
should give you a good idea of how this is going to work.

*Changes sponsored and inspired by Travis White and Keegan Moore
Merge branch 'pr/5'