public void fined() {
		int sum = 0, current = 0, fine = 0, fineRemaining = 0;
		boolean isFailed = true;  // suppose true
		// Calculate value in all street
		for (int i = 0; i < Map.length; i++) {			
			if ((Game.mapWithInfo.route[i].street == Game.mapWithInfo.route[location].street) && (Game.mapWithInfo.route[i].owner == Game.mapWithInfo.route[location].owner)) {
				sum += Game.mapWithInfo.route[i].price * Game.mapWithInfo.route[i].level;
			}
		}
		// Calculate value in current cell
		current = Game.mapWithInfo.route[location].price * Game.mapWithInfo.route[location].level;
		fine = sum / 10 + current / 5;
		// fine
		if (cash >= fine) {
			cash -= fine;
			Window.showLossInfo(Game.currentPlayer, 2, fine);
		} else {  // cash not enough
			fineRemaining = fine - cash;
			Window.showLossInfo(Game.currentPlayer, 2, cash);
			cash = 0;
			// fine deposit
			if (deposit >= fineRemaining) {
				deposit -= fineRemaining;
				Window.showLossInfo(Game.currentPlayer, 3, fineRemaining);
			} else {  // deposit not enough
				fineRemaining -= deposit;
				Window.showLossInfo(Game.currentPlayer, 3, deposit);
				deposit = 0;
				// fine property
				int value = 0;
				for (int i = 0; i < Map.length; i++) {
					value = 0;
					if (cells[i]) {
						value = Game.mapWithInfo.route[i].price * Game.mapWithInfo.route[i].level;
						// sell cell[i]
						Game.mapWithInfo.route[i].owner = 0;
						cells[i] = false;
						Game.mapWithInfo.route[i].icon = Vocab.CellIcon[0];
						property -= value;
						if (value >= fineRemaining) {
							cash += value - fineRemaining;
							Window.showCellLossInfo(Game.currentPlayer, Game.mapWithInfo.route[i].street, Game.mapWithInfo.route[i].streetNo); // need +
							isFailed = false;
							break;
						} else {
							fineRemaining -= value;
						}
					}
				}
				if (isFailed) {  
					Helper.commitFail();
				}
			}
		}
		Game.players[3 - Game.currentPlayer].cash += fine;		// need rewrite
		Window.showGetInfo(3 - Game.currentPlayer, fine + Vocab.PlayersInfoListHead[2]);
	}