diff --git a/package.json b/package.json
index 028fe99..91aac7d 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,8 @@
   ],
   "devDependencies": {
     "cheerio": "^1.0.0-rc.2",
-    "uglify-js": "^3.4.9"
+    "uglify-js": "^3.4.9",
+    "watch": "^1.0.2"
   },
   "types": "./index.d.ts",
   "license": "MIT"
diff --git a/player/js/utils/expressions/ExpressionPropertyDecorator.js b/player/js/utils/expressions/ExpressionPropertyDecorator.js
index 1266192..da0bd04 100644
--- a/player/js/utils/expressions/ExpressionPropertyDecorator.js
+++ b/player/js/utils/expressions/ExpressionPropertyDecorator.js
@@ -335,6 +335,9 @@
             var xLength = pt2[0] - pt1[0];
             var yLength = pt2[1] - pt1[1];
             var magnitude = Math.sqrt(Math.pow(xLength,2) + Math.pow(yLength,2));
+            if (magnitude === 0) {
+                return [0,0];
+            }
             var unitVector = vectorType === 'tangent' ? [xLength/magnitude, yLength/magnitude] : [-yLength/magnitude, xLength/magnitude];
             return unitVector;
         },
diff --git a/tasks/build.js b/tasks/build.js
index dcc1914..5eddd7f 100644
--- a/tasks/build.js
+++ b/tasks/build.js
@@ -4,6 +4,7 @@
 
 const rootFolder = 'player/';
 const bm_version = '5.5.3';
+const buildReducedVersion = process.argv[2] === 'reduced'
 
 function loadIndex() {
 	return new Promise((resolve, reject)=>{
@@ -135,7 +136,7 @@
 
 function buildVersions(scripts) {
 	return new Promise((resolve, reject) => {
-		const versions = [
+		let versions = [
 		{
 			fileName: 'lottie.js',
 			build: 'full',
@@ -207,6 +208,10 @@
 			process: uglifyCode
 		}];
 
+		if (buildReducedVersion) {
+			versions = versions.splice(0,1);
+		}
+
 		const buildProcesses = versions.map((version)=>{
 			return buildVersion(scripts, version)
 		})
diff --git a/tasks/watch.js b/tasks/watch.js
new file mode 100644
index 0000000..866ff62
--- /dev/null
+++ b/tasks/watch.js
@@ -0,0 +1,34 @@
+var childProcess = require('child_process');
+var watch = require('watch')
+
+function runScript(scriptPath, processArguments, callback) {
+
+    // keep track of whether callback has been invoked to prevent multiple invocations
+    var invoked = false;
+
+    var process = childProcess.fork(scriptPath, processArguments);
+
+    // listen for errors as they may prevent the exit event from firing
+    process.on('error', function (err) {
+        if (invoked) return;
+        invoked = true;
+        callback(err);
+    });
+
+    // execute the callback once the process has finished running
+    process.on('exit', function (code) {
+        if (invoked) return;
+        invoked = true;
+        var err = code === 0 ? null : new Error('exit code ' + code);
+        callback(err);
+    });
+
+}
+
+
+  watch.watchTree(`${__dirname}\\..\\player\\js\\`, function (f, curr, prev) {
+    runScript(`${__dirname}\\build.js`, ["reduced"], function (err) {
+        if (err) throw err;
+        console.log('finished running some-script.js');
+    });
+  })
\ No newline at end of file
