private List<List<String>> splice(String text) {
    List<List<String>> lines = new ArrayList<List<String>>();

    List<String> line = new ArrayList<String>();
    int len = 0;

    StringTokenizer st = new StringTokenizer(text, " ");
    while (st.hasMoreTokens()) {
      String word = st.nextToken();

      if ((len + word.length()) > ColWidth) {
        if (len == 0) {
          line.add(word.substring(0, ColWidth-1) + "-");
          word = word.substring(ColWidth-1, word.length());
        }
        lines.add(line);
        line = null;
        len = 0;
      }

      if (line == null) line = new ArrayList<String>();
      line.add(word);
      len += word.length() + (len == 0 ? 0 : 1);
    }

    if (line != null && line.size() > 0) {
      lines.add(line);
    }

    return lines;
  }