anchor.diff:      Sanitized = sanitize(Parsed, [], ExtraElts, ExtraAttrs, Options),
       flatten(Sanitized).
   
  -sanitize(B, _Stack, _ExtraElts, _ExtraAttrs, _Options) when is_binary(B) ->
  -    escape(B);
  +sanitize(B, _Stack, _ExtraElts, _ExtraAttrs, Options) when is_binary(B) ->
  +    case sanitize_callback({'TextNode', B}, Options) of
  +        {'TextNode', B1} -> escape(iolist_to_binary(B1));
  +        Other -> Other
  +    end; 
   sanitize({comment, _Text} = Comment, _Stack, _ExtraElts, _ExtraAttrs, Options) ->
  -    case Options of
  -        T when is_tuple(T), element(1, T) =:= context -> 
  -            z_notifier:foldl(sanitize_element, Comment, Options);
  -        _ ->
  -            case proplists:get_value(element, Options) of
  -                undefined -> Comment;
  -                F when is_function(F) -> F(Comment);
  -                {M,F,A} -> erlang:apply(M, F, [Comment|A])
  -            end
  -    end;
  +    sanitize_callback(Comment, Options);
   sanitize({pi, _Raw}, _Stack, _ExtraElts, _ExtraAttrs, _Options) ->
       <<>>;
   sanitize({pi, _Tag, _Attrs}, _Stack, _ExtraElts, _ExtraAttrs, _Options) ->
  
positive.code:                     {nop, []}
              end
      end.
  
  %% @doc Flatten the sanitized html tree to a binary 
  flatten(B) when is_binary(B) ->
  
negative.code:             Tag = { Elt, 
                      Attrs1,
                      [ sanitize(Encl, Stack1, ExtraElts, ExtraAttrs, Options) || Encl <- Enclosed ]},
              sanitize_callback(Tag, Options);
          false ->
              case skip_contents(Elt) of
                  false ->
  