Also this is useful http://www.oodesign.com/visitor-pattern.html