feature(visitor) added visitor class