add function explain