adding following functionalities