 
 		let observer = CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, CFRunLoopActivity.Exit.rawValue, 0, 0) { _, _ in
 			self.renderQueued = false
-			self.update()
+			self.render()
 		}
 		CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopDefaultMode)
 	}


	private func realizeNewRoot(element: Element) -> RealizedElement {
		let sizedElement = element.frame(effectiveFrame)

		let realizedElement = realizeElementRecursively(sizedElement)
		if let realizedView = realizedElement.view {
			configureViewToAutoresize(realizedView)

	/// Called when the component has been derealized.
	public func componentDidDerealize() {}
	
	/// Called after the component has been rendered and diff applied.
	public func componentDidRender() {}
	
	/// Called when the state has changed but before the component is 
	/// re-rendered. This gives the component the chance to decide whether it 
	/// *should* based on the new state.
	///
	/// The default implementation always returns true.
	public func componentShouldRender(previousState: S, newState: S) -> Bool {
		return true
	}
	
