separate startup and update in user functions