Refer to Section 4.5 for detailed description about this function.