add more doc and change the function name