diff --git a/menu_block_split.module b/menu_block_split.module
index 068c6ef..9b36924 100644
--- a/menu_block_split.module
+++ b/menu_block_split.module
@@ -46,6 +46,31 @@ function menu_block_split_menu_name() {
 }
 
 /**
+ * Returns the injected parent settings.
+ *
+ * @param string $setting_name ('parent_name' or 'resort')
+ * @return mixed setting (for 'inject': name, TRUE if parent name should be preserved, or an empty string (disabled), for 'resort': resort flag)
+ */
+function menu_block_split_injected_parent_settings($setting_name) {
+  $settings = &drupal_static(__FUNCTION__);
+
+  if (!isset($settings)) {
+    $resort = FALSE;
+    $inject_parent = check_plain(variable_get('menu_block_split_injected_parent_name', ''));
+    if ($inject_parent) {
+      $inject_parent = $inject_parent === '@parent' ? TRUE : t($inject_parent);
+      $resort = variable_get('menu_block_split_injected_parent_resort', FALSE);
+      if (is_null($resort) || $resort == '0' || !$resort) { $resort = FALSE; }
+    }
+    $settings = array(
+      'parent_name' => $inject_parent,
+      'resort' => $resort
+    );
+  }
+  return $settings[$setting_name];
+}
+
+/**
  * Implements hook_permission().
  */
 function menu_block_split_permission() {
@@ -132,8 +157,30 @@ function menu_block_split_settings() {
       '#description' => t('Set the title of the resulting block.'),
     );
   }
-  $form['#validate'][] = 'menu_block_split_settings_validate';
 
+  $form['menu_block_split_injected_parent_settings'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Injected parent entry settings (optional)'),
+    '#collapsible' => TRUE,
+    '#collapsed' => FALSE
+  );
+
+  $form['menu_block_split_injected_parent_settings']['menu_block_split_injected_parent_name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Label of injected parent entry in 2nd-level menus.'),
+    '#default_value' => variable_get('menu_block_split_injected_parent_name', ''),
+    '#description' => t('Enter the optional label given to parent entries injected into 2nd-level menus.<br />' .
+                        'Empty string disables this feature, entering <em>@parent</em> causes label from parent menu to be used.'),
+  );
+
+  $form['menu_block_split_injected_parent_settings']['menu_block_split_injected_parent_resort'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Re-sort 2nd-level menus after injection so that active item is on top of it'),
+    '#default_value' => variable_get('menu_block_split_injected_parent_resort', ''),
+    '#description' => t('Select this option if you are building drop-down menu and need the active option to be the first element.'),
+  );
+
+  $form['#validate'][] = 'menu_block_split_settings_validate';
   return system_settings_form($form);
 }
 
@@ -145,6 +192,10 @@ function menu_block_split_settings_validate($form, &$form_state) {
   for ($i = 1; $i <= $howmany; $i++) {
     $form_state['values']['menu_block_splittitle_'. $i] = check_plain($form_state['values']['menu_block_splittitle_'. $i]);
   }
+  $form_state['values']['menu_block_split_injected_parent_name'] = check_plain($form_state['values']['menu_block_split_injected_parent_name']);
+
+  drupal_static_reset('menu_block_split_injected_parent_name');
+  drupal_static_reset('menu_block_split_injected_parent_resort');
 }
 
 /**
@@ -210,6 +261,89 @@ function menu_block_split_block_view($delta = '') {
 }
 
 /**
+ * Injects virtual parent element.
+ *
+ * @param string $mkey
+ * @param array &$mid
+ *
+ */
+function menu_block_split_inject_parent($mkey, &$mid) {
+  $inject_parent = menu_block_split_injected_parent_settings('parent_name');
+  $inject_resort = menu_block_split_injected_parent_settings('resort');
+
+  if ($inject_parent) {
+    $inject_item_link = $mid['link'];
+
+    // Rewrite some fields if custom title is set.
+    if ($inject_parent !== TRUE) {
+      if (isset($inject_item_link['options']['attributes']['title'])) {
+        // Rewrite description only if it represents the title.
+        if (isset($inject_item_link['title']) &&
+            $inject_item_link['options']['attributes']['title'] == $inject_item_link['title']) {
+          $inject_item_link['options']['attributes']['title'] = $inject_parent;
+          // Set the description if original was translated (and was the same as title).
+          if (isset($inject_item_link['localized_options']['attributes']['title'])) {
+            $inject_item_link['localized_options']['attributes']['title'] = $inject_parent;
+          }
+        }
+      }
+      // Set new title.
+      $inject_item_link['title'] = $inject_parent;
+      $inject_item_link['link_title'] = $inject_parent;
+    }
+
+    // Generate key for injected menu item.
+    $prefix = 0;
+    $entry = &$mid['below'];
+    reset($entry);
+    list($first_key) = explode(' ', key($entry), 2);
+    $prefix = is_numeric($first_key) ? $first_key - 1 : 20000;
+
+    // Check if any direct sibling is active and remove an active mark from injected element if it is.
+    // Optionally move active elements up (if re-sorting is enabled).
+    $need_deactivate = (isset($inject_item_link['in_active_trail']) && $inject_item_link['in_active_trail']);
+    $need_move_to_bottom = TRUE;
+    $bottom_prefix = 0;
+    if ($need_deactivate || $inject_resort) {
+      foreach($entry as $k => $item) {
+        $is_active = (isset($item['link']['in_active_trail']) && $item['link']['in_active_trail']);
+        if ($is_active) {
+          if ($need_deactivate) {
+            $inject_item_link['in_active_trail'] = FALSE;
+            $need_deactivate = FALSE;
+          }
+          if ($inject_resort) {
+            if ($need_move_to_bottom) {
+              list($last_key) = explode(' ', end(array_keys($entry)), 2);
+              $bottom_prefix = is_numeric($last_key) ? $last_key + 1 : 60000;
+              $need_move_to_bottom = FALSE;
+            }
+            list($first_key, $rest) = explode(' ', $k, 2);
+            if (is_numeric($first_key) && isset($rest)) {
+              $new_key = $prefix . ' ' . $rest;
+              if (!isset($entry[$new_key])) {
+                $entry[$new_key] = $item;
+                unset($entry[$k]);
+                $prefix -= 1;
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // Inject item.
+    if ($bottom_prefix) { $prefix = $bottom_prefix; }
+    $entry_key = $prefix . ' ' . $inject_item_link['link_title'] . ' ' . $inject_item_link['mlid'];
+    $entry[$entry_key] = array(
+      'link'  => $inject_item_link,
+      'below' => array(),
+    );
+    ksort($entry, SORT_NUMERIC);
+  }
+}
+
+/**
  * Render menu
  *
  * @param array $tree
@@ -252,6 +386,7 @@ function menu_block_split_render_tree($tree, $level) {
       // sub block
       else {
         if ($mid['below']) {
+          menu_block_split_inject_parent($i, $mid);
           $output .= menu_block_split_menu_tree_output($mid['below']);
         }
       }
