                     UMServices.SecurityServiceIdentifier]
     }
     
+    private func notifyChange(peripheral p: CBPeripheral, forCharacteristic optC: CBCharacteristic?, state: CharState) {
+        guard let characteristic = optC else {
+            charState = state
+            fillServices()
+            p.discoverServices(nil)
+            return
+        }
+        
+        p.setNotifyValue(true, for: characteristic)
+    }
+    
+    private func read(characteristic optC: CBCharacteristic?, fromPeripheral p: CBPeripheral, state: CharState) {
+        guard let characteristic = optC else {
+            charState = state
+            fillServices()
+            p.discoverServices(nil)
+            return
+        }
+        
+        p.readValue(for: characteristic)
+    }
+    
     // MARK: - External methods
     public func discover() {
         let services = [CBUUID(string: UMServices.DeviceInfoIdentifier),

                return
            }
        case "FA01":
            if let closure = confirmClosure {
                guard let value = dataArray.first else {
                    closure(.failure)
                    confirmClosure = nil
                    return
                }
                
                switch value {
                case UMCharacteristics.UrbandReady:
                    debugPrint("The urband is ready and without problems")
                    closure(UMGestureResponse.success)
                    confirmClosure = nil
                case UMCharacteristics.ConfirmGesture:
                    debugPrint("The urband confirm gesture was detected")
                    closure(UMGestureResponse.success)
                    confirmClosure = nil
                default:
                    debugPrint("Unrecognized value in characteristic \(characteristic.uuid.uuidString)")
                }
            }
        default:
            debugPrint("The characteristic \(characteristic.uuid.uuidString) is not defined yet")
        }

    case unauthorized
}

public enum UMDeviceStatus {
    case success
    case failure
}

public enum UMGestureResponse {
    case confirm
    case failure
}

