diff --git a/bean.module b/bean.module
index 2ad3302..de3ac2d 100644
--- a/bean.module
+++ b/bean.module
@@ -304,6 +304,14 @@ function bean_type_load($type) {
 }
 
 /**
+ * Menu Argument Loader for panelizer tab.
+ */
+function bean_type_panelizer_load($type) {
+  $type = bean_load_plugin_class(strtr($type, array('-' => '_')));
+  return $type->type;
+}
+
+/**
  * Gets an array of all bean types, keyed by the type name.
  *
  * @return BeanType
@@ -1125,3 +1133,13 @@ function bean_ctools_block_info($module, $delta, &$info) {
   }
 }
 
+/**
+ * Implements hook_ctools_plugin_directory().
+ *
+ * Inform ctools about our panelizer plugin.
+ */
+function bean_ctools_plugin_directory($module, $plugin) {
+  if (in_array($module, array('panelizer'))) {
+    return 'plugins/' . $plugin;
+  }
+}
diff --git a/plugins/entity/PanelizerEntityBean.class.php b/plugins/entity/PanelizerEntityBean.class.php
new file mode 100644
index 0000000..823a4fa
--- /dev/null
+++ b/plugins/entity/PanelizerEntityBean.class.php
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * @file
+ * Class for the Panelizer bean entity plugin.
+ */
+
+/**
+ * Panelizer Entity bean plugin class.
+ *
+ * Handles bean specific functionality for Panelizer.
+ */
+class PanelizerEntityBean extends PanelizerEntityDefault {
+  public $supports_revisions = TRUE;
+  public $entity_admin_root = 'admin/structure/block-types/manage/%bean_type_panelizer';
+  public $entity_admin_bundle = 4;
+  public $views_table = 'bean';
+  public $uses_page_manager = FALSE;
+
+  public function entity_access($op, $entity) {
+    // This must be implemented by the extending clas.
+    return bean_access($op, $entity);
+  }
+
+  /**
+   * Implement the save function for the entity.
+   */
+  public function entity_save($entity) {
+    bean_save($entity);
+  }
+
+  public function entity_identifier($entity) {
+    return t('This bean');
+  }
+
+  public function entity_bundle_label() {
+    return t('bean type');
+  }
+
+  /**
+   * Determine if the entity allows revisions.
+   */
+  public function entity_allows_revisions($entity) {
+    $retval = array();
+
+    list($entity_id, $revision_id, $bundle) = entity_extract_ids($this->entity_type, $entity);
+
+    $retval[0] = TRUE;
+    $retval[1] = user_access('administer beans');
+
+    return $retval;
+  }
+
+  function get_default_display($bundle, $view_mode) {
+    return parent::get_default_display($bundle, $view_mode);
+  }
+
+  /**
+   * Implements a delegated hook_form_alter.
+   *
+   * We want to add Panelizer settings for the bundle to the bean type form.
+   */
+  public function hook_form_alter(&$form, &$form_state, $form_id) {
+    if ($form_id == 'bean_admin_ui_type_form') {
+      if (isset($form['bean_type'])) {
+        $bundle = $form['bean_type']['#value']->type;
+        $this->add_bundle_setting_form($form, $form_state, $bundle, array('type'));
+      }
+    }
+  }
+
+  /**
+   * Implements a delegated hook_page_alter.
+   *
+   * Add panelizer links to the block types page.
+   */
+  public function hook_page_alter(&$page) {
+    if ($_GET['q'] == 'admin/structure/block-types' && !empty($page['content']['system_main']['bean_table'])) {
+      // shortcut
+      $table = &$page['content']['system_main']['bean_table'];
+      // Modify the header.
+      $table['#header'][2]['colspan'] = 5;
+
+      $bean_info = bean_entity_info();
+      $names = $bean_info['bean']['bundles'];
+      foreach ($names as $bundle => $name) {
+        $type_url_str = str_replace(' ', '', $name['label'] . '_0');
+        if ($this->is_panelized($bundle) && panelizer_administer_entity_bundle($this, $bundle)) {
+          $table['#rows'][$type_url_str][] = array('data' => l(t('panelizer'), 'admin/structure/block-types/manage/' . $bundle . '/panelizer'));
+        }
+        else {
+          $table['#rows'][$type_url_str][] = array('data' => '');
+        }
+      }
+    }
+  }
+
+  /**
+   * Provides the base panelizer URL for a bean entity.
+   *
+   * We override the parent function in order to use the delta rather than raw
+   * bean id.
+   */
+  function entity_base_url($entity, $view_mode = NULL) {
+    $bits = explode('/', $this->plugin['entity path']);
+    foreach ($bits as $count => $bit) {
+      if (strpos($bit, '%') === 0) {
+        $bits[$count] = $entity->delta;
+      }
+    }
+
+    $bits[] = 'panelizer';
+    if ($view_mode) {
+      $bits[] = $view_mode;
+    }
+    $base_url = implode('/', $bits);
+
+    return $base_url;
+  }
+
+
+  /**
+   * Implements hook_views_plugins_alter().
+   */
+  function hook_views_plugins_alter(&$plugins) {
+    $path = drupal_get_path('module', 'panelizer') . '/plugins/views';
+    $plugins['row']['panelizer_bean_view'] = array(
+      'title' => t('Panelizer display'),
+      'help' => t('Render entities using the panels display for any that have been panelized.'),
+      'handler' => 'panelizer_plugin_row_panelizer_bean_view',
+      'parent' => 'bean',
+      'base' => array('bean'),
+      'path' => $path,
+      'uses options' => TRUE,
+      'type' => 'normal',
+      'register theme' => FALSE,
+      'name' => 'panelizer_bean_view',
+    );
+  }
+}
diff --git a/plugins/entity/bean.inc b/plugins/entity/bean.inc
new file mode 100644
index 0000000..39963d1
--- /dev/null
+++ b/plugins/entity/bean.inc
@@ -0,0 +1,20 @@
+<?php
+/**
+ * @file
+ * Definition of the bean panelizer plugin.
+ */
+
+$plugin = array(
+  'handler' => 'PanelizerEntityBean',
+  'entity path' => 'block/%bean_delta',
+  'hooks' => array(
+    'menu' => TRUE,
+    'admin_paths' => TRUE,
+    'permission' => TRUE,
+    'panelizer_defaults' => TRUE,
+    'form_alter' => TRUE,
+    'page_alter' => TRUE,
+    'views_data_alter' => TRUE,
+    'views_plugins_alter' => TRUE,
+  ),
+);
