diff --git a/templates/menu/menu-link.func.php b/templates/menu/menu-link.func.php
index e73a1f6..c1db5c4 100644
--- a/templates/menu/menu-link.func.php
+++ b/templates/menu/menu-link.func.php
@@ -22,6 +22,9 @@
 function bootstrap_menu_link(array $variables) {
   $element = $variables['element'];
   $sub_menu = '';
+  $sub_sub_menu = '';
+  $sub_sub_sub_menu = '';
+  $has_nolink = (in_array($element['#href'], array('<nolink>')) ? l($element['#title'], '#wb-tphp', $element['#localized_options']) : l($element['#title'], $element['#href'], $element['#localized_options']));
 
   $options = !empty($element['#localized_options']) ? $element['#localized_options'] : array();
 
@@ -36,26 +39,76 @@ function bootstrap_menu_link(array $variables) {
   $href = $element['#href'];
   $attributes = !empty($element['#attributes']) ? $element['#attributes'] : array();
 
-  if ($element['#below']) {
+  if ($element['#below'] || ($element['#original_link']['has_children'] && $element['#original_link']['depth'] == 1 && count($element['#below']) == 0)) {
     // Prevent dropdown functions from being added to management menu so it
     // does not affect the navbar module.
     if (($element['#original_link']['menu_name'] == 'management') && (module_exists('navbar'))) {
       $sub_menu = drupal_render($element['#below']);
+      if (isset($element['#below']['#below'])) {
+        $sub_sub_menu = drupal_render($element['#below']['#below']);
+      }
     }
     elseif ((!empty($element['#original_link']['depth'])) && ($element['#original_link']['depth'] == 1)) {
       // Add our own wrapper.
       unset($element['#below']['#theme_wrappers']);
-      $sub_menu = '<ul class="dropdown-menu">' . drupal_render($element['#below']) . '</ul>';
+      // Generate as standard dropdown.
+      $element['#title'] .= ' <span class="expicon glyphicon glyphicon-chevron-down"></span>';
+      $element['#attributes']['class'][] = 'dropdown';
+      $options['html'] = TRUE;
 
+      // Set dropdown trigger element to # to prevent inadvertant page loading
+      // when a submenu link is clicked.
+      $options['attributes']['data-target'] = '#';
+      $options['attributes']['class'][] = 'dropdown-toggle';
+      $options['attributes']['data-toggle'] = 'dropdown';
+      foreach ($element['#below'] as $key => $link) {
+        if (is_numeric($key)) {
+          if ($element['#below'][$key]['#original_link']['has_children']) {
+            $element['#below'][$key]['#title'] = $element['#below'][$key]['#title'] . '<span class="expicon glyphicon glyphicon-chevron-down"></span>';
+            $element['#below'][$key]['#localized_options']['attributes']['data-target'] = '#';
+            $element['#below'][$key]['#attributes']['class'][] = 'dropdown';
+            $element['#below'][$key]['#localized_options']['html'] = TRUE;
+          }
+        }
+      }
+      $sub_menu = '<ul class="list-group menu list-unstyled">' . drupal_render($element['#below']) . '</ul>';
+      //$sub_menu = '<ul class="dropdown-menu">' . drupal_render($element['#below']) . '</ul>';
+    } elseif ((!empty($element['#original_link']['depth'])) && $element['#original_link']['depth'] == 2) {
+      unset($element['#below']['#theme_wrappers']);
       // Generate as standard dropdown.
-      $title .= ' <span class="caret"></span>';
+      //$title .= ' <span class="caret"></span>';
       $attributes['class'][] = 'dropdown';
       $options['attributes']['class'][] = 'dropdown-toggle';
       $options['attributes']['data-toggle'] = 'dropdown';
+      // Set dropdown trigger element to # to prevent inadvertant page loading
+      // when a submenu link is clicked.
+      $options['attributes']['data-target'] = '#';
+      $options['attributes']['class'][] = 'dropdown-toggle';
+      $options['attributes']['data-toggle'] = 'dropdown';
+      foreach ($element['#below'] as $key => $link) {
+        if (is_numeric($key)) {
+          if ($element['#below'][$key]['#original_link']['has_children'] && $element['#below'][$key]['#original_link']['expanded'] && !count($element['#below'][$key]['#below']) ) {
+            //Chevron class was already added by previous render, no need to add it when clicked.
+            $element['#below'][$key]['#title'] = $element['#below'][$key]['#title'] . '<span class="expicon glyphicon glyphicon-chevron-down"></span>';
+            $element['#below'][$key]['#localized_options']['attributes']['data-target'] = '#';
+            $element['#below'][$key]['#attributes']['class'][] = 'dropdown';
+            $element['#below'][$key]['#localized_options']['html'] = TRUE;
+          }
+        }
+      }
+      $sub_sub_menu = '<ul class="list-group menu list-unstyled">' . drupal_render($element['#below']) . '</ul>';
+    }
+    if ((!empty($element['#original_link']['depth'])) && $element['#original_link']['depth'] == 3) {
+      unset($element['#below']['#theme_wrappers']);
+      $sub_sub_sub_menu = '<ul class="list-group menu list-unstyled active">' . drupal_render($element['#below']) . '</ul>';
+      // Generate as standard dropdown.
+      $element['#title'] .= ' <span class="expicon glyphicon glyphicon-chevron-down"></span>';
+      $element['#attributes']['class'][] = 'dropdown';
+      //Redundant//$options['html'] = TRUE;
     }
   }
 
-  return '<li' . drupal_attributes($attributes) . '>' . l($title, $href, $options) . $sub_menu . "</li>\n";
+  return '<li' . drupal_attributes($attributes) . '>' . l($title, $href, $options) . $sub_menu . $sub_sub_menu . $sub_sub_sub_menu . "</li>\n";
 }
 
 /**
