remove functor from public API and shade internal functor use