impl lazy type
replaces lazy type with lazy visit
impl lazy visit