adding contracts for basic model objects