functor.h refactored...
need more, but good enough