added more comments than needed