use default instances for Functor and Foldable