diff --git a/player/index.html b/player/index.html
index 922e5ab..b657410 100644
--- a/player/index.html
+++ b/player/index.html
@@ -49,7 +49,7 @@
 
 <script>
     var anim;
-    import('./js/modules/full.js').then(({default: lottie }) => {
+    import('./js/modules/svg_light.js').then(({default: lottie }) => {
         var elem = document.getElementById('lottie');
         var animData = {
             container: elem,
diff --git a/player/js/modules/canvas.js b/player/js/modules/canvas.js
index 401d192..794412e 100644
--- a/player/js/modules/canvas.js
+++ b/player/js/modules/canvas.js
@@ -4,9 +4,11 @@
 } from '../utils/common';
 import Expressions from '../utils/expressions/Expressions';
 import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
+import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
 
 // Registering expression plugin
 setExpressionsPlugin(Expressions);
 expressionPropertyDecorator();
+expressionTextPropertyDecorator();
 
 export default lottie;
diff --git a/player/js/modules/full.js b/player/js/modules/full.js
index 69d46ef..513dbd4 100644
--- a/player/js/modules/full.js
+++ b/player/js/modules/full.js
@@ -15,6 +15,7 @@
 } from '../renderers/renderersManager';
 import Expressions from '../utils/expressions/Expressions';
 import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
+import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
 
 // Registering renderers
 registerRenderer('canvas', CanvasRenderer);
@@ -30,5 +31,6 @@
 // Registering expression plugin
 setExpressionsPlugin(Expressions);
 expressionPropertyDecorator();
+expressionTextPropertyDecorator();
 
 export default lottie;
diff --git a/player/js/modules/html.js b/player/js/modules/html.js
index f847c81..b1702a9 100644
--- a/player/js/modules/html.js
+++ b/player/js/modules/html.js
@@ -4,9 +4,11 @@
 } from '../utils/common';
 import Expressions from '../utils/expressions/Expressions';
 import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
+import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
 
 // Registering expression plugin
 setExpressionsPlugin(Expressions);
 expressionPropertyDecorator();
+expressionTextPropertyDecorator();
 
 export default lottie;
diff --git a/player/js/modules/svg.js b/player/js/modules/svg.js
index 4e0f7a3..8e173b1 100644
--- a/player/js/modules/svg.js
+++ b/player/js/modules/svg.js
@@ -4,9 +4,11 @@
 } from '../utils/common';
 import Expressions from '../utils/expressions/Expressions';
 import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
+import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
 
 // Registering expression plugin
 setExpressionsPlugin(Expressions);
 expressionPropertyDecorator();
+expressionTextPropertyDecorator();
 
 export default lottie;
diff --git a/player/js/utils/common.js b/player/js/utils/common.js
index d821f70..da4946d 100644
--- a/player/js/utils/common.js
+++ b/player/js/utils/common.js
@@ -24,7 +24,6 @@
 }());
 
 function ProjectInterface() { return {}; }
-
 BMMath.random = Math.random;
 BMMath.abs = function (val) {
   var tOfVal = typeof val;
diff --git a/player/js/utils/expressions/ExpressionTextPropertyDecorator.js b/player/js/utils/expressions/ExpressionTextPropertyDecorator.js
index 24bae2c..d777c63 100644
--- a/player/js/utils/expressions/ExpressionTextPropertyDecorator.js
+++ b/player/js/utils/expressions/ExpressionTextPropertyDecorator.js
@@ -1,7 +1,7 @@
 import TextProperty from '../text/TextProperty';
 import ExpressionManager from './ExpressionManager';
 
-(function addDecorator() {
+function addDecorator() {
   function searchExpressions() {
     if (this.data.d.x) {
       this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);
@@ -31,4 +31,10 @@
   };
 
   TextProperty.prototype.searchExpressions = searchExpressions;
-}());
+}
+
+function initialize() {
+  addDecorator();
+}
+
+export default initialize;
