Mostly  finished compare and add method invoke