some function explanations