finish visitor impl