use callbacks when chaining tasks, remove boilerplate