improve usability and error handling