private static List<String> split(CharSequence s, int length) {
		List<String> list = new ArrayList<String>(2);
		if (s.length() > length) {
			// try to split
			String s1 = null, s2 = null;
			// try to split inside the margin
			for (int i = length - 1; i >= 0; i--) {
				char c = s.charAt(i);
				if (Character.isWhitespace(c)) {
					s1 = s.subSequence(0, i).toString();
					s2 = s.subSequence(i, s.length()).toString().trim();
					break;
				}
			}
			if (s1 == null) {
				// okay, try to split *outside* the margin
				for (int i = length; i < s.length(); i++) {
					char c = s.charAt(i);
					if (Character.isWhitespace(c)) {
						s1 = s.subSequence(0, i).toString();
						s2 = s.subSequence(i, s.length()).toString().trim();
						break;
					}
				}
			}
			if (s1 == null)
				// it was all one big word
				list.add(s.toString());
			else {
				list.add(s1);
				list.add(s2);
			}
		} else {
			// no need to split
			list.add(s.toString());
		}
		return list;
	}