Adds functor, monoid, and semigroup