user: better error handling