   
   final private func internalTouchesBegan(touches: [UITouch], withEvent event: UIEvent) {
     for component in self.components { if component.isEnabled { component.touchesBegan?(touches, withEvent: event) } }
-//    for child in self.childNodes     { child.internalTouchesBegan(touches, withEvent: event) }
-    
-  }
-  
-   override public func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
+    //    for child in self.childNodes     { child.internalTouchesBegan(touches, withEvent: event) }
+    
+  }
+  
+  override public func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
     let touchesList:[UITouch] = touches.allObjects as [UITouch]
     self.internalTouchesBegan(touchesList, withEvent: event)
   }
-
+  
 }
 
 extension SKNode {

      for component in node.components { component.internalDidAddNodeToScene() }
      for childNode in node.childNodes { node.addedChild(childNode) }
    }
    else if self.parent != nil {
      for component in node.components { component.internalDidAddNodeToScene() }
      for childNode in node.childNodes { node.addedChild(childNode) }
    }


@objc private protocol ComponentBehaviour {
  optional func didAddToNode()
  optional func didAddNodeToScene()
  optional func didRemoveFromNode()
  optional func didRemoveNodeFromScene()

  optional func didChangeSceneSizedFrom(previousSize:CGSize)
  optional func didMoveToView(view: SKView)
  optional func willMoveFromView(view: SKView)
  optional func didChangeSize(oldSize: CGSize)

  
  //if isEnabled
  optional func didUpdate(time:NSTimeInterval)
  optional func didEvaluateActions()
  optional func didSimulatePhysics()
  optional func didApplyConstraints()
  optional func didFinishUpdate()
  
  optional func didBeginContactWithNode(node:SKNode, contact:SKPhysicsContact)
  optional func didEndContactWithNode(node:SKNode, contact:SKPhysicsContact)
  
  optional func didBeginContact(contact:SKPhysicsContact)
  optional func didEndContact(contact:SKPhysicsContact)
  
  optional func touchesBegan(touches: [UITouch], withEvent event: UIEvent)
  
  
}

@objc public class Component :  ComponentBehaviour {
  private var behaviour:ComponentBehaviour { self as ComponentBehaviour }
  var isEnabled:Bool = true
  private(set) weak var node:SKNode? {
    didSet {
      if(self.node != nil) {
        self.behaviour.didAddToNode?()
        if(self.node?.scene != nil) { self.behaviour.didAddNodeToScene?() }
      }
    }
  }

  
  init() {
  }
  
  final private func setupSubscribersAfterAddedToScene() {
    NSNotificationCenter.defaultCenter().removeObserver(self)
    let center = NSNotificationCenter.defaultCenter()
    
