diff --git a/entity.module b/entity.module
index d70d6cc..b3be620 100644
--- a/entity.module
+++ b/entity.module
@@ -307,6 +307,22 @@ function entity_import($entity_type, $export) {
 }
 
 /**
+ * Checks wether an entity type is fieldable or not.
+ * 
+ * @param $entity_type
+ *   The type of the entity.
+ * @return
+ *   TRUE if the entity type is fieldable, FALSE otherwise.
+ */
+function entity_fieldable($entity_type) {
+  $info = entity_get_info($entity_type);
+  if (!empty($info['fieldable'])) {
+    return TRUE;
+  }
+  return FALSE;
+}
+
+/**
  * 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 242a3db..937af70 100644
--- a/includes/entity.controller.inc
+++ b/includes/entity.controller.inc
@@ -290,17 +290,21 @@ class EntityAPIController extends DrupalDefaultEntityController implements Entit
       $function($this->entityType, $entity);
     }
 
-    if (isset($this->entityInfo['bundle of']) && $type = $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});
-      }
-      elseif ($hook == 'delete') {
-        field_attach_delete_bundle($type, $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});
+    if (!empty($this->entityInfo['bundle of']) && entity_fieldable($this->entityInfo['bundle of'])) {
+      $info = entity_get_info($this->entityInfo['bundle of']);
+      // Check if the entity that we are a bundle of is fieldable.
+      if (!empty($info['fieldable'])) {
+        // Call field API bundle attachers for the entity we are a bundle of.
+        if ($hook == 'insert') {
+          field_attach_create_bundle($this->entityInfo['bundle of'], $entity->{$this->bundleKey});
+        }
+        elseif ($hook == 'delete') {
+          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($this->entityInfo['bundle of'], $entity->original->{$this->bundleKey}, $entity->{$this->bundleKey});
+          }
         }
       }
     }
diff --git a/includes/entity.ui.inc b/includes/entity.ui.inc
index efcdeb7..c19842c 100644
--- a/includes/entity.ui.inc
+++ b/includes/entity.ui.inc
@@ -211,7 +211,7 @@ class EntityDefaultUIController {
       $header[] = t('Status');
     }
     // Add operations with the right colspan.
-    $field_ui = !empty($this->entityInfo['bundle of']) && module_exists('field_ui');
+    $field_ui = !empty($this->entityInfo['bundle of']) && entity_fieldable($this->entityInfo['bundle of']) && module_exists('field_ui');
     $exportable = !empty($this->entityInfo['exportable']);
     $colspan = 3;
     $colspan = $field_ui ? $colspan + 2 : $colspan;
@@ -258,7 +258,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_fieldable($this->entityInfo['bundle of']) && module_exists('field_ui');
     // For exportable entities we add an export link.
     $exportable = !empty($this->entityInfo['exportable']);
     $colspan = 3;
