"Email::Abstract" provides module writers with the ability to write representation-independent mail handling code. For instance, in the cases of "Mail::Thread" or "Mail::ListDetector", a key part of the code involves reading the headers from a mail object. Where previously one would either have to specify the mail class required, or to build a new object from scratch, "Email::Abstract" can be used to perform certain simple operations on an object regardless of its underlying representation. "Email::Abstract" currently supports "Mail::Internet", "MIME::Entity", "Mail::Message", "Email::Simple" and "Email::MIME". Other representations are encouraged to create their own "Email::Abstract::*" class by copying "Email::Abstract::EmailSimple". All modules installed under the "Email::Abstract" hierarchy will be automatically picked up and used.