some explanations added