diff --git a/twitter_pull.module b/twitter_pull.module
index 9957d18..742b656 100644
--- a/twitter_pull.module
+++ b/twitter_pull.module
@@ -93,7 +93,7 @@ function twitter_pull_preprocess(&$variables, $hook) {
  */
 function twitter_pull_render($twitkey, $title = NULL, $num_items = NULL, $themekey = NULL, $lazy_load = FALSE) {
   drupal_add_css(drupal_get_path('module', 'twitter_pull') . '/twitter-pull-listing.css');
-  
+
   //-- Set the lazy load id. Encode the twitkey and title to make sure the they don't contain dashes.
   $lazy_id = rtrim(base64_encode($twitkey) .'-'. base64_encode($title) .'-'. (int)$num_items . '-' . $themekey, '-');
 
@@ -160,7 +160,7 @@ function twitter_pull_retrieve($twitkey, $num_items = NULL) {
       watchdog('Twitter Pull', $e->getMessage(), array(), WATCHDOG_WARNING);
       if (!empty($cache) && !empty($cache->data)) {
         return $cache->data;
-      } 
+      }
       else {
         return twitter_pull_empty_message();
       }
@@ -189,12 +189,12 @@ function twitter_pull_add_links($text) {
 
   $pattern = '/[#]+([A-Za-z0-9-_]+)/';
   $repl = '<a href="http://twitter.com/#!/search?q=%23$1" title="#$1" rel="nofollow">#$1</a>';
-  $text = preg_replace($pattern, $repl, $text);  
+  $text = preg_replace($pattern, $repl, $text);
 
   return filter_xss($text);
 }
 
-/* 
+/*
  *  Implementation of hook_block_info()
  */
 function twitter_pull_block_info() {
@@ -217,8 +217,8 @@ function twitter_pull_block_view($delta = '') {
   return array("subject"=>"", "content"=>$content);
 }
 
-/* 
- * data hook for twitter_pull blocks.  
+/*
+ * data hook for twitter_pull blocks.
  * RETURN an array of data object with the following properties
  *   delta (unique for all blocks)
  *   name
@@ -229,22 +229,22 @@ function twitter_pull_block_view($delta = '') {
  */
 function twitter_pull_block_data() {
   static $data;
-  
+
   //-- Static cache;
   if (!empty($data)) return $data;
-  
+
   $data = module_invoke_all('twitter_pull_blocks');
   drupal_alter('twitter_pull_data', $data);
-  
+
   //-- Do some cleanup
   if (!empty($data) && is_array($data)) {
     foreach ($data as &$block) {
       //-- assign defaults
-      $block->title = (empty($block->title) && ($block->title !== FALSE)) ? $block->name : $block->title;     
-      $block->number_of_items = (empty($block->number_of_items)) ? 5 : $block->number_of_items;      
-      $block->theme_key = (empty($block->theme_key)) ? 'twitter_pull_listing' : $block->theme_key;            
+      $block->title = (empty($block->title) && ($block->title !== FALSE)) ? $block->name : $block->title;
+      $block->number_of_items = (empty($block->number_of_items)) ? 5 : $block->number_of_items;
+      $block->theme_key = (empty($block->theme_key)) ? 'twitter_pull_listing' : $block->theme_key;
       $block->lazy_load = (empty($block->lazy_load)) ? FALSE : $block->lazy_load;
-    }  
+    }
   }
   else {
     $data = array();
@@ -300,6 +300,20 @@ function twitter_pull_boxes_plugins() {
   return $info;
 }
 
+/**
+ * Implements hook_admin_menu_cache_info().
+ */
+function twitter_pull_admin_menu_cache_info() {
+  $caches['twitter_pull'] = array(
+    'title' => t('Twitter pull tweets'),
+    'callback' => '_twitter_pull_cache_clear',
+  );
+  return $caches;
+}
 
-
-
+/**
+ * Flushes cache tables used by the module.
+ */
+function _twitter_pull_cache_clear() {
+  cache_clear_all('*', TWITTER_PULL_CACHE_TABLE, TRUE);
+}
