add some new functions