diff --git a/commerce.info b/commerce.info
index a9282bf..18e889e 100644
--- a/commerce.info
+++ b/commerce.info
@@ -4,7 +4,7 @@ package = Commerce
 dependencies[] = system
 dependencies[] = entity
 dependencies[] = rules
-core = 7.x
+core = 7.x (>=7.22)
 
 ; Tests
 files[] = tests/commerce_base.test
diff --git a/commerce.module b/commerce.module
index d5f1b97..35b28c4 100644
--- a/commerce.module
+++ b/commerce.module
@@ -95,11 +95,12 @@ function commerce_info_fields($field_type, $entity_type = NULL) {
   $fields = array();
 
   // Loop through the fields looking for any fields of the specified type.
-  foreach (field_info_fields() as $field_name => $field) {
-    if ($field['type'] == $field_type) {
+  foreach (field_info_field_map() as $field_name => $map_info) {
+    if ($map_info['type'] == $field_type) {
       // Add this field to the return array if no entity type was specified or
       // if the specified type exists in the field's bundles array.
-      if (empty($entity_type) || in_array($entity_type, array_keys($field['bundles']))) {
+      if (empty($entity_type) || in_array($entity_type, array_keys($map_info['bundles']))) {
+        $field = field_info_field($field_name);
         $fields[$field_name] = $field;
       }
     }
diff --git a/modules/price/commerce_price.module b/modules/price/commerce_price.module
index a9453d0..986fc18 100644
--- a/modules/price/commerce_price.module
+++ b/modules/price/commerce_price.module
@@ -116,14 +116,14 @@ function _commerce_price_get_price_fields($entity_type, $entity) {
   // Determine the list of instances to iterate on.
   list(, , $bundle) = entity_extract_ids($entity_type, $entity);
   $instances = field_info_instances($entity_type, $bundle);
-  $fields = field_info_fields();
 
   // Iterate through the instances and collect results.
   foreach ($instances as $instance) {
     $field_name = $instance['field_name'];
+    $field = field_info_field($field_name);
 
     // If the instance is a price field with data...
-    if ($fields[$field_name]['type'] == 'commerce_price' && isset($entity->{$field_name})) {
+    if ($field['type'] == 'commerce_price' && isset($entity->{$field_name})) {
       $commerce_price_fields[] = $field_name;
     }
   }
diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index 836104f..609c43a 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -1437,7 +1437,7 @@ function commerce_product_reference_property_info_callback(&$info, $entity_type,
 function commerce_product_reference_node_types() {
   $list = array();
   $types = node_type_get_types();
-  foreach (field_info_fields() as $field_name => $field) {
+  foreach (field_info_field_map() as $field_name => $field) {
     if ($field['type'] == 'commerce_product_reference' && !empty($field['bundles']['node'])) {
       foreach($field['bundles']['node'] as $bundle) {
         $list[$bundle] = $types[$bundle];
diff --git a/modules/product_reference/includes/views/commerce_product_reference.views.inc b/modules/product_reference/includes/views/commerce_product_reference.views.inc
index fa87e1a..d4cffeb 100644
--- a/modules/product_reference/includes/views/commerce_product_reference.views.inc
+++ b/modules/product_reference/includes/views/commerce_product_reference.views.inc
@@ -76,10 +76,7 @@ function commerce_product_reference_views_data_alter(&$data) {
 
   // Adds inverse relationships between the product and entity types referencing
   // it (for example, nodes).
-  foreach (field_info_fields() as $field_name => $field) {
-    if ($field['type'] !== 'commerce_product_reference') {
-      continue;
-    }
+  foreach (commerce_info_fields('commerce_product_reference') as $field_name => $field) {
 
     foreach ($field['bundles'] as $entity_type => $bundles) {
       if ($entity_type == 'commerce_line_item') {
