Strategy, Template Method, Visitor Pattern