exit non-zero on errors