Replaced QFunctor/QContravariant with Functor1/Contravariant1. fleshed
out Prod