more consistent errors
configurable argument validation