         child.setParent(self)
     }
     
+    override func OnComponentAdded() {
+        updateRoot()
+    }
+    
     internal func updateRoot() {
         if self.root.parent != nil { self.root.removeFromParent() }
         guard let tparent = self.parent else {
-//            addToScene()
             self.gameObject.scene.addChild(root)
             return
         }

        root.position = parent.convertPoint(_position, fromNode: scene)
    }
    
    private func updateGlobalRotation() {
        _rotation = findRotation() + root.zRotation.radiansToDegrees()
    }
    
    private func updateLocalRotation() {
        localRotation = _rotation - findRotation()
    }
    
    func findRotation() -> CGFloat{
        guard let parent = self.parent else {
            return localRotation
        }
        return parent.findRotation() + localRotation
    }
    
    //MARK: Functions
    func setParent(newParent: Transform?, worldPositionStays: Bool = true) {

    }
    
    //MARK: Scale
    var lossyScale: CGPoint {
        get {
            let parentLossyScale = findParentLossyScale()
            return CGPointMake(parentLossyScale.x * scale.x, parentLossyScale.y * scale.y)
        }
    }
    
    var scale: CGPoint {
        get { return root.scaleAsPoint }
        set { root.scaleAsPoint = newValue }
    }
    
    //MARK: Position Handlers
    private func updateGlobalposition() {
        guard let newParent = root.parent,
              let scene = root.scene else { return }
