Added most of the comments