What's the reason for constructing these two in this rather complex way (vs. e.g. using constants). Are there some requirements, i.e. is the user supposed to have a valid zone?