write up detailed documentation of the library functions