#UPDATE: Update the comments.
#UPDATE: Update the comments.
#UPDATE: The 1st complete of all the codes, comments and the unit tests for the master branch.