improve visitor and test