add more comments to the functions