add comments to explain