template-func