Added Template pattern