         
         let sessionId: String = NSUUID().UUIDString
         let startTime: NSDate = NSDate()
-        let missingChecked: Int = 0
-        let missingFound: Int = 0
+        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 {

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

    public func get<T: Document>(id: String, options: [String : [String]]?, returning: T.Type) -> AsyncResult<T?> {
        let result = AsyncResult<T?>()
        
        let req = NSMutableURLRequest(URL: NSURL(string: url + "/" + id + String.buildQueryString(options, includeQ: true))!)
        req.setValue("application/json", forHTTPHeaderField: "Accept")
        NSURLSession.sharedSession().dataTaskWithRequest(req) { (data, resp, err) -> Void in
            if let resp = resp as? NSHTTPURLResponse {
