remove Functor restriction.