added some explanatory comments