anchor.diff:  %%          {io_list(), webmachine:wrq(), context()}
   %% @doc Get the representation of this resource that will be
   %%      sent to the client.
  -produce_body(ReqData, Context=#ctx{key=container,
  -                                   bucket=Bucket}) ->
  +produce_body(ReqData, Context=#ctx{key=container,module=Mod}) ->
       Qopts = wrq:req_qs(ReqData),
       Schema = case proplists:lookup("schema", Qopts) of
                    {"schema", "false"} -> [];
  -                 _ -> [{schema, {struct, full_schema(Bucket)}}]
  +                 _ -> [{schema, {struct, full_schema(Mod)}}]
                end,
       {Keys, Context1} = case proplists:lookup("keys", Qopts) of
                              {"keys", "false"} -> {[], Context};
  
positive.code:     {{halt, 404},
       wrq:append_to_response_body("Unknown bucket.", ReqData),
       Context};
  is_authorized(ReqData, Context=#ctx{key=Key,bucket=Bucket,jiak_context=JC}) ->
      {Result, RD1, JC1} = Bucket:auth_ok(Key, ReqData, JC),
      {Result, RD1, Context#ctx{jiak_context=JC1}}.
  
  %% @spec forbidden(webmachine:wrq(), context()) ->
  
negative.code:             _ ->
                  {item, ReqData, Key}
          end,
      case Mod:check_write({PutType, ObjId},JiakObject0,NewRD,JCTX) of
          {{error, Reason}, RD1, JC1} ->
              {{halt,403},
               wrq:append_to_response_body(
                 io_lib:format("Write disallowed, ~p.~n", [Reason]), RD1),
               Context#ctx{jiak_context=JC1}};
          {{ok, JiakObject1}, RD1, JC1} ->
  	    Allowed = Mod:allowed_fields(),
  	    case check_allowed(JiakObject1, Allowed) of
  		true ->
  		    Required = Mod:required_fields(),
  		    case check_required(JiakObject1, Required) of
  			true ->
  			    case Mod:effect_write(Key,JiakObject1,RD1,JC1) of
  				{{error, Reason},RD2,JC2} ->
                                      {{error, Reason}, RD2,
                                       Context#ctx{jiak_context=JC2}};
  