add explaination for some functions