CHG:extracting Visitor class to its own file, and leaving just necessary includes pragmas