     /**
      The delegate method called when changes are made to the controller's items via a FeedKitFetchRequest
      
-     - Parameter feedController:    The feed controller
-     - Parameter itemsCopy:         A copy of the feed controller's updated items array
-     - Parameter itemsAdded:        The index paths of items that were added to the items array
-     - Parameter itemsDeleted:      The index paths of items that were deleted from the items array
+     - Parameter feedController:    The feed controller.
+     - Parameter itemsCopy:         A copy of the feed controller's updated items array.
+     - Parameter itemsAdded:        The index paths of items that were added to the items array.
+     - Parameter itemsDeleted:      The index paths of items that were deleted from the items array.
      */
     func feedController(feedController: FeedControllerGeneric, itemsCopy: [AnyObject], itemsAdded: [NSIndexPath], itemsDeleted: [NSIndexPath])
     
     /**
      The delegate method called if there is an error making a FeedKitFetchRequest
      
-     - parameter feedController:    The feed controller
-     - parameter feedController:    The error that occured in the FeedKitFetchRequest
+     - parameter feedController:    The feed controller.
+     - parameter feedController:    The error that occured in the FeedKitFetchRequest.
      */
     func feedController(feedController: FeedControllerGeneric, requestFailed error: NSError)
 }

}

public class FeedController <T:FeedItem> : FeedControllerGeneric{
    private(set) public var items: [T]! = []
    public weak var delegate: FeedKitControllerDelegate?
    //private(set) var  feedType: FeedKitType!
    private(set) var cachePreferences: CachePreferences
    public var cache: FeedCache<T>?
    let section: Int!
    
    public init(cachePreferences: CachePreferences, section: Int){
        self.section = section
        self.cachePreferences = cachePreferences

    
    private func _processNewItems(newItems: [T], clearCacheIfNewItemsAreDifferent: Bool) {
        
        //prevent calls of this method on other threads from mutating items array while we are working with it.
        objc_sync_enter(self)
        defer {
            objc_sync_exit(self)
