template redefinition