private void executionPhase(List<Player> orderedPlayerList) {
		currentPhase = Phase.EXECUTION;

		boolean ordersRemaining = true;

		while (ordersRemaining) {

			ordersRemaining = false;
			ListIterator<Player> it = orderedPlayerList.listIterator();
			while (it.hasNext()) {
				Player player = it.next();

				Set<Order> executableOrders = new HashSet<Order>();
				for (Planet planet : galaxy.getPlanets()) {
					Order order = planet.getTopOrder();
					if (order.getPlayer() == player) {
						executableOrders.add(order);
					}
				}

				if (executableOrders.isEmpty()) {
					// TODO Obstructed

				} else {
					MultiMenuChooseOrder chooseOrderMenu = menuFactory.newMultiMenuChooseOrder(executableOrders, player);
					MultiMenuChooseOrderChoices choices = chooseOrderMenu.doSelection(factory);

					Order order = choices.getOrderChosen();
					order.getPlanet().removeTopOrder();
					if (choices.isEventCard()) {
						// TODO Draw event card
					} else {
						player.executeOrder(order);
					}
				}
			}

		}

	}