--- emfield.module.old	2008-07-11 12:38:28.000000000 -0600
+++ emfield.module	2008-07-11 17:20:21.000000000 -0600
@@ -298,10 +298,45 @@ function emfield_emfield_field_formatter
     $item['data'] = (array)unserialize($item['data']);
   }
 
-//  $module = $field['widget']['helper_module'];
-
-  $output .= theme($module . '_' . $formatter, $field, $item, $formatter, $node);
-
+  //  $module = $field['widget']['helper_module'];
+  
+  if (is_array($item['data']['multi'])){
+    //theme the header / multi title
+    
+    //include the relevant providers functions
+    emfield_system_list($field['type'], $item['provider']);
+    
+    //trying the calling modules formatter specific multi title function 
+    $title = theme($module .'_'. $formatter .'_'. $item['provider'] .'_multi_header', $field, $item, $formatter, $node);
+    if ($title == null) {
+      //trying the field types formatter specific multi title function 
+      $title = theme($field['type'] .'_'. $formatter .'_'. $item['provider'] .'_multi_header', $field, $item, $formatter, $node);
+    }
+    if ($title == null) {
+      //trying the calling modules generic multi title function 
+      $title = theme($module .'_'. $item['provider'] .'_multi_header', $field, $item, $formatter, $node);
+    }
+    if ($title == null) {
+      //trying the calling field types generic multi title function
+      $title = theme($field['type'] .'_'. $item['provider'] .'_multi_header', $field, $item, $formatter, $node);
+    }
+      
+    $output .= $title;
+      
+    if (!empty($item['data']['multi'])) {
+      //them each of the sub items in the normal way
+      foreach ($item['data']['multi'] as $multi_item) {
+        $output .= theme($module . '_' . $formatter, $field, $multi_item, $formatter, $node);
+      }
+    }
+    else {
+      $output .= $title = theme($field['type'] .'_'. $item['provider'] .'_multi_no_data', $field, $item, $formatter, $node, $module);
+    }
+  } 
+  else {
+    $output .= theme($module . '_' . $formatter, $field, $item, $formatter, $node);
+  }
+  
   return $output;
 }
 
