diff --git a/multifield.field.inc b/multifield.field.inc
index a10305d..71e1deb 100644
--- a/multifield.field.inc
+++ b/multifield.field.inc
@@ -779,7 +779,17 @@ function multifield_field_formatter_view($entity_type, $entity, $field, $instanc
   $settings = $display['settings'];
 
   foreach ($items as $delta => $item) {
-    $element[$delta] = field_attach_view('multifield', $item['#pseudo_entity'], $settings['view_mode'], $langcode);
+    $variables = array();
+    $variables['elements']['#entity_type'] = 'multifield';
+    $variables['elements']['#view_mode'] = $settings['view_mode'];
+    $variables['elements']['#bundle'] = $item['#pseudo_entity']->type;
+    $variables['elements']['#field_name'] = $field['field_name'];
+    $variables['multifield'] = $item['#pseudo_entity'];
+    $variables['content'] = field_attach_view('multifield', $item['#pseudo_entity'], $settings['view_mode'], $langcode);
+    if (isset($variables['content']['#attached'])) {
+      drupal_process_attached($variables['content']);
+    }
+    $element[$delta]['#markup'] = theme('multifield', $variables);
   }
 
   return $element;
diff --git a/multifield.module b/multifield.module
index fa3a1c6..9651fb8 100644
--- a/multifield.module
+++ b/multifield.module
@@ -4,6 +4,36 @@ require_once dirname(__FILE__) . '/multifield.field.inc';
 require_once dirname(__FILE__) . '/multifield.features.inc';
 
 /**
+ * Implements hook_theme().
+ */
+function multifield_theme($existing, $type, $theme, $path) {
+  return array(
+    'multifield' => array(
+      'render element' => 'elements',
+      'template' => 'multifield',
+      'path' => $path . '/theme',
+    ),
+  );
+}
+
+/**
+ * Process variables for multifield.tpl.php
+ */
+function template_preprocess_multifield(&$variables, $hook) {
+  $variables['view_mode'] = $variables['elements']['#view_mode'];
+  $variables['field_name'] = $variables['elements']['#field_name'];
+
+  field_attach_preprocess('multifield', $variables['multifield'], $variables['content'], $variables);
+
+  $variables['classes_array'][] = drupal_html_class('multifield-' . $variables['elements']['#field_name']);
+  $variables['classes_array'][] = drupal_html_class('multifield-' . $variables['elements']['#field_name'] . '-' . $variables['view_mode']);
+  $variables['classes_array'][] = drupal_html_class('multifield-' . $variables['view_mode']);
+
+  $variables['theme_hook_suggestions'][] = 'multifield__' . $variables['elements']['#field_name'];
+  $variables['theme_hook_suggestions'][] = 'multifield__' . $variables['elements']['#field_name'] . '__' . $variables['view_mode'];
+}
+
+/**
  * Implements hook_permission().
  */
 function multifield_permission() {
diff --git a/theme/multifield.tpl.php b/theme/multifield.tpl.php
new file mode 100644
index 0000000..c29e874
--- /dev/null
+++ b/theme/multifield.tpl.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * @file
+ * Default theme implementation to display a multifield field.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_multifield()
+ * @see template_process()
+ *
+ * @ingroup themeable
+ */
+?>
+<div id="multifield-<?php print $multifield->id; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
+  <div class="content"<?php print $content_attributes; ?>>
+    <?php print render($content); ?>
+  </div>
+</div>
