updated visitor framework