more intuitive error handling