Rewrite the api to make it more friendly

- [new] Provide defaults for Next Gen products
- [new] Better API (thanks @paulrobertlloyd for pointing out the first version was not practical)
- [new] Improved architecture

![ ](http://media.giphy.com/media/Z6f7vzq3iP6Mw/giphy.gif)