functions update