added lots of explanatory text