         return superlayout == nil
     }
     
-    public private(set) var frame: CGRect = .zero {
-        didSet {
-            view?.frame = frame
-        }
-    }
+    public private(set) var frame: CGRect = .zero
     
     public var intrinsicSize: CGSize {
-        return calculate(with: .undefined)
+        _calculateNode(.undefined)
+        return CGSize(width: node.layoutWidth, height: node.layoutHeight)
     }
     
     internal init(view: UIView? = nil) {

        YGNodeFree(node)
    }
    
    //TODO Expose 2 methods later
    fileprivate func calculate(with size: CGSize) -> CGSize {
        node.calculateLayout(size: size.ygSize, direction: direction)
        return CGSize(width: node.layoutWidth, height: node.layoutHeight)
    }

    fileprivate func applyToViews(preserveOrigin: Bool = false, offset: CGPoint = .zero) {
        if isEnabled {
            let origin = preserveOrigin ? frame.origin : .zero
            let topLeft = CGPoint(x: node.layoutLeft + offset.x, y: node.layoutTop + offset.y)

            
            sublayouts.forEach {
                if isView {
                    $0._calculateFrame(preserveOrigin: preserveOrigin, offset: .zero)
                } else {
                    $0._calculateFrame(preserveOrigin: preserveOrigin, offset: frame.origin)
                }
            }
        }
    }
    
}
