add a lot of comments, change names