anchor.diff:      erli_storage:create(Visit);
   maybe_record_visit(_RD, _) -> ignore.
   
  --spec handle_post(proplist(), rd(), {collection_type(), collection()}) ->
  -			 {true, rd(), term()} |
  -			 {{halt, 409}, rd(), term()} |
  -			 {{halt, 422}, rd(), term()}.
  +-spec handle_post(proplist(), rd(), {p_col_type(), p_col()}) ->
  +			 {true , rd(), {p_col_type(), p_col()}} |
  +			 {{halt, 409}, rd(), {p_col_type(), p_col()}} |
  +			 {{halt, 422}, rd(), {p_col_type(), p_col()}}.
   handle_post(Form, RD, {targets, {_Meta, _Collection}} = Ctx) ->
       case erli_forms:validate(Form,
   			     [{<<"target_url">>, [required, is_url]}])
  
positive.code: -type initial_resource_state() :: object_type() | collection_type() |
  				  relation_type().
  -type rd() :: #wm_reqdata{}.
  
  %%-----------------------------------------------------------
  %% Webmachine Callbacks
  
negative.code: 
  -spec resource_exists(rd(), object_type()) ->
  			     {boolean(), rd(), {object_type(), object()}};
  		     (rd(), {object_type(), object_type()}) ->
  			     {boolean(), rd(), {object_type(), object()}};
  		     (rd(), {collection_type(), range()}) ->
  			     {boolean(), rd(), {collection_type(), collection()}};
  		     (rd(), {{object_type(), collection_type()}, range()}) ->
  			     {boolean(), rd(), {collection_type(), collection()}}.
  resource_exists(RD, ObjectType) when ?is_object(ObjectType) ->
      Id = list_to_binary(wrq:path_info(id, RD)),
      case erli_storage:read(ObjectType, Id) of
  