selfupgrade and selfpush