anchor.diff:  input_pars_1(_) ->
       throw:error(badarg).
   
  -init_composite_refac(ModName, Args)->
  +init_composite_refac(ModName, Args=[CurFileName, [Line,Col],
  +                                    [[StartLine, StartCol],
  +                                     [EndLn, EndCol]], UserInputs,
  +                                    SearchPaths, TabWidth])->
       ?wrangler_io("\nCMD: ~p:init_composite_refac(~p,~p).\n",
   		 [?MODULE, ModName, Args]),
       Module = if is_list(ModName) ->
  
positive.code:                 true ->
                       ModName
               end,
      case apply(Module, composite_refac, []) of
          {error, Reason} ->
              {error, Reason};
          Cmds ->
              start_composite_refac_server(lists:append(Cmds))
      end.
  
  start_composite_refac_server(Cmds)->
      spawn_link(fun()->composite_refac_server_loop(#state{cmds=Cmds}) end).
  
  stop_composite_refac_server(Pid) ->
      Pid!stop.
  
  get_next_command(Pid) ->
      wrangler_io:format("Pid:\n~p\n", [Pid]),
      Pid!{self(), get_next_command},
      receive 
          {Pid, NextCmd} ->
              wrangler_io:format("NextCmd:\n~p\n", [NextCmd]),
              case NextCmd of 
                  {ok, none} ->
                      ChangedFiles = get_changed_files(Pid),
                      stop_composite_refac_server(Pid),
                      wrangler_io:format("Res:\n~p\n", [{ok, none, ChangedFiles}]),
                      {ok, none, ChangedFiles};
                  {ok, Cmd} ->
                      wrangler_io:format("Res:\n~p\n", [{ok, Cmd}]),
                      {ok, Cmd}
              end
      end.
          
  get_changed_files(Pid) ->    
      Pid ! {self(), get_changed_files},
      receive 
          {Pid, ChangedFiles} ->
              ChangedFiles
      end.
  
  composite_refac_server_loop(State=#state{cmds=Cmds, changed_files=Files}) ->
      receive
          {From, get_next_command} ->
              case Cmds of 
                   [] ->
                       From ! {self(), {ok, none}},
                       composite_refac_server_loop(State);
                   [C|Cs] ->
                       %% need to do more work here!!!
                       From ! {self(), {ok, C}},
                      composite_refac_server_loop(State#state{cmds=Cs})
               end;
          {From, get_changed_files} ->
              From ! {self(), lists:reverse(Files)},
              composite_refac_server_loop(State);
          stop ->
              ok;
          _Msg ->
              composite_refac_server_loop(State)
      end.
  
negative.code: %%@author  Huiqing Li <H.Li@kent.ac.uk>
  %%
  %%
  -module(gen_composite_refac).
  
  -export([init_composite_refac/2,get_next_command/2, input_par_prompts/1]).
  
  -export([behaviour_info/1]).
  
  -compile(export_all).
  
  -include("../include/wrangler.hrl").
  
  -define(DEBUG, true).
   
  -ifdef(DEBUG).
  -define(debug(__String, __Args), ?wrangler_io(__String, __Args)).
  -else.
  -define(debug(__String, __Args), ok).
  -endif.
  
  -spec behaviour_info(atom()) ->[{atom(), arity()}].
  behaviour_info(callbacks) ->
      [{composite_refac,1}, {input_par_prompts, 0}].
  
  
  input_par_prompts(CallBackMod) ->
  