private static Moves performMoveTowardsOpponent(BotState state, Moves movesSoFar) {
		Moves out = new Moves();
		List<Region> knownOpponentSpots = HeuristicMapModel.getGuessedOpponentRegions();
		if (knownOpponentSpots.size() == 0) {
			System.err.println("knownOpponentSpots.size() == 0");
			return out;
		}
		int currentDeployment = movesSoFar.totalDeployment;
		int totalIncome = state.getStartingArmies();
		int missingDeployment = totalIncome - currentDeployment;
		List<Region> closestNeighbors = DistanceToOpponentBorderCalculator.getClosestRegionsToOpponentBorder(state);
		Region closestNeighborMaxIdleArmies = null;
		int maxIdleArmies = 0;
		for (Region closestNeighbor : closestNeighbors) {
			if (closestNeighbor.getIdleArmies() >= maxIdleArmies) {
				maxIdleArmies = closestNeighbor.getIdleArmies();
				closestNeighborMaxIdleArmies = closestNeighbor;
			}
		}
		if (closestNeighborMaxIdleArmies != null) {
			System.err.println("closestNeighborMaxIdleArmies: "
					+ IDNameMapper.getRegionName(closestNeighborMaxIdleArmies.getId()));
			int totalArmies = maxIdleArmies + missingDeployment;
			if (totalArmies >= 3) {
				List<Region> neighbors = closestNeighborMaxIdleArmies.getNeighbors();
				Region regionToAttack = neighbors.get(0);
				for (Region neighbor : neighbors) {
					if (neighbor.getDistanceToOpponentBorder() < regionToAttack.getDistanceToOpponentBorder()) {
						regionToAttack = neighbor;
					}
				}
				System.err.println("regionToAttack: " + IDNameMapper.getRegionName(regionToAttack.getId()));
				PlaceArmiesMove pam = new PlaceArmiesMove(state.getMyPlayerName(), closestNeighborMaxIdleArmies,
						missingDeployment);
				AttackTransferMove atm = new AttackTransferMove(state.getMyPlayerName(), closestNeighborMaxIdleArmies,
						regionToAttack, totalArmies);
				out.armyPlacementMoves.add(pam);
				out.attackTransferMoves.add(atm);
				System.err.println("pam.getArmies(): " + pam.getArmies());
				System.err.println("atm.getArmies(): " + atm.getArmies());
				out.totalDeployment += pam.getArmies();
			}
		}
		 MovesPerformer.performMoves(state, out);
		// TODO

		return out;
	}