update a lot of functions