added :template function