Tried to add lots of comments