split update functions