hidden layers with track matte fix
diff --git a/extension/jsx/renderManager.jsx b/extension/jsx/renderManager.jsx
index 6f811d8..05f390f 100644
--- a/extension/jsx/renderManager.jsx
+++ b/extension/jsx/renderManager.jsx
@@ -5,13 +5,6 @@
     'use strict';
     
     var ob = {}, pendingLayers = [], pendingComps = [], destinationPath, fsDestinationPath, currentCompID, totalLayers, currentLayer, currentCompSettings, hasExpressionsFlag;
-
-    function verifyTrackLayer(layerData, comp, pos) {
-        var nextLayerInfo = comp.layers[pos + 2];
-        if (nextLayerInfo.isTrackMatte) {
-            layerData.td = 0;
-        }
-    }
     
     function restoreParents(layers) {
         
@@ -27,6 +20,12 @@
                     if (!parentData.isValid) {
                         parentData.isValid = true;
                     }
+                    if(parentData.tt){
+                        delete parentData.tt;
+                    }
+                    if(parentData.td){
+                        delete parentData.td;
+                    }
                 }
             }
         }
@@ -37,6 +36,7 @@
     
     function createLayers(comp, layers, framerate) {
         var i, len = comp.layers.length, layerInfo, layerData, prevLayerData;
+        bm_eventDispatcher.log('createLayers');
         for (i = 0; i < len; i += 1) {
             layerInfo = comp.layers[i + 1];
             layerData = bm_layerElement.prepareLayer(layerInfo, i);
@@ -51,9 +51,10 @@
                     if (prevLayerData.enabled === false) {
                         prevLayerData.render = false;
                     }
-                    prevLayerData.td = false;
+                    delete prevLayerData.td;
+                    delete layerData.tt;
                 } else if (prevLayerData.render === false) {
-                    layerData.tt = false;
+                    delete layerData.tt;
                 }
             }
             if(currentCompSettings.hiddens && layerData.enabled === false){
diff --git a/player/js/elements/ShapeElement.js b/player/js/elements/ShapeElement.js
index 2ddaa31..d763aad 100644
--- a/player/js/elements/ShapeElement.js
+++ b/player/js/elements/ShapeElement.js
@@ -29,7 +29,7 @@
     //TODO check if I can use symbol so i can set its viewBox
     this._parent.createElements.call(this);
     this.searchShapes(this.shapesData,this.viewData,this.dynamicProperties);
-    if(!this.data.hd){
+    if(!this.data.hd || this.data.td){
         this.layerElement.appendChild(this.shapesContainer);
         styleUnselectableDiv(this.layerElement);
         styleUnselectableDiv(this.shapesContainer);
diff --git a/player/js/elements/svgElements/SVGBaseElement.js b/player/js/elements/svgElements/SVGBaseElement.js
index c423230..7fb4b32 100644
--- a/player/js/elements/svgElements/SVGBaseElement.js
+++ b/player/js/elements/svgElements/SVGBaseElement.js
@@ -12,7 +12,7 @@
 createElement(BaseElement, SVGBaseElement);
 
 SVGBaseElement.prototype.appendNodeToParent = function(node) {
-    if(this.data.hd){
+    if(this.data.hd && !this.data.td){
         return;
     }
     if(this.placeholder){
diff --git a/player/js/utils/expressions/LayerInterface.js b/player/js/utils/expressions/LayerInterface.js
index 31eba90..22c92f6 100644
--- a/player/js/utils/expressions/LayerInterface.js
+++ b/player/js/utils/expressions/LayerInterface.js
@@ -72,6 +72,7 @@
             }
         });
         Object.defineProperty(_thisLayerFunction, "_name", { value:elem.data.nm });
+        Object.defineProperty(_thisLayerFunction, "name", { value:elem.data.nm });
         Object.defineProperty(_thisLayerFunction, "content", {
             get: function(){
                 return _thisLayerFunction.shapeInterface;
diff --git a/player/js/utils/expressions/ShapeInterface.js b/player/js/utils/expressions/ShapeInterface.js
index 145bdcc..8cb919a 100644
--- a/player/js/utils/expressions/ShapeInterface.js
+++ b/player/js/utils/expressions/ShapeInterface.js
@@ -132,6 +132,11 @@
                     return shape.nm;
                 }
             });
+            Object.defineProperty(interfaceFunction, 'name', {
+                get: function(){
+                    return shape.nm;
+                }
+            });
             //interfaceFunction.name = shape.nm;
             interfaceFunction.content = interfaceFunction;
             interfaceFunction.nm = shape.nm;
@@ -156,7 +161,8 @@
                     }
                     return view.o.v;
                 },
-                _name: shape.nm
+                _name: shape.nm,
+                name: shape.nm
             };
             return ob;
         }
@@ -200,7 +206,8 @@
                     }
                     return this.dashOb;
                 },
-                _name: shape.nm
+                _name: shape.nm,
+                name: shape.nm
             };
             return ob;
         }
@@ -261,6 +268,11 @@
                     return shape.nm;
                 }
             });
+            Object.defineProperty(interfaceFunction, 'name', {
+                get: function(){
+                    return shape.nm;
+                }
+            });
             return interfaceFunction;
         }
     }());
@@ -373,6 +385,11 @@
                     return shape.nm;
                 }
             });
+            Object.defineProperty(interfaceFunction, 'name', {
+                get: function(){
+                    return shape.nm;
+                }
+            });
             interfaceFunction.ty = 'tr';
             return interfaceFunction;
         }
@@ -420,6 +437,11 @@
                     return shape.nm;
                 }
             });
+            Object.defineProperty(interfaceFunction, 'name', {
+                get: function(){
+                    return shape.nm;
+                }
+            });
             return interfaceFunction;
         }
     }());
@@ -536,6 +558,11 @@
                     return shape.nm;
                 }
             });
+            Object.defineProperty(interfaceFunction, 'name', {
+                get: function(){
+                    return shape.nm;
+                }
+            });
             return interfaceFunction;
         }
     }());
@@ -557,7 +584,8 @@
                     }
                     return prop.v;
                 },
-                _name: shape.nm
+                _name: shape.nm,
+                name: shape.nm
             }
             return ob;
         }