please kep the ``visit*`` methods in the same order than previously to avoid useless diff