change < <= fn, now they support comparing objects