diff --git a/entity_view_mode.module b/entity_view_mode.module
index cec996e..4cc792e 100644
--- a/entity_view_mode.module
+++ b/entity_view_mode.module
@@ -15,8 +15,8 @@ function entity_view_mode_permission() {
  * Implements hook_entity_info_alter().
  */
 function entity_view_mode_entity_info_alter(&$info) {
-  foreach (variable_get('entity_view_modes', array()) as $entity_type => $view_modes) {
-    if (isset($info[$entity_type]['view modes'])) {
+  foreach(variable_get('entity_view_modes', array()) as $entity_type => $view_modes) {
+    if(isset($info[$entity_type]['view modes'])) {
       $info[$entity_type]['view modes'] += $view_modes;
     }
   }
@@ -26,33 +26,33 @@ function entity_view_mode_entity_info_alter(&$info) {
  * Implements hook_menu().
  */
 function entity_view_mode_menu() {
-  $items['admin/config/system/entity-view-modes'] = array(
-    'title' => 'Entity view modes',
-    'description' => 'Create new custom view modes for content.',
-    'page callback' => 'entity_view_mode_list',
+  $items['admin/config/system/entity-view-modes']            = array(
+    'title'            => 'Entity view modes',
+    'description'      => 'Create new custom view modes for content.',
+    'page callback'    => 'entity_view_mode_list',
     'access arguments' => array('administer entity view modes'),
-    'file' => 'entity_view_mode.admin.inc',
+    'file'             => 'entity_view_mode.admin.inc',
   );
-  $items['admin/config/system/entity-view-modes/add/%'] = array(
-    'title' => 'Add view mode',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('entity_view_mode_edit_form', 5),
+  $items['admin/config/system/entity-view-modes/add/%']      = array(
+    'title'            => 'Add view mode',
+    'page callback'    => 'drupal_get_form',
+    'page arguments'   => array('entity_view_mode_edit_form', 5),
     'access arguments' => array('administer entity view modes'),
-    'file' => 'entity_view_mode.admin.inc',
+    'file'             => 'entity_view_mode.admin.inc',
   );
-  $items['admin/config/system/entity-view-modes/edit/%/%'] = array(
-    'title' => 'Edit view mode',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('entity_view_mode_edit_form', 5, 6),
+  $items['admin/config/system/entity-view-modes/edit/%/%']   = array(
+    'title'            => 'Edit view mode',
+    'page callback'    => 'drupal_get_form',
+    'page arguments'   => array('entity_view_mode_edit_form', 5, 6),
     'access arguments' => array('administer entity view modes'),
-    'file' => 'entity_view_mode.admin.inc',
+    'file'             => 'entity_view_mode.admin.inc',
   );
   $items['admin/config/system/entity-view-modes/delete/%/%'] = array(
-    'title' => 'Edit view mode',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('entity_view_mode_delete_form', 5, 6),
+    'title'            => 'Edit view mode',
+    'page callback'    => 'drupal_get_form',
+    'page arguments'   => array('entity_view_mode_delete_form', 5, 6),
     'access arguments' => array('administer entity view modes'),
-    'file' => 'entity_view_mode.admin.inc',
+    'file'             => 'entity_view_mode.admin.inc',
   );
 
   return $items;
@@ -74,7 +74,16 @@ function entity_view_mode_menu() {
  * Load a custom entity view mode by entity type and machine name.
  */
 function entity_view_mode_load($entity_type, $machine_name) {
+  // retrieve all Viewmodes
   $view_modes = variable_get('entity_view_modes', array());
+  // convenience assignment of the requested Entity's requested View Mode
+  $current_view_mode =& $view_modes[$entity_type][$machine_name];
+  // checks to ensure that information was found
+  if($current_view_mode && is_array($current_view_mode)) {
+    // both hook_entity_view_mode_update & hook_entity_view_mode_delete
+    // expect that the returned value have the machine_name as one of the array keys
+    $current_view_mode['machine_name'] = $machine_name;
+  }
   return !empty($view_modes[$entity_type][$machine_name]) ? $view_modes[$entity_type][$machine_name] : FALSE;
 }
 
@@ -82,43 +91,51 @@ function entity_view_mode_load($entity_type, $machine_name) {
  * Save a custom entity view mode.
  */
 function entity_view_mode_save($entity_type, $view_mode) {
-  $existing_view_mode = !empty($view_mode['old_machine_name']) ? $view_mode['old_machine_name'] : $view_mode['machine_name'];
-  $view_mode_name = $view_mode['machine_name'];
+  $view_mode_machine_name = !empty($view_mode['old_machine_name']) ? $view_mode['old_machine_name'] : $view_mode['machine_name'];
+  $view_mode_name         = $view_mode['machine_name'];
 
   // Load the original, unchanged view mode, if it exists.
-  if ($original = entity_view_mode_load($entity_type, $existing_view_mode)) {
-    $view_mode['original'] = $original + array('machine_name' => $existing_view_mode);
+  if($original = entity_view_mode_load($entity_type, $view_mode_machine_name)) {
+    $view_mode['original'] = $original + array('machine_name' => $view_mode_machine_name);
     unset($view_mode['old_machine_name']);
   }
 
   // The key value for custom settings needs to be converted from
   // 'custom_settings' to 'custom settings' before saving.
-  if (isset($view_mode['custom_settings'])) {
+  if(isset($view_mode['custom_settings'])) {
     $view_mode['custom settings'] = $view_mode['custom_settings'];
     unset($view_mode['custom_settings']);
   }
 
   // Determine if we will be inserting a new view mode.
-  if (!isset($view_mode['is_new'])) {
-    $view_mode['is_new'] = !empty($view_mode['original']);
+  if(!isset($view_mode['is_new'])) {
+    $view_mode['is_new'] = !isset($view_mode['original']) ? TRUE : FALSE;
+    $is_new              = $view_mode['is_new'];
   }
 
   // Let modules modify the view mode before it is saved.
   module_invoke_all('entity_view_mode_presave', $view_mode, $entity_type);
 
-  // Save the view mode.
+  // Retrieve View Modes from variables table.
   $view_modes = variable_get('entity_view_modes', array());
-  unset($view_modes[$entity_type][$existing_view_mode]);
+
+  // Check if the view mode was already there (meaning this is an update not save) and if so, unset it.
+  if(isset($view_modes[$entity_type][$view_mode_machine_name])) {
+    unset($view_modes[$entity_type][$view_mode_machine_name]);
+  }
+
+  // Prepare the new View Mode settings array for saving, merging values provided by modules implementing hook_entity_view_mode_presave()
   $view_modes[$entity_type][$view_mode_name] = array_intersect_key($view_mode, drupal_map_assoc(array('label', 'custom settings')));
+  // Update the View Mode settings array with necessary values.
   $view_modes[$entity_type][$view_mode_name] += array('custom settings' => TRUE);
+  $view_modes[$entity_type][$view_mode_name] += array('machine_name'    => $view_mode_machine_name);
   variable_set('entity_view_modes', $view_modes);
 
   // Allow modules to respond after the view mode is saved.
-  if ($view_mode['is_new']) {
-    module_invoke_all('entity_view_mode_insert', $view_mode, $entity_type);
-  }
-  else {
-    module_invoke_all('entity_view_mode_update', $view_mode, $entity_type);
+  if($view_mode['is_new']) {
+    module_invoke_all('entity_view_mode_insert', $view_mode, $entity_type, $is_new);
+  } else {
+    module_invoke_all('entity_view_mode_update', $view_mode, $entity_type, $is_new);
   }
 
   // Clear internal properties.
@@ -134,7 +151,7 @@ function entity_view_mode_save($entity_type, $view_mode) {
  * Delete a custom entity view mode.
  */
 function entity_view_mode_delete($entity_type, $machine_name) {
-  if ($view_mode = entity_view_mode_load($entity_type, $machine_name)) {
+  if($view_mode = entity_view_mode_load($entity_type, $machine_name)) {
     module_invoke_all('entity_view_mode_delete', $view_mode, $entity_type);
 
     $view_modes = variable_get('entity_view_modes', array());
@@ -150,47 +167,44 @@ function entity_view_mode_delete($entity_type, $machine_name) {
 /**
  * Implements hook_entity_view_mode_insert() on behalf of core field module.
  */
-function field_entity_view_mode_insert($view_mode, $entity_type) {
-  field_entity_view_mode_update($view_mode, $entity_type);
+function field_entity_view_mode_insert($view_mode, $entity_type, $is_new) {
+  field_entity_view_mode_update($view_mode, $entity_type, $is_new);
 }
 
 /**
  * Implements hook_entity_view_mode_update() on behalf of core field module.
  */
-function field_entity_view_mode_update($view_mode, $entity_type) {
+function field_entity_view_mode_update($view_mode, $entity_type, $is_new) {
   module_load_include('inc', 'field_ui', 'field_ui.admin');
-  $entity_info = entity_get_info($entity_type);
+  $entity_info    = entity_get_info($entity_type);
   $view_mode_name = $view_mode['machine_name'];
 
   // If custom settings is set to false, then we should be disabling this view
   // view mode for all bundles.
-  //if (empty($view_mode['custom settings'])) {
-  //  $view_mode['enabled_bundles'] = array_fill_keys(array_keys($entity_info['bundles']), 0);
-  //}
-
-  if (!empty($view_mode['enabled_bundles'])) {
-    foreach ($view_mode['enabled_bundles'] as $bundle => $value) {
+  /*if (empty($view_mode['custom settings'])) {
+    $view_mode['enabled_bundles'] = array_fill_keys(array_keys($entity_info['bundles']), 0);
+  }*/
+  if(!empty($view_mode['enabled_bundles'])) {
+    foreach($view_mode['enabled_bundles'] as $bundle => $bundle_name) {
       $bundle_settings = field_bundle_settings($entity_type, $bundle);
 
-      // Display a message for each view mode newly configured to use custom
-      // settings.
+      // Display a message for each view mode newly configured to use custom settings.
       $view_mode_settings = field_view_mode_settings($entity_type, $bundle);
-      if (!empty($value) && empty($view_mode_settings[$view_mode_name]['custom_settings'])) {
-        $view_mode_label = $entity_info['view modes'][$view_mode_name]['label'];
-        $path = _field_ui_bundle_admin_path($entity_type, $bundle) . "/display/$view_mode_name";
+      if(!empty($bundle_name) && empty($view_mode_settings[$view_mode_name]['custom_settings'])) {
+        $view_mode_label = ($is_new) ? $view_mode['label'] : $entity_info['view modes'][$view_mode_name]['label'];
+        $path            = _field_ui_bundle_admin_path($entity_type, $bundle) . "/display/$view_mode_name";
         drupal_set_message(t('The %view_mode @entity_type @bundle view mode now uses custom display settings. You might want to <a href="@url" target="_new">configure them</a>.', array(
-          '%view_mode' => $view_mode_label,
+          '%view_mode'   => $view_mode_label,
           '@entity_type' => $entity_info['label'],
-          '@bundle' => $entity_info['bundles'][$bundle]['label'],
-          '@url' => url($path),
+          '@bundle'      => $entity_info['bundles'][$bundle]['label'],
+          '@url'         => url($path),
         )));
-        // Initialize the newly customized view mode with the display settings
-        // from the default view mode.
+        // Initialize the newly customized view mode with the display settings from the default view mode.
         _field_ui_add_default_view_mode_settings($entity_type, $bundle, $view_mode_name, $bundle_settings);
       }
 
       // Save updated bundle settings.
-      $bundle_settings['view_modes'][$view_mode_name]['custom_settings'] = !empty($value);
+      $bundle_settings['view_modes'][$view_mode_name]['custom_settings'] = !empty($bundle_name);
       field_bundle_settings($entity_type, $bundle, $bundle_settings);
     }
   }
@@ -200,14 +214,14 @@ function field_entity_view_mode_update($view_mode, $entity_type) {
  * Implements hook_entity_view_mode_delete() on behalf of core field module.
  */
 function field_entity_view_mode_delete($view_mode, $entity_type) {
-  $entity_info = entity_get_info($entity_type);
+  $entity_info    = entity_get_info($entity_type);
   $view_mode_name = $view_mode['machine_name'];
 
-  foreach (array_keys($entity_info['bundles']) as $bundle) {
+  foreach(array_keys($entity_info['bundles']) as $bundle) {
     // Remove bundle settings for the view mode.
     $bundle_settings = field_bundle_settings($entity_type, $bundle);
-    if (isset($bundle_settings['view_modes'][$view_mode_name])) {
-      unset($bundles_settings['view_modes'][$view_mode_name]);
+    if(isset($bundle_settings['view_modes'][$view_mode_name])) {
+      unset($bundle_settings['view_modes'][$view_mode_name]);
       field_bundle_settings($entity_type, $bundle, $bundle_settings);
     }
 
@@ -230,31 +244,31 @@ function field_entity_view_mode_delete($view_mode, $entity_type) {
 function entity_view_mode_preprocess(&$variables, $hook) {
   // @todo Improve checking of entity type based on hook. Some entities do not
   // match 1:1 like file_entity and user_profile.
-  if (!empty($variables[$hook]) && !empty($variables['theme_hook_suggestions']) && entity_get_info($hook)) {
+  if(!empty($variables[$hook]) && !empty($variables['theme_hook_suggestions']) && entity_get_info($hook)) {
     $view_mode = $variables['elements']['#view_mode'];
 
     $entity_type = $hook;
-    $entity = $variables[$entity_type];
+    $entity      = $variables[$entity_type];
     list($id, , $bundle) = entity_extract_ids($entity_type, $entity);
 
     $suggestions = &$variables['theme_hook_suggestions'];
 
     // Ensure the base suggestions exist and if not, add them.
-    if (!in_array("{$entity_type}__{$bundle}", $suggestions)) {
+    if(!in_array("{$entity_type}__{$bundle}", $suggestions)) {
       // The entity-type__bundle suggestion is typically "first".
       array_unshift($suggestions, "{$entity_type}__{$bundle}");
     }
-    if (!in_array("{$entity_type}__{$id}", $suggestions)) {
+    if(!in_array("{$entity_type}__{$id}", $suggestions)) {
       // The entity-type__id suggestion is always "last".
       array_push($suggestions, "{$entity_type}__{$id}");
     }
 
     // Add view mode suggestions based on the location of the base suggestions.
-    if (!in_array("{$entity_type}__{$bundle}__{$view_mode}", $suggestions)) {
+    if(!in_array("{$entity_type}__{$bundle}__{$view_mode}", $suggestions)) {
       $index = array_search("{$entity_type}__{$bundle}__{$view_mode}", $suggestions);
       array_splice($suggestions, $index + 1, 0, "{$entity_type}__{$bundle}__{$view_mode}");
     }
-    if (!in_array("{$entity_type}__{$id}__{$view_mode}", $suggestions)) {
+    if(!in_array("{$entity_type}__{$id}__{$view_mode}", $suggestions)) {
       $index = array_search("{$entity_type}__{$id}", $suggestions);
       array_splice($suggestions, $index + 1, 0, "{$entity_type}__{$id}__{$view_mode}");
     }
@@ -265,9 +279,9 @@ function entity_view_mode_get_enabled_bundles($entity_type, $view_mode_name) {
   $bundles = array();
 
   $entity_info = entity_get_info($entity_type);
-  foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
+  foreach($entity_info['bundles'] as $bundle => $bundle_info) {
     $view_mode_settings = field_view_mode_settings($entity_type, $bundle);
-    if (!empty($view_mode_settings[$view_mode_name]['custom_settings'])) {
+    if(!empty($view_mode_settings[$view_mode_name]['custom_settings'])) {
       $bundles[] = $bundle;
     }
   }
@@ -279,7 +293,7 @@ function entity_view_mode_get_possible_bundles($entity_type) {
   $bundles = array();
 
   $entity_info = entity_get_info($entity_type);
-  foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
+  foreach($entity_info['bundles'] as $bundle => $bundle_info) {
     $bundles[$bundle] = $bundle_info['label'];
   }
 
