enchant.Scene = enchant.Class.create(enchant.Group, {
    initialize: function() {
        var game = enchant.Game.instance;
        enchant.Group.call(this);

        this.width = game.width;
        this.height = game.height;

        this.scene = this;

        this._element = document.createElement('div');
        this._element.style.width = this.width + 'px';
        this._element.style.height = this.height + 'px';
        this._element.style.position = 'absolute';
        this._element.style.overflow = 'hidden';
        this._element.style[enchant.ENV.VENDOR_PREFIX + 'TransformOrigin'] = '0 0';
        this._element.style[enchant.ENV.VENDOR_PREFIX + 'Transform'] = 'scale(' + enchant.Game.instance.scale + ')';

        this._layers = {};
        this.addLayer('Canvas');
        this.addEventListener(enchant.Event.CHILD_ADDED, this._onchildadded);
        this.addEventListener(enchant.Event.CHILD_REMOVED, this._onchildremoved);
        this.addEventListener(enchant.Event.ENTER, this._onenter);
        this.addEventListener(enchant.Event.EXIT, this._onexit);
    },
    addLayer: function(type, i) {
        var game = enchant.Game.instance;
        if (this._layers[type]) {
            return;
        }
        var layer = new enchant[type + 'Layer']();
        // TODO controll with enter, exit
        if (game.currentScene === this) {
            layer._startRendering();
        }
        this._layers[type] = layer;
        var element = layer._element;
        if (typeof i === 'number') {
            var nextSibling = this._element.childNodes.indexOf(i);
            this._element.insertBefore(element, nextSibling);
        } else {
            this._element.appendChild(element);
        }
    },
    _onchildadded: function(e) {
        var child = e.node;
        var next = e.next;
        if (next) {
            this._layers.Canvas.insertBefore(child, next);
        } else {
            this._layers.Canvas.addChild(child);
        }
    },
    _onchildremoved: function(e) {
        var child = e.node;
        this._layers.Canvas.removeChild(child);
    },
    _onenter: function() {
        for (var type in this._layers) {
            this._layers[type]._startRendering();
        }
    },
    _onexit: function() {
        for (var type in this._layers) {
            this._layers[type]._stopRendering();
        }
    }
});

@@ -746,16 +746,50 @@
 s = %7B%7D;%0A
+        this._layerPriority = %5B%5D;%0A
         
@@ -1674,16 +1674,68 @@
 bling);%0A
+            this._layerPriority.splice(i, 0, type);%0A
         
@@ -1791,33 +1791,105 @@
 ement);%0A        
-%7D
+    this._layerPriority.push(type);%0A        %7D%0A        layer.scene = this;
 %0A    %7D,%0A    _onc
@@ -2000,124 +2000,16 @@
     
-    this._layers.Canvas.insertBefore(child, next);%0A        %7D else %7B%0A            this._layers.Canvas.addChild(child);
+%7D else %7B
 %0A   
@@ -2089,56 +2089,8 @@
 de;%0A
-        this._layers.Canvas.removeChild(child);%0A
     

add layerPriority