refactored argument validation may trigger errors instead of exceptions