New visitor pattern implemented