I think we tend to do `fn(item, options)` any reason to inverse signature here ?