     }
 
     private func stopObserving() {
+        _stopObservingContentSizeCategory()
         _stopObservingFrame()
         _stopObservingInsets()
     }
 
     private func updateObservers() {
-        if _observingFrame, parent != nil {
-            _stopObservingFrame()
-        } else if !_observingFrame, parent == nil {
-            NotificationCenter.default.addObserver(self, selector: #selector(contentSizeChanged), name: .UIContentSizeCategoryDidChange, object: nil)
-            addObserver(self, forKeyPath: "_view.frame", options: [.old, .new], context: nil)
-            addObserver(self, forKeyPath: "_view.bounds", options: [.old, .new], context: nil)
+        if _observingContentSizeCategory, parent != nil {
+            _stopObservingContentSizeCategory()
+        } else if !_observingContentSizeCategory, parent == nil {
+            NotificationCenter.default.addObserver(self, selector: #selector(contentSizeCategoryChanged), name: .UIContentSizeCategoryDidChange, object: nil)
+        }
+        if !_observingFrame {
+            addObserver(self, forKeyPath: "_view.frame", options: [.new], context: nil)
+            addObserver(self, forKeyPath: "_view.bounds", options: [.new], context: nil)
             _observingFrame = true
         }
         if _observingInsets, viewControllerClass == nil {

            viewController.addChildViewController(controller)
        }
        viewController.view.addSubview(view)
        if _view?.frame != viewController.view.bounds {
            _view?.frame = viewController.view.bounds
        } else {
            update()
        }
    }

    /// Mounts a node inside the specified view, and binds the view as its owner

        }
    }

    private var _observingContentSizeCategory = false
    private func _stopObservingContentSizeCategory() {
        if _observingContentSizeCategory {
            NotificationCenter.default.removeObserver(self, name: .UIContentSizeCategoryDidChange, object: nil)
        }
    }

    private var _observingFrame = false
    private func _stopObservingFrame() {
        if _observingFrame {
            removeObserver(self, forKeyPath: "_view.frame")
            removeObserver(self, forKeyPath: "_view.bounds")
            _observingFrame = false
