closed issue 5, commit breaking when nothing to commit. added conditions to callback.call so that callbacks are optional, failed commit now passes reason into err arg in callback