public ArrayList<ArrayList<Flight>> getMultiHopFlights(
			String departureAirport, String arrivalAirport) {

		ArrayList<ArrayList<Flight>> result = new ArrayList<ArrayList<Flight>>();
		ArrayList<ArrayList<Flight>> arrangedFlights = arrangedFlights();

		for (int i = 0; i < arrangedFlights.size(); i++) {
			ArrayList<Flight> path = arrangedFlights.get(i);

			/* skip non-stop flights */
			if (path.size() > 1) {
				ArrayList<Flight> temp = new ArrayList<Flight>();
				for (int j = 0; j < path.size(); j++) {
					if (path.get(j).getDepartureAirport()
							.equals(departureAirport)) {
						/* find the start flight, add it to a temp ArrayList */
						temp.add(path.get(j));
						for (int k = j + 1; k < path.size(); k++) {
							/* add the next flight to ArrayList */
							temp.add(path.get(k));
							if (path.get(k).getArrivalAirport()
									.equals(arrivalAirport)) {
								/*
								 * find the flight has the same arrivalAirport,
								 * then add the current temp ArrayList of
								 * flights to result
								 */
								ArrayList<Flight> tmp = new ArrayList<Flight>();
								tmp = deepCopy(temp);
								result.add(tmp);
							}
						}
					}
				}
			}
		}

		return result;
	}