don't assume all keys are comparable