anchor.diff:          }=TreeWalker) ->
       MergedInfo = merge_info(BodyInfo, CustomTagsInfo),
   
  -    Render0FunctionAst = ?Q("render() -> render([])."),
  -    Render1FunctionAst = ?Q("render(Variables) -> render(Variables, [])."),
  -
  -    Render2FunctionAst = ?Q(["render(Variables, RenderOptions) ->",
  -                             "  try render_internal(Variables, RenderOptions) of",
  -                             "    Val -> {ok, Val}",
  -                             "  catch",
  -                             "    Err -> {error, Err}",
  -                             "end."
  -                            ]),
  -
  -    SourceFunctionAst = ?Q("source() -> {_@File@, _@CheckSum@}."),
  -
  -    DependenciesFunctionAst = dependencies_function(MergedInfo#ast_info.dependencies),
  -
  -    TranslatableStringsAst = translatable_strings_function(MergedInfo#ast_info.translatable_strings),
  -
  -    TranslatedBlocksAst = translated_blocks_function(MergedInfo#ast_info.translated_blocks),
  -
  -    VariablesAst = variables_function(MergedInfo#ast_info.var_names),
  -
  -    MatchAst = options_match_ast(TreeWalker),
  -    BodyAstTmp = MatchAst ++ stringify(BodyAst, Context),
  -    RenderInternalFunctionAst = ?Q("render_internal(_Variables, RenderOptions) -> _@BodyAstTmp."),
  -
  -    ModuleAst  = ?Q("-module('@Module@')."),
  -
  -    ExportAst = erl_syntax:attribute(
  -                  erl_syntax:atom(export),
  -                  [erl_syntax:list(
  -                     [erl_syntax:arity_qualifier(erl_syntax:atom(render), erl_syntax:integer(0)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(render), erl_syntax:integer(1)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(render), erl_syntax:integer(2)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(source), erl_syntax:integer(0)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(dependencies), erl_syntax:integer(0)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(translatable_strings), erl_syntax:integer(0)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(translated_blocks), erl_syntax:integer(0)),
  -                      erl_syntax:arity_qualifier(erl_syntax:atom(variables), erl_syntax:integer(0))
  -                     ])
  -                  ]),
  +    Dependencies = MergedInfo#ast_info.dependencies,
  +    TranslatableStrings = MergedInfo#ast_info.translatable_strings,
  +    TranslatedBlocks = MergedInfo#ast_info.translated_blocks,
  +    Variables = lists:usort(MergedInfo#ast_info.var_names),
  +
  +    FinalBodyAst = options_match_ast(TreeWalker) ++ stringify(BodyAst, Context),
   
       erl_syntax:revert_forms(
         erl_syntax:form_list(
  -        [ModuleAst, ExportAst, Render0FunctionAst, Render1FunctionAst, Render2FunctionAst,
  -         SourceFunctionAst, DependenciesFunctionAst, TranslatableStringsAst,
  -         TranslatedBlocksAst, VariablesAst, RenderInternalFunctionAst,
  -         CustomTagsFunctionAst
  -         |BodyInfo#ast_info.pre_render_asts
  -        ])).
  +        ?Q(["-module('@Module@').",
  +            "-export([render/0, render/1, render/2, source/0, dependencies/0,",
  +            "         translatable_strings/0, translated_blocks/0, variables/0]).",
  +            "render() -> render([], []).",
  +            "render(Variables) -> render(Variables, []).",
  +            "render(Variables, RenderOptions) ->",
  +            "  try render_internal(Variables, RenderOptions) of",
  +            "    Val -> {ok, Val}",
  +            "  catch",
  +            "    Err -> {error, Err}",
  +            "  end.",
  +            "source() -> {_@File@, _@CheckSum@}.",
  +            "dependencies() -> _@Dependencies@.",
  +            "translatable_strings() -> _@TranslatableStrings@.",
  +            "translated_blocks() -> _@TranslatedBlocks@.",
  +            "variables() -> _@Variables@.",
  +            "render_internal(_Variables, RenderOptions) -> _@FinalBodyAst.",
  +            "'@_CustomTagsFunctionAst'() -> _."
  +           ])
  +       )).
   
   options_match_ast(#treewalker{ context=Context }=TreeWalker) ->
       options_match_ast(Context, TreeWalker);
  
positive.code:     try body_ast(DjangoParseTree, init_treewalker(Context)) of
          {{BodyAst, BodyInfo}, BodyTreeWalker} ->
              try custom_tags_ast(BodyInfo#ast_info.custom_tags, BodyTreeWalker) of
                  {{CustomTagsAst, CustomTagsInfo},
                   #treewalker{
                      context=#dtl_context{
                                 errors=#error_info{ list=Errors }
  
negative.code: translatable_strings_function(TranslatableStrings) ->
      ?Q("translatable_strings() -> _@TranslatableStrings@.").
  
  custom_forms(Dir, Module, Functions, AstInfo) ->
      Exported = [erl_syntax:arity_qualifier(erl_syntax:atom(source_dir), erl_syntax:integer(0)),
                  erl_syntax:arity_qualifier(erl_syntax:atom(dependencies), erl_syntax:integer(0)),
  