from typing import List


def _wraptext(text: str, length: int = 78) -> List[str]:
    """
    Wrap long text into several lines of text is smart enough to wrap
    words that are too long to a new line

    :param text: str, the long text to wrap
    :param length: int, the number of characters to wrap at

    :return: the list of strings each of less than "length" characters
    """
    lines = []
    buffer = ''
    # split all words in the text
    words = text.split(' ')
    # loop around words
    for word in words:
        # offload buffer to lines
        if len(buffer) + len(word) >= length:
            lines.append(buffer)
            buffer = ''
        # else add to the buffer
        else:
            buffer += '{0} '.format(word)
    # add the last buffer
    lines.append(buffer)
    # return the list of strings
    return lines