diff --git a/includes/uuid_node.features.inc b/includes/uuid_node.features.inc
index cad101c..720a2f3 100755
--- a/includes/uuid_node.features.inc
+++ b/includes/uuid_node.features.inc
@@ -91,7 +91,7 @@ function uuid_node_features_export_render($module, $data) {
     unset($export->revision_timestamp);
     unset($export->changed);
     unset($export->last_comment_timestamp);
-
+    uuid_features_file_field_export($export, 'node');
     // The hook_alter signature is:
     // hook_uuid_node_features_export_render_alter(&$export, $node, $module);
     drupal_alter('uuid_node_features_export_render', $export, $node, $module);
@@ -102,7 +102,13 @@ function uuid_node_features_export_render($module, $data) {
   if (!empty($translatables)) {
     $code[] = features_translatables_export($translatables, '  ');
   }
-
+  // Configuration settings need to be exported along with nodes to
+  // avoid diffs between the default and normal code returned by
+  // this function.
+  $code[] = '  variable_set(\'uuid_features_file_node_types\', ' . features_var_export(variable_get('uuid_features_file_node_types', array())) . ');';
+  $code[] = '  variable_set(\'uuid_features_file_mode\', ' . features_var_export(variable_get('uuid_features_file_mode', 'inline')) . ');';
+  $code[] = '  variable_set(\'uuid_features_file_assets_path\', ' . features_var_export(variable_get('uuid_features_file_assets_path', '')) . ');';
+  $code[] = '  variable_set(\'uuid_features_file_supported_fields\', ' . features_var_export(variable_get('uuid_features_file_supported_fields', 'file, image')) . ');';
   $code[] = '  return $nodes;';
   $code = implode("\n", $code);
   return array('uuid_features_default_content' => $code);
@@ -144,6 +150,7 @@ function uuid_node_features_rebuild($module) {
       drupal_alter('uuid_node_features_rebuild', $node, $module);
 
       $node = node_submit($node);
+      uuid_features_file_field_import($node, 'node');
       node_save($node);
     }
   }
diff --git a/includes/uuid_term.features.inc b/includes/uuid_term.features.inc
index 03aef85..b530a08 100644
--- a/includes/uuid_term.features.inc
+++ b/includes/uuid_term.features.inc
@@ -105,7 +105,7 @@ function uuid_term_features_export_render($module = 'foo', $data) {
     unset($export->tid);
     // No need to export the rdf mapping.
     unset($export->rdf_mapping);
-    uuid_term_features_file_field_export($export);
+    uuid_features_file_field_export($export, 'taxonomy_term');
     $code[] = '  $terms[] = ' . features_var_export($export, '  ') . ';';
   }
 
@@ -115,7 +115,7 @@ function uuid_term_features_export_render($module = 'foo', $data) {
   // Configuration settings need to be exported along with terms to
   // avoid diffs between the default and normal code returned by
   // this function.
-  $code[] = '  variable_set(\'uuid_features_file_types\', ' . features_var_export(variable_get('uuid_features_file_types', array())) . ');';
+  $code[] = '  variable_set(\'uuid_features_file_taxonomy_term_types\', ' . features_var_export(variable_get('uuid_features_file_taxonomy_term_types', array())) . ');';
   $code[] = '  variable_set(\'uuid_features_file_mode\', ' . features_var_export(variable_get('uuid_features_file_mode', 'inline')) . ');';
   $code[] = '  variable_set(\'uuid_features_file_assets_path\', ' . features_var_export(variable_get('uuid_features_file_assets_path', '')) . ');';
   $code[] = '  variable_set(\'uuid_features_file_supported_fields\', ' . features_var_export(variable_get('uuid_features_file_supported_fields', 'file, image')) . ');';
@@ -163,154 +163,10 @@ function uuid_term_features_rebuild($module) {
       $voc = taxonomy_vocabulary_machine_name_load($term->vocabulary_machine_name);
       if ($voc) {
         $term->vid = $voc->vid;
-        uuid_term_features_file_field_import($term, $voc);
+        uuid_features_file_field_import($term, 'taxonomy_term');
         entity_uuid_save('taxonomy_term', $term);
       }
     }
   }
 }
 
-/**
- * Handle exporting file fields.
- */
-function uuid_term_features_file_field_export(&$term) {
-  $vocabularies = array_filter(variable_get('uuid_features_file_types', array()));
-  if (in_array($term->vocabulary_machine_name, $vocabularies)) {
-    $orig_assets_path = $assets_path = variable_get('uuid_features_file_assets_path', '');
-    $export_mode = variable_get('uuid_features_file_mode', 'inline');
-
-    switch ($export_mode) {
-      case 'local':
-        $export_var = 'uuid_features_file_path';
-        break;
-      case 'remote':
-        $export_var = 'uuid_features_file_url';
-        break;
-      default:
-      case 'inline':
-        $export_var = 'uuid_features_file_data';
-        break;
-    }
-    // If files are supposed to be copied to the assets path.
-    if ($export_mode == 'local' && $assets_path) {
-      // Ensure the assets path is created
-      if ((!is_dir($assets_path) && mkdir($assets_path, 0777, TRUE) == FALSE)
-        || !is_writable($assets_path)
-      ) {
-        // Try creating a public path if the local path isn't writeable.
-        // This is a kludgy solution to allow writing file assets to places
-        // such as the profiles/myprofile directory, which isn't supposed to
-        // be writeable
-        $new_assets_path = 'public://' . $assets_path;
-        if (!is_dir($new_assets_path) && mkdir($new_assets_path, 0777, TRUE) == FALSE) {
-          drupal_set_message(t("Could not create assets path! '!path'", array('!path' => $assets_path)), 'error');
-          // Don't continue if the assets path is not ready
-          return;
-        }
-        $assets_path = $new_assets_path;
-      }
-    }
-
-    // get all fields from this vocabulary
-    $fields = field_info_instances('taxonomy_term', $term->vocabulary_machine_name);
-    foreach ($fields as $field_instance) {
-      // load field infos to check the type
-      $field = &$term->{$field_instance['field_name']};
-      $info = field_info_field($field_instance['field_name']);
-
-      $supported_fields = array_map('trim', explode(',', variable_get('uuid_features_file_supported_fields', 'file, image')));
-
-      // check if this field should implement file import/export system
-      if (in_array($info['type'], $supported_fields)) {
-
-        // we need to loop into each language because i18n translation can build
-        // fields with different language than the node one.
-        foreach($field as $language => $files) {
-          if (is_array($files)) {
-            foreach($files as $i => $file) {
-
-              // convert file to array to stay into the default uuid_features_file format
-              $file = (object) $file;
-
-              // Check the file
-              if (!isset($file->uri) || !is_file($file->uri)) {
-                drupal_set_message(t("File field found on term, but file doesn't exist on disk? '!path'", array('!path' => $file->uri)), 'error');
-                continue;
-              }
-
-              if ($export_mode == 'local') {
-                if ($assets_path) {
-                  // The writeable path may be different from the path that gets saved
-                  // during the feature export to handle the public path/local path
-                  // dilemma mentioned above.
-                  $writeable_export_data = $assets_path . '/' . basename($file->uri);
-                  $export_data = $orig_assets_path . '/' . basename($file->uri);
-                  if (!copy($file->uri, $writeable_export_data)) {
-                    drupal_set_message(t("Export file error, could not copy '%filepath' to '%exportpath'.", array('%filepath' => $file->uri, '%exportpath' => $writeable_export_data)), 'error');
-                    return FALSE;
-                  }
-                }
-                else {
-                  $export_data = $file->uri;
-                }
-              }
-              // Remote export mode
-              elseif ($export_mode == 'remote') {
-                $export_data = url($file->uri, array('absolute' => TRUE));
-              }
-              // Default is 'inline' export mode
-              else {
-                $export_data = base64_encode(file_get_contents($file->uri));
-              }
-
-              // build the field again, and remove fid to be sure that imported node
-              // will rebuild the file again, or keep an existing one with a different fid
-              $field[$language][$i]['fid'] = NULL;
-              $field[$language][$i]['timestamp'] = NULL;
-              $field[$language][$i][$export_var] = $export_data;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-/**
- * Handle importing file fields.
- */
-function uuid_term_features_file_field_import(&$term, $voc) {
-  // Get all fields from this vocabulary.
-  $fields = field_info_instances('taxonomy_term', $term->vocabulary_machine_name);
-
-  foreach($fields as $field_instance) {
-    // Load field info to check the type.
-    $field = &$term->{$field_instance['field_name']};
-    $info = field_info_field($field_instance['field_name']);
-
-    $supported_fields = array_map('trim', explode(',', variable_get('uuid_features_file_supported_fields', 'file, image')));
-
-    // Check if this field should implement file import/export system.
-    if (in_array($info['type'], $supported_fields)) {
-
-      // We need to loop into each language because i18n translation can build
-      // fields with different language than the term one.
-      foreach($field as $language => $files) {
-        if (is_array($files)) {
-          foreach($files as $i => $file) {
-
-            // Convert file to array to stay into the default uuid_features_file format.
-            $file = (object)$file;
-
-            $result = _uuid_features_file_field_import_file($file);
-            // The file was saved successfully, update the file field (by reference).
-            if ($result == TRUE && isset($file->fid)) {
-              $field[$language][$i] = (array)$file;
-            }
-
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/uuid_features.module b/uuid_features.module
index 0a711bd..41b7916 100644
--- a/uuid_features.module
+++ b/uuid_features.module
@@ -88,16 +88,28 @@ function uuid_features_features_pipe_taxonomy_alter($pipe, $data, $export) {
  * Menu callback to configure module settings.
  */
 function uuid_features_settings($form, &$form_state) {
-  $vocabularies = array();
-  foreach (taxonomy_vocabulary_get_names() as $machine_name => $properties) {
-    $vocabularies[$machine_name] = $properties->name;
+
+  $entity_info = entity_get_info();
+  foreach ($entity_info as $type => $info) {
+    foreach($info['bundles'] as $bundle => $bundle_info) {
+      $bundles[$type][$bundle] = $bundle_info['label'];
+    }
   }
-  $form['file']['uuid_features_file_types'] = array(
+
+  $form['file']['uuid_features_file_node_types'] = array(
+    '#type' => 'checkboxes',
+    '#title' => t('Files exported for nodes'),
+    '#description' => t('Which content types should export file fields?'),
+    '#default_value' => variable_get('uuid_features_file_node_types', array()),
+    '#options' => $bundles['node'],
+  );
+
+  $form['file']['uuid_features_file_taxonomy_term_types'] = array(
     '#type' => 'checkboxes',
-    '#title' => t('Files exported for vocabularies'),
-    '#default_value' => variable_get('uuid_features_file_types', array()),
-    '#options' => $vocabularies,
+    '#title' => t('Files exported for taxonomy terms'),
     '#description' => t('Which vocabularies should export file fields?'),
+    '#default_value' => variable_get('uuid_features_file_taxonomy_term_types', array()),
+    '#options' => $bundles['taxonomy_term'],
   );
 
   $form['file']['uuid_features_file_mode'] = array(
@@ -146,6 +158,167 @@ function uuid_features_settings($form, &$form_state) {
 }
 
 /**
+ * Handle exporting file fields.
+ */
+function uuid_features_file_field_export(&$export, $entity_type) {
+  switch ($entity_type) {
+    case "taxonomy_term":
+      $export_bundle = $export->vocabulary_machine_name;
+      break;
+    case "node":
+      $export_bundle = $export->type;
+      break;
+  }
+  $bundles = array_filter(variable_get('uuid_features_file_' . $entity_type . '_types', array()));
+  if (in_array($export_bundle, $bundles)) {
+    $orig_assets_path = $assets_path = variable_get('uuid_features_file_assets_path', '');
+    $export_mode = variable_get('uuid_features_file_mode', 'inline');
+
+    switch ($export_mode) {
+      case 'local':
+        $export_var = 'uuid_features_file_path';
+        break;
+      case 'remote':
+        $export_var = 'uuid_features_file_url';
+        break;
+      default:
+      case 'inline':
+        $export_var = 'uuid_features_file_data';
+        break;
+    }
+    // If files are supposed to be copied to the assets path.
+    if ($export_mode == 'local' && $assets_path) {
+      // Ensure the assets path is created
+      if ((!is_dir($assets_path) && mkdir($assets_path, 0777, TRUE) == FALSE)
+        || !is_writable($assets_path)
+      ) {
+        // Try creating a public path if the local path isn't writeable.
+        // This is a kludgy solution to allow writing file assets to places
+        // such as the profiles/myprofile directory, which isn't supposed to
+        // be writeable
+        $new_assets_path = 'public://' . $assets_path;
+        if (!is_dir($new_assets_path) && mkdir($new_assets_path, 0777, TRUE) == FALSE) {
+          drupal_set_message(t("Could not create assets path! '!path'", array('!path' => $assets_path)), 'error');
+          // Don't continue if the assets path is not ready
+          return;
+        }
+        $assets_path = $new_assets_path;
+      }
+    }
+
+    // get all fields from this vocabulary
+    $fields = field_info_instances($entity_type, $export_bundle);
+    foreach ($fields as $field_instance) {
+      // load field infos to check the type
+      $field = &$export->{$field_instance['field_name']};
+      $info = field_info_field($field_instance['field_name']);
+
+      $supported_fields = array_map('trim', explode(',', variable_get('uuid_features_file_supported_fields', 'file, image')));
+
+      // check if this field should implement file import/export system
+      if (in_array($info['type'], $supported_fields)) {
+
+        // we need to loop into each language because i18n translation can build
+        // fields with different language than the node one.
+        foreach($field as $language => $files) {
+          if (is_array($files)) {
+            foreach($files as $i => $file) {
+
+              // convert file to array to stay into the default uuid_features_file format
+              $file = (object) $file;
+
+              // Check the file
+              if (!isset($file->uri) || !is_file($file->uri)) {
+                drupal_set_message(t("File field found on term, but file doesn't exist on disk? '!path'", array('!path' => $file->uri)), 'error');
+                continue;
+              }
+
+              if ($export_mode == 'local') {
+                if ($assets_path) {
+                  // The writeable path may be different from the path that gets saved
+                  // during the feature export to handle the public path/local path
+                  // dilemma mentioned above.
+                  $writeable_export_data = $assets_path . '/' . basename($file->uri);
+                  $export_data = $orig_assets_path . '/' . basename($file->uri);
+                  if (!copy($file->uri, $writeable_export_data)) {
+                    drupal_set_message(t("Export file error, could not copy '%filepath' to '%exportpath'.", array('%filepath' => $file->uri, '%exportpath' => $writeable_export_data)), 'error');
+                    return FALSE;
+                  }
+                }
+                else {
+                  $export_data = $file->uri;
+                }
+              }
+              // Remote export mode
+              elseif ($export_mode == 'remote') {
+                $export_data = url($file->uri, array('absolute' => TRUE));
+              }
+              // Default is 'inline' export mode
+              else {
+                $export_data = base64_encode(file_get_contents($file->uri));
+              }
+
+              // build the field again, and remove fid to be sure that imported node
+              // will rebuild the file again, or keep an existing one with a different fid
+              $field[$language][$i]['fid'] = NULL;
+              $field[$language][$i]['timestamp'] = NULL;
+              $field[$language][$i][$export_var] = $export_data;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+/**
+ * Handle importing file fields.
+ */
+function uuid_features_file_field_import(&$import, $entity_type) {
+  switch ($entity_type) {
+    case "taxonomy_term":
+      $import_bundle = $import->vocabulary_machine_name;
+      break;
+    case "node":
+      $import_bundle = $import->type;
+      break;
+  }
+  // Get all fields from this bundle.
+  $fields = field_info_instances($entity_type, $import_bundle);
+
+  foreach($fields as $field_instance) {
+    // Load field info to check the type.
+    $field = &$import->{$field_instance['field_name']};
+    $info = field_info_field($field_instance['field_name']);
+
+    $supported_fields = array_map('trim', explode(',', variable_get('uuid_features_file_supported_fields', 'file, image')));
+
+    // Check if this field should implement file import/export system.
+    if (in_array($info['type'], $supported_fields)) {
+
+      // We need to loop into each language because i18n translation can build
+      // fields with different language than the term one.
+      foreach($field as $language => $files) {
+        if (is_array($files)) {
+          foreach($files as $i => $file) {
+
+            // Convert file to array to stay into the default uuid_features_file format.
+            $file = (object)$file;
+
+            $result = _uuid_features_file_field_import_file($file);
+            // The file was saved successfully, update the file field (by reference).
+            if ($result == TRUE && isset($file->fid)) {
+              $field[$language][$i] = (array)$file;
+            }
+
+          }
+        }
+      }
+    }
+  }
+}
+
+/**
  * Detects remote and local file exports and imports accordingly.
  *
  * @param &$file
