End of new-style classes and begin of visitor pattern
Multiple dynamic dispatch with visitor pattern