Added a visitor class and correct functions to sub classes. Visitor should be ready to go but needs testing