         let indexPath = browser.selectionIndexPath
         let column = indexPath.length
         browser.setTitle(self.browser(browser,titleOfColumn:column)!, ofColumn: column)
+        // Automatically reconnect if a service or characteristic is selected.
+        if [2,3].contains(indexPath.length) {
+            reconnectPeripheral()
+        }
         if indexPath.length == 1 {
             let peripheral = scanner.devices[indexPath.indexAtPosition(0)]
             if peripheral != connectedPeripheral {

            }
        }
        setupCharacteristicControls()
    }
    
    func setupCharacteristicControls() {

    }
    
    func centralManager(central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: NSError?) {
        if let connectedPeripheral = connectedPeripheral {
            statusLabel.string = (connectedPeripheral.name ?? "") + ":\n disconnected"
        } else {
            statusLabel.string = ""
        }
    }
    
    func centralManagerDidUpdateState(central: CBCentralManager) {}
