diff --git a/includes/menu.inc b/includes/menu.inc
index ad6341e..afb252b 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -63,14 +63,24 @@ function bootstrap_menu_link(array $variables) {
   if ($element['#below']) {
     // Ad our own wrapper
     unset($element['#below']['#theme_wrappers']);
-    $sub_menu = '<ul>' . drupal_render($element['#below']) . '</ul>';
+    $sub_menu = '<ul class="dropdown-menu">' . drupal_render($element['#below']) . '</ul>';
+    $element['#localized_options']['attributes']['class'][] = 'dropdown-toggle';
+    $element['#localized_options']['attributes']['data-toggle'] = 'dropdown';
 
-    //$element['#localized_options']['attributes']['class'][] = 'dropdown-toggle';
-    //$element['#localized_options']['attributes']['data-toggle'] = 'dropdown';
+    // Check if this element is nested within another
+    if ((!empty($element['#original_link']['depth'])) && ($element['#original_link']['depth'] > 1)) {
+      // Generate as dropdown submenu
+      $element['#attributes']['class'][] = 'dropdown-submenu';
+    }
+    else {
+      // Generate as standard dropdown
+      $element['#attributes']['class'][] = 'dropdown';
+      $element['#localized_options']['html'] = TRUE;
+      $element['#title'] .= '<span class="caret"></span>';
+    }
+
+    // Set dropdown trigger element to # to prevent inadvertant page loading with submenu click
     $element['#localized_options']['attributes']['data-target'] = '#';
-    //$element['#attributes']['class'][] = 'dropdown';
-    $element['#localized_options']['html'] = TRUE;
-    //$element['#title'] .= '<span class="caret"></span>';
   }
   
   $output = l($element['#title'], $element['#href'], $element['#localized_options']);
