Major refactor to make it easier to extend, and now runs with Gulp

#59 
This is a bit weird.  Why not call the local name rather than going via the public API?