   final func removeComponentWithKey(key:String) -> Bool {
     if let componentToRemove = self.componentContainer.components.removeValueForKey(key) {
       componentToRemove.isEnabled = false
-      componentToRemove.didRemoveFromNode?()
+      componentToRemove.behaviour.didRemoveFromNode?()
       
       return true
     }

      self.componentContainer.components[key] = component
      component.node = self
      component.isEnabled = true
      component.didAddToNode?()
      if self.scene != nil { component.didAddNodeToScene?() }
      return true
    }
    else { return false }

import SpriteKit


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