core: errors can use error_message to specify string error message