Say I have some functions that deliver mail to various kinds of mailboxes (I have mbox, mh, and maildir mailboxes in mind). I've also got a class called Mail::LDA that deals with more generic mail delivery issues (logging delivery attempts to a file, exiting the process with specific exit codes to bounce or defer the mail delivery, etc.). The mailbox delivery functions are self contained -- i.e. they don't require any instance data other than their arguments, so no particular object needs to be instantiated to use them. In contrast, Mail::LDA is an object because it needs to keep state around -- what log to log to, the message being processed, etc. What criteria would I use to decide whether to make the mailbox delivery functions within a module (so they might be mixed into other objects) or to just make them class methods of Mail::LDA? (I have a bias against module functions that get mixed into classes with 'include' because I find the code harder to understand that way -- am I alone in this?) -- matt