why template?