framework for visitor patterns
+ ...