provided Visitor-pattern.