public static List<String> paragraphDetector(List<String> content)
			throws ParseException {
		List<String> paragraphs = new LinkedList<String>();
		StringBuilder sb = new StringBuilder();
		String endOfParagraphRegex = properties
				.getString("regex.paragraph.separator");
		String emptyLineRegex = properties.getString("regex.emptyline");

		Pattern endOfParagraphPattern;
		try {
			endOfParagraphPattern = Pattern.compile(endOfParagraphRegex);
		} catch (IllegalArgumentException e) {
			LOGGER.error("Sintax error in end of paragraph regex" + e);
			throw new ParseException(endOfParagraphRegex, 0);
		}

		Pattern emptyLinePattern;
		try {
			emptyLinePattern = Pattern.compile(emptyLineRegex);
		} catch (IllegalArgumentException e) {
			LOGGER.error("Sintax error in empty line regex" + e);
			throw new ParseException(endOfParagraphRegex, 0);
		}

		Matcher endOfParagraph;
		Matcher emptyLine;
		ListIterator<String> iterator = (ListIterator<String>) content
				.iterator();
		while (iterator.hasNext()) {
			String currentLine = (String) iterator.next();
			emptyLine = emptyLinePattern.matcher(currentLine);
			endOfParagraph = endOfParagraphPattern.matcher(currentLine);
			if (emptyLine.matches()) {
				paragraphs.add(cleanWhiteSpaces(sb.toString()));
				sb = new StringBuilder();
			} else if (endOfParagraph.find()
					|| iterator.nextIndex() == content.size()) {
				// append(" ") - for avoiding concatenation of two edge words
				sb.append(currentLine).append(" ");
				paragraphs.add(cleanWhiteSpaces(sb.toString()));
				sb = new StringBuilder();
			} else {
				sb.append(currentLine).append(" ");
			}
		}
		return paragraphs;
	}