abstracting visitor
prop collector
extracting property for construct
refactor visitor