Added lots more comments