 
 import UIKit
 
-class AbstractDiffCalculator<S: Equatable, T:Equatable> {
+class AbstractDiffCalculator<Section: Equatable, Value: Equatable> {
 
-    init(initialRowsAndSections: SectionedValues<S, T>) {
+    init(initialRowsAndSections: SectionedValues<Section, Value>) {
         self._rowsAndSections = initialRowsAndSections
     }
 

        return self.rowsAndSections.count
    }

    public func value(forSection: Int) -> S {
        return self.rowsAndSections[forSection].0
    }


        return self.rowsAndSections[section].1.count
    }

    public func value(atIndexPath indexPath: IndexPath) -> Value {
        return self.rowsAndSections[indexPath.section].1[indexPath.row]
    }

    // Since UICollectionView (unlike UITableView) takes a block which must update its data source and trigger animations, we need to trigger the changes on set, instead of explicitly before and after set. This backing array lets us use a getter/setter in the exposed property. TODO
    public var rowsAndSections : SectionedValues<Section, Value> {
        get {
            return _rowsAndSections
        }
