Added lots of comments