call perform_upgrade