     }
 }
 
-public struct RevisionInfo<T: Document> {
-    
+public struct RevisionDiff {
+    let id: String
+    let misssing: [String]
+    let possibleAncestors: [String]
 }
 
 public struct Change: DocumentLoading {
     let changes: [[String: String]]
     let id: String
-    let deleted: Bool? = nil
+    var deleted: Bool? = nil
     let seq: Int
     
     public init(json: AnyObject?) throws {

        }
    }
    
    public init(source s: ReplicationClient, destination d: ReplicationClient) {
        source = s
        destination = d

        
        let sessionId: String = NSUUID().UUIDString
        let startTime: NSDate = NSDate()
        var missingChecked: Int = 0
        var missingFound: Int = 0
        let docsRead: Int = 0
        let docsWritten: Int = 0
        let docsWriteFailures: Int = 0
        var startLastSeq: Int = -1 // -1 == no previous start
        var endLastSeq: Int = -1
        
        var sourceInfo: DatabaseInfo? = nil
        var destinationInfo: DatabaseInfo? = nil
        
        var sourceReplicationLog: ReplicationLog? = nil
        var destinationReplicationLog: ReplicationLog? = nil
        
        var changedDocs: [RevisionDiff] = [RevisionDiff]()
    }
    
    public struct ReplicationItem: Document {
