added several functionalities