contract class