TemplateMethod and Visitor
Creational