added VisitorFunctor.h