abstracting out compare more