class IbftMiningCoordinator implements MiningCoordinator, BlockAddedObserver {

  @Override
  public void start() {
    if (state.compareAndSet(State.IDLE, State.RUNNING)) {
      ibftExecutors.start();
      blockAddedObserverId = blockchain.observeBlockAdded(this);
      controller.start();
      ibftExecutors.executeIbftProcessor(ibftProcessor);
    }
  }

  public  IbftMiningCoordinator(
      final IbftExecutors ibftExecutors,
      final IbftController controller,
      final IbftProcessor ibftProcessor,
      final IbftBlockCreatorFactory blockCreatorFactory,
      final Blockchain blockchain,
      final IbftEventQueue eventQueue);

}