Why need this function?