use callback for main control flow
provide err in callback, update readme