lists of constraints get a dedicated object
attributes enforce value constraints on updates
attributes acquire defaults along with definitions
constraints expose their parameters