cmp optimization, try 2, with 2x less bugs