Added lots of comments.