modify add function