I wanted to get the new API release out, so I held off on rewriting with higher order functions. I might still do it in the future, so I'm creating an issue here to remind myself to come back to the idea to see if it's worth another breaking change.
Link to previous conversation: #4