Comparable: update the dispatching system
Use the new dispatching system with Foldable and Functor.
Use the new dispatching system with Monad.