simplified reflection interface. now its easier to write custom visitor