throw errors, not strings