code: static <E> List<E> getListFromFutures(List<Future<E>> futures) {
  		List<E> list = new ArrayList<E>();
  		for (Future<E> f : futures) {
  			// TODO when added to ConcurrencyTools, log completions and exceptions instead of printing stack traces
  			try {
  				list.add(f.get());
  			} catch (InterruptedException e) {
  				logger.error("Interrupted Exception: ", e);
  			} catch (ExecutionException e) {
  				logger.error("Execution Exception: ", e);
  			}
  		}
  		return list;
  	}
docs: Factory method which retrieves calculated elements from a list of tasks on the concurrent execution queue.
  
  @param <E> each task calculates a value of type E
  @param futures list of tasks
  @return calculated elements