anchor.diff:      delete_links(Key, ModelName, [LinkName]).
   
   
  --spec fetch_link(document(), link_name()) -> {ok, normalized_link_target()} | generic_error().
  +%%--------------------------------------------------------------------
  +%% @doc
  +%% Gets specified link from given document.
  +%%--------------------------------------------------------------------
  +-spec fetch_link(document(), link_name()) -> {ok, normalized_link_target()} | link_error().
   fetch_link(#document{key = Key} = Doc, LinkName) ->
       fetch_link(Key, model_name(Doc), LinkName).
   
  +
  +%%--------------------------------------------------------------------
  +%% @doc
  +%% Gets specified link from the document given by key.
  +%%--------------------------------------------------------------------
   -spec fetch_link(key(), model_behaviour:model_type(), link_name()) ->
       {ok, normalized_link_target()} | generic_error().
   fetch_link(Key, ModelName, LinkName) ->
       _ModelConfig = ModelName:model_init(),
       exec_driver(ModelName, ?PERSISTENCE_DRIVER, fetch_link, [Key, LinkName]).
   
  +
  +%%--------------------------------------------------------------------
  +%% @doc
  +%% Gets document pointed by given link of given document.
  +%%--------------------------------------------------------------------
   -spec fetch_link_target(document(), link_name()) -> {ok, document()} | generic_error().
   fetch_link_target(#document{key = Key} = Doc, LinkName) ->
       fetch_link_target(Key, model_name(Doc), LinkName).
   
  +
  +%%--------------------------------------------------------------------
  +%% @doc
  +%% Gets document pointed by given link of document given by key.
  +%%--------------------------------------------------------------------
   -spec fetch_link_target(key(), model_behaviour:model_type(), link_name()) ->
       {ok, document()} | generic_error().
   fetch_link_target(Key, ModelName, LinkName) ->
  
positive.code: -type update_error() :: not_found_error(term()) | generic_error().
  -type create_error() :: generic_error() | {error, already_exists}.
  -type get_error() :: not_found_error(term()) | generic_error().
  
  -export_type([generic_error/0, not_found_error/1, update_error/0, create_error/0, get_error/0]).
  
  %% API utility types
  -type store_level() :: disk_only | local_only | global_only | locally_cached | globally_cached.
  
negative.code:     exec_driver(ModelName, level_to_driver(Level), exists, [Key]).
  
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Adds links to given document.
  %%--------------------------------------------------------------------
  -spec add_links(document(), link_spec() | [link_spec()]) -> ok | generic_error().
  add_links(#document{key = Key} = Doc, Links) ->
      add_links(Key, model_name(Doc), Links).
  
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Adds given links to the document with given key.
  %%--------------------------------------------------------------------
  -spec add_links(key(), model_behaviour:model_type(), link_spec() | [link_spec()]) ->
      ok | generic_error().
  add_links(Key, ModelName, {_LinkName, _LinkTarget} = LinkSpec) ->
  