Simplify visitors implementation with some reflection