 		}
 	}
 
-	private func getViewRecursive(key: String, rootElement: RealizedElement) -> ViewType? {
+	final private func getViewRecursive(key: String, rootElement: RealizedElement) -> ViewType? {
 		if rootElement.element.key == key { return rootElement.view }
 
 		for element in rootElement.children {

		}
	}

	private func realizeNewRoot(element: Element) -> RealizedElement {
		let sizedElement = element.frame(effectiveFrame)
		let realizedElement = realizeElementRecursively(sizedElement)
		if let realizedView = realizedElement.view {

		return realizedElement
	}

	final private func render() -> Element {
		return renderWithRootRealizedElement(rootRealizedElement)
	}

	final private func renderWithRootRealizedElement(realizedElement: RealizedElement?) -> Element {
		let newRoot = render(state)
		if let realizedElement = realizedElement {
			// If we can diff then apply it. Otherwise we just swap out the
