anchor.diff:  del_schema(Key) ->
     jesse_database:delete(Key).
   
  -%% @doc Updates schema definitions in in-memory storage.
  +%% @doc Loads schema definitions from filesystem to in-memory storage.
   %%
  -%% Equivalent to `update_schema(Path, ParseFun, ValidationFun, MakeKeyFun)'
  +%% Equivalent to `load_schemas(Path, ParseFun, ValidationFun, MakeKeyFun)'
   %% where `ValidationFun' is `fun jesse_json:is_json_object/1' and
  -%% `MakeKeyFun' is `fun jesse_schema_validator:get_schema_id/1'.
  --spec update_schema( Path     :: string()
  -                   , ParseFun :: fun((binary()) -> json_term())
  -                   ) -> jesse_database:update_result().
  -update_schema(Path, ParseFun) ->
  -  update_schema( Path
  -               , ParseFun
  -               , fun jesse_schema_validator:is_json_object/1
  -               , fun jesse_schema_validator:get_schema_id/1
  -               ).
  +%% `MakeKeyFun' is `fun jesse_schema_validator:get_schema_id/1'. In this case
  +%% the key will be the value of `id' attribute from the given schemas.
  +-spec load_schemas( Path     :: string()
  +                  , ParseFun :: fun((binary()) -> json_term())
  +                  ) -> jesse_database:update_result().
  +load_schemas(Path, ParseFun) ->
  +  load_schemas( Path
  +              , ParseFun
  +              , fun jesse_schema_validator:is_json_object/1
  +              , fun jesse_schema_validator:get_schema_id/1
  +              ).
   
  -%% @doc Updates schema definitions in in-memory storage. The function loads all
  -%% the files from directory `Path', then each schema entry will be checked
  -%% for a validity by function `ValidationFun', and will be stored in in-memory
  -%% storage with a key returned by `MakeKeyFun' function.
  +%% @doc Loads schema definitions from filesystem to in-memory storage.
  +%% The function loads all the files from directory `Path', then each schema
  +%% entry will be checked for a validity by function `ValidationFun', and
  +%% will be stored in in-memory storage with a key returned by `MakeKeyFun'
  +%% function.
   %%
   %% In addition to a schema definition, a timestamp of the schema file will be
   %% stored, so, during the next update timestamps will be compared to avoid
  
positive.code: %% to the caller, otherwise an error with an appropriate error reason
  %% is returned.
  -spec validate(Schema :: any(), Data :: json_term()) -> {ok, json_term()}
                                                        | {error, term()}.
  validate(Schema, Data) ->
    try
      JsonSchema = jesse_database:read(Schema),
  
negative.code:              ]).
  
  -type json_term() :: term().
  -type error()     :: {error, term()}.
  
  %%% API
  %% @doc Adds a schema definition `Schema' to in-memory storage associated with
  %% a key `Key'. It will overwrite an existing schema with the same key if
  %% there is any.
  -spec add_schema(Key :: any(), Schema :: json_term()) -> ok | error().
  add_schema(Key, Schema) ->
    ValidationFun = fun jesse_schema_validator:is_json_object/1,
    MakeKeyFun    = fun(_) -> Key end,
  