looks like we'd crash if natural_key isn't callable, e.g. a property -- something to consider?