diff --git a/core/lib/Drupal/Core/Field/FormatterBase.php b/core/lib/Drupal/Core/Field/FormatterBase.php
index 35bbf33..1b4287f 100644
--- a/core/lib/Drupal/Core/Field/FormatterBase.php
+++ b/core/lib/Drupal/Core/Field/FormatterBase.php
@@ -106,7 +106,7 @@ public function view(FieldItemListInterface $items) {
         }
       }
 
-      $addition[$field_name] = array_merge($info, $elements);
+      $addition = array_merge($info, $elements);
     }
 
     return $addition;
diff --git a/core/lib/Drupal/Core/Field/WidgetBase.php b/core/lib/Drupal/Core/Field/WidgetBase.php
index 2b9b168..384ff63 100644
--- a/core/lib/Drupal/Core/Field/WidgetBase.php
+++ b/core/lib/Drupal/Core/Field/WidgetBase.php
@@ -111,25 +111,21 @@ public function form(FieldItemListInterface $items, array &$form, array &$form_s
     // Most widgets need their internal structure preserved in submitted values.
     $elements += array('#tree' => TRUE);
 
-    $return = array(
-      $field_name => array(
-        // Aid in theming of widgets by rendering a classified container.
-        '#type' => 'container',
-        // Assign a different parent, to keep the main id for the widget itself.
-        '#parents' => array_merge($parents, array($field_name . '_wrapper')),
-        '#attributes' => array(
-          'class' => array(
-            'field-type-' . drupal_html_class($this->fieldDefinition->getType()),
-            'field-name-' . drupal_html_class($field_name),
-            'field-widget-' . drupal_html_class($this->getPluginId()),
-          ),
+    return array(
+      // Aid in theming of widgets by rendering a classified container.
+      '#type' => 'container',
+      // Assign a different parent, to keep the main id for the widget itself.
+      '#parents' => array_merge($parents, array($field_name . '_wrapper')),
+      '#attributes' => array(
+        'class' => array(
+          'field-type-' . drupal_html_class($this->fieldDefinition->getType()),
+          'field-name-' . drupal_html_class($field_name),
+          'field-widget-' . drupal_html_class($this->getPluginId()),
         ),
-        '#access' => $items->access('edit'),
-        'widget' => $elements,
       ),
+      '#access' => $items->access('edit'),
+      'widget' => $elements,
     );
-
-    return $return;
   }
 
   /**
diff --git a/core/modules/entity/lib/Drupal/entity/Entity/EntityViewDisplay.php b/core/modules/entity/lib/Drupal/entity/Entity/EntityViewDisplay.php
index bb57639..caa8676 100644
--- a/core/modules/entity/lib/Drupal/entity/Entity/EntityViewDisplay.php
+++ b/core/modules/entity/lib/Drupal/entity/Entity/EntityViewDisplay.php
@@ -231,7 +231,7 @@ public function buildMultiple(array $entities) {
         // Then let the formatter build the output for each entity.
         foreach ($entities as $key => $entity) {
           $items = $entity->get($field_name);
-          $build[$key] += $formatter->view($items);
+          $build[$key] += array($field_name => $formatter->view($items));
         }
       }
     }
diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
index d613091..973fac8 100644
--- a/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -91,20 +91,13 @@ function field_invoke_method($method, $target_function, EntityInterface $entity,
     $target = call_user_func($target_function, $field_definition);
 
     if (method_exists($target, $method)) {
-      $items = $entity->get($field_definition->getName());
+      $field_name = $field_definition->getName();
+      $items = $entity->get($field_name);
       $items->filterEmptyItems();
 
       $result = $target->$method($items, $a, $b);
-
       if (isset($result)) {
-        // For methods with array results, we merge results together.
-        // For methods with scalar results, we collect results in an array.
-        if (is_array($result)) {
-          $return = array_merge($return, $result);
-        }
-        else {
-          $return[] = $result;
-        }
+        $return[$field_name] = $result;
       }
     }
   }
