public void update() {
		if((frame != null) && (model != null)) {
			FuelTank tank = model.getRobot().getFuelTank();
			assert (tank != null) : "The tank was null!";	// Sanity check
			// FUEL
			if(tank.isInfinite()) {
				s.fuelBar.setValue(100);
				s.fuelLabel.setText("Fuel Tank: Tier OMG, Fuel Level: INFINITE");
				s.fuelButton.setText("Add Fuel ($0)");
				s.fuelButton.setEnabled(false);
				s.fuelBox.setEnabled(false);
			} else {
				s.fuelBar.setValue(tank.getFuelPercent());
				s.fuelLabel.setText("Tier " + tank.getTier() +
						", Fuel Level: " + tank.getFuelLevel() + "/" +
						tank.getFuelCapacity() + ".");
				s.fuelButton.setText("Add Fuel ($" + Helper.formatComma(
						getSelectedFuelAmount()) + ")");
				s.fuelButton.setEnabled((model.getBankAccount().getMoney() 
								>= getSelectedFuelAmount()) 
						&& ((getSelectedFuelAmount() + tank.getFuelLevel()) 
								<= tank.getFuelCapacity())
						&& (!tank.isFull()));
				s.fuelBox.setEnabled((model.getBankAccount().getMoney() > 0) && !tank.isFull());
			}
			// RESERVE
			s.reserveLabel.setText(getReserveLabelText());
			s.reserveButton.setEnabled((model.getBankAccount().getMoney() 
					>= 100) && !tank.isInfinite());
			s.reserveSellButton.setEnabled((model.getRobot().getReserves() > 0) 
					|| model.isInfiniteDynamite());
			// DYNAMITE
			s.dynamiteLabel.setText(getDynamiteLabelText());
			s.dynamiteButton.setEnabled(model.getBankAccount().getMoney() >= 150);
			s.dynamiteSellButton.setEnabled(model.getRobot().getDynamite() > 0);
			// UPGRADE
			if(tank.isInfinite()) {
				s.upgradeFuelLabel.setText("Tier OMG, Capacity: INFINITE units.");
				s.upgradeFuelButton.setText("Upgrade to Tier IMPOSSIBURU ($INFINITY)");
				s.upgradeFuelButton.setEnabled(false);
			} else if(tank.getTier() >= 20) {
				s.upgradeFuelLabel.setText("Tier 20, Capacity: " + tank.getFuelCapacity() + " units.");
				s.upgradeFuelButton.setText("Fully Upgraded!");
				s.upgradeFuelButton.setEnabled(false);
			} else {
				s.upgradeFuelLabel.setText("Tier " + tank.getTier() +
						", Capacity: " + tank.getFuelCapacity() + " units.");
				s.upgradeFuelButton.setText("Upgrade Tank (" +
						Helper.formatMoney(tank.getMoneyNeededForNextTier()) + ")");
				s.upgradeFuelButton.setEnabled(model.getBankAccount().getMoney() >
					tank.getMoneyNeededForNextTier());
			}
			int dt = model.getRobot().getDynamiteTier();
			s.upgradeDynamiteLabel.setText(String.format("Tier %,d, Blast radius: %,d", dt, dt));
			if(model.getRobot().getDynamiteTier() >= 2) {
				s.upgradeDynamiteButton.setText("Fully Upgraded!");
				s.upgradeDynamiteButton.setEnabled(false);
			} else {
				int dNeeded = 10 + (((int)Math.pow(dt + 1, 2)) * 20);
				s.upgradeDynamiteButton.setText(String.format("Upgrade Dynamite ($%,d)", dNeeded));
				s.upgradeDynamiteButton.setEnabled(model.getBankAccount().getMoney() >= dNeeded);
			}
			// UNLOCK
			s.unlockPortalLabel.setText(model.HAS_PORTAL?"You've already unlocked the portal!"
					:"The Portal.  Unlocks a world of possibilities.");
			s.unlockPortalButton.setEnabled(!model.HAS_PORTAL 
					&& (model.getBankAccount().getMoney() >= 30000));
			statusBar.setText("Money: " + Helper.formatMoney(model.getBankAccount().getMoney()));
		}
	}