add function
fix conflict