each function documented