Here is how I would implement findMatches using Traverse: ```scala import cats.data.NonEmptyList import cats.implicits._ def findMatches[F[_]: Applicative](divs: F[Int], nums: F[Int]): F[(Int, Int)] = { divs.product(nums).traverse { case (div, num) => if(num % div == 0) Applicative[F].pure((div, num)) else Applicative[F].pure(None) }.sequence.flatten } findMatches(Seq(2, 3, 4), Seq(1, 6, 7, 8,