function object -> template