diff --git a/modules/salesforce_mapping/salesforce_mapping.install b/modules/salesforce_mapping/salesforce_mapping.install
index 6c38209..4d754da 100644
--- a/modules/salesforce_mapping/salesforce_mapping.install
+++ b/modules/salesforce_mapping/salesforce_mapping.install
@@ -179,6 +179,13 @@ function salesforce_mapping_schema() {
         'not null' => TRUE,
         'default' => '',
       ),
+      'bundle' => array(
+        'description' => 'Drupal bundle.',
+        'type' => 'varchar',
+        'length' => 128,
+        'not null' => TRUE,
+        'default' => '',
+      ),      
       'created' => array(
         'description' => 'The Unix timestamp when the object mapping was created.',
         'type' => 'int',
@@ -204,7 +211,6 @@ function salesforce_mapping_schema() {
       'salesforce_object' => array('salesforce_id'),
     ),
     'unique keys' => array(
-      'salesforce' => array('salesforce_id'),
       'salesforce_drupal' => array('entity_type', 'entity_id'),
     ),
   );
@@ -234,4 +240,4 @@ function salesforce_mapping_update_7100(&$sandbox) {
     ),
   )
   );
-}
+}
\ No newline at end of file
diff --git a/modules/salesforce_mapping/salesforce_mapping.module b/modules/salesforce_mapping/salesforce_mapping.module
index b56eae6..16ebd02 100644
--- a/modules/salesforce_mapping/salesforce_mapping.module
+++ b/modules/salesforce_mapping/salesforce_mapping.module
@@ -221,6 +221,31 @@ function salesforce_mapping_object_load_by_sfid($salesforce_id, $reset = FALSE)
 }
 
 /**
+ * Return Salesforce object mappings for a given Salesforce object.
+ *
+ * @param string $salesforce_id
+ *   Unique Id provided by Salesforce for the Salesforce record.
+ * @param string $drupal_entity_type
+ *   
+ * @param string $drupal_bundle
+ *   
+ * @param bool $reset
+ *   Whether to reset the cache and retreive a new record.
+ *
+ * @return array
+ *   Entities that match the given $salesforce_id.
+ */
+function salesforce_mapping_object_load($salesforce_id, $drupal_entity_type, $drupal_bundle, $reset = FALSE) {
+  $conditions = array(
+    'salesforce_id' => $salesforce_id,
+    'entity_type' => $drupal_entity_type,
+    'bundle' => $drupal_bundle
+  );
+  $results = entity_load('salesforce_mapping_object', FALSE, $conditions, $reset);
+  return !empty($results) ? reset($results) : FALSE;
+}
+
+/**
  * Return a unique list of mapped Salesforce object types.
  *
  * @TODO: add parameter to limit by trigger: http://drupal.org/node/1915668
diff --git a/modules/salesforce_pull/salesforce_pull.module b/modules/salesforce_pull/salesforce_pull.module
index 7aeca4b..e86e1be 100644
--- a/modules/salesforce_pull/salesforce_pull.module
+++ b/modules/salesforce_pull/salesforce_pull.module
@@ -146,7 +146,7 @@ function salesforce_pull_process_records($sf_object) {
 
   foreach ($sf_mappings as $sf_mapping) {
     // Mapping object exists?
-    $mapping_object = salesforce_mapping_object_load_by_sfid($sf_object['Id']);
+    $mapping_object = salesforce_mapping_object_load($sf_object['Id'], $sf_mapping->drupal_entity_type, $sf_mapping->drupal_bundle);
     if ($mapping_object && ($sf_mapping->sync_triggers & SALESFORCE_MAPPING_SYNC_SF_UPDATE)) {
       try {
         $entity = entity_load_single($mapping_object->entity_type, $mapping_object->entity_id);
@@ -233,6 +233,7 @@ function salesforce_pull_process_records($sf_object) {
           $mapping_object = entity_create('salesforce_mapping_object', array(
             'salesforce_id' => $sf_object['Id'],
             'entity_type' => $sf_mapping->drupal_entity_type,
+            'bundle' => $sf_mapping->drupal_bundle,
             'entity_id' => $entity_id,
           ));
 
@@ -256,14 +257,26 @@ function salesforce_pull_process_records($sf_object) {
         }
       }
     }
-
     // Save our mapped objects.
     if ($mapping_object) {
       $mapping_object->save();
     }
   }
 }
+/*
+function salesforce_pull_init(){
+	$mappings = salesforce_mapping_get_mapped_objects();
+	foreach($mappings as $type){}{
+		
+      $sf_mappings = salesforce_mapping_load_multiple(
+        array('salesforce_object_type' => $type)
+      );
+	
+		dsm($sf_mappings);
+	}
 
+}
+*/
 /**
  * Process deleted records from salesforce.
  */
@@ -285,35 +298,42 @@ function salesforce_pull_process_deleted_records() {
     $now = $now > $last_delete_sync + 60 ? $now : $now + 60;
     $last_delete_sync_sf = gmdate('Y-m-d\TH:i:s\Z', $last_delete_sync);
     $now_sf = gmdate('Y-m-d\TH:i:s\Z', $now);
-    $deleted = $soap->getDeleted($type, $last_delete_sync_sf, $now_sf);
+    $deleted = $soap->getDeleted($type, $last_delete_sync_sf, $now_sf);	
     if (!empty($deleted->deletedRecords)) {
       $sf_mappings = salesforce_mapping_load_multiple(
         array('salesforce_object_type' => $type)
       );
-      foreach ($deleted->deletedRecords as $record) {
-        $mapping_object = salesforce_mapping_object_load_by_sfid($record->id);
-        if ($mapping_object) {
-          $entity = entity_load_single($mapping_object->entity_type, $mapping_object->entity_id);
-          $entity_label = entity_label($mapping_object->entity_type, $entity);
+	  $records = $deleted->deletedRecords;
+	  //Handle single item result.  Multiple items will be array, single item is an object
+	  if(is_object($records)){
+	  	$tempRecords = $records;
+		unset($records);
+		$records = array();
+		$records[0] = $tempRecords;
+	  }
+      foreach ($records as $record) {
           foreach ($sf_mappings as $sf_mapping) {
-            if ($sf_mapping->sync_triggers & SALESFORCE_MAPPING_SYNC_SF_DELETE) {
-              // Delete mapping object.
-              $transaction = db_transaction();
-              entity_delete('salesforce_mapping_object', $mapping_object->salesforce_mapping_object_id);
-              entity_delete($sf_mapping->drupal_entity_type, $mapping_object->entity_id);
-
-              watchdog('Salesforce Pull',
-                'Deleted entity %label with ID: %id associated with Salesforce Object ID: %sfid',
-                array(
-                  '%label' => $entity_label,
-                  '%id' => $mapping_object->entity_id,
-                  '%sfid' => $record->id,
-                )
-              );
-            }
-          }
-          $mapping_object->delete();
-        }
+	         $mapping_object = salesforce_mapping_object_load($record->id, $sf_mapping->drupal_entity_type, $sf_mapping->drupal_bundle);	
+       		 if ($mapping_object) {
+         		$entity = entity_load_single($mapping_object->entity_type, $mapping_object->entity_id);
+         	 	$entity_label = entity_label($mapping_object->entity_type, $entity);			
+	            if ($sf_mapping->sync_triggers & SALESFORCE_MAPPING_SYNC_SF_DELETE) {
+	              // Delete mapping object.
+	              $transaction = db_transaction();
+	              entity_delete('salesforce_mapping_object', $mapping_object->salesforce_mapping_object_id);
+	              entity_delete($sf_mapping->drupal_entity_type, $mapping_object->entity_id);
+	              watchdog('Salesforce Pull',
+	                'Deleted entity %label with ID: %id associated with Salesforce Object ID: %sfid',
+	                array(
+	                  '%label' => $entity_label,
+	                  '%id' => $mapping_object->entity_id,
+	                  '%sfid' => $record->id,
+	                )
+	              );
+	            }          
+		     	$mapping_object->delete();
+        	 }
+		  }    
       }
     }
     variable_set('salesforce_pull_delete_last_' . $type, REQUEST_TIME);
