Currently the Contract class represents both the definition of a type of contract and each instance as it is applied to members. The API will be less confusing if these two meanings are separated into their own classes. This may also be mandatory for dealing with contract attributes with parameters, as required for #6, #13, #9, and #32.