diff --git a/homebox-admin-display-form.tpl.php b/homebox-admin-display-form.tpl.php
index 12c43ea..b3a0a67 100644
--- a/homebox-admin-display-form.tpl.php
+++ b/homebox-admin-display-form.tpl.php
@@ -22,6 +22,7 @@
       <th><?php print t('Region'); ?></th>
       <th><?php print t('Custom title'); ?></th>
       <th><?php print t('Weight'); ?></th>
+      <th><?php print t('Max to Show'); ?></th>
       <th><?php print t('Visible'); ?></th>
       <th><?php print t('Open'); ?></th>
       <th><?php print t('Movable'); ?></th>
@@ -45,6 +46,7 @@
         <td><?php print $data->region_select; ?></td>
         <td><?php print $data->title; ?></td>
         <td><?php print $data->weight_select; ?> <?php print $data->bid ?></td>
+        <td><?php print $data->maxtoshow; ?></td>
         <td><?php print $data->status; ?></td>
         <td><?php print $data->open; ?></td>
         <td><?php print $data->movable; ?></td>
diff --git a/homebox.admin.inc b/homebox.admin.inc
index 911839d..34a6a69 100644
--- a/homebox.admin.inc
+++ b/homebox.admin.inc
@@ -382,6 +382,7 @@ function homebox_layout($page) {
       $block['open']    = (bool) $hb['open'];
       $block['closable'] = (bool) $hb['closable'];
       $block['title'] = $hb['title'];
+      $block['maxtoshow'] = $hb['maxtoshow'];
     }
     // Set defaults.
     else {
@@ -390,6 +391,7 @@ function homebox_layout($page) {
       $block['status']  = TRUE;
       $block['open']    = TRUE;
       $block['closable'] = TRUE;
+      $block['maxtoshow'] = '';
     }
   }
 
@@ -477,6 +479,11 @@ function homebox_admin_display_form(&$form_state, $blocks, $page, $theme = NULL)
       '#default_value' => $block['title'],
       '#size' => 15,
     );
+    $form[$key]['maxtoshow'] = array(
+      '#type' => 'textfield',
+      '#default_value' => $block['maxtoshow'],
+      '#size' => 2,
+    );
     $form[$key]['status'] = array(
       '#type' => 'checkbox',
       '#default_value' => $block['status'],
@@ -531,6 +538,7 @@ function homebox_admin_display_form_submit($form, &$form_state) {
         'delta' => $block['delta'],
         'region' => (int) $block['region'],
         'movable' => (int) $block['movable'],
+        'maxtoshow' => (int) $block['maxtoshow'],
         'status' => (int) $block['status'],
         'open' => (int) $block['open'],
         'closable' => (int) $block['closable'],
@@ -637,6 +645,7 @@ function template_preprocess_homebox_admin_display_form(&$variables) {
       $variables['block_listing'][$region][$i]->region_select = drupal_render($block['region']) . drupal_render($block['theme']);
       $variables['block_listing'][$region][$i]->title = drupal_render($block['title']);
       $variables['block_listing'][$region][$i]->weight_select = drupal_render($block['weight']);
+      $variables['block_listing'][$region][$i]->maxtoshow = drupal_render($block['maxtoshow']);
       $variables['block_listing'][$region][$i]->status = drupal_render($block['status']);
       $variables['block_listing'][$region][$i]->open = drupal_render($block['open']);
       $variables['block_listing'][$region][$i]->movable = drupal_render($block['movable']);
diff --git a/homebox.js b/homebox.js
index 574370a..c0cb34f 100644
--- a/homebox.js
+++ b/homebox.js
@@ -35,6 +35,18 @@ Drupal.behaviors.homebox = function (context) {
     $homebox.find('#homebox-add-link').click(function () {
       $homebox.find('#homebox-add').toggle();
     });
+    
+    // Hide blocks depending on use count
+    $homebox.find('#homebox-add').find('a').each(function () {
+      var $a = $(this);
+      var usecount = $a.attr('data-usecount');
+      var maxtoshow = $a.attr('data-maxtoshow');
+      if (usecount && maxtoshow) {
+        if (usecount >= maxtoshow) {
+          $a.parent().hide();
+        }
+      }
+    });
 
     // Populate hidden form element with block order and values.
     Drupal.homebox.$pageSave.mousedown(function () {
@@ -239,6 +251,25 @@ Drupal.behaviors.homeboxPortlet = function (context) {
     // Attach click event on close
     $portletHeader.find('.portlet-close').click(function () {
       $portlet.hide();
+      // Update use count
+      var key = $portlet.attr('id');
+      $('#homebox').find('#homebox-add').find('a').not('.restore').each(function () {
+        var $a = $(this);
+        var usecount = $a.attr('data-usecount');
+        var maxtoshow = $a.attr('data-maxtoshow');
+        var akey = $a.attr('data-key');
+        if (akey && usecount && maxtoshow && akey == key) {
+          usecount--;
+          $a.attr('data-usecount', usecount);
+          if (usecount >= maxtoshow) {
+            $a.parent().hide();
+          }
+          else {
+            $a.parent().show();
+          }
+        }
+      });
+      
       Drupal.homebox.equalizeColumnsHeights();
       Drupal.homebox.pageChanged();
     });
diff --git a/homebox.module b/homebox.module
index 75cd1ce..e8e97ad 100644
--- a/homebox.module
+++ b/homebox.module
@@ -327,6 +327,9 @@ function homebox_build($page) {
     if (!empty($block['title'])) {
       $allowed_blocks[$block['module']][$block['delta']]['info'] = $block['title'];
     }
+    $allowed_blocks[$block['module']][$block['delta']]['maxtoshow'] = $block['maxtoshow'];
+    $allowed_blocks[$block['module']][$block['delta']]['used'] = FALSE;
+    $allowed_blocks[$block['module']][$block['delta']]['use_count'] = 0;
   }
 
   // Get user settings, so custom blocks are placed in regions.
@@ -350,6 +353,8 @@ function homebox_build($page) {
         // the last column/region.
         $regions[min($block->region, $column_count)][$block->weight][] = $block;
         $allowed_blocks[$block->module][$block->delta]['used'] = TRUE;
+        $allowed_blocks[$block->module][$block->delta]['use_count']++;
+        $allowed_blocks[$block->module][$block->delta]['key'] = $block->key;
       }
     }
   }
@@ -365,10 +370,21 @@ function homebox_build($page) {
     foreach ($allowed_blocks as $module => $blocks) {
       foreach ($blocks as $delta => $info) {
         $options = array();
+        $options['attributes'] = array();
         if (isset($info['used'])) {
           $options['attributes'] = array('class' => 'used');
         }
-        $add_links[] = homebox_add_link($info['info'], $page, $module, $delta, $options);
+        if (empty($info['maxtoshow'])) {
+          $add_links[] = homebox_add_link($info['info'], $page, $module, $delta, $options);
+        }
+        else {
+          $options['attributes'] = array_merge($options['attributes'], array(
+            'data-usecount' => $info['use_count'], 
+            'data-maxtoshow' => $info['maxtoshow'],
+            'data-key' => 'homebox-block-' . $info['key'],
+          ));
+          $add_links[] = homebox_add_link($info['info'], $page, $module, $delta, $options);
+        }
       }
     }
     $add_links['restore'] = l(t('Restore to defaults'), 'homebox/' . $page->name . '/restore', array('attributes' => array('class' => 'restore')));
@@ -1033,6 +1049,7 @@ function homebox_check_page_object($data, $name = NULL, $element = NULL) {
         case 'cache':
         case 'full':
         case 'color':
+        case 'maxtoshow':
           // Check that the previous are numeric values
           if (!is_numeric($value)) {
             $status = FALSE;
