added some explanations