make the Functor of {Pre}MonoidalFunctor a parameter rather than a field