Magento - Overriden grid does not refresh
===

I overrode `class My_CategoryFilters_Block_Adminhtml_Catalog_Category_Tab_Product extends Mage_Adminhtml_Block_Widget_Grid` and added the column 'visibility' to _prepareCollection and _prepareColumns.  Whenever I try to filter, the grid does not refresh.

I read http://stackoverflow.com/questions/5604451/grid-doesnt-appear-in-custom-admin-module-in-magento and http://stackoverflow.com/questions/5716580/magento-grid-container-block-not-loading-grid .  Both suggested around creating an overloaded Controller.  Can someone with a little more Magento experience shed some light on what I'm missing?

Thanks in advance.

#  This is what the tree looks like:
    CategoryFilters
    ├── Block
    │   └── Adminhtml
    │       ├── Catalog
    │       │   └── Category
    │       │       └── Tab
    │       │           └── Product.php
    │       └── Renderer
    │           └── Visibility.php
    ├── controllers
    │   └── Catalog
    │       └── CategoryController.php
    ├── Core
    │   └── etc
    │       └── config.xml
    └── etc

#And this is my code:

    protected function _prepareCollection()
    {
        if ($this->getCategory()->getId()) {
            $this->setDefaultFilter(array('in_category'=>1));
        }
        $store = $this->_getStore();
        $collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('sku')
            ->addAttributeToSelect('price')
            ->addAttributeToSelect('store_id')
            ->addStoreFilter($this->getRequest()->getParam('store'))
            ->joinField('position',
                'catalog/category_product',
                'position',
                'product_id=entity_id',
                'category_id='.(int) $this->getRequest()->getParam('id', 0),
                'left')
            ->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner', $store->getId());
            ;

        $this->setCollection($collection);

        $this->getCollection()->addWebsiteNamesToResult();

        if ($this->getCategory()->getProductsReadonly()) {
            $productIds = $this->_getSelectedProducts();
            if (empty($productIds)) {
                $productIds = 0;
            }
            $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$productIds));
        }

        return parent::_prepareCollection();
    }


    protected function _prepareColumns()
    {
        $this->addColumn('visibility', array(
            'header'   => Mage::helper('catalog')->__('Visibility'),
            'width'    => '100',
            'sortable' => false,
            'index'    => 'visibility',
            'type'     => 'options',
            'options'  => Mage::getModel('catalog/product_visibility')->getOptionArray(),
            #'renderer' => new Rogue_CategoryFilters_Block_Adminhtml_Renderer_Visibility()
        ));
    }