why we rewrite this function? please keep using the origin one