parameterize Domain on Val
allow for subtype constraints on domain values