functor.