=== modified file 'uc_catalog/uc_catalog.install'
--- uc_catalog/uc_catalog.install	2010-03-03 15:47:24 +0000
+++ uc_catalog/uc_catalog.install	2010-03-10 21:01:38 +0000
@@ -79,21 +79,24 @@
     taxonomy_vocabulary_save($vocabulary);
     $vid = $vocabulary->vid;
 
-    $field = array(
-      'field_name' => 'taxonomy_catalog',
-      'type' => 'taxonomy_term_reference',
-      // Set cardinality to unlimited for tagging.
-      'cardinality' => FIELD_CARDINALITY_UNLIMITED,
-      'settings' => array(
-        'allowed_values' => array(
-          array(
-            'vid' => $vocabulary->vid,
-            'parent' => 0,
+    $field = field_info_field('taxonomy_' . $vocabulary->machine_name);
+    if (empty($field)) {
+      $field = array(
+        'field_name' => 'taxonomy_' . $vocabulary->machine_name,
+        'type' => 'taxonomy_term_reference',
+        'cardinality' => FIELD_CARDINALITY_UNLIMITED,
+        'settings' => array(
+          'allowed_values' => array(
+            array(
+              'vid' => $vocabulary->vid,
+              'parent' => 0,
+            ),
           ),
         ),
-      ),
-    );
-    field_create_field($field);
+      );
+
+      field_create_field($field);
+    }
   }
 
   uc_catalog_add_image_field();
@@ -107,7 +110,9 @@
  */
 function uc_catalog_uninstall() {
   if ($vid = variable_get('uc_catalog_vid', 0)) {
+    $vocabulary = taxonomy_vocabulary_load($vid);
     taxonomy_vocabulary_delete($vid);
+    field_delete_field('taxonomy_' . $vocabulary->machine_name);
   }
 
   db_delete('variable')

=== modified file 'uc_catalog/uc_catalog.module'
--- uc_catalog/uc_catalog.module	2010-03-10 14:01:17 +0000
+++ uc_catalog/uc_catalog.module	2010-03-10 21:00:52 +0000
@@ -990,28 +990,27 @@
     );
 
     field_create_field($field);
-
-    // Initialize this because field_info_field() would have set it.
-    $field['bundles'] = array();
   }
 
-  $label = t('Image');
-  $instance = array(
-    'field_name' => 'uc_catalog_image',
-    'object_type' => 'taxonomy_term',
-    'bundle' => 'taxonomy_catalog',
-    'label' => $label,
-    'widget_type' => 'image_image',
-    'display' => array(
-      'full' => array(
-        'label' => 'hidden',
-        'type' => 'image_link_content__uc_category'
-      ),
-    ),
-  );
+  $instance = field_info_instance('taxonomy_term', 'uc_catalog_image', 'taxonomy_catalog');
 
   // Only add the instance if it doesn't exist. Don't overwrite any changes.
-  if (!in_array('taxonomy_catalog', $field['bundles'])) {
+  if (!$instance) {
+    $label = t('Image');
+    $instance = array(
+      'field_name' => 'uc_catalog_image',
+      'object_type' => 'taxonomy_term',
+      'bundle' => 'taxonomy_catalog',
+      'label' => $label,
+      'widget_type' => 'image_image',
+      'display' => array(
+        'full' => array(
+          'label' => 'hidden',
+          'type' => 'image_link_content__uc_category'
+        ),
+      ),
+    );
+
     field_create_instance($instance);
   }
 }

=== modified file 'uc_product/uc_product.install'
--- uc_product/uc_product.install	2010-03-03 15:47:24 +0000
+++ uc_product/uc_product.install	2010-03-10 21:00:52 +0000
@@ -212,9 +212,10 @@
  * Implement hook_uninstall().
  */
 function uc_product_uninstall() {
-  db_delete('variable')
-    ->condition('name', 'uc_product_shippable_%', 'LIKE')
-    ->execute();
+  foreach (uc_product_types() as $type) {
+    variable_del("uc_image_$type");
+    variable_del("uc_product_shippable_$type");
+  }
 
   variable_del('uc_product_nodes_per_page');
   variable_del('uc_product_add_to_cart_qty');

