diff --git a/uc_attribute/uc_attribute.module b/uc_attribute/uc_attribute.module
index b8bc6c9..29d0a1e 100644
--- a/uc_attribute/uc_attribute.module
+++ b/uc_attribute/uc_attribute.module
@@ -449,9 +449,9 @@ function uc_attribute_node_update_index($node) {
 /**
  * Implements hook_uc_product_models().
  */
-function uc_attribute_uc_product_models($node) {
+function uc_attribute_uc_product_models($nid) {
   // Get all the SKUs for all the attributes on this node.
-  $models = db_query("SELECT DISTINCT model FROM {uc_product_adjustments} WHERE nid = :nid", array(':nid' => $node->nid))->fetchCol();
+  $models = db_query("SELECT DISTINCT model FROM {uc_product_adjustments} WHERE nid = :nid", array(':nid' => $nid))->fetchCol();
 
   return $models;
 }
diff --git a/uc_file/uc_file.module b/uc_file/uc_file.module
index 5585a3a..a5c4a1f 100644
--- a/uc_file/uc_file.module
+++ b/uc_file/uc_file.module
@@ -665,7 +665,7 @@ function uc_file_feature_form($form, &$form_state, $node, $feature) {
   uc_file_refresh();
 
   // Grab all the models on this product.
-  $models = uc_product_get_models($node);
+  $models = uc_product_get_models($node->nid);
 
   // Use the feature's values to fill the form, if they exist.
   if (!empty($feature)) {
diff --git a/uc_order/uc_order.rules.inc b/uc_order/uc_order.rules.inc
index b5472f5..347221e 100644
--- a/uc_order/uc_order.rules.inc
+++ b/uc_order/uc_order.rules.inc
@@ -355,8 +355,8 @@ function uc_order_condition_has_products($order, $products, $required, $forbidde
 function uc_order_condition_has_products_options() {
   $options = array();
   $result = db_query("SELECT nid FROM {uc_products}");
-  foreach ($result as $product) {
-    $options += uc_product_get_models(node_load($product->nid), FALSE);
+  foreach ($result as $nid) {
+    $options += uc_product_get_models($nid, FALSE);
   }
 
   return $options;
diff --git a/uc_product/uc_product.api.php b/uc_product/uc_product.api.php
index 34e3a78..f9676a3 100644
--- a/uc_product/uc_product.api.php
+++ b/uc_product/uc_product.api.php
@@ -134,9 +134,9 @@ function hook_uc_product_description_alter(&$description, $product) {
  *
  * Code lifted from uc_attribute.module.
  */
-function hook_uc_product_models($node) {
+function hook_uc_product_models($nid) {
   // Get all the SKUs for all the attributes on this node.
-  $models = db_query("SELECT DISTINCT model FROM {uc_product_adjustments} WHERE nid = :nid", array(':nid' => $node->nid))->fetchCol();
+  $models = db_query("SELECT DISTINCT model FROM {uc_product_adjustments} WHERE nid = :nid", array(':nid' => $nid))->fetchCol();
 
   return $models;
 }
diff --git a/uc_product/uc_product.module b/uc_product/uc_product.module
index b375e7c..7836115 100644
--- a/uc_product/uc_product.module
+++ b/uc_product/uc_product.module
@@ -1504,11 +1504,11 @@ function uc_product_is_product_form($form) {
  *   An associative array of model numbers. The key for '- Any -' is the empty
  *   string.
  */
-function uc_product_get_models($node, $add_blank = TRUE) {
+function uc_product_get_models($nid, $add_blank = TRUE) {
   // Get any modules' SKUs on this node.
-  $models = module_invoke_all('uc_product_models', $node);
+  $models = module_invoke_all('uc_product_models', $nid);
   // Add the base SKU of the node.
-  $models[] = $node->model;
+  $models[] = db_query('SELECT model FROM {uc_products} WHERE nid = :nid', array(':nid' => $nid))->fetchField();
 
   // Now we map the SKUs to the keys, for form handling, etc.
   $models = drupal_map_assoc($models);
diff --git a/uc_roles/uc_roles.module b/uc_roles/uc_roles.module
index 6560ce7..60c847b 100644
--- a/uc_roles/uc_roles.module
+++ b/uc_roles/uc_roles.module
@@ -594,7 +594,7 @@ function uc_roles_uc_message() {
  * @ingroup forms
  */
 function uc_roles_feature_form($form, &$form_state, $node, $feature) {
-  $models = uc_product_get_models($node);
+  $models = uc_product_get_models($node->nid);
 
   // Check if editing or adding to set default values.
   if (!empty($feature)) {
diff --git a/uc_stock/uc_stock.admin.inc b/uc_stock/uc_stock.admin.inc
index c53be9a..2a10c0c 100644
--- a/uc_stock/uc_stock.admin.inc
+++ b/uc_stock/uc_stock.admin.inc
@@ -197,7 +197,7 @@ function uc_stock_edit_form($form, &$form_state, $node) {
 
   $form['stock'] = array('#tree' => TRUE);
 
-  $skus = uc_product_get_models($node);
+  $skus = uc_product_get_models($node->nid);
 
   // Remove 'Any'.
   unset($skus[NULL]);
diff --git a/uc_store/includes/coder_review_uc3x.inc b/uc_store/includes/coder_review_uc3x.inc
index 3b33e88..0bef299 100644
--- a/uc_store/includes/coder_review_uc3x.inc
+++ b/uc_store/includes/coder_review_uc3x.inc
@@ -57,6 +57,14 @@ function coder_review_uc3x_reviews() {
       '#warning' => 'uc_add_js() has been removed.  Use drupal_add_js() instead.',
     ),
 
+    // First argument to uc_product_get_models() and hook_uc_product_models()
+    // changed from $node to $nid. 
+    array(
+      '#type' => 'regex',
+      '#value' => '(\buc_product_get_models|\B_uc_product_models)\s*\(',
+      '#warning' => 'First argument to uc_product_get_models() and hook_uc_product_models() has changed - it is now an integer node id instead of a node object.',
+    ),
+
     // Checkout and order pane callback arguments changed.
     array(
       '#type' => 'regex',
