         renderer.items.append(item)
         item.didSave()
     }
-    
+
     init(view: UIView = UIView()) {
         self.view = view
     }
-    
+
     func didSave() {}
-    
+
     private func updateTransform() {
         var a: CGFloat = 1
         var b: CGFloat = 0

            updateTransform()
        }
    }
    
    var scale: CGFloat = 1 {
        didSet {
            updateTransform()
        }
    }
    
    var rotation: CGFloat = 0 {
        didSet {
            updateTransform()
        }
    }
    
    var background: Item? {
        didSet {
            oldValue?.view.removeFromSuperview()

        var d: CGFloat = 1
        var tx: CGFloat = 0
        var ty: CGFloat = 0

        // translate to position
        tx = x
        ty = y

        // scale
        a = scale
        d = scale

        // rotate
        if rotation != 0 {
            let sr = sin(rotation)
            let cr = cos(rotation)

            let ac = a
            let dc = d

            a = ac * cr
            b = dc * sr
            c = ac * -sr
            d = dc * cr
        }

        // save
        view.transform = CGAffineTransform(a: a, b: b, c: c, d: d, tx: tx, ty: ty)
    }

    func pushAction(_ action: OutAction, _ args: Any...) {
        var localArgs = args
        localArgs.insert(self.id, at: 0)
