diff --git a/package.json b/package.json
index 98b96c176503f7ae41b188849b0fb9d63874ea5f..acba66a2af8082d586dcaf0e8172831972a1ba42 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
 {
   "name": "augustctl",
-  "version": "0.1.1",
+  "version": "0.2.0",
   "description": "Controller for August Smart Lock",
-  "author": "Dan Walters <dan@walters.io>",
+  "author": "Erick Hitter <contact@ethitter.com>",
   "license": "MIT",
   "main": "index.js",
   "bin": {
@@ -15,17 +15,18 @@
     "bluetooth"
   ],
   "dependencies": {
+    "apicache": "*",
+    "asyncawait": "^0.7.4",
     "bluebird": "^2.9.34",
+    "connect-timeout": "*",
     "debug": "^2.2.0",
     "express": "^4.13.3",
     "morgan": "^1.6.1",
     "noble": "^1.1.0",
-    "asyncawait": "^0.7.4",
-    "apicache": "*",
-    "connect-timeout": "*"
+    "request": "*"
   },
   "repository": {
     "type": "git",
-    "url": "http://github.com/sretlawd/augustctl/augustctl.git"
+    "url": "https://github.com/ethitter/augustctl/augustctl.git"
   }
 }
diff --git a/server.js b/server.js
index 41cfb74507b7f661c58c372d0079b5f22a65fabb..92a22878104f27cca329ee3bf636d2d0cdac63c6 100755
--- a/server.js
+++ b/server.js
@@ -12,6 +12,7 @@ var async     = require( 'asyncawait/async' );
 var apicache  = require( 'apicache' ).options( { defaultDuration: 15000 } );
 var cache     = apicache.middleware;
 var timeout   = require( 'connect-timeout' );
+var request   = require( 'request' );
 
 var config       = require( process.env.AUGUSTCTL_CONFIG || './config.json' );
 var serverConfig = require( process.env.AUGUSTCTL_SERVER_CONFIG || './server-config.json' );
@@ -74,7 +75,7 @@ function clearCaches( lockName ) {
 // Middleware to handle timeout status checks
 function haltOnTimedout( req, res, next ) {
     if ( req.timedout ) {
-        lock.disconnect();
+        request( 'http://' + address + ':' + port + '/api/disconnect/' + req.params.lock_name );
     } else {
         next();
     }
@@ -86,8 +87,10 @@ function haltOnTimedout( req, res, next ) {
 
 // Endpoint to check lock status
 app.get( '/api/status/:lock_name', timeout( '5 seconds' ), cache( '5 seconds' ), haltOnTimedout, function( req, res ) {
+    var lockName = req.params.lock_name;
+
     // Parse allowed request arguments
-    var lock = getLockInstance( req.params.lock_name, res );
+    var lock = getLockInstance( lockName, res );
     if ( ! lock ) {
         return;
     }
@@ -107,6 +110,15 @@ app.get( '/api/status/:lock_name', timeout( '5 seconds' ), cache( '5 seconds' ),
     // Perform requested action
     lock.connect().then( actionFunction ).catch( function( err ) {
         console.error( err );
+
+        try {
+            request( 'http://' + address + ':' + port + '/api/disconnect/' + lockName, function() {
+                request( 'http://' + address + ':' + port + '/api/status/' + lockName );
+            } );
+        } catch ( e ) {
+            // We don't care about request results
+        }
+
         res.sendStatus( 503 );
     } );
 } );
@@ -157,6 +169,15 @@ app.get( '/api/:lock_action(lock|unlock)/:lock_name', timeout( '5 seconds' ), ca
     // Perform requested action
     lock.connect().then( actionFunction ).catch( function( err ) {
         console.error( err );
+
+        try {
+            request( 'http://' + address + ':' + port + '/api/disconnect/' + lockName, function() {
+                request( 'http://' + address + ':' + port + '/api/status/' + lockName );
+            } );
+        } catch ( e ) {
+            // We don't care about request results
+        }
+
         res.sendStatus( 503 );
     } );
 } );