updated to use the new contract_for DSL