Template Design Pattern