anchor.diff:  async_execute_statement(Stm) ->
       gen_server:call(?MODULE, {execute_normal_statements, Stm}).
   
  --spec execute_statement(stm_ref()) -> {ok, list()} | {error, reason()}.
  +-spec execute_statement(stm_ref()) ->
  +    {ok, list()} | {error, reason()}.
   
   execute_statement(StmRef) ->
       {ok, Tag} = async_execute_statement(StmRef),
       receive_response(Tag).
   
  --spec async_execute(atom() | binary()) -> {ok, reference()} | {error, reason()}.
  +-spec async_execute(atom() | binary()) ->
  +    {ok, reference()} | {error, reason()}.
   
   async_execute(Identifier) ->
       case is_atom(Identifier) of
  
positive.code: 
      async_execute_statement(Stm).
  
  -spec execute(atom() | binary()) -> {ok, list()} | {error, reason()}.
  
  execute(Identifier) ->
      {ok, Tag} = async_execute(Identifier),
      receive_response(Tag).
  
  -spec execute(atom() | binary(), list()) -> {ok, list()} | {error, reason()}.
  
  execute(Identifier, Params) ->
      execute(Identifier, ?BIND_BY_INDEX, Params).
  
  -spec execute(atom() | binary(), bind_type(), list()) -> {ok, list()} | {error, reason()}.
  
  execute(Identifier, BindType, Params) ->
      {ok, Tag} = async_execute(Identifier, BindType, Params),
      receive_response(Tag).
  
  -spec batch_async_execute(batch_type(), list(), list()) -> {ok, reference()} | {error, reason()}.
  
  batch_async_execute(BatchType, StmList, Options) ->
      gen_server:call(?MODULE, {batch_execute, BatchType, StmList, Options}).
  
  -spec batch_execute(batch_type(), list(), list()) -> {ok, list()} | {error, reason()}.
  
  batch_execute(BatchType, StmList, Options) ->
      {ok, Tag} = batch_async_execute(BatchType, StmList, Options),
  
negative.code:             {ok, #erlcass_stm{session = Session, stm = StmRef}}
      end.
  
  -spec bind_prepared_params_by_name(#erlcass_stm{} | stm_ref() , list()) ->
      ok | {error, reason()}.
  
  bind_prepared_params_by_name(Stm, Params) when is_record(Stm, erlcass_stm) ->
      erlcass_nif:cass_statement_bind_parameters(Stm#erlcass_stm.stm, ?BIND_BY_NAME, Params);
  bind_prepared_params_by_name(Stm, Params) ->
      erlcass_nif:cass_statement_bind_parameters(Stm, ?BIND_BY_NAME, Params).
  
  -spec bind_prepared_params_by_index(#erlcass_stm{} | stm_ref(), list()) ->
      ok | {error, reason()}.
  
  bind_prepared_params_by_index(Stm, Params) when is_record(Stm, erlcass_stm) ->
      erlcass_nif:cass_statement_bind_parameters(Stm#erlcass_stm.stm, ?BIND_BY_INDEX, Params);
  bind_prepared_params_by_index(Stm, Params) ->
      erlcass_nif:cass_statement_bind_parameters(Stm, ?BIND_BY_INDEX, Params).
  
  -spec async_execute_statement(stm_ref() | #erlcass_stm{}) ->
      {ok, reference()} | {error, reason()}.
  
  async_execute_statement(Stm) when is_record(Stm, erlcass_stm) ->
      Tag = make_ref(),
  