Improved update functions