diff --git a/player/index.html b/player/index.html
index 99b6d31..589493c 100644
--- a/player/index.html
+++ b/player/index.html
@@ -1,6 +1,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <meta charset="UTF-8">
 <head>
+    <!-- <script src="extras/jquery-2.1.4.min.js"></script> -->
     <!-- build:js bodymovin.js -->
     <script src="js/main.js"></script>
     <script src="js/3rd_party/transformation-matrix.js"></script>
@@ -36,6 +37,14 @@
     <!-- endbuild -->
 </head>
 <body style="background-color:#666; margin: 0px;height: 100%; font-family: sans-serif;font-size: 10px">
-<div style="width:700px;height:300px;background-color:#000;display:inline-block" class="bodymovin" data-bm-path="exports/letter_i" data-bm-type="canvas" data-bm-loop="true" data-bm-prerender="true"></div>
+<div style="width:700px;height:300px;background-color:#000;display:inline-block" class="bodymovers bodymover1" data-bm-path="exports/letter_i" data-bm-type="canvas" data-bm-loop="true" data-bm-prerender="true"></div>
+<div style="width:100px;height:50px;background-color:#000;display:inline-block" class="bodymovers bodymover2" data-bm-path="exports/letter_i" data-bm-type="canvas" data-bm-loop="true" data-bm-prerender="true"></div>
+<script>
+    /*$('.bodymovers').bodymovin('registerAnimation',{
+        animType: 'canvas',
+        loop: true,
+        path: 'exports/letter_i'
+    });*/
+</script>
 </body>
 </html>
diff --git a/player/js/module.js b/player/js/module.js
index 59158fd..a91f4cf 100644
--- a/player/js/module.js
+++ b/player/js/module.js
@@ -73,4 +73,65 @@
 
     var readyStateCheckInterval = setInterval(checkReady, 100);
 
+    if(window.jQuery && jQuery.fn){
+
+        var initializePlugin = (function(){
+            var animationMap = [];
+
+            var iterateElements = function(elements,params){
+                elements.each(function(){
+                    params.wrapper = this;
+                    animationMap.push({
+                        elem : this,
+                        anim: bodymovin.loadAnimation(params)
+                    });
+                });
+                /*this.each(function() {
+                 // Do something to each element here.
+                 });*/
+            };
+
+            var performAction = function(elements,action,params){
+                var i, len = animationMap.length;
+                elements.each(function(){
+                    i = 0;
+                    while(i<len){
+                        if(animationMap[i].elem == this){
+                            animationMap[i].anim[action].apply(animationMap[i].anim,params);
+                            break;
+                        }
+                        i+=1;
+                    }
+                })
+            };
+
+            jQuery.fn.bodymovin = function(action,params){
+                switch(action){
+                    case 'pause':
+                    case 'play':
+                    case 'togglePause':
+                    case 'setSpeed':
+                    case 'setDirection':
+                    case 'moveFrame':
+                    case 'stop':
+                    case 'resize':
+                    case 'goToAndStop':
+                    case 'gotoAndStop':
+                        performAction(this,action,Array.prototype.slice.call(arguments,1));
+                        break;
+                    case 'registerAnimation':
+                    case 'loadAnimation':
+                        iterateElements(this,params);
+                        break;
+                    case 'setSubframeRendering':
+                        setSubframeRendering(params);
+                        break;
+                    case 'start':
+                        start();
+                        break;
+                }
+            }
+        }());
+    }
+
 }(window));
\ No newline at end of file
