Contract types and constructors