add visit and visit_test