evaluation using visitor pattern