add idf func