some new functions add