Major 3.0 rewrite
2 spaces
Add some tests, more to go
Finish tests, remove old classes
Merge pull request #3 from HubSpot/rewrite

Major 3.0 rewrite