First rewrite commit.
Adding everything else.
Merge pull request #1 from teasherm/rewrite

Rewrite
Merge pull request #2 from teasherm/develop

Develop