minor - but any reason to subclass ValueError instead of Exception?