add some new functions and some doc str