simplified the implementation of zip, leveraging the power of (flat)map