put in more comments to document better