anchor.diff:                                                                     | dict()
                                                                      | tuple()
                                                                      | proplist().
  +%% @doc Format the results from emysql as a list of Types
   format_result(Type,Res) ->
  -    Json = emysql_util:as_json(Res),
  -    case Type of
  -        list ->
  -            format_list_result(Json);
  -        tuple ->
  -            format_tuple_result(Json);
  -        proplist ->
  -            format_proplist_result(Json);
  -        dict ->
  -            format_dict_result(Json)
  -    end.
  +Json = emysql_util:as_json(Res),
  +case Type of
  +list ->
  +format_list_result(Json);
  +tuple ->
  +format_tuple_result(Json);
  +proplist ->
  +format_proplist_result(Json);
  +dict ->
  +format_dict_result(Json)
  +end.
   
   -spec format_value(V :: term()) -> undefined | string() | any().
  +%% @doc Stringifies values from the database if the returned value is a binary,
  +%% otherwise, leaves it be (so numbers are returned as their respective
  +%% numbers, rather than being converted to strings).
   format_value(null) ->
       undefined;
   format_value(V) when is_binary(V) ->
  
positive.code:            Q :: sql(), ParamList :: [value()]) ->   insert_id() 
                                                    | update_id()
                                                    | [list() | dict() | tuple() | proplist()].
  
  db_q(Type,Db,Q,ParamList) ->
      NewQ = q_prep(Q,ParamList),
      db_q(Type,Db,NewQ).
  
negative.code:         [First|_] -> First
      end.
  
  -spec fr(Q :: sql()) -> list() | not_found.
  fr(Q) ->
      fr(Q,[]).
  
  -spec fffr(Q :: sql(), ParamList :: [value()]) -> string() | integer() | not_found.
  %% @doc Get First Field of First record
  fffr(Q,ParamList) ->
      case fr(Q,ParamList) of
          not_found -> not_found;
          [First|_] -> First
      end.
  
  -spec fffr(Q :: sql()) -> string() | integer() | not_found.
  fffr(Q) ->
      fffr(Q,[]).
  
  %% First Field List
  -spec ffl(Q :: sql(), ParamList :: [value()]) -> [string() | integer()].
  ffl(Q,ParamList) ->
      [First || [First | _ ] <- db:q(Q,ParamList)].
  
  -spec ffl(Q :: sql()) -> [string() | integer()].
  ffl(Q) ->
      ffl(Q,[]).
  
  -spec table_fields(Table :: table()) -> [atom()].
  %% deprecate this. Use "fields"
  table_fields(Table) when is_atom(Table) ->
      table_fields(atom_to_list(Table));
  table_fields(Table) ->
      [list_to_atom(F) || F <- db:ffl(["describe ",Table])].
  
  -spec fields(Table :: table()) -> [atom()].
  fields(Table) ->
      table_fields(Table).
  
  -spec qexists(Q :: sql()) -> boolean().
  %% @doc Existance query, just returns true if the query Q returns anything
  %% other than an empty set.
  %% TODO: Check for "limit" clause and add? Or rely on user.
  qexists(Q) ->
      qexists(Q,[]).
  
  -spec qexists(Q :: sql(), ParamList :: [value()]) -> boolean().
  qexists(Q,ParamList) ->
      case q(Q,ParamList) of
          [] -> false;
  