 /**
  The data structure responsible for holding application state, allowing controlled mutation through dispatched 
  `Actions` and notifying interested parties that `subscribe` to state changes.
- **/
+ */
 public final class Store<State>: Publisher, Dispatch {
     private let reduce: (State, Action) -> State
     

     Subscribes a `Subscriber` that is compatible with this `Publisher`.
     - parameter subscriber The compatible `Subscriber`.
     - returns A `dispatch` function and an `unsubscribe` handle, encapsulated.
    **/
    func connection <T: Subscriber where T.Publishing == Publishing> (to subscriber: T) -> StateConnection {
        let dispatch = { self.dispatch($0) }
        let unsubscribe = self.subscribe(subscriber: subscriber)

/**
 Defines `Action` dispatch cabalities. Instances conforming to `Dispatch` are expected to know how to 
 dispatch `Actions`.
 */

public protocol Dispatch {
    /**
     Dispatches an action.
     - parameter action The action that'll be dispatched.
    */
    func dispatch(action: Action)
}

