diff --git a/include/class.format.php b/include/class.format.php
index af3fb0c31d2a65674631d85a2b90e86d988b5b3e..15cc0d58f6d2e9cf68cb3067a69734cef93168b2 100644
--- a/include/class.format.php
+++ b/include/class.format.php
@@ -46,6 +46,31 @@ class Format {
         return $result?array_filter($result):$files;
     }
 
+
+    /* encode text into desired encoding - taking into accout charset when available. */
+    function encode($text, $charset=null, $encoding='utf-8') {
+
+        //Try auto-detecting charset/encoding
+        if(!$charset && function_exists('mb_detect_encoding')) 
+            $charset = mb_detect_encoding($text);
+
+        //Cleanup - junk 
+        if($charset && in_array(trim($charset), array('default','x-user-defined')))
+            $charset = 'ASCII'; 
+
+        if(function_exists('iconv') && $charset)
+            return iconv($charset, $encoding.'//IGNORE', $text);
+        elseif(function_exists('iconv_mime_decode'))
+            return iconv_mime_decode($text, 0, $encoding);
+        else //default to utf8 encoding.
+            return utf8_encode($text);
+    }
+
+    //Wrapper for utf-8 encoding.
+    function utf8encode($text, $charset=null) {
+        return Format::enecode($text, $charset, 'utf-8');
+    }
+
 	function phone($phone) {
 
 		$stripped= preg_replace("/[^0-9]/", "", $phone);
diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php
index f3a6fd5c3630d67afd9a935a3f9046f53cb80e75..68f0b6592798575356e507be1a3f86f1404c4d18 100644
--- a/include/class.mailfetch.php
+++ b/include/class.mailfetch.php
@@ -194,30 +194,17 @@ class MailFetcher {
     }
 
     //Convert text to desired encoding..defaults to utf8
-    function mime_encode($text, $charset=null, $enc='utf-8') { //Thank in part to afterburner 
-
-        if($charset && in_array(trim($charset), array('default','x-user-defined')))
-            $charset = 'ASCII';
-        
-        if(function_exists('iconv') and ($charset or function_exists('mb_detect_encoding'))) {
-            if($charset)
-                return iconv($charset, $enc.'//IGNORE', $text);
-            elseif(function_exists('mb_detect_encoding'))
-                return iconv(mb_detect_encoding($text, $this->encodings), $enc, $text);
-        } elseif(function_exists('iconv_mime_decode')) {
-            return iconv_mime_decode($text, 0, $enc);
-        }
-
-        return utf8_encode($text);
+    function mime_encode($text, $charset=null, $encoding='utf-8') { //Thank in part to afterburner 
+        return Format::encode($text, $charset, $encoding);
     }
     
     //Generic decoder - resulting text is utf8 encoded -> mirrors imap_utf8
-    function mime_decode($text, $enc='utf-8') {
+    function mime_decode($text, $encoding='utf-8') {
         
         $str = '';
         $parts = imap_mime_header_decode($text);
         foreach ($parts as $part)
-            $str.= $this->mime_encode($part->text, $part->charset, $enc);
+            $str.= $this->mime_encode($part->text, $part->charset, $encoding);
         
         return $str?$str:imap_utf8($text);
     }