refactor; supports continue/cancel via next(), and optional convention for coffeescript... see the readme