worked on the functionalities