@markstory is it reasonable to require the callback to always return the array with the key and value? An alternative I was thinking about is to rewrite OrderByExpression and not use the the keys, but store things as [$key, $value] instead