added lots more comments