add some new pattern about the visitor