Play nicer with the standard library Functor type
Kind polymorphism for categories
Monoids
Monads are just monoids in the category of endofunctors