Functor based Zip instead of CanZip