public void beginUpgrade(Upgrade upgrade, boolean checkExists) {
    int atIndex = -1 ;
    for (int i = 0 ; i < upgrades.length ; i++) {
      ///I.sayAbout(venue, "Upgrade is: "+upgrades[i]) ;
      if (checkExists && upgrades[i] == upgrade) return ;
      if (upgrades[i] == null) { atIndex = i ; break ; }
    }
    if (atIndex == -1) I.complain("NO ROOM FOR UPGRADE!") ;
    upgrades[atIndex] = upgrade ;
    upgradeStates[atIndex] = STATE_INSTALL ;
    if (upgradeIndex == atIndex) upgradeProgress = 0 ;
    upgradeIndex = nextUpgradeIndex() ;
    checkMaintenance() ;
  }