use value error for invalid argument