anchor.diff:  	    Body = jsx:encode([{<<"formErrors">>, Errors}]),
   	    NRD = erli_utils:add_json_response(RD, Body),
   	    {{halt, 422}, NRD, Ctx}
  -    end;
  -handle_post(Form, RD, {visits, {_Meta, _Collection}}=Ctx) ->
  -    case erli_forms:validate(Form, [{<<"path_id">>,
  -				     [required, is_path_id]}]) of
  -	valid ->
  -	    Visit = build_record(visit, [{<<"ip">>, wrq:peer(RD)}|Form]),
  -	    maybe_store(visits, Visit, RD, Ctx);
  -	Errors ->
  -	    Body = jsx:encode([{<<"formErrors">>, Errors}]),
  -	    NRD = erli_utils:add_json_response(RD, Body),
  -	    {{halt, 422}, NRD, Ctx}
       end.
   
   
  
positive.code:     {false, RD, Ctx}.
  
  
  options(RD, {CollectionType, _Range}=Ctx) ->
      ColType = atom_to_list(CollectionType),
      {[{"Content-Length", "0"},
        {"Accept-Ranges", ColType},
        {"Allow", "GET, POST, HEAD, OPTIONS"}], RD, Ctx};
  options(RD, Ctx) ->
      {[{"Content-Length", "0"},
        {"Allow", "GET, DELETE, HEAD, OPTIONS"}], RD, Ctx}.
  
negative.code:     {ok, InitialState}.
  
  
  allowed_methods(RD, visits=Ctx) ->
      {['GET', 'HEAD', 'OPTIONS'], RD, Ctx};
  allowed_methods(RD, visit=Ctx) ->
      {['GET', 'HEAD', 'OPTIONS'], RD, Ctx};
  allowed_methods(RD, Ctx) when ?is_collection(Ctx) ->
      {['GET', 'POST', 'HEAD', 'OPTIONS'], RD, Ctx};
  allowed_methods(RD, Ctx) ->
      {['GET', 'DELETE', 'HEAD', 'OPTIONS'], RD, Ctx}.
  
  