diff --git a/bean.info b/bean.info
index d95119e..e0833eb 100644
--- a/bean.info
+++ b/bean.info
@@ -6,6 +6,9 @@ files[] = includes/bean.info.inc
 files[] = plugins/base.inc
 files[] = includes/translation.handler.bean.inc
 files[] = views/views_handler_filter_bean_type.inc
+files[] = views/views_handler_field_bean_type.inc
+files[] = views/views_handler_field_bean_edit_link.inc
+files[] = views/views_handler_field_bean_delete_link.inc
 files[] = bean.test
 dependencies[] = entity
 dependencies[] = ctools
diff --git a/views/bean.views.inc b/views/bean.views.inc
index 98a10c0..76d8a2b 100644
--- a/views/bean.views.inc
+++ b/views/bean.views.inc
@@ -7,8 +7,27 @@ function bean_views_data_alter(&$data) {
   $data['bean']['type'] = array(
     'title' => t('Type'),
     'help' => t('The block type'),
+    'field' => array(
+      'handler' => 'views_handler_field_bean_type',
+    ),
     'filter' => array(
       'handler' => 'views_handler_filter_bean_type',
     ),
   );
+
+  $data['bean']['edit_link'] = array(
+    'title' => t('Edit link'),
+    'help' => t('Edit link for bean block'),
+    'field' => array(
+      'handler' => 'views_handler_field_bean_edit_link',
+    ),
+  );
+
+  $data['bean']['delete_link'] = array(
+    'title' => t('Delete link'),
+    'help' => t('Delete link for bean block'),
+    'field' => array(
+      'handler' => 'views_handler_field_bean_delete_link',
+    ),
+  );
 }
diff --git a/views/views_handler_field_bean_delete_link.inc b/views/views_handler_field_bean_delete_link.inc
new file mode 100644
index 0000000..a0c87ab
--- /dev/null
+++ b/views/views_handler_field_bean_delete_link.inc
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_link.
+ */
+
+/**
+ * Field handler to present a link to the node.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_bean_delete_link extends views_handler_field_entity {
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['text'] = array('default' => '', 'translatable' => TRUE);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    $form['text'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text to display'),
+      '#default_value' => $this->options['text'],
+    );
+    parent::options_form($form, $form_state);
+
+    // The path is set by render_link function so don't allow to set it.
+    $form['alter']['path'] = array('#access' => FALSE);
+    $form['alter']['external'] = array('#access' => FALSE);
+  }
+
+  function render($values) {
+    if ($entity = $this->get_value($values)) {
+      return $this->render_link($entity, $values);
+    }
+  }
+
+  function render_link($bean) {
+    if (user_access('administer beans')) {
+      $this->options['alter']['make_link'] = TRUE;
+      $this->options['alter']['path'] = "block/$bean->delta/delete";
+      $this->options['alter']['query'] = drupal_get_destination();
+      $text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
+      return $text;
+    }
+  }
+}
diff --git a/views/views_handler_field_bean_edit_link.inc b/views/views_handler_field_bean_edit_link.inc
new file mode 100644
index 0000000..8158278
--- /dev/null
+++ b/views/views_handler_field_bean_edit_link.inc
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_field_node_link.
+ */
+
+/**
+ * Field handler to present a link to the node.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_bean_edit_link extends views_handler_field_entity {
+
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['text'] = array('default' => '', 'translatable' => TRUE);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    $form['text'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text to display'),
+      '#default_value' => $this->options['text'],
+    );
+    parent::options_form($form, $form_state);
+
+    // The path is set by render_link function so don't allow to set it.
+    $form['alter']['path'] = array('#access' => FALSE);
+    $form['alter']['external'] = array('#access' => FALSE);
+  }
+
+  function render($values) {
+    if ($entity = $this->get_value($values)) {
+      return $this->render_link($entity, $values);
+    }
+  }
+
+  function render_link($bean) {
+    if (user_access('administer beans')) {
+      $this->options['alter']['make_link'] = TRUE;
+      $this->options['alter']['path'] = "block/$bean->delta/edit";
+      $this->options['alter']['query'] = drupal_get_destination();
+      $text = !empty($this->options['text']) ? $this->options['text'] : t('edit');
+      return $text;
+    }
+  }
+}
diff --git a/views/views_handler_field_bean_type.inc b/views/views_handler_field_bean_type.inc
new file mode 100644
index 0000000..6afd06f
--- /dev/null
+++ b/views/views_handler_field_bean_type.inc
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * @file
+ * Field handler to present a type of bean.
+ *
+ * @ingroup views_field_handlers
+ */
+class views_handler_field_bean_type extends views_handler_field {
+  function construct() {
+    parent::construct();
+  }
+
+  function render($values) {
+    if (!empty($values->bean_type)) {
+      $types = bean_get_types();
+      if (!empty($types[$values->bean_type])) {
+        return $types[$values->bean_type]->getLabel();
+      }
+    }
+    return '';
+  }
+}
