added NonEmptyList with a functor