   public func didEndContact(contact: SKPhysicsContact) {
     super.internalDidEndContact(contact)
   }
-
+  
   
   public func didMoveToView(view: SKView) {
     self.physicsWorld.contactDelegate = self
   }
-
+  
   public func willMoveFromView(view: SKView) {
     
   }
   
-
-
+  
+  
 }
 
 extension SKNode {
   
   final private func internalUpdate(currentTime: NSTimeInterval) {
-    for component in self.components { if component.isEnabled { component.didUpdate?(currentTime) } }
-    for child in self.childNodes     { child.internalUpdate(currentTime) }
-  }
-
+    
+  }
+  
   final private func internalDidEvaluateActions() {
-    for component in self.components { if component.isEnabled { component.didEvaluateActions?() } }
-    for child in self.childNodes     { child.internalDidEvaluateActions()  }
+    
   }
   
   final private func internalDidSimulatePhysics() {
-    for component in self.components { if component.isEnabled { component.didSimulatePhysics?() } }
-    for child in self.childNodes     { child.internalDidSimulatePhysics()  }
-  }
-  
-  /* Constraints
-  
-  */
-
+    
+  }
+  
   final private func internalDidFinishUpdate() {
-    for component in self.components { if component.isEnabled  { component.didFinishUpdate?() } }
-    for child in self.childNodes     { child.internalDidFinishUpdate()  }
-    
-  }
-
+    
+  }
+  
   final private func tupleForContact(contact: SKPhysicsContact) -> (allComponents: [Component], allNodes: [SKNode]) {
     let nodeA = contact.bodyA.node
     let nodeB = contact.bodyB.node

  public func didEvaluateActions() {
    super.internalDidEvaluateActions()
  }

  public func didSimulatePhysics() {
    super.internalDidSimulatePhysics()
  }

  
  final private func removedChild(node:SKNode) {
    if self is SKScene {
      for component in node.components { component.internalDidRemoveNodeFromScene() }
      for childNode in node.childNodes { node.removedChild(childNode) }
    }
    else if self.parent != nil {
      for component in node.components { component.internalDidRemoveNodeFromScene() }
      for childNode in node.childNodes { node.removedChild(childNode) }
    }
    
  }
  
  
  final func _removeChildrenInArray(nodes: [AnyObject]!) {
    var nodesAsSKNodes = nodes as [SKNode]
    var childNodesToRemove = [SKNode]()
    for child in self.childNodes {
