We should return an error code and have a function to decode failure reasors. Or maybe retrieve a custom error string based on what happened.