rem: if(type == itAppend) {
add: if(!prepend) {
context: insertParagraph(WMText *tPtr, void *v, InsertType type)//insertParagraph(WMText *tPtr, Paragraph *para, InsertType type){    Paragraph *tmp;    Paragraph *para = (Paragraph *)v;    if(!para || !tPtr) return;    if(!tPtr->currentPara) {        tPtr->paragraphs = para;    } else {        tmp = tPtr->paragraphs;        if(type == itAppend) {            while(tmp->next && tmp != tPtr->currentPara)                tmp = tmp->next;            para->next = tmp->next;            tmp->next = para;        } else { /* must be prepend */            /* this "prior" member is that "doing things the hard way"             I spoke of. See? it's not too bad afterall... */            Paragraph *prior = NULL;            while(tmp->next && tmp != tPtr->currentPara) {                prior = tmp;                tmp = tmp->next;            }            /* if this is the first */            if(tmp == tPtr->paragraphs) {                para->next = tmp;                tPtr->paragraphs = para;            } else {                prior->next = para;                para->next = tmp;            }	}	}    tPtr->currentPara = para;}