add registor visitor class and implementation