Converted to visitor pattern from listener