anchor.diff:      {reply, Reply, State};
   handle_call({lease_req, get_lease_path, Public}, _From, State) ->
       Reply = case p_get_lease(Public) of
  -                {ok, #lease{path = Path}} ->
  -                    {ok, Path};
  +                {ok, #lease{path = {Repo, Path}}} ->
  +                    {ok, <<Repo/binary, Path/binary>>};
                   Other ->
                       Other
               end,
  
positive.code: 
  -define(SERVER, ?MODULE).
  
  -record(lease, { path   :: binary()   % subpath which is locked
                 , key_id   :: binary()   % user identifier
                 , public :: binary()   % public string used for token generation
                 , secret :: binary()   % secret used for token generation
                 , time   :: integer()  % timestamp (time when lease acquired)
                 }).
  -type lease() :: #lease{}.
  
  
negative.code: p_new_lease(KeyId, Path, Public, Secret, _State) ->
      {ok, MaxLeaseTime} = application:get_env(cvmfs_gateway, max_lease_time),
  
      {Repo, Subpath} = cvmfs_path_util:split_repo_path(Path),
  
      %% Match statement that selects all rows with a given repo,
      %% returning a list of {Path, Time} pairs
      MS = ets:fun2ms(fun(#lease{path = {R, _}} = Lease) when R =:= Repo ->
                              Lease
                      end),
  
      AreOverlapping = fun(#lease{path = {_, P}}) ->
                               cvmfs_path_util:are_overlapping(P, Subpath)
                       end,
  
      T = fun() ->
  