What's left of this code looks like it's a few levels of indirection too many. Can we move this into where it ends up actually being used? (Does it still need to be an independent object-function-object-function-function?)