     return NSIndexPath(forItem: 0, inSection: 0)
   }
 
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
-  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
+//  interactionHandler.safeDataSource.deleteLastItemInSection(0)
 //  interactionHandler.safeDataSource.deleteLastItemInSection(0) // TODO: uncomment and support this use case
 
 }

            let x = 1
          case .AppendItem(_, let sectionIndex): // Item, Section Index
            if sectionAdditions[sectionIndex] == nil {
              let startingRange = sectionStartingRanges[sectionIndex]
              sectionAdditions[sectionIndex] = startingRange.endIndex..<startingRange.endIndex
            }
            if let sectionAdditionsForSection = sectionAdditions[sectionIndex] {


          case .DeleteItem(let indexPath):
            // B:
            // This accounts for the fact that the index path given to us is in the context of an array with potentially deleted items.
            if preDeleteSectionStartingRanges[indexPath.section] ~= (indexPath.item + onGoingExistingDeletes[indexPath.section].count)   { // Deleting from existing items
              // Do nothing this deletion has already been accounted for, excpet for keeping track
              onGoingExistingDeletes[indexPath.section].append(indexPath) // TODO: will something reference this index path later if so be careful about index that should be shifted!


            } else { // NOT deleting from existing items, no deleting from datasource, items never made it to collection view no need to add these items just to delete them
              if let sectionAdditionsForSection = sectionAdditions[indexPath.section] {
                sectionAdditions[indexPath.section] = sectionAdditionsForSection - 1 // TODO: Remove addition range if range becomes 0..<0
              } else {
                // This should never occur, this means a delete command was given for an item that hasn't been added yet. We are iterating in the changlist order.
                assertionFailure("Encountered an addition deletion for an item that has not been added before in the changelist order.")
              }
            } // :B

          case .DeleteItems(let indexPaths):
            for indexPath in indexPaths {
              // B:
              // This accounts for the fact that the index path given to us is in the context of an array with potentially deleted items.
              if preDeleteSectionStartingRanges[indexPath.section] ~= (indexPath.item + onGoingExistingDeletes[indexPath.section].count)   { // Deleting from existing items
                // Do nothing this deletion has already been accounted for, excpet for keeping track
                onGoingExistingDeletes[indexPath.section].append(indexPath)

              } else { // NOT deleting from existing items, no deleting from datasource, items never made it to collection view no need to add these items just to delete them
                if let sectionAdditionsForSection = sectionAdditions[indexPath.section] {
                  sectionAdditions[indexPath.section] = sectionAdditionsForSection - 1 // TODO: Remove addition range if range becomes 0..<0
                } else {
                  // This should never occur, this means a delete command was given for an item that hasn't been added yet. We are iterating in the changlist order.
                  assertionFailure("Encountered an addition deletion for an item that has not been added before in the changelist order.")
                }
              } // :B
            }
          case .DeleteLastItem: // Section Index

            assertionFailure("Delete Last Item in Section not implemented yet.")


            /*
            if let sectionAdditionsForSection = sectionAdditions[sectionIndex] { // There are additions, just remove from there
              let x = 1
              sectionAdditions[sectionIndex]?.startIndex
