added: Template design pattern;