Added another layer on types, namely constrained types