             toolbar?.updateReloadStatus(loading)
             urlBar.updateReloadStatus(loading)
             auralProgress.progress = loading ? 0 : nil
+        case KVOURL:
+            if let tab = tabManager.selectedTab where tab.webView === webView {
+                updateURLBarDisplayURL(tab)
+
+                scrollController.showToolbars(animated: false)
+
+                if let url = tab.url {
+                    if ReaderModeUtils.isReaderModeURL(url) {
+                        showReaderModeBar(animated: false)
+                    } else {
+                        hideReaderModeBar(animated: false)
+                    }
+                }
+                updateInContentHomePanel(tab.url)
+            }
+        case KVOCanGoBack:
+            let canGoBack = change[NSKeyValueChangeNewKey] as! Bool
+            navigationToolbar.updateBackStatus(canGoBack)
+        case KVOCanGoForward:
+            let canGoForward = change[NSKeyValueChangeNewKey] as! Bool
+            navigationToolbar.updateForwardStatus(canGoForward)
         default:
             assertionFailure("Unhandled KVO key: \(keyPath)")
         }

        // in willDeleteWebView below!
        webView.addObserver(self, forKeyPath: KVOEstimatedProgress, options: .New, context: nil)
        webView.addObserver(self, forKeyPath: KVOLoading, options: .New, context: nil)
        webView.UIDelegate = self

        let readerMode = ReaderMode(browser: browser)

            home.view.setNeedsUpdateConstraints()
        }

        if let tab = tabManager.selectedTab,
               webView = tab.webView {
            updateURLBarDisplayURL(tab)
            navigationToolbar.updateBackStatus(webView.canGoBack)
            navigationToolbar.updateForwardStatus(webView.canGoForward)
            navigationToolbar.updateReloadStatus(tab.loading ?? false)
        }
    }
