important change; distinguish serial from waterfall
but serial is not quite like async.js. it accepts a beginning set of
results, and returns nothing. this is in case you want several functions
to accept the same set of beginning results and their results do not
matter. if their results do matter, then use waterfall.