diff --git a/player/index.html b/player/index.html
index 94913c6..04cff71 100644
--- a/player/index.html
+++ b/player/index.html
@@ -11,7 +11,7 @@
         }
 
         #lottie{
-            background-color:#FFF7DC;
+            background-color:#000;
             width:100%;
             height:100%;
             /*width:360px;
@@ -132,8 +132,8 @@
     var elem = document.getElementById('lottie')
     var animData = {
         container: elem,
-        renderer: 'svg',
-        loop: false,
+        renderer: 'canvas',
+        loop: true,
         autoplay: true,
         rendererSettings: {
             progressiveLoad:false
diff --git a/player/js/animation/AnimationItem.js b/player/js/animation/AnimationItem.js
index 4e21856..7505482 100644
--- a/player/js/animation/AnimationItem.js
+++ b/player/js/animation/AnimationItem.js
@@ -137,7 +137,7 @@
 AnimationItem.prototype.includeLayers = function(data) {
     if(data.op > this.animationData.op){
         this.animationData.op = data.op;
-        this.totalFrames = Math.floor(data.op - this.animationData.ip) - 1;
+        this.totalFrames = Math.floor(data.op - this.animationData.ip);
         this.animationData.tf = this.totalFrames;
     }
     var layers = this.animationData.layers;
@@ -223,7 +223,7 @@
     //animData.w = Math.round(animData.w/blitter);
     //animData.h = Math.round(animData.h/blitter);
     this.animationData = animData;
-    this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip) - 1;
+    this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);
     this.animationData.tf = this.totalFrames;
     this.renderer.configAnimation(animData);
     if(!animData.assets){
@@ -427,9 +427,9 @@
                 this.setDirection(-1);
             }
         }
-        this.totalFrames = arr[0] - arr[1] - 1;
+        this.totalFrames = arr[0] - arr[1];
         this.firstFrame = arr[1];
-        this.setCurrentRawFrameValue(this.totalFrames);
+        this.setCurrentRawFrameValue(this.totalFrames - 0.001);
     } else if(arr[1] > arr[0]){
         if(this.frameModifier < 0){
             if(this.playSpeed < 0){
@@ -438,9 +438,9 @@
                 this.setDirection(1);
             }
         }
-        this.totalFrames = arr[1] - arr[0] - 1;
+        this.totalFrames = arr[1] - arr[0];
         this.firstFrame = arr[0];
-        this.setCurrentRawFrameValue(0);
+        this.setCurrentRawFrameValue(0.001);
     }
     this.trigger('segmentStart');
 };
@@ -455,7 +455,7 @@
     }
 
     this.firstFrame = init;
-    this.totalFrames = end - init - 1;
+    this.totalFrames = end - init;
     if(pendingFrame !== -1) {
         this.goToAndStop(pendingFrame,true);
     }
@@ -480,7 +480,8 @@
 
 AnimationItem.prototype.resetSegments = function (forceFlag) {
     this.segments.length = 0;
-    this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);
+    this.segments.push([this.animationData.ip,this.animationData.op]);
+    //this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);
     if(forceFlag){
         this.adjustSegment(this.segments.shift());
     }
diff --git a/player/js/animation/AnimationManager.js b/player/js/animation/AnimationManager.js
index e7393f0..74a3f59 100644
--- a/player/js/animation/AnimationManager.js
+++ b/player/js/animation/AnimationManager.js
@@ -5,6 +5,7 @@
     var len = 0;
     var idled = true;
     var playingAnimationsNum = 0;
+    var _stopped = true;
 
     function removeElement(ev){
         var i = 0;
@@ -95,9 +96,7 @@
             registeredAnimations[i].animation.moveFrame(value,animation);
         }
     }
-
     function resume(nowTime) {
-
         var elapsedTime = nowTime - initTime;
         var i;
         for(i=0;i<len;i+=1){
@@ -106,6 +105,8 @@
         initTime = nowTime;
         if(!idled) {
             window.requestAnimationFrame(resume);
+        } else {
+            _stopped = true;
         }
     }
 
@@ -188,7 +189,10 @@
     function activate(){
         if(idled){
             idled = false;
-            window.requestAnimationFrame(first);
+            if(_stopped) {
+                window.requestAnimationFrame(first);
+                _stopped = false;
+            }
         }
     }
 
diff --git a/player/js/elements/canvasElements/CVShapeElement.js b/player/js/elements/canvasElements/CVShapeElement.js
index 7056171..b6a3904 100644
--- a/player/js/elements/canvasElements/CVShapeElement.js
+++ b/player/js/elements/canvasElements/CVShapeElement.js
@@ -440,7 +440,7 @@
     this.globalData = null;
     this.canvasContext = null;
     this.stylesList.length = 0;
-    this.itemData.length = 0;
+    this.itemsData.length = 0;
     this._parent.destroy.call(this._parent);
 };
 
diff --git a/player/js/utils/expressions/ShapeInterface.js b/player/js/utils/expressions/ShapeInterface.js
index 08156fa..545c830 100644
--- a/player/js/utils/expressions/ShapeInterface.js
+++ b/player/js/utils/expressions/ShapeInterface.js
@@ -595,7 +595,7 @@
                 if(shape.r.ix === value){
                     return interfaceFunction.roundness;
                 }
-                if(shape.s.ix === value || value === 'Size'){
+                if(shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size'){
                     return interfaceFunction.size;
                 }
 
