Visitor Design pattern Final