template convert function