all the functions are working properly