first pass at cmp