dynamic loading chars
diff --git a/extension/jsx/utils/PropertyFactory.jsx b/extension/jsx/utils/PropertyFactory.jsx
index d21c35c..0629e7b 100644
--- a/extension/jsx/utils/PropertyFactory.jsx
+++ b/extension/jsx/utils/PropertyFactory.jsx
@@ -200,7 +200,7 @@
                     if((nextKeyData.t - this.offsetTime) > frameNum && dir == 1){
                         break;
                     }
-                    if(i < len - 1 && dir == 1 || i > 0 && dir == -1){
+                    if(i < len - 1 && dir == 1){
                         i += dir;
                     }else{
                         flag = false;
diff --git a/extension/jsx/utils/effectsHelper.jsx b/extension/jsx/utils/effectsHelper.jsx
index 16def9f..0915fa5 100644
--- a/extension/jsx/utils/effectsHelper.jsx
+++ b/extension/jsx/utils/effectsHelper.jsx
@@ -24,7 +24,7 @@
         case 'ADBE Checkbox Control':
             return effectTypes.checkboxControl;
         default:
-            bm_eventDispatcher.log(name);
+            //bm_eventDispatcher.log(name);
             return '';
         }
     }
diff --git a/extension/jsx/utils/shapeHelper.jsx b/extension/jsx/utils/shapeHelper.jsx
index 17526db..73d15e4 100644
--- a/extension/jsx/utils/shapeHelper.jsx
+++ b/extension/jsx/utils/shapeHelper.jsx
@@ -223,7 +223,7 @@
     }
 
     function getBoundingBox(p1, p2, p3, p4, bounds) {
-        var pts = [p1, p4];
+        var pts = [p1,p4];
         getTPos(p1, p2, p3, p4, pts);
 
         var minX = bounds.l, minY = bounds.t, maxX = bounds.r, maxY = bounds.b, pt;
@@ -279,9 +279,9 @@
             var points = shapeProp.v;
             var k, kLen = points.v.length;
             for (k = 0; k < kLen - 1; k += 1) {
-                getBoundingBox(matr.applyToPointArray(points.v[k][0], points.v[k][1]), matr.applyToPointArray(points.o[k][0], points.o[k][1]), matr.applyToPointArray(points.i[k + 1][0], points.i[k + 1][1]), matr.applyToPointArray(points.v[k + 1][0], points.v[k + 1][1]), bounds);
+                getBoundingBox(matr.applyToPointArray(points.v[k][0], points.v[k][1]), matr.applyToPointArray(points.o[k][0]+points.v[k][0], points.o[k][1]+points.v[k][1]), matr.applyToPointArray(points.i[k + 1][0]+points.v[k + 1][0], points.i[k + 1][1]+points.v[k + 1][1]), matr.applyToPointArray(points.v[k + 1][0], points.v[k + 1][1]), bounds);
             }
-            getBoundingBox(matr.applyToPointArray(points.v[k][0], points.v[k][1]), matr.applyToPointArray(points.o[k][0], points.o[k][1]), matr.applyToPointArray(points.i[0][0], points.i[0][1]), matr.applyToPointArray(points.v[0][0], points.v[0][1]), bounds);
+            getBoundingBox(matr.applyToPointArray(points.v[k][0], points.v[k][1]), matr.applyToPointArray(points.o[k][0]+points.v[k][0], points.o[k][1]+points.v[k][1]), matr.applyToPointArray(points.i[0][0]+points.v[0][0], points.i[0][1]+points.v[0][1]), matr.applyToPointArray(points.v[0][0], points.v[0][1]), bounds);
         }
         len = strokes.length;
         arr = [];
diff --git a/extension/jsx/utils/textAnimatorHelper.jsx b/extension/jsx/utils/textAnimatorHelper.jsx
index a567cf2..6afb248 100644
--- a/extension/jsx/utils/textAnimatorHelper.jsx
+++ b/extension/jsx/utils/textAnimatorHelper.jsx
@@ -37,6 +37,7 @@
             ob.t = 0;
             ob.xe = bm_keyframeHelper.exportKeyframes(advancedProperty.property('ADBE Text Levels Max Ease'), frameRate);
             ob.ne = bm_keyframeHelper.exportKeyframes(advancedProperty.property('ADBE Text Levels Min Ease'), frameRate);
+            ob.a = bm_keyframeHelper.exportKeyframes(advancedProperty.property('ADBE Text Selector Max Amount'), frameRate);
             ob.b = advancedProperty.property("ADBE Text Range Type2").value;
             ob.rn = advancedProperty.property("ADBE Text Randomize Order").value;
             ob.sh = advancedProperty.property("ADBE Text Range Shape").value;
diff --git a/player/index.html b/player/index.html
index 6496b5f..a2ff73a 100644
--- a/player/index.html
+++ b/player/index.html
@@ -12,8 +12,8 @@
         }
         #bodymovin{
             background-color:#000;
-            width:533px;
-            height:300px;
+            width:500px;
+            height:500px;
             display:block;
             overflow: hidden;
             transform: translate3d(0,0,0);
@@ -21,6 +21,10 @@
             opacity: 1;
         }
 
+        rect{
+            opacity: .5!important;
+        }
+
     </style>
     <!-- build:js bodymovin.js -->
      <script src="js/main.js"></script>
@@ -66,24 +70,15 @@
     <script src="js/elements/htmlElements/HCompElement.js"></script>
     <script src="js/elements/htmlElements/HShapeElement.js"></script>
     <script src="js/elements/htmlElements/HTextElement.js"></script>
+    <script src="js/elements/htmlElements/HImageElement.js"></script>
     <script src="js/animation/AnimationManager.js"></script>
     <script src="js/animation/AnimationItem.js"></script>
      <script src="js/module.js"></script>
     <!-- endbuild -->
     <!-- <script src="bodymovin.js"></script> -->
-    <script src="exports/splitted/data.js"></script>
-    <script src="exports/splitted/data_0.js"></script>
-    <script src="exports/splitted/data_1.js"></script>
-    <script src="exports/splitted/data_2.js"></script>
-    <script src="exports/splitted/data_3.js"></script>
-    <script src="exports/splitted/data_4.js"></script>
-    <script src="exports/splitted/data_5.js"></script>
-    <script src="exports/splitted/data_6.js"></script>
-    <script src="exports/splitted/data_7.js"></script>
-    <script src="exports/splitted/data_8.js"></script>
 </head>
 <body>
-<canvas id="cvs" width="100" height="100"></canvas>
+<canvas id="cvs" width="100" height="100" style="position: absolute;top:0;left: 0"></canvas>
 <div id="bodymovin"></div>
 
 <script>
@@ -94,25 +89,28 @@
         loop: true,
         prerender: false,
         autoplay: true,
-        animationData: bmsmd
+        path: 'exports/splitted/data.json'
     };
     var anim = bodymovin.loadAnimation(animData);
-    setTimeout(function(){
-        anim.includeLayers(bmsmd0);
-        anim.includeLayers(bmsmd1);
-        anim.includeLayers(bmsmd2);
-        anim.includeLayers(bmsmd3);
-        anim.includeLayers(bmsmd4);
-        anim.includeLayers(bmsmd5);
-        anim.includeLayers(bmsmd6);
-        anim.includeLayers(bmsmd7);
-        anim.includeLayers(bmsmd8);
-    },100);
-    /*anim.addEventListener('bm:config_ready', configReady);
-    anim.addEventListener('bm:data_ready', dataReady);
-    anim.addEventListener('bm:enterFrame', enterFrame);*/
+
+    var secondPart = {"assets":[{"id":"comp_1","layers":[{"ddd":0,"ind":0,"ty":5,"nm":"90","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[378,462,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"t":{"d":{"s":71,"f":"MongolianBaiti","t":"90","j":0,"tr":0,"fc":[255,0,0]},"p":{},"m":{"g":1,"a":{"k":[0,0]}},"a":[]},"ip":0,"op":750,"st":0},{"ddd":0,"ind":1,"ty":5,"nm":"67","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[224,394,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"t":{"d":{"s":71,"f":"Impact","t":"67","j":0,"tr":0,"fc":[0,121,255]},"p":{},"m":{"g":1,"a":{"k":[0,0]}},"a":[]},"ip":0,"op":750,"st":0},{"ddd":0,"ind":2,"ty":5,"nm":"34","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[70,346,0]},"a":{"k":[0,0,0]},"s":{"k":[100,100,100]}},"t":{"d":{"s":71,"f":"GrafolitaScript-Medium","t":"34","j":0,"tr":0,"fc":[255,0,0]},"p":{},"m":{"g":1,"a":{"k":[0,0]}},"a":[]},"ip":0,"op":750,"st":0},{"ddd":0,"ind":3,"ty":1,"nm":"Medium Red Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[300.019,461.73,0]},"a":{"k":[125,125,0]},"s":{"k":[64,100,100]}},"sw":250,"sh":250,"sc":"#c55252","ip":0,"op":750,"st":0},{"ddd":0,"ind":4,"ty":1,"nm":"Medium Magenta Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[198.5,435.5,0]},"a":{"k":[125,125,0]},"s":{"k":[100,100,100]}},"sw":250,"sh":250,"sc":"#0d1b70","ip":0,"op":750,"st":0},{"ddd":0,"ind":5,"ty":1,"nm":"Medium Magenta Solid 1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[444.341,537.73,0]},"a":{"k":[125,125,0]},"s":{"k":[100,100,100]}},"sw":250,"sh":250,"sc":"#0d1b70","ip":0,"op":750,"st":0}]}],"fonts":{"list":[{"fName":"GrafolitaScript-Medium","fFamily":"Grafolita Script","fStyle":"Medium","ascent":77.6046752929688},{"fName":"Impact","fFamily":"Impact","fStyle":"Regular","ascent":79.0985107421875},{"fName":"MongolianBaiti","fFamily":"Mongolian Baiti","fStyle":"Regular","ascent":69.3984985351563}]},"v":"3.1.6","layers":[{"ddd":0,"ind":0,"ty":0,"nm":"_texto_box 2","refId":"comp_1","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[250,-58,0]},"a":{"k":[250,250,0]},"s":{"k":[100,100,100]}},"w":500,"h":500,"ip":111,"op":861,"st":111}],"ip":0,"op":750,"fr":25,"w":500,"h":500,"chars":[{"ch":"3","size":71,"style":"Medium","w":49.5,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[10.574,20.444],[46.426,11.481],[35.348,-15.409],[29.507,-16.818],[29.709,-17.524],[46.124,-25.983],[38.269,-48.843],[22.156,-47.535],[13.092,-39.377],[16.214,-28.904],[20.343,-29.306],[18.027,-33.334],[22.155,-44.714],[38.269,-39.78],[29.608,-20.443],[20.947,-14.904],[21.048,-11.279],[39.377,-7.251],[32.227,16.315],[8.057,9.769],[8.963,-2.719],[9.164,-6.143],[3.021,1.209]],"o":[[33.838,20.444],[46.426,-12.487],[29.91,-16.718],[29.507,-17.422],[37.464,-21.451],[46.124,-43.808],[26.083,-48.843],[15.61,-42.902],[13.092,-31.623],[19.437,-28.098],[18.732,-31.018],[18.027,-40.686],[33.938,-44.714],[38.269,-24.774],[21.249,-16.415],[20.947,-12.286],[27.997,-9.467],[39.377,10.574],[14.099,16.315],[8.057,-0.302],[10.474,-5.035],[5.136,-3.021],[3.021,13.999]],"v":[[21.249,20.444],[46.426,-0.906],[30.313,-16.617],[29.507,-17.12],[30.112,-17.725],[46.124,-35.147],[30.212,-48.843],[19.034,-45.319],[13.092,-35.651],[19.437,-28.098],[20.343,-29.306],[18.027,-35.449],[27.795,-44.714],[38.269,-33.536],[21.652,-17.825],[20.947,-13.293],[21.35,-10.373],[39.377,2.719],[23.465,16.315],[8.057,2.518],[10.474,-5.035],[9.164,-6.143],[3.021,5.64]]}},"nm":"3"}],"nm":"3"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-10.675,0],[0,12.387],[5.035,1.208],[0,0.302],[-0.403,0.201],[0,9.164],[8.057,0],[3.122,-2.216],[0,-3.726],[-3.223,-0.806],[0,0],[0,2.115],[-5.64,0],[0,-6.244],[7.956,-2.618],[0,-1.611],[-0.302,-0.906],[0,-9.97],[8.762,0],[0,7.251],[-1.511,2.316],[0,0],[0,-4.431]],"o":[[12.589,0],[0,-11.581],[-0.403,-0.101],[0,-0.302],[7.352,-3.726],[0,-8.661],[-4.129,0],[-3.424,2.417],[0,4.028],[0,0],[-1.611,-1.712],[0,-5.237],[6.143,0],[0,8.762],[-0.403,1.41],[0,1.007],[6.647,0.906],[0,7.855],[-9.366,0],[0,-2.82],[0,0],[-4.028,3.122],[0,8.359]],"v":[[70.749,20.444],[95.926,-0.906],[79.813,-16.617],[79.007,-17.12],[79.611,-17.725],[95.624,-35.147],[79.712,-48.843],[68.533,-45.319],[62.592,-35.651],[68.936,-28.098],[69.843,-29.306],[67.526,-35.449],[77.295,-44.714],[87.769,-33.536],[71.152,-17.825],[70.447,-13.293],[70.85,-10.373],[88.876,2.719],[72.964,16.315],[57.556,2.518],[59.973,-5.035],[58.664,-6.143],[52.521,5.64]]}},"nm":"3"}],"nm":"3"}],"bounds":{"l":3,"t":-49,"b":21,"r":96}},"fFamily":"Grafolita Script"},{"ch":"4","size":71,"style":"Medium","w":50.3,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[54.987,-4.633],[44.312,-6.848],[42.801,-33.334],[40.687,-47.937],[11.884,-19.135],[7.15,-0.403],[22.961,-0.604],[28.198,15.107],[28.601,21.149],[35.248,19.537],[37.161,7.855],[49.145,-2.115]],"o":[[49.448,-5.942],[40.585,-20.645],[43.808,-46.728],[26.386,-38.974],[5.338,-3.928],[16.013,0],[28.702,8.56],[28.198,19.739],[31.924,21.149],[36.96,14.603],[43.909,-2.014],[54.684,-2.115]],"v":[[54.987,-4.633],[38.974,-7.352],[45.923,-45.016],[37.766,-48.138],[4.935,-6.546],[8.963,1.007],[29.91,-1.108],[28.198,17.725],[30.212,21.149],[36.96,18.329],[38.269,-1.712],[54.684,-2.115]]}},"nm":"4"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[27.09,-7.956],[13.998,-7.754],[9.769,-7.755],[27.292,-32.932],[35.449,-40.585],[36.658,-40.284],[36.456,-38.571],[32.63,-20.041]],"o":[[19.739,-7.956],[9.869,-7.553],[15.509,-17.222],[34.946,-40.284],[36.356,-40.585],[36.658,-39.377],[34.442,-29.407],[29.004,-7.956]],"v":[[25.177,-7.956],[9.869,-7.553],[9.769,-7.755],[34.14,-39.478],[35.953,-40.585],[36.658,-39.78],[36.255,-37.665],[30.817,-7.855]]}},"nm":"4"}],"nm":"4"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[5.338,0.504],[-3.122,11.682],[2.921,0.201],[6.949,-12.589],[-1.813,-1.41],[-6.949,0.504],[0,-2.618],[-1.611,0],[-1.712,1.208],[-1.108,9.567],[-5.539,0]],"o":[[-5.539,-1.309],[1.611,-13.293],[-2.115,-1.712],[-11.38,9.164],[0.403,2.618],[7.05,-1.007],[-1.208,9.668],[0,2.014],[1.712,0],[0,-3.726],[5.64,-0.302],[0,0]],"v":[[105.286,-4.633],[89.273,-7.352],[96.222,-45.016],[88.065,-48.138],[55.234,-6.546],[59.262,1.007],[80.209,-1.108],[78.497,17.725],[80.511,21.149],[87.259,18.329],[88.568,-1.712],[104.984,-2.115]]}},"nm":"4"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[1.913,0],[4.129,-0.201],[0,0],[-6.848,6.546],[-0.504,0],[0,-0.504],[0.201,-0.906],[1.813,-12.186]],"o":[[-5.438,0],[0,0],[5.74,-9.467],[0.806,-0.806],[0.403,0],[0,0.403],[-1.813,8.258],[-1.813,-0.101]],"v":[[75.476,-7.956],[60.168,-7.553],[60.068,-7.755],[84.439,-39.478],[86.252,-40.585],[86.957,-39.78],[86.554,-37.665],[81.116,-7.855]]}},"nm":"4"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"}],"nm":"4"}],"bounds":{"l":4,"t":-49,"b":22,"r":106}},"fFamily":"Grafolita Script"},{"ch":"6","size":71,"style":"Regular","w":54.15,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[50.114,-67.106],[44.515,-76.139],[32.878,-80.615],[18.888,-79.907],[9.309,-74.951],[4.207,-66.284],[3.516,-53.645],[3.516,-33.301],[3.669,-18.701],[5.363,-9.757],[11.653,-2.149],[22.77,1.514],[36.075,0.879],[45.012,-3.442],[49.821,-10.53],[50.879,-20.052],[50.879,-31.885],[50.504,-40.235],[47.248,-48.047],[38.525,-52.93],[29.639,-52.4],[24.251,-48.698],[23.242,-59.18],[23.291,-64.111],[23.86,-66.861],[25.993,-68.408],[29.158,-68.083],[30.948,-65.975],[31.152,-61.735],[50.879,-58.057]],"o":[[47.054,-73.616],[37.419,-79.72],[22.852,-80.615],[12.019,-77.075],[5.338,-69.287],[3.654,-59.936],[3.516,-44.238],[3.516,-24.577],[4.288,-12.647],[9.041,-4.256],[18.424,0.781],[32.34,1.514],[42.488,-1.661],[48.69,-8.032],[50.667,-15.934],[50.879,-25.586],[50.879,-36.54],[49.007,-45.703],[41.715,-51.953],[32.047,-52.93],[25.733,-50.285],[23.242,-46.582],[23.242,-62.142],[23.487,-66.065],[25.163,-68.098],[28.206,-68.408],[30.558,-66.78],[31.111,-64.054],[31.152,-58.057],[50.879,-63.005]],"v":[[48.584,-70.361],[40.967,-77.93],[27.344,-80.615],[15.454,-78.491],[7.324,-72.119],[3.931,-63.11],[3.516,-44.238],[3.516,-33.301],[3.979,-15.674],[7.202,-7.007],[15.039,-0.684],[28.076,1.514],[39.282,-0.391],[46.851,-5.737],[50.244,-13.232],[50.879,-25.586],[50.879,-31.885],[49.756,-42.969],[44.482,-50],[34.912,-52.93],[27.686,-51.343],[23.242,-46.582],[23.242,-59.18],[23.389,-65.088],[24.512,-67.48],[27.002,-68.408],[29.858,-67.432],[31.03,-65.015],[31.152,-58.057],[50.879,-58.057]]}},"nm":"6"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[31.152,-18.604],[30.696,-12.72],[27.994,-10.645],[24.748,-11.182],[23.242,-15.608],[23.242,-33.398],[23.559,-38.24],[25.83,-40.723],[29.606,-40.201],[31.152,-36.197]],"o":[[31.152,-14.958],[28.873,-11.06],[25.748,-10.645],[23.543,-13.33],[23.242,-19.092],[23.242,-36.295],[24.829,-40.226],[28.596,-40.723],[30.843,-38.118],[31.152,-33.398]],"v":[[31.152,-18.604],[29.785,-11.89],[27.148,-10.645],[24.146,-12.256],[23.242,-19.092],[23.242,-33.398],[24.194,-39.233],[27.197,-40.723],[30.225,-39.16],[31.152,-33.398]]}},"nm":"6"}],"nm":"6"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[1.53,3.255],[3.548,1.791],[5.534,0],[3.434,-1.416],[1.985,-2.832],[0.276,-3.174],[0,-9.407],[0,0],[-0.31,-3.027],[-1.839,-2.75],[-3.386,-1.465],[-5.306,0],[-3.207,1.27],[-1.839,2.295],[-0.423,2.702],[0,5.534],[0,0],[0.748,2.734],[2.766,1.953],[3.613,0],[1.953,-1.057],[1.009,-2.116],[0,0],[-0.098,0.977],[-0.652,0.619],[-1.009,0],[-0.7,-0.651],[-0.082,-0.96],[0,-3.678],[0,0]],"o":[[-1.53,-3.255],[-3.548,-1.79],[-4.492,0],[-3.435,1.416],[-1.986,2.832],[-0.277,3.174],[0,0],[0,8.724],[0.309,3.027],[1.839,2.751],[3.385,1.465],[4.264,0],[3.206,-1.27],[1.839,-2.295],[0.423,-2.702],[0,0],[0,-4.655],[-0.749,-2.734],[-2.767,-1.953],[-2.865,0],[-1.953,1.058],[0,0],[0,-2.962],[0.098,-0.977],[0.651,-0.618],[1.204,0],[0.7,0.652],[0.081,0.961],[0,0],[0,-4.948]],"v":[[102.734,-70.361],[95.117,-77.93],[81.494,-80.615],[69.604,-78.491],[61.475,-72.119],[58.081,-63.11],[57.666,-44.238],[57.666,-33.301],[58.13,-15.674],[61.353,-7.007],[69.189,-0.684],[82.227,1.514],[93.433,-0.391],[101.001,-5.737],[104.395,-13.232],[105.029,-25.586],[105.029,-31.885],[103.906,-42.969],[98.633,-50],[89.063,-52.93],[81.836,-51.343],[77.393,-46.582],[77.393,-59.18],[77.539,-65.088],[78.662,-67.48],[81.152,-68.408],[84.009,-67.432],[85.181,-65.015],[85.303,-58.057],[105.029,-58.057]]}},"nm":"6"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0.911,-0.83],[0.846,0],[0.602,1.074],[0,3.484],[0,0],[-0.635,0.993],[-1.367,0],[-0.619,-1.041],[0,-2.799]],"o":[[0,3.646],[-0.912,0.83],[-1.4,0],[-0.603,-1.074],[0,0],[0,-2.897],[0.635,-0.993],[1.399,0],[0.618,1.042],[0,0]],"v":[[85.303,-18.604],[83.936,-11.89],[81.299,-10.645],[78.296,-12.256],[77.393,-19.092],[77.393,-33.398],[78.345,-39.233],[81.348,-40.723],[84.375,-39.16],[85.303,-33.398]]}},"nm":"6"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"}],"nm":"6"}],"bounds":{"l":3,"t":-81,"b":2,"r":106}},"fFamily":"Impact"},{"ch":"7","size":71,"style":"Regular","w":40.97,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.586,-79.053],[0.586,-64.844],[20.093,-64.844],[6.055,0],[25.684,0],[38.281,-61.829],[38.281,-79.053]],"o":[[0.586,-79.053],[0.586,-64.844],[20.093,-64.844],[6.055,0],[25.684,0],[38.281,-61.829],[38.281,-79.053]],"v":[[0.586,-79.053],[0.586,-64.844],[20.093,-64.844],[6.055,0],[25.684,0],[38.281,-61.829],[38.281,-79.053]]}},"nm":"7"}],"nm":"7"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[41.553,-79.053],[41.553,-64.844],[61.06,-64.844],[47.021,0],[66.65,0],[79.248,-61.829],[79.248,-79.053]]}},"nm":"7"}],"nm":"7"}],"bounds":{"l":0,"t":-80,"b":0,"r":80}},"fFamily":"Impact"},{"ch":"9","size":71,"style":"Regular","w":50,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[8.057,1.367],[12.541,1.123],[18.848,-0.553],[24.633,-3.451],[29.996,-7.308],[35.831,-13.11],[40.787,-20.426],[44.116,-28.54],[45.703,-37.239],[45.19,-47.2],[41.699,-56.69],[35.767,-63.794],[27.734,-67.578],[18.701,-66.894],[11.451,-62.369],[6.437,-55.411],[3.955,-46.81],[4.402,-38.192],[7.406,-31.266],[12.263,-26.481],[18.586,-24.121],[29.622,-25.765],[31.087,-18.164],[24.544,-9.367],[19.661,-4.89],[14.152,-1.969],[7.746,-0.537],[5.273,1.367]],"o":[[10.335,1.367],[16.805,0.147],[22.754,-2.376],[28.247,-5.925],[33.869,-10.889],[39.314,-17.896],[43.196,-25.765],[45.386,-34.302],[45.703,-43.782],[43.14,-53.776],[37.989,-61.768],[30.591,-66.822],[21.516,-67.578],[13.623,-64.16],[7.837,-57.942],[4.451,-49.714],[3.955,-40.886],[6.193,-33.342],[10.466,-27.815],[16.398,-24.592],[25,-24.121],[33.464,-23.389],[26.107,-11.231],[21.354,-6.209],[16.08,-2.775],[10.017,-0.862],[5.273,-0.439],[5.273,1.367]],"v":[[8.057,1.367],[14.673,0.635],[20.801,-1.465],[26.44,-4.688],[31.689,-8.838],[37.573,-15.503],[41.992,-23.096],[44.751,-31.421],[45.703,-40.234],[44.165,-50.488],[39.844,-59.229],[33.179,-65.308],[24.609,-67.578],[16.162,-65.527],[9.644,-60.156],[5.444,-52.563],[3.955,-43.848],[5.298,-35.767],[8.936,-29.541],[14.331,-25.537],[20.898,-24.121],[34.766,-29.053],[27.637,-13.379],[22.949,-7.788],[17.871,-3.833],[12.085,-1.416],[5.273,-0.439],[5.273,1.367]]}},"nm":"9"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[33.952,-31.437],[31.104,-30.005],[28.199,-29.052],[25.521,-28.564],[21.224,-29.085],[16.951,-32.592],[14.03,-38.346],[12.646,-45.979],[12.947,-53.711],[14.958,-59.236],[18.132,-62.776],[22.102,-64.404],[26.285,-64.07],[29.768,-61.832],[32.487,-58.252],[34.513,-53.784],[35.816,-48.95],[36.426,-44.221],[36.133,-36.897]],"o":[[32.063,-30.428],[29.15,-29.321],[26.343,-28.662],[22.917,-28.564],[18.229,-31.168],[14.836,-36.206],[12.923,-43.293],[12.646,-51.448],[14.152,-57.617],[16.976,-61.808],[20.736,-64.079],[24.967,-64.404],[28.694,-62.735],[31.657,-59.553],[33.919,-55.322],[35.456,-50.562],[36.304,-45.728],[36.426,-40.283],[34.798,-32.014]],"v":[[33.008,-30.933],[30.127,-29.663],[27.271,-28.857],[24.805,-28.564],[19.727,-30.127],[15.894,-34.399],[13.477,-40.82],[12.646,-48.877],[13.55,-55.664],[15.967,-60.522],[19.434,-63.428],[23.535,-64.404],[27.49,-63.403],[30.713,-60.693],[33.203,-56.787],[34.985,-52.173],[36.06,-47.339],[36.426,-42.822],[35.547,-32.666]]}},"nm":"9"}],"nm":"9"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[0,0],[-2.132,0.488],[-1.953,0.912],[-1.807,1.237],[-1.693,1.53],[-1.742,2.393],[-1.205,2.67],[-0.635,2.881],[0,2.995],[1.025,3.288],[1.855,2.539],[2.588,1.514],[3.125,0],[2.539,-1.367],[1.807,-2.213],[0.993,-2.848],[0,-2.962],[-0.896,-2.425],[-1.53,-1.725],[-2.068,-0.944],[-2.312,0],[-5.144,3.288],[3.45,-4.785],[1.595,-1.579],[1.79,-1.057],[2.067,-0.553],[2.473,-0.098],[0,0]],"o":[[2.278,0],[2.132,-0.488],[1.953,-0.911],[1.807,-1.237],[2.18,-2.051],[1.741,-2.393],[1.204,-2.669],[0.635,-2.881],[0,-3.548],[-1.025,-3.288],[-1.855,-2.539],[-2.588,-1.514],[-3.093,0],[-2.539,1.367],[-1.807,2.214],[-0.993,2.849],[0,2.962],[0.895,2.425],[1.53,1.726],[2.067,0.945],[4.102,0],[-1.302,5.664],[-1.53,2.148],[-1.595,1.579],[-1.791,1.058],[-2.068,0.554],[0,0],[0,0]],"v":[[58.057,1.367],[64.673,0.635],[70.801,-1.465],[76.44,-4.688],[81.689,-8.838],[87.573,-15.503],[91.992,-23.096],[94.751,-31.421],[95.703,-40.234],[94.165,-50.488],[89.844,-59.229],[83.179,-65.308],[74.609,-67.578],[66.162,-65.527],[59.644,-60.156],[55.444,-52.563],[53.955,-43.848],[55.298,-35.767],[58.936,-29.541],[64.331,-25.537],[70.898,-24.121],[84.766,-29.053],[77.637,-13.379],[72.949,-7.788],[67.871,-3.833],[62.085,-1.416],[55.273,-0.439],[55.273,1.367]]}},"nm":"9"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[0.944,-0.504],[0.977,-0.342],[0.928,-0.195],[0.716,0],[1.497,1.042],[1.057,1.807],[0.553,2.474],[0,2.898],[-0.603,1.953],[-1.009,1.286],[-1.302,0.652],[-1.433,0],[-1.205,-0.667],[-0.945,-1.139],[-0.716,-1.465],[-0.472,-1.611],[-0.244,-1.611],[0,-1.399],[0.586,-4.231]],"o":[[-0.945,0.505],[-0.977,0.342],[-0.928,0.195],[-1.888,0],[-1.498,-1.041],[-1.058,-1.807],[-0.554,-2.473],[0,-2.571],[0.602,-1.953],[1.009,-1.286],[1.302,-0.651],[1.432,0],[1.204,0.668],[0.944,1.14],[0.716,1.465],[0.471,1.611],[0.244,1.611],[0,2.539],[-0.749,0.652]],"v":[[83.008,-30.933],[80.127,-29.663],[77.271,-28.857],[74.805,-28.564],[69.727,-30.127],[65.894,-34.399],[63.477,-40.82],[62.646,-48.877],[63.55,-55.664],[65.967,-60.522],[69.434,-63.428],[73.535,-64.404],[77.49,-63.403],[80.713,-60.693],[83.203,-56.787],[84.985,-52.173],[86.06,-47.339],[86.426,-42.822],[85.547,-32.666]]}},"nm":"9"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"}],"nm":"9"}],"bounds":{"l":3,"t":-68,"b":2,"r":96}},"fFamily":"Mongolian Baiti"},{"ch":"0","size":71,"style":"Regular","w":50,"data":{"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[4.199,-23.152],[8.137,-11.164],[14.282,-2.897],[21.907,1.172],[27.36,0.952],[31.511,-0.537],[35.343,-3.011],[38.655,-6.201],[41.943,-11.157],[44.409,-17.253],[45.866,-23.893],[46.436,-31.135],[43.912,-53.401],[30.24,-67.578],[21.053,-67.155],[15.699,-64.331],[11.311,-59.863],[7.877,-54.215],[3.613,-40.332]],"o":[[6.543,-14.787],[12.076,-5.175],[19.262,0.357],[26.009,1.172],[30.159,0.074],[34.115,-2.099],[37.654,-5.094],[40.836,-9.228],[43.701,-15.161],[45.483,-21.614],[46.321,-28.646],[46.436,-44.71],[34.797,-64.99],[23.047,-67.578],[17.375,-65.462],[12.671,-61.499],[8.902,-56.153],[4.752,-46.826],[3.613,-27.735]],"v":[[5.371,-18.97],[10.156,-8.105],[16.772,-1.27],[24.707,1.172],[28.76,0.513],[32.813,-1.318],[36.499,-4.053],[39.502,-7.373],[42.822,-13.159],[44.946,-19.434],[46.094,-26.27],[46.436,-33.74],[38.867,-59.814],[25.195,-67.578],[19.214,-66.309],[14.185,-62.915],[10.107,-58.008],[7.031,-52.197],[3.613,-32.715]]}},"nm":"0"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[13.289,-37.158],[14.03,-45.703],[16.471,-57.478],[22.509,-64.355],[29.346,-63.566],[33.512,-58.008],[36.865,-43.441],[36.678,-26.22],[35.367,-15.039],[33.512,-8.773],[31.201,-5.102],[28.532,-2.84],[25.733,-1.904],[20.931,-2.742],[16.715,-8.381],[14.241,-17.008],[13.184,-27.588]],"o":[[13.712,-42.822],[15.169,-53.613],[20.247,-62.979],[27.457,-64.355],[32.276,-60.408],[36.084,-49.739],[36.865,-30.745],[35.929,-18.408],[34.131,-10.352],[32.015,-6.169],[29.443,-3.442],[26.643,-2.091],[22.738,-1.904],[17.936,-6.095],[14.892,-13.948],[13.395,-23.909],[13.184,-34.326]],"v":[[13.501,-39.99],[14.453,-48.633],[18.359,-60.229],[25.146,-64.355],[30.811,-61.987],[34.521,-54.785],[36.865,-35.889],[36.304,-22.314],[34.619,-12.207],[32.764,-7.471],[30.322,-4.272],[27.588,-2.466],[24.854,-1.904],[19.434,-4.419],[15.771,-11.279],[13.818,-20.459],[13.184,-31.494]]}},"nm":"0"}],"nm":"0"},{"ty":"gr","it":[{"ind":0,"ty":"sh","closed":true,"ks":{"k":{"i":[[-1.172,-4.182],[-2.019,-3.059],[-2.49,-1.627],[-2.8,0],[-1.4,0.439],[-1.302,0.781],[-1.156,1.042],[-0.847,1.172],[-0.879,2.002],[-0.537,2.181],[-0.228,2.377],[0,2.605],[5.045,6.413],[5.045,0],[1.839,-0.846],[1.514,-1.416],[1.204,-1.855],[0.846,-2.018],[0,-7.617]],"o":[[1.172,4.183],[1.92,2.93],[2.49,1.627],[1.302,0],[1.399,-0.439],[1.302,-0.781],[1.155,-1.041],[1.334,-1.855],[0.879,-2.002],[0.537,-2.18],[0.227,-2.376],[0,-10.97],[-4.07,-5.176],[-2.148,0],[-1.839,0.847],[-1.514,1.416],[-1.205,1.855],[-2.279,5.371],[0,4.98]],"v":[[55.371,-18.97],[60.156,-8.105],[66.772,-1.27],[74.707,1.172],[78.76,0.513],[82.813,-1.318],[86.499,-4.053],[89.502,-7.373],[92.822,-13.159],[94.946,-19.434],[96.094,-26.27],[96.436,-33.74],[88.867,-59.814],[75.195,-67.578],[69.214,-66.309],[64.185,-62.915],[60.107,-58.008],[57.031,-52.197],[53.613,-32.715]]}},"nm":"0"},{"ind":1,"ty":"sh","closed":true,"ks":{"k":{"i":[[-0.212,2.832],[-0.423,2.93],[-1.888,2.751],[-2.637,0],[-1.465,-1.579],[-1.009,-3.223],[0,-7.552],[0.374,-3.906],[0.748,-2.832],[0.748,-1.302],[0.879,-0.83],[0.944,-0.374],[0.879,0],[1.497,1.677],[0.944,2.898],[0.423,3.451],[0,3.906]],"o":[[0.211,-2.832],[0.716,-4.98],[1.888,-2.75],[2.311,0],[1.465,1.579],[1.563,5.046],[0,5.144],[-0.375,3.906],[-0.488,1.855],[-0.749,1.302],[-0.879,0.83],[-0.945,0.375],[-2.116,0],[-1.498,-1.676],[-0.879,-2.669],[-0.423,-3.45],[0,-2.832]],"v":[[63.501,-39.99],[64.453,-48.633],[68.359,-60.229],[75.146,-64.355],[80.811,-61.987],[84.521,-54.785],[86.865,-35.889],[86.304,-22.314],[84.619,-12.207],[82.764,-7.471],[80.322,-4.272],[77.588,-2.466],[74.854,-1.904],[69.434,-4.419],[65.771,-11.279],[63.818,-20.459],[63.184,-31.494]]}},"nm":"0"},{"ty":"mm","mm":1,"nm":"Merge Paths 1"}],"nm":"0"}],"bounds":{"l":3,"t":-68,"b":2,"r":97}},"fFamily":"Mongolian Baiti"}]};
+
     //anim.play();
     //anim.playSegments([0,40],true);
+
+    setTimeout(function(){
+        anim.includeLayers(secondPart);
+    },100);
+
+    /*var stats = new Stats();
+    stats.setMode( 0 ); // 0: fps, 1: ms, 2: mb
+
+    // align top-left
+    stats.domElement.style.position = 'absolute';
+    stats.domElement.style.left = '0px';
+    stats.domElement.style.top = '0px';
+
+    document.body.appendChild( stats.domElement );*/
 </script>
 </body>
 </html>
diff --git a/player/js/animation/AnimationItem.js b/player/js/animation/AnimationItem.js
index 1f0563a..a45cd98 100644
--- a/player/js/animation/AnimationItem.js
+++ b/player/js/animation/AnimationItem.js
@@ -154,12 +154,18 @@
             }
         }
     }
+    if(data.chars || data.fonts){
+        this.renderer.globalData.fontManager.addChars(data.chars);
+        this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);
+    }
+
     if(data.assets){
         len = data.assets.length;
         for(i = 0; i < len; i += 1){
             this.animationData.assets.push(data.assets[i]);
         }
     }
+
     dataManager.completeData(this.animationData,this.renderer.globalData.fontManager);
     this.renderer.includeLayers(data.layers);
     this.renderer.buildStage(this.container, this.layers);
@@ -226,10 +232,10 @@
     this.firstFrame = Math.round(this.animationData.ip);
     this.frameMult = this.animationData.fr / 1000;
     /*
-    this.firstFrame = 761;
+    this.firstFrame = 90;
     this.totalFrames = 1;
     this.animationData.tf = 1;
-    //this.frameMult = 10000/1000;
+    //this.frameMult = 1/100;
     //*/////
     this.trigger('config_ready');
     this.loadSegments();
diff --git a/player/js/animation/AnimationManager.js b/player/js/animation/AnimationManager.js
index d939814..1ffb792 100644
--- a/player/js/animation/AnimationManager.js
+++ b/player/js/animation/AnimationManager.js
@@ -65,6 +65,9 @@
     }
 
     function resume(nowTime) {
+
+        //nowTime = Date.now();
+
         var elapsedTime = nowTime - initTime;
         var i;
         for(i=0;i<len;i+=1){
@@ -86,6 +89,7 @@
         }
         ctx.fillRect(0,0,100,100);*/
         requestAnimationFrame(resume);
+
     }
 
     function first(nowTime){
diff --git a/player/js/elements/htmlElements/HImageElement.js b/player/js/elements/htmlElements/HImageElement.js
new file mode 100644
index 0000000..98a5f1b
--- /dev/null
+++ b/player/js/elements/htmlElements/HImageElement.js
@@ -0,0 +1,52 @@
+function HImageElement(data,parentContainer,globalData,comp, placeholder){
+    this.assetData = globalData.getAssetData(data.refId);
+    this.path = globalData.getPath();
+    this.parent.constructor.call(this,data,parentContainer,globalData,comp, placeholder);
+}
+createElement(HBaseElement, HImageElement);
+
+HImageElement.prototype.createElements = function(){
+
+    var imageLoaded = function(){
+        this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink','href',this.path+this.assetData.p);
+    };
+
+    var img = new Image();
+
+    var parent;
+    if(this.data.hasMask){
+        var parent = document.createElement('div');
+        styleDiv(parent);
+        var cont = document.createElementNS(svgNS,'svg');
+        cont.setAttribute('width',this.assetData.w);
+        cont.setAttribute('height',this.assetData.h);
+        parent.appendChild(cont);
+        this.imageElem = document.createElementNS(svgNS,'image');
+        this.imageElem.setAttribute('width',this.assetData.w+"px");
+        this.imageElem.setAttribute('height',this.assetData.h+"px");
+        cont.appendChild(this.imageElem);
+        this.layerElement = parent;
+        this.parentContainer.appendChild(parent);
+        this.innerElem = parent;
+        this.maskedElement = this.imageElem;
+        img.addEventListener('load', imageLoaded.bind(this), false);
+        img.addEventListener('error', imageLoaded.bind(this), false);
+    } else {
+        styleDiv(img);
+        this.layerElement = img;
+        this.parentContainer.appendChild(img);
+        this.innerElem = img;
+    }
+    img.src = this.path+this.assetData.p;
+    if(this.data.ln){
+        this.innerElem.setAttribute('id',this.data.ln);
+    }
+};
+
+
+
+HImageElement.prototype.hide = HSolidElement.prototype.hide;
+
+HImageElement.prototype.renderFrame = HSolidElement.prototype.renderFrame;
+
+HImageElement.prototype.destroy = HSolidElement.prototype.destroy;
\ No newline at end of file
diff --git a/player/js/elements/htmlElements/HTextElement.js b/player/js/elements/htmlElements/HTextElement.js
index 93f8d18..a11fa8f 100644
--- a/player/js/elements/htmlElements/HTextElement.js
+++ b/player/js/elements/htmlElements/HTextElement.js
@@ -125,6 +125,9 @@
                     tCont.setAttribute('height',bBound - tBound);
                     tCont.setAttribute('viewBox',lBound+' '+tBound+' '+(rBound - lBound)+' '+(bBound - tBound));
                     tCont.style.transform = 'translate('+lBound+'px,'+ tBound+'px)';
+                } else{
+                    tCont.setAttribute('width',1);
+                    tCont.setAttribute('height',1);
                 }
             }else{
                 this.innerElem.appendChild(tSpan);
diff --git a/player/js/elements/svgElements/SVGBaseElement.js b/player/js/elements/svgElements/SVGBaseElement.js
index 7dc1283..74f85c2 100644
--- a/player/js/elements/svgElements/SVGBaseElement.js
+++ b/player/js/elements/svgElements/SVGBaseElement.js
@@ -13,6 +13,8 @@
 
 SVGBaseElement.prototype.appendNodeToParent = function(node) {
     if(this.placeholder){
+        console.log(this.placeholder);
+        console.log(this.placeholder.phElement);
         var g = this.placeholder.phElement;
         g.parentNode.insertBefore(node, g);
         //g.parentNode.removeChild(g);
diff --git a/player/js/mask.js b/player/js/mask.js
index 8ed4adb..5b1c26e 100644
--- a/player/js/mask.js
+++ b/player/js/mask.js
@@ -19,7 +19,7 @@
     var currentMasks = [];
     var j, jLen;
     var layerId = randomString(10);
-    var rect, expansor, feMorph;
+    var rect, expansor, feMorph,x;
     var maskType = 'clipPath', maskRef = 'clip-path';
     for (i = 0; i < len; i++) {
 
@@ -38,7 +38,7 @@
             currentMasks.push(rect);
         }
 
-        if(properties[i].mode == 'n') {
+        if(properties[i].mode == 'n' || properties[i].cl === false) {
             this.viewData[i] = {
                 prop: PropertyFactory.getShapeProp(this.element,properties[i],3,this.dynamicProperties,null)
             };
@@ -67,7 +67,7 @@
         if(properties[i].x.k !== 0){
             maskType = 'mask';
             maskRef = 'mask';
-            var x = PropertyFactory.getProp(this.element,properties[i].x,0,null,this.dynamicProperties);
+            x = PropertyFactory.getProp(this.element,properties[i].x,0,null,this.dynamicProperties);
             var filterID = 'fi_'+randomString(10);
             expansor = document.createElementNS(svgNS,'filter');
             expansor.setAttribute('id',filterID);
@@ -84,6 +84,7 @@
             }
         }else{
             feMorph = null;
+            x = null;
         }
 
 
@@ -157,7 +158,7 @@
 MaskElement.prototype.renderFrame = function () {
     var i, len = this.masksProperties.length;
     for (i = 0; i < len; i++) {
-        if(this.masksProperties[i].mode !== 'n'){
+        if(this.masksProperties[i].mode !== 'n' && this.masksProperties[i].cl !== false){
             if(this.viewData[i].prop.mdf || this.firstFrame){
                 this.drawPath(this.masksProperties[i],this.viewData[i].prop.v,this.viewData[i]);
             }
@@ -174,7 +175,6 @@
                         this.storedData[i].lastOperator = 'dilate';
                         this.storedData[i].elem.setAttribute('filter',null);
                     }
-                    console.log(this.storedData[i].x.v*2);
                     this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v*2);
 
                 }
diff --git a/player/js/renderers/HybridRenderer.js b/player/js/renderers/HybridRenderer.js
index e9881eb..d08d5f9 100644
--- a/player/js/renderers/HybridRenderer.js
+++ b/player/js/renderers/HybridRenderer.js
@@ -108,7 +108,10 @@
 };
 
 HybridRenderer.prototype.createImage = function (data,parentContainer,comp, placeholder) {
-    return new IImageElement(data, parentContainer,this.globalData,comp, placeholder);
+    if(comp.isSvg){
+        return new IImageElement(data, parentContainer,this.globalData,comp, placeholder);
+    }
+    return new HImageElement(data, parentContainer,this.globalData,comp, placeholder);
 };
 
 HybridRenderer.prototype.createComp = function (data,parentContainer,comp, placeholder) {
diff --git a/player/js/utils/FontManager.js b/player/js/utils/FontManager.js
index 633cd42..d4e8270 100644
--- a/player/js/utils/FontManager.js
+++ b/player/js/utils/FontManager.js
@@ -108,6 +108,25 @@
     }
 
     function addChars(chars){
+        if(!this.chars){
+            this.chars = [];
+        }
+        var i, len = chars.length;
+        var j, jLen = this.chars.length, found;
+        for(i=0;i<len;i+=1){
+            j = 0;
+            found = false;
+            while(j<jLen){
+                if(this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch){
+                    found = true;
+                }
+                j += 1;
+            }
+            if(!found){
+                this.chars.push(chars[i]);
+                jLen += 1;
+            }
+        }
         this.chars = chars;
     }
 
diff --git a/player/js/utils/PropertyFactory.js b/player/js/utils/PropertyFactory.js
index 6fbc3fe..e3b8244 100644
--- a/player/js/utils/PropertyFactory.js
+++ b/player/js/utils/PropertyFactory.js
@@ -59,7 +59,7 @@
                         fnc = bez.getEasingCurve(keyData.o.x,keyData.o.y,keyData.i.x,keyData.i.y,keyData.n);
                         keyData.__fnct = fnc;
                     }
-                    perc = fnc('',(frameNum)-(keyData.t-this.offsetTime),0,1,(nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime));
+                    perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));
                     var distanceInLine = bezierData.segmentLength*perc;
 
                     var segmentPerc;
@@ -146,7 +146,7 @@
                         }else if(frameNum < keyData.t-this.offsetTime){
                             perc = 0;
                         }else{
-                            perc = fnc('',(frameNum)-(keyData.t-this.offsetTime),0,1,(nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime));
+                            perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));
                         }
                     }
 
@@ -222,7 +222,7 @@
                     }else if(frameNum < keyData.t-this.offsetTime){
                         perc = 0;
                     }else{
-                        perc = fnc('',(frameNum)-(keyData.t-this.offsetTime),0,1,(nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime));
+                        perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));
                     }
                     keyPropE = keyData.e[0];
                 }
@@ -483,6 +483,8 @@
             this.pv.v[i] = new Array(jLen);
         }
         this.lastFrame = initFrame;
+        var shapeData = type === 3 ? data.pt : data.ks;
+        checkExpressions.bind(this)(elem,shapeData);
     }
 
     var EllShapeProperty = (function(){
@@ -1056,7 +1058,8 @@
             this.comp = elem.comp;
             this.mult = .01;
             this.type = 'textSelector';
-            this.textTotal = data.totalChars
+            this.textTotal = data.totalChars;
+            this.selectorValue = 100;
             checkExpressions.bind(this)(elem,data);
             this.getMult = getValueProxy;
         }
@@ -1099,7 +1102,7 @@
                 }else{
                     mult = max(0,min(0.5/(e-s) + (ind-s)/(e-s),1));
                 }
-                mult = easer('',mult,0,1,1);
+                mult = easer(mult);
             }else if(type == 3){
                 if(e === s){
                     mult = ind >= e ? 0 : 1;
@@ -1107,7 +1110,7 @@
                     mult = 1 - max(0,min(0.5/(e-s) + (ind-s)/(e-s),1));
                 }
 
-                mult = easer('',mult,0,1,1);
+                mult = easer(mult);
             }else if(type == 4){
                 if(e === s){
                     mult = ind >= e ? 0 : 1;
@@ -1142,7 +1145,7 @@
                     }
                 }
             }
-            return mult;
+            return mult*this.a.v;
         }
 
         return function TextSelectorProp(elem,data, arr){
@@ -1164,6 +1167,7 @@
             this.o = getProp(elem,data.o || {k:0},0,0,this.dynamicProperties);
             this.xe = getProp(elem,data.xe || {k:0},0,0,this.dynamicProperties);
             this.ne = getProp(elem,data.ne || {k:0},0,0,this.dynamicProperties);
+            this.a = getProp(elem,data.a,0,0.01,this.dynamicProperties);
             if(this.dynamicProperties.length){
                 arr.push(this);
             }else{
diff --git a/player/js/utils/bez.js b/player/js/utils/bez.js
index cc6fe4c..bb0e006 100644
--- a/player/js/utils/bez.js
+++ b/player/js/utils/bez.js
@@ -16,9 +16,8 @@
         }
         var A0, B0, C0;
         var A1, B1, C1;
-        easingFunctions[encodedFuncName] = function(x, t, b, c, d) {
-            var tt = t/d;
-            x = tt;
+        easingFunctions[encodedFuncName] = function(tt) {
+            var x = tt;
             var i = 0, z;
             while (++i < 20) {
                 C0 = 3 * aa;
diff --git a/player/js/utils/common.js b/player/js/utils/common.js
index ca93c69..c1ac63b 100644
--- a/player/js/utils/common.js
+++ b/player/js/utils/common.js
@@ -1,4 +1,4 @@
-var subframeEnabled = true;
+var subframeEnabled = false;
 var cachedColors = {};
 var bm_rounder = Math.round;
 var bm_rnd;
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index a6c4c25..608b6d3 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -163,11 +163,12 @@
             }
             return ob;
         }
-        var time, value,textIndex,textTotal;
+        var time, value,textIndex,textTotal,selectorValue;
         function execute(){
             if(this.type === 'textSelector'){
                 textIndex = this.textIndex;
                 textTotal = this.textTotal;
+                selectorValue = this.selectorValue;
             }
             if(!transform){
                 transform = elem.transform;
@@ -200,8 +201,12 @@
                     this.lastValue = this.v;
                     this.mdf = true;
                 }
+            }else if(this.v.i){
+                // Todo Improve validation for masks and shapes
+                this.mdf = true;
             }else{
                 len = this.v.length;
+                console.log(this.v);
                 for(i = 0; i < len; i += 1){
                     if(this.v[i] !== this.lastValue[i]){
                         this.lastValue[i] = this.v[i];