notes on function functor