       }
     }
   }
-
+  
   init(){}
   
-
-
+  
+  
   final private func addObservers() {
     self.removeObservers()
-    let center = NSNotificationCenter.defaultCenter()
     let b = self.behaviour
     let scene = self.node!.scene!
     
-    if b.didAddToNode? != nil {
-      self.observersOne.append(
-      hubUpdated.subscribeNotificationForName("SKC_didUpdate", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didUpdate?(notification.userInfo!) } }
-      })
-    }
-    
-    if b.didEvaluateActions? != nil {
-      self.observersTwo.append(
-      hubEmpty.subscribeNotificationForName("SKC_didEvaluateActions", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didEvaluateActions?() } }
-      })
-    }
-
-    if b.didSimulatePhysics? != nil {
-      self.observersTwo.append(
-      hubEmpty.subscribeNotificationForName("SKC_didSimulatePhysics", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didSimulatePhysics?() } }
-      })
-    }
-
-    if b.didApplyConstraints? != nil {
-      self.observersTwo.append(
-      hubEmpty.subscribeNotificationForName("SKC_didApplyConstraints", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didApplyConstraints?() } }
-      })
-    }
-
-    if b.didFinishUpdate? != nil {
-      self.observersTwo.append(
-      hubEmpty.subscribeNotificationForName("SKC_didFinishUpdate", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didFinishUpdate?() } }
-      })
-    }
-    
-    if b.didBeginContact? != nil {
-      self.observersThree.append(
-      hubContact.subscribeNotificationForName("SKC_didBeginContact", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didBeginContact?(notification.userInfo!) } }
-      })
-    }
-
-    if b.didEndContact? != nil {
-      self.observersThree.append(
-      hubContact.subscribeNotificationForName("SKC_didEndContact", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didEndContact?(notification.userInfo!) } }
-      })
-    }
-    
-    if b.didBeginContactWithNode? != nil {
-      self.observersFour.append(
-      hubNodeContact.subscribeNotificationForName("SKC_didBeginContactWithNode", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didBeginContactWithNode?(notification.userInfo!) } }
-      })
-    }
-
-    if b.didEndContactWithNode? != nil {
-      self.observersFour.append(
-      hubNodeContact.subscribeNotificationForName("SKC_didEndContactWithNode", sender: scene) { [weak self] notification in
-        if let x = self { if x.isEnabled { x.behaviour.didEndContactWithNode?(notification.userInfo!) } }
-      })
+    if let didChangeSceneSizedFrom = b.didChangeSceneSizedFrom {
+      self.observersSize = hubSize.subscribeNotificationForName("SKC_didChangeSceneSizedFrom", sender: scene) { [weak self] notification in
+        if let x = self { if x.isEnabled { didChangeSceneSizedFrom(notification.userInfo!) } }
+      }
+      
+    }
+    
+
+    
+    if let didUpdate = b.didUpdate {
+      self.observerUpdated = hubUpdated.subscribeNotificationForName("SKC_didUpdate", sender: scene) { [weak self] notification in
+        if let x = self { if x.isEnabled { didUpdate(notification.userInfo!) } }
+      }
+    }
+    
+    if let didEvaluateActions =  b.didEvaluateActions {
+      self.observersEmpty.append(
+        hubEmpty.subscribeNotificationForName("SKC_didEvaluateActions", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didEvaluateActions() } }
+        })
+    }
+    
+    if let didSimulatePhysics = b.didSimulatePhysics? {
+      self.observersEmpty.append(
+        hubEmpty.subscribeNotificationForName("SKC_didSimulatePhysics", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didSimulatePhysics() } }
+        })
+    }
+    
+    if let didApplyConstraints = b.didApplyConstraints? {
+      self.observersEmpty.append(
+        hubEmpty.subscribeNotificationForName("SKC_didApplyConstraints", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didApplyConstraints() } }
+        })
+    }
+    
+    if let didFinishUpdate = b.didFinishUpdate {
+      self.observersEmpty.append(
+        hubEmpty.subscribeNotificationForName("SKC_didFinishUpdate", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didFinishUpdate() } }
+        })
+    }
+    
+    if let didBeginContact = b.didBeginContact {
+      self.observersContact.append(
+        hubContact.subscribeNotificationForName("SKC_didBeginContact", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didBeginContact(notification.userInfo!) } }
+        })
+    }
+    
+    if let didEndContact = b.didEndContact {
+      self.observersContact.append(
+        hubContact.subscribeNotificationForName("SKC_didEndContact", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didEndContact(notification.userInfo!) } }
+        })
+    }
+    
+    if let didBeginContactWithNode =  b.didBeginContactWithNode {
+      self.observersNodeContact.append(
+        hubNodeContact.subscribeNotificationForName("SKC_didBeginContactWithNode", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didBeginContactWithNode(notification.userInfo!) } }
+        })
+    }
+    
+    if let didEndContactWithNode = b.didEndContactWithNode {
+      self.observersNodeContact.append(
+        hubNodeContact.subscribeNotificationForName("SKC_didEndContactWithNode", sender: scene) { [weak self] notification in
+          if let x = self { if x.isEnabled { didEndContactWithNode(notification.userInfo!) } }
+        })
     }
     
     

  
  
  
   func _addChild(node:SKNode!) {
    if node.parent != self {
      node.removeFromParent()
      self._addChild(node)
      self._addedChild(node);

    }
    
  }
  
   func _insertChild(node: SKNode!, atIndex index: Int) {
    if node.parent != self {
      node.removeFromParent()
      self._insertChild(node, atIndex: index)

  final private func _didAddToNode() {
    self.behaviour.didAddToNode?()
    if(self.node?.scene != nil) { self._didAddNodeToScene() }
    
  }
  final private func _didAddNodeToScene() {
    self.addObservers()
    self.behaviour.didAddNodeToScene?()
  }
  
  final private func _didRemoveFromNode() {
    self.removeObservers()
    self.behaviour.didRemoveNodeFromScene?()
  }
  
  final private func _didRemoveNodeFromScene() {
    self.removeObservers()
    self.behaviour.didRemoveNodeFromScene?()
  }
  
  final private func removeObservers() {
    self.observerUpdated?.remove()
    
    for observer in self.observersEmpty { observer.remove() }
    for observer in self.observersContact { observer.remove() }
    for observer in self.observersNodeContact { observer.remove() }
    for observer in self.observersSize { observer.remove() }
    for observer in self.observersView { observer.remove() }
  }
  
  deinit {
