summary : modified add some new functions