diff --git a/shipping/uc_flatrate/uc_flatrate.admin.inc b/shipping/uc_flatrate/uc_flatrate.admin.inc
index 0cdeeb6..08c8f7a 100644
--- a/shipping/uc_flatrate/uc_flatrate.admin.inc
+++ b/shipping/uc_flatrate/uc_flatrate.admin.inc
@@ -90,9 +90,11 @@ function uc_flatrate_admin_method_edit_form($form, &$form_state, $mid = 0) {
     '#field_suffix' => $sign_flag ? $currency_sign : '',
   );
 
-  $conditions = rules_config_load('get_quote_from_flatrate_' . $mid);
-  if ($conditions) {
-    $conditions->form($form, $form_state);
+  if (module_exists('rules')) {
+    $conditions = rules_config_load('get_quote_from_flatrate_' . $mid);
+    if ($conditions) {
+      $conditions->form($form, $form_state);
+    }
   }
 
   $form['actions'] = array('#type' => 'actions');
@@ -204,7 +206,9 @@ function uc_flatrate_admin_method_confirm_delete_submit($form, &$form_state) {
     ->condition('mid', $form_state['values']['mid'])
     ->execute();
 
-  rules_config_delete(array('get_quote_from_flatrate_' . $form_state['values']['mid']));
+  if (module_exists('rules')) {
+    rules_config_delete(array('get_quote_from_flatrate_' . $form_state['values']['mid']));
+  }
 
   $enabled = variable_get('uc_quote_enabled', array());
   unset($enabled['flatrate_' . $form_state['values']['mid']]);
diff --git a/shipping/uc_quote/uc_quote.info b/shipping/uc_quote/uc_quote.info
index 4e62c86..57b7587 100644
--- a/shipping/uc_quote/uc_quote.info
+++ b/shipping/uc_quote/uc_quote.info
@@ -1,6 +1,5 @@
 name = Shipping Quotes
 description = Retrieve and display quotes for shipping products.
-dependencies[] = rules
 dependencies[] = uc_cart
 package = "Ubercart - core (optional)"
 core = 7.x
diff --git a/shipping/uc_quote/uc_quote.pages.inc b/shipping/uc_quote/uc_quote.pages.inc
index a5b4941..afb1c46 100644
--- a/shipping/uc_quote/uc_quote.pages.inc
+++ b/shipping/uc_quote/uc_quote.pages.inc
@@ -44,8 +44,15 @@ function uc_quote_assemble_quotes($order) {
 
   $quote_data = array();
   foreach ($methods as $method) {
-    $set = rules_config_load('get_quote_from_' . $method['id']);
-    if (!$set || $set->execute($order)) {
+    if (module_exists('rules')) {
+      $set = rules_config_load('get_quote_from_' . $method['id']);
+      $apply = !$set || $set->execute($order);
+    }
+    else {
+      $apply = TRUE;
+    }
+
+    if ($apply) {
       $data = uc_quote_action_get_quote($order, $method);
 
       foreach ($data as &$quote) {
diff --git a/shipping/uc_shipping/uc_shipping.module b/shipping/uc_shipping/uc_shipping.module
index 010111e..68a0e16 100644
--- a/shipping/uc_shipping/uc_shipping.module
+++ b/shipping/uc_shipping/uc_shipping.module
@@ -618,7 +618,9 @@ function uc_shipping_shipment_save($shipment) {
 
   module_invoke_all('uc_shipment', 'save', $shipment);
   $order = uc_order_load($shipment->order_id);
-  rules_invoke_event('uc_shipment_save', $order, $shipment);
+  if (module_exists('rules')) {
+    rules_invoke_event('uc_shipment_save', $order, $shipment);
+  }
 }
 
 /**
diff --git a/shipping/uc_ups/uc_ups.admin.inc b/shipping/uc_ups/uc_ups.admin.inc
index aa7befa..73bb82f 100644
--- a/shipping/uc_ups/uc_ups.admin.inc
+++ b/shipping/uc_ups/uc_ups.admin.inc
@@ -74,15 +74,17 @@ function uc_ups_admin_settings($form, &$form_state) {
     '#description' => t('Select the UPS services that are available to customers.'),
   );
 
-  $form['services']['service_conditions'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('UPS service conditions'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-  $conditions = rules_config_load('get_quote_from_ups');
-  if ($conditions) {
-    $conditions->form($form['services']['service_conditions'], $form_state);
+  if (module_exists('rules')) {
+    $form['services']['service_conditions'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('UPS service conditions'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+    $conditions = rules_config_load('get_quote_from_ups');
+    if ($conditions) {
+      $conditions->form($form['services']['service_conditions'], $form_state);
+    }
   }
 
   // Container for quote options
diff --git a/shipping/uc_usps/uc_usps.admin.inc b/shipping/uc_usps/uc_usps.admin.inc
index 8133eb1..e3e4f5f 100644
--- a/shipping/uc_usps/uc_usps.admin.inc
+++ b/shipping/uc_usps/uc_usps.admin.inc
@@ -52,15 +52,17 @@ function uc_usps_admin_settings($form, &$form_state) {
     '#description' => t('Select the USPS services that are available to customers. Be sure to include the services that the Postal Service agrees are available to you.'),
   );
 
-  $form['domestic']['env_conditions'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Envelope service conditions'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-  $conditions = rules_config_load('get_quote_from_usps_env');
-  if ($conditions) {
-    $conditions->form($form['domestic']['env_conditions'], $form_state);
+  if (module_exists('rules')) {
+    $form['domestic']['env_conditions'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Envelope service conditions'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+    $conditions = rules_config_load('get_quote_from_usps_env');
+    if ($conditions) {
+      $conditions->form($form['domestic']['env_conditions'], $form_state);
+    }
   }
 
   $form['domestic']['uc_usps_services'] = array(
@@ -71,15 +73,17 @@ function uc_usps_admin_settings($form, &$form_state) {
     '#description' => t('Select the USPS services that are available to customers. Be sure to include the services that the Postal Service agrees are available to you.'),
   );
 
-  $form['domestic']['parcel_conditions'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Parcel service conditions'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-  $conditions = rules_config_load('get_quote_from_usps');
-  if ($conditions) {
-    $conditions->form($form['domestic']['parcel_conditions'], $form_state);
+  if (module_exists('rules')) {
+    $form['domestic']['parcel_conditions'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Parcel service conditions'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+    $conditions = rules_config_load('get_quote_from_usps');
+    if ($conditions) {
+      $conditions->form($form['domestic']['parcel_conditions'], $form_state);
+    }
   }
 
   $form['international'] = array(
@@ -98,15 +102,17 @@ function uc_usps_admin_settings($form, &$form_state) {
     '#description' => t('Select the USPS services that are available to customers. Be sure to include the services that the Postal Service agrees are available to you.'),
   );
 
-  $form['international']['env_conditions'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Envelope service conditions'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-  $conditions = rules_config_load('get_quote_from_usps_intl_env');
-  if ($conditions) {
-    $conditions->form($form['international']['env_conditions'], $form_state);
+  if (module_exists('rules')) {
+    $form['international']['env_conditions'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Envelope service conditions'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+    $conditions = rules_config_load('get_quote_from_usps_intl_env');
+    if ($conditions) {
+      $conditions->form($form['international']['env_conditions'], $form_state);
+    }
   }
 
   $form['international']['uc_usps_intl_services'] = array(
@@ -117,15 +123,17 @@ function uc_usps_admin_settings($form, &$form_state) {
     '#description' => t('Select the USPS services that are available to customers. Be sure to include the services that the Postal Service agrees are available to you.'),
   );
 
-  $form['international']['parcel_conditions'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Parcel service conditions'),
-    '#collapsible' => TRUE,
-    '#collapsed' => TRUE,
-  );
-  $conditions = rules_config_load('get_quote_from_usps_intl');
-  if ($conditions) {
-    $conditions->form($form['international']['parcel_conditions'], $form_state);
+  if (module_exists('rules')) {
+    $form['international']['parcel_conditions'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Parcel service conditions'),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+    $conditions = rules_config_load('get_quote_from_usps_intl');
+    if ($conditions) {
+      $conditions->form($form['international']['parcel_conditions'], $form_state);
+    }
   }
 
   // Container for quote options
diff --git a/shipping/uc_weightquote/uc_weightquote.admin.inc b/shipping/uc_weightquote/uc_weightquote.admin.inc
index a1bab3a..6f1f9e0 100644
--- a/shipping/uc_weightquote/uc_weightquote.admin.inc
+++ b/shipping/uc_weightquote/uc_weightquote.admin.inc
@@ -89,9 +89,11 @@ function uc_weightquote_admin_method_edit_form($form, &$form_state, $mid = 0) {
     '#field_suffix' => t('!sign per !unit', array('!sign' => $sign_flag ? $currency_sign : '', '!unit' => variable_get('uc_weight_unit', 'lb'))),
   );
 
-  $conditions = rules_config_load('get_quote_from_weightquote_' . $mid);
-  if ($conditions) {
-    $conditions->form($form, $form_state);
+  if (module_exists('rules')) {
+    $conditions = rules_config_load('get_quote_from_weightquote_' . $mid);
+    if ($conditions) {
+      $conditions->form($form, $form_state);
+    }
   }
 
   $form['actions'] = array('#type' => 'actions');
diff --git a/uc_cart/uc_cart.admin.inc b/uc_cart/uc_cart.admin.inc
index 640e860..212549a 100644
--- a/uc_cart/uc_cart.admin.inc
+++ b/uc_cart/uc_cart.admin.inc
@@ -307,6 +307,30 @@ function uc_cart_checkout_settings_form($form, &$form_state) {
     ),
   );
 
+  if (!module_exists('rules')) {
+    $form['checkout']['uc_checkout_email_customer'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Send e-mail invoice to customer after checkout.'),
+      '#default_value' => variable_get('uc_checkout_email_customer', TRUE),
+      '#states' => array(
+        'visible' => array(
+          'input[name="uc_checkout_enabled"]' => array('checked' => TRUE),
+        ),
+      ),
+    );
+    $form['checkout']['uc_checkout_email_admin'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Send e-mail order notification to admin after checkout.'),
+      '#description' => t('Install <a href="!url">Rules</a> for more control over notifications.', array('!url' => 'http://drupal.org/project/rules')),
+      '#default_value' => variable_get('uc_checkout_email_admin', TRUE),
+      '#states' => array(
+        'visible' => array(
+          'input[name="uc_checkout_enabled"]' => array('checked' => TRUE),
+        ),
+      ),
+    );
+  }
+
   $form['instructions'] = array(
     '#type' => 'fieldset',
     '#title' => t('Instruction messages'),
diff --git a/uc_cart/uc_cart.install b/uc_cart/uc_cart.install
index 33815fc..ceff514 100644
--- a/uc_cart/uc_cart.install
+++ b/uc_cart/uc_cart.install
@@ -86,6 +86,8 @@ function uc_cart_uninstall() {
   variable_del('uc_continue_shopping_type');
   variable_del('uc_use_next_buttons');
   variable_del('uc_collapse_current_pane');
+  variable_del('uc_checkout_email_customer');
+  variable_del('uc_checkout_email_admin');
 }
 
 /**
diff --git a/uc_cart/uc_cart.module b/uc_cart/uc_cart.module
index f8ed9a5..f3675af 100644
--- a/uc_cart/uc_cart.module
+++ b/uc_cart/uc_cart.module
@@ -1301,6 +1301,27 @@ function uc_cart_complete_sale($order, $login = FALSE) {
 }
 
 /**
+ * Implements hook_uc_checkout_complete().
+ *
+ * Sends basic e-mail notifications if Rules is not installed.
+ */
+function uc_cart_uc_checkout_complete($order) {
+  if (!module_exists('rules')) {
+    module_load_include('inc', 'uc_order', 'uc_order.rules');
+
+    $subject = t('Your Order at !store', array('!store' => variable_get('uc_store_name', t('Our store'))));
+
+    if (variable_get('uc_checkout_email_customer', TRUE)) {
+      uc_order_action_email_invoice($order, uc_store_email_from(), $order->primary_email, $subject, 'customer', 'checkout-mail');
+    }
+
+    if (variable_get('uc_checkout_email_admin', TRUE)) {
+      uc_order_action_email_invoice($order, uc_store_email_from(), variable_get('uc_store_email', ini_get('sendmail_from')), $subject, 'admin', 'admin-mail');
+    }
+  }
+}
+
+/**
  * Themes the sale completion page.
  *
  * @param $message
diff --git a/uc_file/uc_file.info b/uc_file/uc_file.info
index 7a22b0b..901c204 100644
--- a/uc_file/uc_file.info
+++ b/uc_file/uc_file.info
@@ -2,5 +2,6 @@ name = File Downloads
 description = Allows products to be associated with downloadable files.
 dependencies[] = uc_product
 dependencies[] = uc_order
+dependencies[] = rules
 package = "Ubercart - core (optional)"
 core = 7.x
diff --git a/uc_roles/uc_roles.info b/uc_roles/uc_roles.info
index f6e1007..c7ae690 100644
--- a/uc_roles/uc_roles.info
+++ b/uc_roles/uc_roles.info
@@ -2,5 +2,6 @@ name = Roles
 description = Assign permanent or expirable roles based on product purchases.
 dependencies[] = uc_product
 dependencies[] = uc_order
+dependencies[] = rules
 package = "Ubercart - core (optional)"
 core = 7.x
diff --git a/uc_stock/uc_stock.info b/uc_stock/uc_stock.info
index 779dcf8..a60b825 100644
--- a/uc_stock/uc_stock.info
+++ b/uc_stock/uc_stock.info
@@ -3,6 +3,7 @@ description = Manage stock levels of your Ubercart products
 dependencies[] = uc_product
 dependencies[] = uc_reports
 dependencies[] = uc_store
+dependencies[] = rules
 package = "Ubercart - extra"
 core = 7.x
 files[] = views/uc_stock_views_handler_filter_below_threshold.inc
diff --git a/uc_taxes/uc_taxes.admin.inc b/uc_taxes/uc_taxes.admin.inc
index db4d56e..ebb4010 100644
--- a/uc_taxes/uc_taxes.admin.inc
+++ b/uc_taxes/uc_taxes.admin.inc
@@ -146,9 +146,11 @@ function uc_taxes_form($form, &$form_state, $rate_id = NULL) {
     '#default_value' => $rate_id ? $rate->inclusion_text : '',
   );
 
-  $conditions = rules_config_load('uc_taxes_' . $rate_id);
-  if ($conditions) {
-    $conditions->form($form, $form_state);
+  if (module_exists('rules')) {
+    $conditions = rules_config_load('uc_taxes_' . $rate_id);
+    if ($conditions) {
+      $conditions->form($form, $form_state);
+    }
   }
 
   $form['actions'] = array('#type' => 'actions');
@@ -203,10 +205,12 @@ function uc_taxes_form_submit($form, &$form_state) {
   uc_taxes_rate_save((object) $rate);
 
   // Update the name of the associated conditions.
-  $conditions = rules_config_load('uc_taxes_' . $rate['id']);
-  if ($conditions) {
-    $conditions->label = $rate['name'];
-    $conditions->save();
+  if (module_exists('rules')) {
+    $conditions = rules_config_load('uc_taxes_' . $rate['id']);
+    if ($conditions) {
+      $conditions->label = $rate['name'];
+      $conditions->save();
+    }
   }
 
   // Display a message and redirect back to the overview.
@@ -231,7 +235,7 @@ function uc_taxes_clone($rate_id) {
   $rate = uc_taxes_rate_save($rate);
 
   // Clone the associated conditions as well.
-  if ($conditions = rules_config_load('uc_taxes_' . $rate_id)) {
+  if (module_exists('rules') && conditions = rules_config_load('uc_taxes_' . $rate_id)) {
     unset($conditions->id);
     $conditions->save('uc_taxes_' . $rate->id);
   }
diff --git a/uc_taxes/uc_taxes.info b/uc_taxes/uc_taxes.info
index 31a3a21..1be24c0 100644
--- a/uc_taxes/uc_taxes.info
+++ b/uc_taxes/uc_taxes.info
@@ -1,6 +1,5 @@
 name = Taxes
 description = Define tax rates for customers' geographic locations and products sold.
-dependencies[] = rules
 dependencies[] = uc_store
 dependencies[] = uc_payment
 dependencies[] = uc_product
diff --git a/uc_taxes/uc_taxes.module b/uc_taxes/uc_taxes.module
index 3ff85f0..fffa9f0 100644
--- a/uc_taxes/uc_taxes.module
+++ b/uc_taxes/uc_taxes.module
@@ -384,7 +384,9 @@ function uc_taxes_rate_save($rate) {
   $p_insert->execute();
   $l_insert->execute();
 
-  rules_clear_cache();
+  if (module_exists('rules')) {
+    rules_clear_cache();
+  }
 
   return $rate;
 }
@@ -454,7 +456,9 @@ function uc_taxes_rate_delete($rate_id) {
     ->execute();
 
   // Delete the associated conditions if they have been saved to the database.
-  rules_config_delete(array('uc_taxes_' . $rate_id));
+  if (module_exists('rules')) {
+    rules_config_delete(array('uc_taxes_' . $rate_id));
+  }
 }
 
 /**
@@ -511,8 +515,13 @@ function uc_taxes_uc_calculate_tax($order) {
       }
     }
 
-    $set = rules_config_load('uc_taxes_' . $tax->id);
-    $apply = $set->execute($order);
+    if (module_exists('rules')) {
+      $set = rules_config_load('uc_taxes_' . $tax->id);
+      $apply = $set->execute($order);
+    }
+    else {
+      $apply = TRUE;
+    }
 
     if ($apply) {
       $line_item = uc_taxes_apply_tax($order, $tax);
