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

#59 
Won't this resolve even if the test fails?