constraingts on types
newtype