diff --git a/submenutree.module b/submenutree.module
index 12b6ed6..4631837 100644
--- a/submenutree.module
+++ b/submenutree.module
@@ -577,11 +577,20 @@ function _submenutree_menutree_view($node, $type, $tree) {
   else {
     $items = array();
     foreach ($tree as $k => $v) {
-      // Check that this is a node view
-      if (empty($v['link']['hidden']) && strpos($v['link']['href'], 'node/') === 0) {
-        $nid = drupal_substr($v['link']['href'], 5);
-        $child = node_load($nid);
-        $items[] = array('node' => $child, 'weight' => $v['link']['weight'], 'title' => check_plain($v['link']['title']));
+      // Check that menu item is visible
+      if (empty($v['link']['hidden'])) {
+        $item = array(
+          'weight' => $v['link']['weight'],
+          'title' => check_plain($v['link']['title']),
+          'href' => $v['link']['href'],
+        );
+        // If menu item links to node, add node object
+        if (strpos($v['link']['href'], 'node/') === 0) {
+          $nid = drupal_substr($v['link']['href'], 5);
+          $child = node_load($nid);
+          $item['node'] = $child;
+        }
+        $items[] = $item;
       }
     }
     _submenutree_sort_items($items);
diff --git a/submenutree.theme.inc b/submenutree.theme.inc
index 01cfc5b..29ba2b3 100644
--- a/submenutree.theme.inc
+++ b/submenutree.theme.inc
@@ -17,7 +17,12 @@ function theme_submenu_tree_titles($variables) {
   $items = $variables['items'];
   $list = array();
   foreach ($items as $item) {
-    $list[] = l($item['node']->title, 'node/' . $item['node']->nid);
+    if (!empty($item['node'])) {
+      $list[] = l($item['node']->title, 'node/' . $item['node']->nid);
+    }
+    else {
+      $list[] = l($item['title'], $item['href']);
+    }
   }
   return theme('item_list', array('items' => $list, 'title' => $variables['title']));
 }
@@ -26,17 +31,20 @@ function theme_submenu_tree_teasers($variables) {
   $output = '';
   if (isset($variables['title']))
     $output .= '<h3>' . $variables['title'] . '</h3>';
-  if (!empty($variables['links'])) {
-    foreach ($variables['items'] as $item) {
-      $output .= drupal_render(node_view($item['node'], 'teaser'));
+  foreach ($variables['items'] as $item) {
+    if (!empty($item['node'])) {
+      if (!empty($variables['links'])) {
+        $output .= drupal_render(node_view($item['node'], 'teaser'));
+      }
+      else {
+        // Kill the content['links'] array if not displaying links
+        $build = node_view($item['node'], 'teaser');
+        unset($build['links']);
+        $output .= drupal_render($build);
+      }
     }
-  }
-  else {
-    // Kill the content['links'] array if not displaying links
-    foreach ($variables['items'] as $item) {
-      $build = node_view($item['node'], 'teaser');
-      unset($build['links']);
-      $output .= drupal_render($build);
+    else {
+      $output .= '<h4>' . l($item['title'], $item['href']) . '</h4>';
     }
   }
   return $output;
@@ -46,16 +54,19 @@ function theme_submenu_tree_fulltext($variables) {
   $output = '';
   if (isset($variables['title']))
     $output .= '<h3>' . $variables['title'] . '</h3>';
-  if (!empty($variables['links'])) {
-    foreach ($variables['items'] as $item) {
-      $output .= drupal_render(node_view($item['node'], 'full'));
+  foreach ($variables['items'] as $item) {
+    if (!empty($item['node'])) {
+      if (!empty($variables['links'])) {
+        $output .= drupal_render(node_view($item['node'], 'full'));
+      }
+      else {
+        $build = node_view($item['node'], 'full');
+        unset($build['links']);
+        $output .= drupal_render($build);
+      }
     }
-  }
-  else {
-    foreach ($variables['items'] as $item) {
-      $build = node_view($item['node'], 'full');
-      unset($build['links']);
-      $output .= drupal_render($build);
+    else {
+      $output .= '<h4>' . l($item['title'], $item['href']) . '</h4>';
     }
   }
   return $output;
