add template funcs