Interpreter now uses vistor pattern