diff --git a/entity.api.php b/entity.api.php
index 3844fdf..1dfb0cf 100644
--- a/entity.api.php
+++ b/entity.api.php
@@ -28,12 +28,13 @@
  * - entity class: (optional) A class the controller will use for instantiating
  *   entities. It is suggested to make use of the provided "Entity" class or to
  *   extend it.
- * - bundle of: (optional) If the described entity type is used as a bundle for
- *   another, fieldable entity type, the entity API controller can take care of
- *   invoking the field API bundle attachers. To enable this functionality,
- *   specify the name of the fieldable entity type. But note, that the usual
- *   information about the bundles is still required for the fieldable entity
- *   type, as described by the documentation of hook_entity_info(). Also,
+ * - bundle of: (optional) Entity types can be used as bundles for
+ *   other entity types. To enable this functionality, use the 'bundle of' key
+ *   to indicate which entity type this entity serves as a bundle for. But note
+ *   that the other entity type will still need to declare entities of this
+ *   type as bundles, as described by the documentation of hook_entity_info().
+ *   If the other entity type is fieldable, the entity API controller takes
+ *   care of invoking the field API bundle attachers. Note that
  *   field_attach_delete_bundle() has to be invoked manually upon module
  *   uninstallation. See entity_test_entity_info() and entity_test_uninstall()
  *   for examples.
diff --git a/entity.module b/entity.module
index 08e4662..64fe2b7 100644
--- a/entity.module
+++ b/entity.module
@@ -307,6 +307,20 @@ function entity_import($entity_type, $export) {
 }
 
 /**
+ * Checks whether an entity type is fieldable.
+ *
+ * @param $entity_type
+ *   The type of the entity.
+ *
+ * @return
+ *   TRUE if the entity type is fieldable, FALSE otherwise.
+ */
+function entity_type_is_fieldable($entity_type) {
+  $info = entity_get_info($entity_type);
+  return !empty($info['fieldable']);
+}
+
+/**
  * Builds a structured array representing the entity's content.
  *
  * The content built for the entity will vary depending on the $view_mode
diff --git a/includes/entity.controller.inc b/includes/entity.controller.inc
index 6999e12..d0e5977 100644
--- a/includes/entity.controller.inc
+++ b/includes/entity.controller.inc
@@ -292,17 +292,17 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
       $function($this->entityType, $entity);
     }
 
-    if (isset($this->entityInfo['bundle of']) && $type = $this->entityInfo['bundle of']) {
+    if (!empty($this->entityInfo['bundle of']) && entity_type_is_fieldable($this->entityInfo['bundle of'])) {
       // Call field API bundle attachers for the entity we are a bundle of.
       if ($hook == 'insert') {
-        field_attach_create_bundle($type, $entity->{$this->bundleKey});
+        field_attach_create_bundle($this->entityInfo['bundle of'], $entity->{$this->bundleKey});
       }
       elseif ($hook == 'delete') {
-        field_attach_delete_bundle($type, $entity->{$this->bundleKey});
+        field_attach_delete_bundle($this->entityInfo['bundle of'], $entity->{$this->bundleKey});
       }
       elseif ($hook == 'update' && $id = $entity->{$this->nameKey}) {
         if ($entity->original->{$this->bundleKey} != $entity->{$this->bundleKey}) {
-          field_attach_rename_bundle($type, $entity->original->{$this->bundleKey}, $entity->{$this->bundleKey});
+          field_attach_rename_bundle($this->entityInfo['bundle of'], $entity->original->{$this->bundleKey}, $entity->{$this->bundleKey});
         }
       }
     }
diff --git a/includes/entity.ui.inc b/includes/entity.ui.inc
index 30d3c86..a449b25 100644
--- a/includes/entity.ui.inc
+++ b/includes/entity.ui.inc
@@ -249,7 +249,7 @@ class EntityDefaultUIController {
    */
   protected function operationCount() {
     $count = 3;
-    $count += !empty($this->entityInfo['bundle of']) && module_exists('field_ui') ? 2 : 0;
+    $count += !empty($this->entityInfo['bundle of']) && entity_type_is_fieldable($this->entityInfo['bundle of']) && module_exists('field_ui') ? 2 : 0;
     $count += !empty($this->entityInfo['exportable']) ? 1 : 0;
     $count += !empty($this->entityInfo['i18n controller class']) ? 1 : 0;
     return $count;
@@ -286,7 +286,7 @@ class EntityDefaultUIController {
       ));
     }
     // In case this is a bundle, we add links to the field ui tabs.
-    $field_ui = !empty($this->entityInfo['bundle of']) && module_exists('field_ui');
+    $field_ui = !empty($this->entityInfo['bundle of']) && entity_type_is_fieldable($this->entityInfo['bundle of']) && module_exists('field_ui');
     // For exportable entities we add an export link.
     $exportable = !empty($this->entityInfo['exportable']);
     // If i18n integration is enabled, add a link to the translate tab.
