anchor.diff:      {next_state, StateName, State}.
   
   -spec common(_, fsm_from(), state(), StateName) -> {next_state, StateName, state()}.
  +common({force_state, {Epoch, Seq}}, From, State, StateName) ->
  +    State2 = set_epoch(Epoch, set_seq(Seq, State)),
  +    gen_fsm:reply(From, ok),
  +    {next_state, StateName, State2};
   common(_Msg, From, State, StateName) ->
       ?OUT("~p: ~s/ignoring: ~p~n", [State#state.id, StateName, _Msg]),
       send_reply(From, nack),
  
positive.code: compute_members(Views) ->
      lists:usort(lists:append(Views)).
  
  -spec get_peers([undefined | {_,atom()}],state()) -> [{undefined | {_,_},undefined | pid()}].
  get_peers(Members, State=#state{id=_Id}) ->
      %% [{Peer, peer(Peer, State)} || Peer <- Members,
      %%                               Peer =/= Id].
      [{Peer, peer(Peer, State)} || Peer <- Members].
  
  -spec peer(undefined | {_,atom()},state()) -> undefined | pid().
  peer(Id, #state{id=Id}) ->
      self();
  peer(Id, #state{ensemble=Ensemble}) ->
  
negative.code: -type maybe_obj() :: obj() | notfound | timeout. %% TODO: Pretty sure this can also be failed
  
  -type target() :: pid() | ensemble_id().
  -type maybe_peer_id() :: undefined | peer_id().
  
  -record(state, {id            :: peer_id(),
                  ensemble      :: ensemble_id(),
  