add and fix more cmp methods