I think a cleaner approach would be to expect an object that responds to `call` and returns a hash. Then I can pass in an object, a proc, etc.