merge with expressions branch
diff --git a/player/index.html b/player/index.html
index 7323fec..b9c2590 100644
--- a/player/index.html
+++ b/player/index.html
@@ -192,16 +192,21 @@
     //elem.style.display = 'none';
     var animData = {
         container: elem,
-        renderer: 'canvas',
+        renderer: 'svg',
         loop: true,
-        autoplay: true,
+        autoplay: false,
         rendererSettings: {
             progressiveLoad:false,
             imagePreserveAspectRatio: 'xMidYMid meet'
         },
-        path: 'exports/render/data.json'
+        path: 'exports/render/blah_blah_2.json'
     };
     anim = lottie.loadAnimation(animData);
+    anim.addEventListener('DOMLoaded', function() {
+        setTimeout(function() {
+            anim.goToAndStop(400, true);
+        }, 100)
+    })
     // anim.setSubframe(false);
 
 </script>
diff --git a/player/js/elements/CompElement.js b/player/js/elements/CompElement.js
index 8ec0e7b..efae68b 100644
--- a/player/js/elements/CompElement.js
+++ b/player/js/elements/CompElement.js
@@ -10,7 +10,7 @@
     this.initHierarchy();
     this.initRendererElement();
     this.createContainerElements();
-    this.addMasks();
+    this.createRenderableComponents();
     if(this.data.xt || !globalData.progressiveLoad){
         this.buildAllItems();
     }
diff --git a/player/js/elements/TextElement.js b/player/js/elements/TextElement.js
index 3e405d4..c4432ed 100644
--- a/player/js/elements/TextElement.js
+++ b/player/js/elements/TextElement.js
@@ -12,7 +12,7 @@
     this.initRenderable();
     this.initRendererElement();
     this.createContainerElements();
-    this.addMasks();
+    this.createRenderableComponents();
     this.createContent();
     this.hide();
     this.textAnimator.searchProperties(this.dynamicProperties);
diff --git a/player/js/elements/canvasElements/CVBaseElement.js b/player/js/elements/canvasElements/CVBaseElement.js
index 2044657..dc8040d 100644
--- a/player/js/elements/canvasElements/CVBaseElement.js
+++ b/player/js/elements/canvasElements/CVBaseElement.js
@@ -17,7 +17,7 @@
             globalData.canvasContext.globalCompositeOperation = blendModeValue;
         }
     },
-    addMasks: function(){
+    createRenderableComponents: function(){
         this.maskManager = new CVMaskElement(this.data, this);
     },
     hideElement: function(){
diff --git a/player/js/elements/helpers/RenderableDOMElement.js b/player/js/elements/helpers/RenderableDOMElement.js
index 19ef002..f2a955f 100644
--- a/player/js/elements/helpers/RenderableDOMElement.js
+++ b/player/js/elements/helpers/RenderableDOMElement.js
@@ -10,7 +10,7 @@
             this.initRenderable();
             this.initRendererElement();
             this.createContainerElements();
-            this.addMasks();
+            this.createRenderableComponents();
             this.createContent();
             this.hide();
         },
diff --git a/player/js/elements/htmlElements/HBaseElement.js b/player/js/elements/htmlElements/HBaseElement.js
index 4ea42c9..1890474 100644
--- a/player/js/elements/htmlElements/HBaseElement.js
+++ b/player/js/elements/htmlElements/HBaseElement.js
@@ -61,9 +61,11 @@
             this.maskManager = null;
         }
     },
-    addMasks: function(){
+    createRenderableComponents: function(){
         this.maskManager = new MaskElement(this.data, this, this.globalData);
     },
+    addEffects: function(){
+    },
     setMatte: function(){}
 };
 HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;
diff --git a/player/js/elements/svgElements/SVGBaseElement.js b/player/js/elements/svgElements/SVGBaseElement.js
index 02f642d..7f3a458 100644
--- a/player/js/elements/svgElements/SVGBaseElement.js
+++ b/player/js/elements/svgElements/SVGBaseElement.js
@@ -122,7 +122,6 @@
         if (this.data.bm !== 0) {
             this.setBlendMode();
         }
-        this.renderableEffectsManager = new SVGEffects(this);
 
     },
     renderElement: function() {
@@ -144,8 +143,9 @@
         }
         return this.baseElement;
     },
-    addMasks: function() {
+    createRenderableComponents: function() {
         this.maskManager = new MaskElement(this.data, this, this.globalData);
+        this.renderableEffectsManager = new SVGEffects(this);
     },
     setMatte: function(id) {
         if (!this.matteElement) {
diff --git a/player/js/mask.js b/player/js/mask.js
index 3c300c2..d7bae26 100644
--- a/player/js/mask.js
+++ b/player/js/mask.js
@@ -201,7 +201,6 @@
     }
     //pathNodes.__renderedString = pathString;
 
-
     if(viewData.lastPath !== pathString){
         var pathShapeValue = '';
         if(viewData.elem){
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index 3ef1a48..0b0a240 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -334,7 +334,7 @@
         var needsVelocity = /velocity(?![\w\d])/.test(val);
         var _needsRandom = val.indexOf('random') !== -1;
         var elemType = elem.data.ty;
-        var transform,content,effect;
+        var transform,$bm_transform,content,effect;
         var thisProperty = property;
         elem.comp.frameDuration = 1/elem.comp.globalData.frameRate;
         var inPoint = elem.data.ip/elem.comp.globalData.frameRate;
@@ -583,11 +583,12 @@
             }
             if (!transform) {
                 transform = elem.layerInterface("ADBE Transform Group");
+                $bm_transform = transform;
                 if(transform) {
                     anchorPoint = transform.anchorPoint;
-                    position = transform.position;
+                    /*position = transform.position;
                     rotation = transform.rotation;
-                    scale = transform.scale;
+                    scale = transform.scale;*/
                 }
             }