add function template
add class template