         }
     }
     
-    private init(database: DatabaseWriter, source: DatabaseSource<T>, queue: dispatch_queue_t, isSameRecordBuilder: (Database) -> (T, T) -> Bool) {
+    private init(database: DatabaseWriter, source: DatabaseSource<Record>, queue: dispatch_queue_t, isSameRecordBuilder: (Database) -> (Record, Record) -> Bool) {
         self.source = source
         self.database = database
         self.isSameRecordBuilder = isSameRecordBuilder

    /// The sections
    ///
    /// MUST BE CALLED ON mainQueue (TODO: say it nicely)
    public var sections: [FetchedRecordsSectionInfo<T>] {
        // We only support a single section
        return [FetchedRecordsSectionInfo(controller: self)]
    }

    /// Returns nil if performQuery() hasn't been called.
    ///
    /// MUST BE CALLED ON mainQueue (TODO: say it nicely)
    public var fetchedRecords: [Record]? {
        if isObserving {
            return mainItems.map { $0.record }
        }
