diff --git a/advanced_forum.module b/advanced_forum.module
index 9bfe24f..8d3993d 100644
--- a/advanced_forum.module
+++ b/advanced_forum.module
@@ -81,14 +81,24 @@ function advanced_forum_menu_alter(&$items) {
  * Unset all items set in core forum_menu_local_tasks_alter
  */
 function advanced_forum_menu_local_tasks_alter(&$data, $router_item, $root_path) {
-  global $user;
-
   if ($root_path == 'forum' || $root_path == 'forum/%') {
     $data['actions']['output'] = array();
   }
 }
 
 /**
+ * Implementation of hook_module_implements_alter().
+ *
+ * We don't want forum_menu_local_tasks_alter() to be called.
+ *
+ */
+function advanced_forum_module_implements_alter(&$implementations, $hook) {
+  if ($hook == 'menu_local_tasks_alter') {
+    unset($implementations['forum']);
+  }
+}
+
+/**
  * Implementation of hook_theme().
  */
 function advanced_forum_theme() {
diff --git a/includes/core-overrides.inc b/includes/core-overrides.inc
index bd9c41f..d143dca 100644
--- a/includes/core-overrides.inc
+++ b/includes/core-overrides.inc
@@ -94,14 +94,7 @@ function advanced_forum_forum_load($tid = NULL) {
   $info = advanced_forum_style_info();
   $post_count = isset($info['forum list post count']) ? intval($info['forum list post count']) : 1;
 
-  // forum_menu_local_tasks_alter() will call forum_forum_load(), which creates
-  // and caches almost exactly the same cache structure.
-  // (Only $cache[TID]->forums[CHILD_TID]->last_post can be different, if a
-  // style's "forum list post count" > 1, i.e. very rarely.)
-  // That's a waste of resources, but thanks to drupal_static(), preventing this
-  // is easy:
-  $drupal_static_id = $post_count == 1 ? 'forum_forum_load' : __FUNCTION__;
-  $cache = &drupal_static($drupal_static_id, array());
+  $cache = &drupal_static(__FUNCTION__, array());
 
   // Return a cached forum tree if available.
   if (!isset($tid)) {
