add functor