         return (view, view.nestedView)
     }
 
-    public fileprivate(set) weak var nestedView: View!
+    public weak var nestedView: View! {
+        willSet {
+            guard let view = self.nestedView else { return }
+            view.removeFromSuperview()
+        }
+        didSet {
+            self.contentView.addAndConstrain(self.nestedView)
+        }
+    }
 
     override public init(reuseIdentifier: String?) {
         super.init(reuseIdentifier: reuseIdentifier)

    }

    fileprivate func commonInit() {
        let view = View.init()
        self.contentView.addAndConstrain(view)
        self.nestedView = view
    }

    public private(set) var isSetup = false

    }

    fileprivate func commonInit() {
        self.nestedView = View()
    }

    public private(set) var isSetup = false
