      Triggers discover of specified services of peripheral. If the servicesUUIDs parameter is nil, all the available services of the peripheral are returned; setting the parameter to nil is considerably slower and is not recommended.
 
      - Parameter serviceUUIDs: An array of [CBUUID](https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBUUID_Class/) objects that you are interested in. Here, each [CBUUID](https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBUUID_Class/) object represents a UUID that identifies the type of service you want to discover.
-     - Returns: Observable which emits next and complete events after specified services are discoverd
+     - Returns: Observable that emits `Next` with array of `Service` instances, once they're discovered.
+     Immediately after that `.Complete` is emitted.
      */
     public func discoverServices(serviceUUIDs: [CBUUID]?) -> Observable<[Service]> {
         let observable = peripheral.rx_didDiscoverServices

        return Observable.create { observer in
            switch type {
            case .WithoutResponse:
                self.ensureValidPeripheralState(Observable.just(characteristic)).subscribe(observer)
            case .WithResponse:
                self.ensureValidPeripheralState(self.monitorWriteForCharacteristic(characteristic).take(1))
                    .subscribe(observer)
            }
            self.peripheral.writeValue(data, forCharacteristic: characteristic.characteristic, type: type)
            return NopDisposable.instance
        }
    }

    /**
     It connects to events of value updates for characteristics.
     - Parameter characteristic: Characteristic to connect
     - Returns: Stream of characteristic, for which value change was detected
     */
    public func monitorValueUpdateForCharacteristic(characteristic: Characteristic) -> Observable<Characteristic> {
        let observable = peripheral.rx_didUpdateValueForCharacteristic

    }

    //MARK: Characteristics
    /**
     Function that triggers characteristics discovery for specified Services and identifiers. Discovery is called after
     subscribtion to `Observable` is made.
     - Parameter identifiers: Identifiers of characteristics that should be discovered. If `nil` - all of the 
     characteristics will be discovered. If you'll pass empty array - none of them will be discovered.
     - Returns: Observable that emits `Next` with array of `Characteristic` instances, once they're discovered.
     Immediately after that `.Complete` is emitted.
     */
    public func discoverCharacteristics(identifiers: [CBUUID]?, service: Service) -> Observable<[Characteristic]> {
        let observable = peripheral.rx_didDiscoverCharacteristicsForService
        .filter { $0.0 == service.service }
