added: Visitor design pattern;