README updated
Quite a few updates. Reworking some of the code to be more abstract.