fixed template function