 		precondition(hostView == nil, "\(self) has already been added to a view. Remove it before adding it to a new view.")
 
 		hostView = view
+
 		let realizedElement = realizeComponent()
 		if let realizedView = realizedElement.view {
 			view.addSubview(realizedView)

	/// Called when the component has been derealized.
	public func componentDidDerealize() {}
	
	/// Called after the component has been updated and diff applied.
	public func componentDidUpdate() {}
	
	/// 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 componentShouldUpdate(previousState: S, newState: S) -> Bool {
		return true
	}
	


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