     }
 
     /**
-      Writes given data to descriptor
-     - Parameter data: Characteristic to connect
-     - Parameter descriptor: descriptor to write value to
-     - Returns: Stream of descriptor
+      Function that triggers write of data to descriptor. Write is called after subscribtion to `Observable` is made.
+     - Parameter data: `NSData` that'll be written to `Descriptor` instance
+     - Parameter descriptor: `Descriptor` instance to write value to.
+     - Returns: Observable that emits `Next` with `Descriptor` instance, once value is written successfully. 
+     Immediately after that `.Complete` is emitted.
      */
     public func writeValue(data: NSData, forDescriptor descriptor: Descriptor) -> Observable<Descriptor> {
         return Observable.create { observer in

    }

    /**
     Function that returns observable, which fire when peripheral services have changed. In case you're interested what exact changes might occur - please refer to 
     [Apple Documentation](https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBPeripheralDelegate_Protocol/#//apple_ref/occ/intfm/CBPeripheralDelegate/peripheral:didModifyServices:)

     - returns: Observable that emits tuples: `(Peripheral, [Service])` when services were modified. It's **infinite** stream of values, so .Complete is never emitted.
    */
    public func monitorServicesModification() -> Observable<(Peripheral, [Service])> {
        let observable = peripheral.rx_didModifyServices


    /**
     Function that merges given observable with error streams of invalid Central Manager states.
     - parameter observable: observation to be transformed
     - returns: Source observable which listens on state chnage errors as well
     */
    func ensureValidPeripheralState<T>(observable: Observable<T>) -> Observable<T> {
        return Observable.deferred {
