added new contract functionality