One step at a time. Let's steal a Functor.

Signed-off-by: Ricky Elrod <ricky@elrod.me>