use different exit codes for different errors