using internal template and delete external fn template