- template method