fixed ProductFunctor