Visitor refactored