 		rootElement = oldComponent.rootElement
 		realizedRoot = oldComponent.realizedRoot
 
-		renderWithDefaultFrame(rootElement?.frame ?? frame)
+		renderNewRoot()
 	}
 	
 	public override func realize() -> RealizedElement {
-		performInitialRenderIfNeeded(frame)
+		performInitialRenderIfNeeded()
 		realizeRootIfNeeded()
 		return RealizedElement(element: self, view: realizedRoot!.view)
 	}

	}

	final private func realizeNewRoot(newRoot: Element) {
		if root {
			let node = newRoot.assembleLayoutNode()
			let layout = node.layout()
			newRoot.applyLayout(layout)
		}

		let realized = newRoot.realize()

		configureViewToAutoresize(realized.view)

		realizedRoot = realized
	}

	final private func renderNewRoot() {
		let newRoot = render(state)
		newRoot.frame = frame

		let node = newRoot.assembleLayoutNode()
		let layout = node.layout()
		newRoot.applyLayout(layout)

		// If we're not the root then we should expect the root to set our 
		// frame. We shouldn't size or position ourselves.
		if !root {
			newRoot.frame = frame
		}

		if let rootElement = rootElement {
			if newRoot.canDiff(rootElement) {
