adding some comments to make the code more readable