add explanations of functions