 private let NullString = "(null)"
 private let SeparatorString = "*******************************"
 
-extension Request {
+extension DataRequest {
     
     /**
      Log the request and response with the given level and options

    }
    
    // MARK: Elapsed time
    var startDate: NSDate {
        get {
            return objc_getAssociatedObject(self, &ElapsedTimeHandle) as? NSDate ?? NSDate()
        }
        set {
            objc_setAssociatedObject(self, &ElapsedTimeHandle, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
        }
    }
    
    var elapsedTime: NSTimeInterval {
        return NSDate().timeIntervalSinceDate(startDate)
    }
}

// MARK: Helpers
private let AppIsDebugMode = _isDebugAssertConfiguration()

private func stringFromData(data: NSData?, prettyPrint: Bool) -> String? {
    
    guard let data = data else {
        return nil

            return self
        }
        
        let method = request.httpMethod!
        let url = request.url?.absoluteString ?? NullString
        let headers = prettyPrintedString(from: request.allHTTPHeaderFields) ?? NullString
        
        // separator
        let openSeparator = options.contains(.IncludeSeparator) ? "\(SeparatorString)\n" : ""
