change function interface