Template pattern