multiple return values for error handling