Experimenting with the idea of all callbacks returning a value.
Still a work in progress, most likely lots of broken things right now.
Still trying to workout the best generic implementation of the batch tasks.