add functionalities