     // MARK: Internal State
     
     private var timer: Timer?
-    private var webView: WKWebView?
+    private var webView: WebView?
     private var webViewTitleObserver: KeyValueObserver<String>?
     private var webViewDoneObserver: KeyValueObserver<Bool>?
     
     override var item: SerializableURLItem.Result? {
         didSet {
-            var duration: TimeInterval = 8
+            var duration: TimeInterval = 4
             if let result = self.item, case .success(let item) = result {
                 // check to see if we have the info needed
                 let fullyConfigured = self.configureCard(item: item)

    }
}

extension WKWebView {
//    var snapshot: NSImage {
//        let rep = self.bitmapImageRepForCachingDisplay(in: self.bounds)!
//        self.cacheDisplay(in: self.bounds, to: rep)
//        let image = NSImage(size: self.bounds.size)
//        image.addRepresentation(rep)
//        return image
//    }
    
    var snapshot: NSImage? {
        
        let layer = self.layer!
        let bounds = layer.bounds
        
        let pixelsHigh = Int(floor(bounds.size.height))
        let pixelsWide = Int(floor(bounds.size.width))
        
        let bitmapBytesPerRow = (pixelsWide * 4)
        
        let colorSpace = CGColorSpace(name: CGColorSpace.sRGB)!
        let context = CGContext(data: nil,
                                width: pixelsWide,
                                height: pixelsHigh,
                                bitsPerComponent: 8,
                                bytesPerRow: bitmapBytesPerRow,
                                space: colorSpace,
                                bitmapInfo: CGImageAlphaInfo.premultipliedLast.rawValue)
        
        if let context = context {
            layer.render(in: context)
            let img = context.makeImage()!
            let image = NSImage(cgImage: img, size: bounds.size)
            return image
        } else {
            return nil
        }
    }
}

            if let webView = self.webView {
                // if we have  webview that means we need to take a snopshot
                if item.pageTitle == .none {
                    item.pageTitle = webView.mainFrameTitle
                }
                if item.image == .none {
                    item.image = webView.snapshot
                }
                self.save(item: item)
                self.extensionContext?.completeRequest(returningItems: .none, completionHandler: .none)
