diff --git a/views/addressfield.views.inc b/views/addressfield.views.inc
index 77a5b45..fedda10 100644
--- a/views/addressfield.views.inc
+++ b/views/addressfield.views.inc
@@ -21,6 +21,56 @@ function addressfield_field_views_data($field) {
       $data[$table_name][$column_real_name]['filter']['handler'] = 'addressfield_views_handler_filter_country';
     }
   }
+  // Only expose these components as Views' field handlers.
+  $implemented = array(
+    'country',
+    'administrative_area',
+    'locality',
+    'name_line',
+    'first_name',
+    'last_name',
+    'organisation_name',
+    'postal_code',
+    'thoroughfare',
+    'premise',
+  );
+  // Get the translated field information.
+  $properties = addressfield_data_property_info();
+  // Iterate over addressfield defined tables.
+  foreach ($data as &$table) {
+    // Make sure the parent Views' field (addressfield) is defined.
+    if (isset($table[$field['field_name']]['field'])) {
+      // Use the parent field definition as a template for component columns.
+      $field_def = $table[$field['field_name']]['field'];
+      // Define the valid columns.
+      $valid_columns = array();
+      foreach ($implemented as $implement) {
+        $valid_columns[] = $field['field_name'] . '_' . $implement;
+      }
+      // Iterate over the addressfield components.
+      foreach ($table as $column_name => &$column) {
+        if (empty($column['field']) && in_array($column_name, $valid_columns)) {
+          // Assign the default component definition.
+          $column['field'] = $field_def;
+          $column['field']['real field'] = $column_name;
+          $column['field']['handler'] = 'views_handler_field';
+          // Assign human-friendly field labels for addressfield components.
+          $field_labels = field_views_field_label($field['field_name']);
+          $field_label = array_shift($field_labels);
+          $property = str_replace($field_def['field_name'] . '_', '', $column_name);
+          if (!empty($properties[$property])) {
+            $property_label = $properties[$property]['label'];
+            $title = t('@field-label - @property-label', array(
+              '@field-label' => $field_label,
+              '@property-label' => $property_label,
+            ));
+            $column['title'] = $title;
+            $column['title short'] = $title;
+          }
+        }
+      }
+    }
+  }
 
   return $data;
 }
