  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, Dispatcher {
+public final class Store<State>: Publisher, StateReading, Dispatcher {
     private let reduce: (State, Action) -> State
 
     private var state: State {

 */
public protocol Publisher {
    associatedtype Publishing
    /**
     Adds a handler to a generic event.


    private func publish(newState: State) {
        subscribers.values.forEach { $0(newState) }
    }

    public var getState: Void -> State {
        return { self.state }
    }
}

/**
 Defines state-reading capabilities.
 */

public protocol StateReading {
    associatedtype State
    
    /**
     Encloses the current state and provides a way to read hot snapshots
     of it.
    */
    var getState: Void -> State { get }
}

/**
