document the base template function