anchor.diff:              {error, timeout}
       end.
   
  +-spec clocksi_bulk_update(ClientClock:: vectorclock:vectorclock(),
  +                          Operations::[]) -> term().
   clocksi_bulk_update(ClientClock, Operations) ->
       clocksi_execute_tx(ClientClock, Operations).
   
  +-spec clocksi_bulk_update(Operations :: []) -> term().
   clocksi_bulk_update(Operations) ->
       clocksi_execute_tx(Operations).
   
  +-spec clocksi_read(ClientClock :: vectorclock:vectorclock(),
  +                   Key :: key(), Type:: type()) -> term().
   clocksi_read(ClientClock, Key, Type) ->
       clocksi_execute_tx(ClientClock, [{read, Key, Type}]).
   
  
positive.code: %%      ClientClock: last clock the client has seen from a successful transaction.
  %%      Returns: an ok message along with the new TxId.
  %%
  clocksi_istart_tx(Clock) ->
      lager:info("Starting FSM for interactive transaction."),
      {ok, _} = clocksi_interactive_tx_coord_sup:start_fsm([self(), Clock]),
  
negative.code:             EndOfTx
      end.
  
  -spec clocksi_execute_tx(Operations::[]) -> term().
  clocksi_execute_tx(Operations) ->
      lager:info("Received transaction for operations: ~p", [Operations]),
      {ok, _} = clocksi_tx_coord_sup:start_fsm([self(), Operations]),
  