err_exit writes to stdout+stderr. err_warn writes to stderr