Make mailer extendable, OO, and DRY