Moving more generation in to visitor.