add some new functionalities