diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index b07e011..5d82c1c 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -34,9 +34,21 @@ function commerce_product_reference_field_extra_fields() {
         continue;
       }
 
+      $wrapper = entity_metadata_wrapper('commerce_product');
       foreach ($bundles as $bundle_name) {
         // Attach "extra fields" to the bundle representing fields on products
         // that may be visible on the bundle.
+
+        // First we'll get the properties of the product.
+        foreach ($wrapper->getPropertyInfo() as $property => $value) {
+            $extra[$entity_type][$bundle_name]['display']['product:' . $property] = array(
+              'label' => t('Product: @label', array('@label' => $value['label'])),
+              'description' => $value['description'],
+              'weight' => 99,
+              'property' => TRUE,
+            );
+        }
+        // And now add the fields.
         foreach (field_info_instances('commerce_product') as $product_bundle_name => $product_fields) {
           foreach ($product_fields as $product_field_name => $product_field) {
             $extra[$entity_type][$bundle_name]['display']['product:' . $product_field_name] = array(
@@ -91,7 +103,11 @@ function commerce_product_reference_form_field_ui_display_overview_form_alter(&$
 
   if (isset($product_fields[$entity_type][$bundle])) {
     foreach ($product_fields[$entity_type][$bundle]['display'] as $field_name => $field) {
-      $form['fields'][$field_name]['format']['type']['#description'] = t('Modify the settings for this field on the <a href="@url">product display configuration</a>.', array('@url' => url('admin/commerce/products/types')));
+      // If it's not a property, point to the product display page.
+      // @todo: This should be 'hidden' by default.
+      if (empty($field['property'])) {
+        $form['fields'][$field_name]['format']['type']['#description'] = t('Modify the settings for this field on the <a href="@url">product display configuration</a>.', array('@url' => url('admin/commerce/products/types')));
+      }
     }
   }
 }
@@ -236,6 +252,37 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
             );
           }
         }
+
+        $info = entity_get_property_info('commerce_product');
+        $properties = $info['properties'];
+        foreach ($properties as $property => $values) {
+          // Add the product field to the entity's content array.
+          if (empty($values['field']) && (!empty($product->{$property}) || !empty($values['getter callback']))) {
+            // The getter callback, if it exists, will be
+            // commerce_product_get_properties().
+            $value = !empty($values['getter callback']) ? $values['getter callback']($product, array(), $property) : $product->{$property};
+            switch($values['type']) {
+              case 'date':
+                $value = format_date($value);
+                break;
+              case 'user':
+                $account = user_load($value);
+                $value = theme('username', array('account' => $account));
+                break;
+              default:
+                $value = check_plain($value);
+                break;
+            }
+            $class = array($entity_type, $id, 'product', $property);
+            //$label = '<div class="field-label">' . $values['label'] . ':&nbsp;</div>';
+            $label = $values['label'];
+            $entity->content['product:' . $property] = array(
+              'value' => array('#markup' => $label . ' : ' . $value),
+              '#prefix' => '<div class="' . drupal_html_class(implode('-', $class)) . '">',
+              '#suffix' => '</div>',
+            );
+          }
+        }
       }
     }
   }
