         return mutArray as AnyObject as! [T]
     }
 
+    /**
+    Sort the sections using the Given KeyPath
+    */
     private func sortSections() {
         sections.sortInPlace { $0.keyPath.localizedCaseInsensitiveCompare($1.keyPath) == NSComparisonResult.OrderedAscending }
     }
     
+    /**
+    Transforms a SortDescriptor into a NSSortDescriptor that can be applied to NSMutableArray
+    
+    :param: sort SortDescriptor object
+    
+    :returns: NSSortDescriptor
+    */
     private func toNSSortDescriptor(sort: SortDescriptor) -> NSSortDescriptor {
         return NSSortDescriptor(key: sort.property, ascending: sort.ascending)
     }

    func didDelete<T: Object>(object: T, indexPath: NSIndexPath)
}


class RealmResultsCache<T: Object> {
    var request: RealmRequest<T>
    var sectionKeyPath: String? = ""

    
    //MARK: Helpers
    
    /**
    Given an object this method returns the type of update that this object will 
    perform in the cache: .Move, .Update or .Insert
    
    :param: object Object to update
    
    :returns: Type of the update needed for the given object
    */
    func updateType(object: T) -> RealmCacheUpdateType {
        let oldSectionOptional = sectionForOutdateObject(object)
        guard let oldSection = oldSectionOptional else { return .Insert }
