public List<String> formatQuestionList(String user, int page) {
    List<String> out = new ArrayList<String>();
    try {
      if (page < 0)
        throw new Exception("Invalid page number.");

      LinkedList<AbstractQuestion> activePlayerQuestions = getQuestionManager().getQuestions(user);
      int numQuestions = activePlayerQuestions.size();
      int maxPage = (int)Math.ceil(numQuestions / (double)this.questionsPerPage);
      if (page > maxPage) {
        throw new Exception("There are no questions on page " + page);
      } else {
	      int start = (page - 1) * this.questionsPerPage;
	      for (int i = start; i < start + this.questionsPerPage; i++)
	        try {
	          AbstractQuestion question = (AbstractQuestion)activePlayerQuestions.get(i);
	          out.addAll(formatQuestion(question, Integer.toString(i)));
	        } catch (IndexOutOfBoundsException e) {
	        }
      }
      if (maxPage > 1)
        out.add(String.format(this.listFooterFormat, new Object[] { Integer.valueOf(page), Integer.valueOf(maxPage), Integer.valueOf(numQuestions) }));
    } catch (Exception e) {
      out.add(ChatColor.RED + e.getMessage());
    }
    return out;
  }