This is an experiment, needs some profiling to determine if the overhead of the visitor-pattern is justifiable over the implementational convenience.