anchor.diff:                  ok
           end,
       Props;
  -succeed(Props, {search, Source, Self) when Self == self() ->
  +succeed(Props, {look, Source, Self) when Self == self() ->
       describe(Source, Self, Props),
       Props;
   succeed(Props, Msg) ->
  
positive.code:     erlmud_object:attempt(Attack, {attack, Attack, self(), Target}),
      [{attack, Attack} | Props].
  
  %% If we're describing ourself on our own (e.g. look at Bob) then
  %% we can just send "Bob is a human <description of non-process properites>;
  %% however, if we're seen in the context of a room then we need to send our description
  %% back to the room so the room can modify the description with something
  %% like "In <room name> you see <character description".
  %%
  %% You have to look at something to get it's child property descriptions. That is,
  %% when you look directly at something you'll get a description of all it's children one
  %% level deep.
  %%
  %% e.g. look at the room:
  %% > look
  %% > You are in a featureless box.
  %% > In the featureless box you see a human male
  %% > In the featureless box you see a sword.
  %% > In the featureless box you see a loaf of bread.
  %% > look human male
  %% > The human male is blah blah blah
  %% > The human male is carrying/wearing/holding a hammer <-- hammer in context
  %% > The human male is carrying/wearing/holding a funny hat
  %% > look funny hat ... etc. etc.
  describe(Source, Context, Props) when Context == self() ->
  
  desbribe(Source, Context, Props) ->
      %% TODO: actually start a describe message with the source as the target
      %% "Dear Src, In the <room> you see <description>."
      erlmud_object:attempt(Source, {send, "
      {Src, Room, Props}.
  
  is_owner(MaybeOwner, Props) when is_pid(MaybeOwner) ->
      MaybeOwner == proplists:get_value(owner, Props);
  
negative.code:     {succeed, _IsCurrAttack = lists:member({attack, Attack}, Props), Props};
  attempt(_Owner, Props, {die, Self}) when Self == self() ->
      {succeed, true, Props};
  attempt(_Owner, Props, {look, Source, TargetName}) when Source =/= self(),
                                                    is_binary(TargetName) ->
      log(debug, [<<"Checking if name ">>, TargetName, <<" matches">>]),
      SelfName = proplists:get_value(name, Props, <<>>),
      case re:run(SelfName, TargetName, [{capture, none}]) of
          match ->
              NewMessage = {look, Source, self(), erlmud_hierarchy:new(self())},
              {{resend, Source, NewMessage}, _ShouldSubscribe = false, Props};
          _ ->
              log(debug,
  