comparer refactor con'd