 	}
 
 	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)

	/// one view at a time.
	public func addToView(hostView: ViewType) {
		root = true
		performInitialRenderIfNeeded(hostView.bounds)
		realizeRootIfNeeded()
		hostView.addSubview(realizedRoot!.view)
		rootElement?.elementDidRealize(realizedRoot!)

		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) {
