 import CoreBluetooth
 import RxSwift
 
-/// PeripheralManager is a class implementing ReactiveX API which wraps all Core Bluetooth Peripheral's functions allowing to
-/// advertising, publishing L2CAP channels and more.
-/// You can start using this class by add services and starting advertising.
+/// PeripheralManager is a class implementing ReactiveX API which wraps all the Core Bluetooth Peripheral's functions, that allow to
+/// advertise, to publish L2CAP channels and more.
+/// You can start using this class by adding services and starting advertising.
 /// Before calling any public `PeripheralManager`'s functions you should make sure that Bluetooth is turned on and powered on. It can be done
-/// by calling and observing returned value of `observeState()` and then chaining it with `add(_:)` with `startAdvertising(_:)`:
+/// by `observeState()`, observing it's value and then chaining it with `add(_:)` with `startAdvertising(_:)`:
 /// ```
 /// let disposable = centralManager.observeState
 ///     .startWith(centralManager.state)

///     .flatMap { centralManager.add(myService) }
///     .flatMap { centralManager.startAdvertising(myAdvertisementData) }
/// ```
/// As a result your peripheral will start advertising. To stop advertising simply dispose it:
/// ```
/// disposable.dispose()
/// ```


    // MARK: Services

    /// Function that triggers `CBPeripheralManager.add(_:)` and waits for
    /// delegate `CBPeripheralManagerDelegate.peripheralManager(_:didAdd:error:)` result.
    /// If it receives a non nil in the result, it will emit `BluetoothError.addingServiceFailed` error.
    /// Add method is called after subscription to `Observable` is made.
    /// - Parameter service: `Characteristic` to read value from
    /// - Returns: `Single` which emits `next` with given characteristic when value is ready to read.
