Hi Austin. I enjoyed reviewing this patch. It is a pleasure to see how complex and confusing code becomes much smaller and cleaner. I still have some questions with the new code. It seems confusing to me that part_content is called first and then go envelope headers. But I this is just the first step of the rewrite, right? :) The only comment I have: + format->part_content (part); For all other format members that are function pointers, we have a check for NULL. Perhaps we should add it here as well? Regards, Dmitry