public static void eachBoatTakeActions(int time, boolean night) {

		Iterator<Boat> iter = River.boats.iterator();
		ArrayList<Boat> boatsToBeRemoved = new ArrayList<Boat>();
		while (iter.hasNext()) {

			Boat currentBoat = iter.next();
			currentBoat.minutesTraveled += God.UNIT;
			if (!currentBoat.inCamp) {
				currentBoat.minutesOnWater += God.UNIT;
				currentBoat.move();
				if (currentBoat.withinRange()) {
					if (!currentBoat.halfway()) {
						currentBoat.decideCampingProblem(night);
					}
				} else {

					// System.out.println("out");

					Double[] data = { currentBoat.startTime, time * God.UNIT,
							currentBoat.restTime, currentBoat.minutesTraveled,
							(double) currentBoat.encountersCount,
							currentBoat.speed, (double) currentBoat.campStayed,
							currentBoat.minutesOnWater / currentBoat.campStayed };
					God.report.put((Integer) currentBoat.id, data);
					boatsToBeRemoved.add(currentBoat);
				}
			} else {
				currentBoat.restTime += God.UNIT;
			}
			// System.out.println(currentBoat.minutesTraveled
			// +"\t"+currentBoat.minutesOnWater+"\t"+currentBoat.restTime);

			// if(time==100000){
			// System.out.println(currentBoat.cellId);
			// }

		}

		iter = River.boats.iterator();
		while (iter.hasNext()) {
			Boat currentBoat = iter.next();
			if (!currentBoat.inCamp) {
				if (currentBoat.withinRange()) {

					currentBoat.decideEncounterProblem();
				}
			}

		}

		// remove boats

		iter = boatsToBeRemoved.iterator();
		while (iter.hasNext()) {
			Boat currentBoat = iter.next();
			River.boats.remove(currentBoat);
		}

		// System.out.println(River.boats.size());
	}