Added some comments to make the code more clear.