automatically populate arg_names where possible and fail with an hopefully clear error message when it's not