better error handling more user friendly