make visitor replacing optional
Add an extend finder visitor and extend processor visitor (breaks extend for now)
move extend fully into visitor, bringing back functionality and fixes #1165