Batcher API Rebase

This is just a rebase of pull request #109 to consolidate some of the commits into larger more meaningful commit messages. This was created as it was not possible to push these to that branch, but all meaningful discussion can be found in #109.