diff --git a/.gitignore b/.gitignore
index 52b558e..6964ea0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,7 @@
 *.swp
 *.user
 
-
+node_modules
 
 
 
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..df32482
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,17 @@
+{
+    "browser": true
+  , "devel": true
+  , "bitwise": true
+  , "undef": true
+  , "trailing": true
+  , "quotmark": false
+  , "indent": 4
+  , "unused": "vars"
+  , "latedef": "nofunc"
+  , "globals": {
+        "module": false,
+        "exports": false,
+        "require": false,
+        "cordova": true
+    }
+}
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..b9af4c5
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+sudo: false
+node_js:
+  - "4.2"
diff --git a/README.md b/README.md
index fccf9b6..e4ac8c0 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,8 @@
 #         under the License.
 -->
 
+[![Build Status](https://travis-ci.org/apache/cordova-plugin-battery-status.svg?branch=master)](https://travis-ci.org/apache/cordova-plugin-battery-status)
+
 # cordova-plugin-battery-status
 
 
diff --git a/package.json b/package.json
index 05823bd..165ee95 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,13 @@
     "cordova-tizen",
     "cordova-firefoxos"
   ],
+  "scripts": {
+    "test": "npm run jshint",
+    "jshint": "node node_modules/jshint/bin/jshint www && node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint tests"
+  },
   "author": "Apache Software Foundation",
-  "license": "Apache-2.0"
+  "license": "Apache-2.0",
+  "devDependencies": {
+    "jshint": "^2.6.0"
+  }
 }
diff --git a/src/blackberry10/index.js b/src/blackberry10/index.js
index f757ee7..a105f60 100644
--- a/src/blackberry10/index.js
+++ b/src/blackberry10/index.js
@@ -19,8 +19,10 @@
  *
 */
 
-    var _clientListeners = {},
-        _webkitBattery = navigator.webkitBattery || navigator.battery;
+/* global PluginResult */
+
+var _clientListeners = {},
+    _webkitBattery = navigator.webkitBattery || navigator.battery;
 
 module.exports = {
     start: function (success, fail, args, env) {
@@ -35,8 +37,8 @@
 
                     //put data from webkitBattery into a format cordova expects
                     //webkitBattery seems to return level as a decimal pre 10.2
-                    resultInfo.level = info.level <= 1 ? info.level * 100 : info.level,
-                    resultInfo.isPlugged = info.charging
+                    resultInfo.level = info.level <= 1 ? info.level * 100 : info.level;
+                    resultInfo.isPlugged = info.charging;
                 }
 
                 result.callbackOk(resultInfo, true);
diff --git a/src/browser/BatteryProxy.js b/src/browser/BatteryProxy.js
index d9bc059..d36c567 100644
--- a/src/browser/BatteryProxy.js
+++ b/src/browser/BatteryProxy.js
@@ -42,7 +42,7 @@
                     w3cBattery.onlevelchange = success;
                     w3cBattery.onchargingchange = success;
                 }
-            }
+            };
 
             if (typeof navigator.getBattery === 'function') {
                 navigator.getBattery().then(function(battery) { 
@@ -59,7 +59,7 @@
             }
         } catch(e) {
             fail(e);
-        };
+        }
     },
 
     stop: function() {
@@ -73,7 +73,7 @@
             }
         } catch(e) {
             console.warn('Error occured while trying to stop battery: ' + JSON.stringify(e));
-        };
+        }
     }
 };
 
diff --git a/src/tizen/BatteryStatusProxy.js b/src/tizen/BatteryStatusProxy.js
index 44dad00..5149f54 100644
--- a/src/tizen/BatteryStatusProxy.js
+++ b/src/tizen/BatteryStatusProxy.js
@@ -19,7 +19,7 @@
  *
 */
 
-var cordova = require('cordova');
+/* global tizen */
 
 var batteryListenerId = null;
 
diff --git a/src/windows/BatteryProxy.js b/src/windows/BatteryProxy.js
index 4c7e101..ed91bcb 100644
--- a/src/windows/BatteryProxy.js
+++ b/src/windows/BatteryProxy.js
@@ -19,6 +19,8 @@
  *
  */
 
+/* global WinJS, BatteryStatus */
+
 var stopped;
 
 function handleResponse(successCb, errorCb, jsonResponse) {
@@ -34,6 +36,24 @@
 
 var Battery = {
     start: function (win, fail, args, env) {
+        function getBatteryStatus(success, error) {
+            handleResponse(success, error, BatteryStatus.BatteryStatus.start());
+        }
+
+        function getBatteryStatusLevelChangeEvent(success, error) {
+            return BatteryStatus.BatteryStatus.getBatteryStatusChangeEvent().done(function (result) {
+                if (stopped) {
+                    return;
+                }
+
+                handleResponse(success, error, result);
+
+                setTimeout(function() { getBatteryStatusLevelChangeEvent(success, error); }, 0);
+            }, function(err) {
+                fail(err);
+            });
+        }
+
         // Battery API supported on Phone devices only so in case of
         // desktop/tablet the only one choice is to fail with appropriate message.
         if (!WinJS.Utilities.isPhone) {
@@ -43,30 +63,11 @@
 
         stopped = false;
         try {
-            function getBatteryStatus(success, error) {
-                handleResponse(success, error, BatteryStatus.BatteryStatus.start());
-            }
-
-            function getBatteryStatusLevelChangeEvent(success, error) {
-                return BatteryStatus.BatteryStatus.getBatteryStatusChangeEvent().done(function (result) {
-                    if (stopped) {
-                        return;
-                    }
-
-                    handleResponse(success, error, result);
-
-                    setTimeout(function() { getBatteryStatusLevelChangeEvent(success, error); }, 0);
-                }, function(err) {
-                    fail(err);
-                });
-            }
-
             getBatteryStatus(win, fail);
-
             getBatteryStatusLevelChangeEvent(win, fail);
         } catch(e) {
             fail(e);
-        }        
+        }
     },
 
     stop: function () {
diff --git a/tests/tests.js b/tests/tests.js
index fa06ead..ad21d3b 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -19,6 +19,9 @@
  *
  */
 
+/* jshint jasmine: true */
+/* global WinJS */
+
 exports.defineAutoTests = function () {
     var isWindowsStore = (cordova.platformId == "windows8") || (cordova.platformId == "windows" && !WinJS.Utilities.isPhone),
         onEvent;
@@ -44,7 +47,7 @@
                         window.removeEventListener("batterystatus", onEvent, false);
                     }
                     catch (e) {
-                        console.err('Error removing batterystatus event listener: ' + e)
+                        console.err('Error removing batterystatus event listener: ' + e);
                     }
                 }
             });
@@ -80,7 +83,7 @@
                         window.removeEventListener("batterylow", onEvent, false);
                     }
                     catch (e) {
-                        console.err('Error removing batterylow event listener: ' + e)
+                        console.err('Error removing batterylow event listener: ' + e);
                     }
                 }
             });
@@ -199,7 +202,7 @@
                         window.removeEventListener("batterycritical", onEvent, false);
                     }
                     catch (e) {
-                        console.err('Error removing batterycritical event listener: ' + e)
+                        console.err('Error removing batterycritical event listener: ' + e);
                     }
                 }
             });
diff --git a/www/battery.js b/www/battery.js
index 1c6c6ab..242503d 100644
--- a/www/battery.js
+++ b/www/battery.js
@@ -26,12 +26,6 @@
 var cordova = require('cordova'),
     exec = require('cordova/exec');
 
-function handlers() {
-  return battery.channels.batterystatus.numHandlers +
-         battery.channels.batterylow.numHandlers +
-         battery.channels.batterycritical.numHandlers;
-}
-
 var STATUS_CRITICAL = 5;
 var STATUS_LOW = 20;
 
@@ -48,6 +42,13 @@
         this.channels[key].onHasSubscribersChange = Battery.onHasSubscribersChange;
     }
 };
+
+function handlers() {
+    return battery.channels.batterystatus.numHandlers +
+        battery.channels.batterylow.numHandlers +
+        battery.channels.batterycritical.numHandlers;
+}
+
 /**
  * Event handlers for when callbacks get registered for the battery.
  * Keep track of how many handlers we have so we can start and stop the native battery listener
@@ -72,7 +73,7 @@
     if (info) {
         if (battery._level !== info.level || battery._isPlugged !== info.isPlugged) {
             
-            if(info.level == null && battery._level != null) {
+            if(info.level === null && battery._level !== null) {
                 return; // special case where callback is called because we stopped listening to the native side.
             }
             
@@ -104,7 +105,6 @@
     console.log("Error initializing Battery: " + e);
 };
 
-var battery = new Battery();
+var battery = new Battery(); // jshint ignore:line
 
 module.exports = battery;
-
