开始实现各函数的visit