Added many many comments