use Foldable and Applicative instances