diff --git features.export.inc features.export.inc
index 3bdf75f..a7930f6 100644
--- features.export.inc
+++ features.export.inc
@@ -488,6 +488,34 @@ function features_var_export($var, $prefix = '', $init = TRUE) {
 }
 
 /**
+ * Remove alters done via hooks so export is as clean as possible.
+ */
+function features_remove_alters($current, $default, $altered) {
+  // change is not from alterifications, use current
+  if ($default == $altered || empty($altered)) {
+    return $current;
+  } elseif (is_array($default)) {
+    foreach($current as $key => $value) {
+      $current[$key] = features_remove_alters($value, $default[$key], $altered[$key]);
+      if (!isset($current[$key])) {
+        unset($current[$key]);
+      }
+    }
+  } elseif (is_object($default)) {
+    foreach($current as $key => $value) {
+      $current->$key = features_remove_alters($value, $default->$key, $altered->$key);
+      if (!isset($current->$key)) {
+        unset($current->$key);
+      }
+    }
+  } // change is from alterifications, use default
+  elseif ($default != $altered) {
+    return (empty($default) && !empty($altered)?NULL:$default);
+  }
+  return $current;
+}
+
+/**
  * Helper function to return an array of t()'d translatables strings.
  * Useful for providing a separate array of translatables with your
  * export so that string extractors like potx can detect them.
diff --git includes/features.content.inc includes/features.content.inc
index 64500a7..ac9219a 100644
--- includes/features.content.inc
+++ includes/features.content.inc
@@ -14,6 +14,37 @@ function content_features_api() {
 }
 
 /**
+ * Remove alters fron content
+ *
+ * @param $current_content
+ *  A field defination
+ * @param $reset
+ *  Reset the cache of altered/default content.
+ */
+function content_features_remove_alters(&$current_field, $reset = FALSE) {
+  static $default_views, $altered_views;
+  if (!isset($default_views) || !empty($reset)) {
+    $default_content =array();
+    $altered_content = array();
+    foreach (module_implements('content_default_fields') as $module) {
+      $fields = module_invoke($module, 'content_default_fields');
+      $altered = $fields;
+      
+      drupal_alter('content_default_fields', $altered, $module);
+      foreach ($fields as $field) {
+        $default_content["{$field['type_name']}-{$field['field_name']}"] = $module;
+      }
+      foreach ($altered as $field) {
+        $altered_content["{$field['type_name']}-{$field['field_name']}"] = $module;
+      }
+    }
+  }
+  $fieldname = "{$current_field['type_name']}-{$current_field['field_name']}";
+  $current_field = features_remove_alters($current_field, $default_content[$fieldname], $altered_content[$fieldname]);
+}
+
+
+/**
  * Implementation of hook_features_export().
  */
 function content_features_export($data, &$export, $module_name = '') {
@@ -32,7 +63,6 @@ function content_features_export($data, &$export, $module_name = '') {
       $map["{$field['type_name']}-{$field['field_name']}"] = $module;
     }
   }
-
   foreach ($data as $instance) {
     // If this field is already provided by another module, remove the field
     // and add the other module as a dependency.
@@ -49,6 +79,7 @@ function content_features_export($data, &$export, $module_name = '') {
       $type_name = $split[0];
       $field_name = $split[1];
       $field = content_fields($field_name, $type_name);
+      content_features_remove_alters($field);
 
       if ($field) {
         // Add field item instance for later export.
@@ -98,6 +129,8 @@ function content_features_export_render($module = 'foo', $data) {
     $field_name = $instance[1];
 
     $field = content_fields($field_name, $type_name);
+    content_features_remove_alters($field);
+
     unset($field['columns']);
     unset($field['locked']);
     unset($field['db_storage']);
diff --git includes/features.node.inc includes/features.node.inc
index 22399bb..4e19616 100644
--- includes/features.node.inc
+++ includes/features.node.inc
@@ -58,10 +58,15 @@ function node_features_export($data, &$export, $module_name = '') {
 
       // Create a pipe for CCK fields
       if (module_exists('content')) {
+        include_once('features.content.inc');
         $content_info = content_types($type);
         if (!empty($content_info['fields'])) {
           foreach ($content_info['fields'] as $key => $field) {
-            $pipe['content'][] = "{$type}-{$field['field_name']}";
+            // if field is completly supplid by an alter, ignore it.
+            content_features_remove_alters($field);
+            if (!empty($field)) {
+              $pipe['content'][] = "{$type}-{$field['field_name']}";
+            }
           }
           // If strongarm is present, create a pipe for the extra field weights
           // variable to be exported.
diff --git includes/features.views.inc includes/features.views.inc
index 2b8f804..bb48544 100644
--- includes/features.views.inc
+++ includes/features.views.inc
@@ -31,6 +31,54 @@ function views_features_export_options() {
 }
 
 /**
+ * Get all the default views without alters
+ */
+function _views_fatures_get_default_views() {
+  views_include_default_views();
+  $cache = array();
+
+  foreach(module_implements('views_default_views') as $module) {
+    $results = call_user_func($module . "_views_default_views");
+    if (!empty($results) && is_array($results)) {
+      foreach($results as $name => $view) {
+        // Only views with a sufficiently high api version are eligible.
+        if (!empty($view->api_version) && $view->api_version >= 2) {
+          // Do not cache dead handlers.
+          $view->destroy();
+          if (!isset($cache[$name])) {
+            $cache[$name] = $view;
+          }
+        }
+      }
+    }
+  }
+  return $cache;
+}
+
+/*
+ *
+ *
+ * @param $current_view
+ *  view object to remove alterifications from
+ * @param $reset
+ *  Reset the cache of altered/default views.
+ */
+function views_features_remove_alters(&$current_view, $reset = FALSE) {
+  static $default_views, $altered_views;
+  if (!isset($default_views) || !empty($reset)) {
+    $default_views = _views_fatures_get_default_views();
+    $altered_views = array();
+    // need to clone_views or drupal alter will alter original objects
+    foreach($default_views as $key => $default_view) {
+      $altered_views[$key] = $default_view->clone_view();
+    }
+    drupal_alter('views_default_views', $altered_views);
+  }
+  $current_view = features_remove_alters($current_view, $default_views[$current_view->name], $altered_views[$current_view->name]);
+}
+
+
+/**
  * Implementation of hook_features_export_render().
  */
 function views_features_export_render($module = 'foo', $data) {
@@ -42,6 +90,7 @@ function views_features_export_render($module = 'foo', $data) {
   foreach ($data as $view_name) {
     // Build the view
     $view = views_get_view($view_name, TRUE);
+    views_features_remove_alters($view);
     if ($view) {
       $code[] = '  // Exported view: '. $view_name;
       $code[] = $view->export('  ');
@@ -72,6 +121,7 @@ function views_features_export($data, &$export, $module_name = '') {
 
     // Build the view
     $view = views_get_view($view_name, TRUE);
+    views_features_remove_alters($view);
     if ($view) {
       $view->build();
       $views[$view_name] = $view;
