New version of Array.product()