first commit with all the functionalities