class EventProcessor {

  synchronized void update(E event) {
    Next<M, F> next = store.update(event);

    next.ifHasModel(
        new Consumer<M>() {
          @Override
          public void accept(M model) {
            dispatchModel(model);
          }
        });
    dispatchEffects(next.effects());
  }

    EventProcessor(
      MobiusStore<M, E, F> store, Consumer<F> effectConsumer, Consumer<M> modelConsumer);

}