better (less expensive) error handling