don't use log.fatal on error. use callback