diff --git a/block_api_type/block_api_type.module b/block_api_type/block_api_type.module
index 62b2414..be3f665 100644
--- a/block_api_type/block_api_type.module
+++ b/block_api_type/block_api_type.module
@@ -30,6 +30,7 @@ function block_api_type_entity_info() {
       'name' => 'type',
       'label' => 'title',
     ),
+    'access callback' => 'block_api_type_access',
     // @todo 'bundle of' is soon going to be removed; the bundle entity type is
     //   referenced from the entity type instead.
     // @see http://drupal.org/node/977380
@@ -48,7 +49,7 @@ function block_api_type_entity_info_alter(&$types) {
   $types['block_api']['fieldable'] = TRUE;
 
   foreach (block_api_type_load_multiple(FALSE) as $name => $type) {
-    $entity_info['block_api']['bundles'][$name] = array(
+    $types['block_api']['bundles'][$name] = array(
       'label' => $type->title,
       'admin' => array(
         'path' => 'admin/structure/block/types/manage/%block_api_type',
@@ -61,6 +62,26 @@ function block_api_type_entity_info_alter(&$types) {
 }
 
 /**
+ * Implements hook_permission().
+ */
+function block_api_type_permission() {
+  return array(
+    'administer block types' => array(
+      'title' => t('Administer block types'),
+      // @todo Add a proper description
+      'description' => t(''),
+    ),
+  );
+}
+
+/**
+ * Access callback for the entity API.
+ */
+function block_api_type_access($op, $type = NULL, $account = NULL) {
+  return user_access('administer block types', $account);
+}
+
+/**
  * Loads a block type from the database.
  *
  * @param $name
@@ -122,12 +143,14 @@ function block_api_type_save($type) {
  * Form constructor to add or edit a block type.
  */
 function block_api_type_form($form, &$form_state, $type) {
-  if (!$type) {
-    $type = (object) array(
-      'type' => NULL,
-      'title' => NULL,
-      'description' => NULL,
-    );
+  if (!property_exists($type, 'type')) {
+    $type->type = NULL;
+  }
+  if (!property_exists($type, 'title')) {
+    $type->title = NULL;
+  }
+  if (!property_exists($type, 'description')) {
+    $type->description = NULL;
   }
 
   $form['title'] = array(
@@ -169,5 +192,6 @@ function block_api_type_form_submit($form, &$form_state) {
   $type = (object) $form_state['values'];
 
   block_api_type_save($type);
+  $form_state['redirect'] = 'admin/structure/block/types';
 }
 
