error handling: user error strings now optional, and combinable with any error code