inherit from ConstraintObject as needed