Use async.waterfall to simplify registration code