update functions and create new ones