<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -47,3 +47,5 @@
 (define-key osx-key-mode-map [end] 'end-of-line)
 (define-key osx-key-mode-map [f3] 'nuke-all-buffers)
 (define-key osx-key-mode-map [f5] 'rgrep)
+
+(toggle-colors-black)
\ No newline at end of file</diff>
      <filename>emacs/custom_keys/custom_keys_config.el</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 (provide 'erlang_mode_config)
 
-(add-to-list 'load-path &quot;/opt/lib/erlang/lib/tools-2.6.1/emacs&quot;)
+(add-to-list 'load-path &quot;/opt/lib/erlang/lib/tools-2.6.2/emacs&quot;)
 (require 'erlang-start)
 (add-hook 'erlang-mode-hook
 	  (lambda()</diff>
      <filename>emacs/erlang/erlang_mode_config.el</filename>
    </modified>
    <modified>
      <diff>@@ -5,4 +5,5 @@ main([File_Name]) -&gt;
     compile:file(File_Name, [warn_obsolete_guard, warn_unused_import,
     			    		   warn_shadow_vars, warn_export_vars,
 					   strong_validation, report,
-					   {i, &quot;../include&quot;}]).
+					   {i, &quot;../include&quot;},
+					   {outdir, &quot;/tmp&quot;}]).</diff>
      <filename>emacs/flymake/bin/eflymake</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@
 
 (require 'flymake)
 
+
 (defun flymake-erlang-init ()
   (let* ((temp-file (flymake-init-create-temp-buffer-copy
 		     'flymake-create-temp-inplace))</diff>
      <filename>emacs/flymake/flymake_config.el</filename>
    </modified>
    <modified>
      <diff>@@ -18,4 +18,4 @@
 (require 'whitespace_config) ;; Loading whitespace
 (require 'git) ;; Loading Git mode
 (require 'autosave_config) ;; Configures autosaving
-(require 'custom_keys_config) ;; custom key bindings
+(require 'custom_keys_config) ;; custom key bindings
\ No newline at end of file</diff>
      <filename>emacs/my_config.el</filename>
    </modified>
    <modified>
      <diff>@@ -9,21 +9,11 @@
 	 pass,
 	 exports}).
 
-transform({attribute, _LineNo, export, []}, _Opts, State) when State#state.pass == 2 -&gt;
-  Exports = &quot;-export([&quot; ++ string:join(State#state.exports, &quot;,&quot;) ++ &quot;]).&quot;,
-  {frabjous_helper:string_to_ast(Exports), State#state{exports=[]}};
-
-transform({attribute, _LineNo, frabjous, _}, _Opts, State) -&gt;
-  {delete, State};
-
-transform({attribute, _LineNo, call_gen_server, Options}, _Opts, State) -&gt;
-  process_attribute(call, Options, State);
-
-transform({attribute, _LineNo, cast_gen_server, Options}, _Opts, State) -&gt;
-  process_attribute(cast, Options, State);
 transform(Node, _Opts, State) -&gt;
+  io:format(&quot;Node: ~p~n&quot;, [Node]),
   {Node, State}.
 
+
 %% If State == nil then this is the first pass
 start(State) -&gt;
   case State of</diff>
      <filename>frabjous/examples/src/remote_call.erl</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ parse_transform(AST, Opts) -&gt;
 invoke_transformer(Transformer, AST, Opts) -&gt;
   increment_and_check_counter(Transformer),
   setup_state(Transformer),
-  NewAST = walk_ast(Transformer, AST, Opts),
+  NewAST = ast_walker:walk(Transformer, AST, Opts),
   EndingState = get(xform_state),
   case Transformer:is_complete(EndingState) of
     true -&gt;
@@ -52,26 +52,6 @@ invoke_transformer(Transformer, AST, Opts) -&gt;
 
 %% Private functions
 
-walk_ast(Transformer, AST, Opts) -&gt;
-  walk_ast(Transformer, AST, Opts, []).
-
-walk_ast(Transformer, [H|T], Opts, Accum) -&gt;
-  case parse_node(H, Transformer, Opts) of
-    delete -&gt;
-      walk_ast(Transformer, T, Opts, Accum);
-    NewNode -&gt;
-      walk_ast(Transformer, T, Opts, lists:append(Accum, [NewNode]))
-  end;
-walk_ast(_Transformer, [], _Opts, Accum) -&gt;
-  Accum.
-
-%% Apply a transformer to an AST node
-parse_node(Node, Transformer, Opts) -&gt;
-  S = get(xform_state),
-  {N1, S1} = Transformer:transform(Node, Opts, S),
-  put(xform_state, S1),
-  N1.
-
 %% Increment the pass counter
 %% Emit a warning if we've exceeded the pass count threshold for a single transformer
 increment_and_check_counter(Transformer) -&gt;</diff>
      <filename>frabjous/src/frabjous.erl</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,3 @@
-Mode = production.
+-include_lib(&quot;merl/include/merl.hrl&quot;).
 
-merl_route_table:add_site(&quot;testing&quot;,
-			  [{&quot;&quot;, fun test_component:index/0},
-			   {&quot;/foo&quot;,
-			    [string],
-			    fun test_component:foo/1},
-			   {&quot;/foo/bar&quot;,
-			    [string, int],
-			    fun test_component:bar/2},
-			    {&quot;/foo/wobble&quot;,
-			     fun test_component:wobble/0}]).
+Mode = production.
\ No newline at end of file</diff>
      <filename>merl/priv/test_data/config.merl</filename>
    </modified>
    <modified>
      <diff>@@ -2,10 +2,13 @@
 
 -author(&quot;kevin@hypotheticalabs.com&quot;).
 
+-include(&quot;merl.hrl&quot;).
+-include(&quot;merl_internal.hrl&quot;).
+
 -behaviour(gen_server).
 
 %% API
--export([start_link/0, add_site/2, find_match/1, clear/0]).
+-export([start_link/0, add_app/1, find_match/1, clear/0]).
 
 -define(SERVER, ?MODULE).
 
@@ -20,8 +23,8 @@
 start_link() -&gt;
   gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
 
-add_site(Name, Routes) -&gt;
-  gen_server:call(?SERVER, {add_site, Name, Routes}).
+add_app(App) -&gt;
+  gen_server:call(?SERVER, {add_app, App}).
 
 find_match(URL) -&gt;
   gen_server:call(?SERVER, {find_match, URL}).
@@ -55,8 +58,8 @@ handle_call({find_match, URL}, _From, State) -&gt;
 	  end,
   {reply, Reply, State};
 
-handle_call({add_site, Name, Routes}, _From, State) -&gt;
-  CompiledRoutes = [compile_route(R) || R &lt;- Routes],
+handle_call({add_app, App}, _From, State) -&gt;
+  CompiledRoutes = [compile_route(R) || R &lt;- App#webapp.routes],
   NewState = State#state{sites=dict:store(Name, CompiledRoutes, State#state.sites),
 			 controllers=update_controllers(CompiledRoutes, State#state.controllers)},
   {reply, ok, NewState};
@@ -108,10 +111,46 @@ update_controllers(Routes, Controllers) -&gt;
 		  end end,
 	      Controllers, Routes).
 
-compile_route({URL, FunRef}) when is_function(FunRef) -&gt;
-  {ok, RegEx} = re:compile(URL),
-  merl_route:new(RegEx, URL, [], merl_util:fun_name(FunRef), FunRef, merl_util:make_generator(URL, []));
+compile_route(Route) -&gt;
+  #route{url=URL, params=Params} = Route,
+  [Handler|Parts] = string:tokens(URL, &quot;/&quot;),
+  CR = resolve_handler(Handler, Route),
+  CR1 = compile_parts(CR, Parts),
+  compile_params(CR1, Params).
+
+resolve_handler(Handler, Route) -&gt;
+  CR = #compiled_route{},
+  case Route#route.target =:= undefined of
+    true -&gt;
+      case string:tokens(Handler, &quot;:&quot;) of
+	[M, F] -&gt;
+	  CR#compiled_route{target={M, F},
+			    root_url=F};
+	[_] -&gt;
+	  throw({illegal_route_spec, merl_util:format(&quot;Missing target fun: ~s&quot;, [Handler])})
+      end;
+    false -&gt;
+      CR#compiled_route{target=Route#route.target,
+			root_url=Route#route.url}
+  end.
 
-compile_route({URL, Specs, FunRef}) when is_function(FunRef) -&gt;
-  {ok, RegEx} = re:compile(URL),
-  merl_route:new(RegEx, URL, Specs, merl_util:fun_name(FunRef), FunRef, merl_util:make_generator(URL, Specs)).
+compile_parts(CR, Parts) -&gt;
+  compile_parts(CR, Parts, []);
+compile_parts(CR, []) -&gt;
+  CR.
+
+compile_parts(CR, [{Regex, DataType}|T], Accum) -&gt;
+  {ok, RE} = re:compile(Regex),
+  compile_parts(CR, T, [{RE, merl_convert:get_converter(DataType)}|Accum]);
+compile_parts(CR, [], Accum) -&gt;
+  CR#compiled_route{url_regexen=lists:reverse(Accum)}.
+
+compile_params(CR, []) -&gt;
+  CR;
+compile_params(CR, Params) -&gt;
+  compile_params(CR, Params, []).
+
+compile_params(CR, [{Name, DataType}|T], Accum) -&gt;
+  compile_params(CR, T, [{Name, merl_convert:get_converter(DataType)}|Accum]);
+compile_params(CR, [], Accum) -&gt;
+  CR#compiled_route{params=lists:reverse(Accum)}.</diff>
      <filename>merl/src/merl_route_table.erl</filename>
    </modified>
    <modified>
      <diff>@@ -12,15 +12,15 @@
 	 terminate/2, code_change/3]).
 
 -record(state,
-       {config_file,
+       {config_mod,
 	config_checksum,
 	mode=development,
 	monitor_pid}).
 
 %% Public API
 
-start_link(ConfigFile) -&gt;
-  gen_server:start_link({local, ?SERVER}, ?MODULE, [ConfigFile], []).
+start_link(ConfigModule) -&gt;
+  gen_server:start_link({local, ?SERVER}, ?MODULE, [ConfigModule], []).
 
 reload_config() -&gt;
   gen_server:call(?SERVER, reload_config).
@@ -41,14 +41,14 @@ stop() -&gt;
 
 %% gen_server callbacks
 
-init([ConfigFile]) -&gt;
-  State = load_configuration(#state{config_file=ConfigFile}),
+init([ConfigModule]) -&gt;
+  State = load_configuration(#state{config_mod=ConfigModule}),
   {ok, State}.
 
 handle_call(stop, _From, State) -&gt;
   {stop, normal, ok, State};
 
-handle_call({find_match, Path, QueryString, Headers}, _From, State) -&gt;
+handle_call({find_match, Path, _QueryString, _Headers}, _From, State) -&gt;
   case merl_route_table:find_match(Path) of
     {ok, Route} -&gt;
       {reply, {ok, Route}, State};
@@ -83,9 +83,9 @@ code_change(_OldVsn, State, _Extra) -&gt;
 
 %% Internal functions
 start_monitor(State) -&gt;
-  #state{config_file=ConfigFile, config_checksum=ConfigChecksum} = State,
-  {ok, Pid} = spawn(fun() -&gt;
-			monitor_config(ConfigFile, ConfigChecksum) end),
+  #state{config_mod=ConfigModule, config_checksum=ConfigChecksum} = State,
+  {ok, Pid} = proc_lib:spawn(fun() -&gt;
+				 monitor_config(ConfigModule, ConfigChecksum) end),
   State#state{monitor_pid=Pid}.
 
 load_configuration(State) -&gt;
@@ -97,10 +97,11 @@ load_configuration(State) -&gt;
   end.
 
 evaluate_config(State) -&gt;
-  S1 = State#state{config_checksum=read_config_checksum(State#state.config_file)},
-  {ok, Contents} = file:read_file(S1#state.config_file),
-  Bindings = merl_script:execute(Contents, new_bindings()),
-  S2 = persist_bindings(Bindings, S1),
+  code:soft_purge(State#state.config_mod),
+  code:purge(State#state.config_mod),
+  code:delete(State#state.config_mod),
+  S1 = State#state{config_checksum=read_config_checksum(State#state.config_mod)},
+  S2 = persist_settings(S1),
   case S2#state.mode =:= production andalso is_pid(S1#state.monitor_pid) of
     true -&gt;
       S1#state.monitor_pid ! shutdown;
@@ -114,23 +115,19 @@ evaluate_config(State) -&gt;
       S2
   end.
 
-persist_bindings(Bindings, State) -&gt;
-  case erl_eval:binding('Mode', Bindings) of
-	 unbound -&gt;
-	   State;
-	 {value, Mode} -&gt;
-	   State#state{mode=Mode}
-       end.
-
-new_bindings() -&gt;
-  erl_eval:new_bindings().
+persist_settings(State) -&gt;
+  #state{config_mod=ConfigMod} = State,
+  Mode = ConfigMod:get_mode(),
+  AppDef = ConfigMod:build_app_definitions(),
+  merl_router:add_app(AppDef),
+  State#state{mode=Mode}.
 
 is_config_needed(State) -&gt;
   case State#state.config_checksum of
     undefined -&gt;
       true;
     Value -&gt;
-      case Value =:= read_config_checksum(State#state.config_file) of
+      case Value =:= read_config_checksum(State#state.config_mod) of
 	true -&gt;
 	  false;
 	false -&gt;
@@ -138,12 +135,12 @@ is_config_needed(State) -&gt;
       end
   end.
 
-read_config_checksum(ConfigFile) -&gt;
-  {ok, FI} = file:read_file_info(ConfigFile),
+read_config_checksum(ConfigModule) -&gt;
+  {ok, FI} = file:read_file_info(code:which(ConfigModule)),
   erlang:md5(term_to_binary(FI)).
 
-monitor_config(ConfigFilePath, ConfigChecksum) -&gt;
-  NewChecksum = case read_config_checksum(ConfigFilePath) =:= ConfigChecksum of
+monitor_config(ConfigModule, ConfigChecksum) -&gt;
+  NewChecksum = case read_config_checksum(ConfigModule) =:= ConfigChecksum of
 		  false -&gt;
 		    {ok, CS} = merl_router:reload_config(),
 		    CS;
@@ -153,7 +150,7 @@ monitor_config(ConfigFilePath, ConfigChecksum) -&gt;
   receive
     shutdown -&gt;
       ok
-  after 30000 -&gt;
+  after 5000 -&gt;
       ok
   end,
-  monitor_config(ConfigFilePath, NewChecksum).
+  monitor_config(ConfigModule, NewChecksum).</diff>
      <filename>merl/src/merl_router.erl</filename>
    </modified>
    <modified>
      <diff>@@ -2,10 +2,13 @@
 
 -author(&quot;kevin@hypotheticalabs.com&quot;).
 
--export([formatb/2, fun_name/1, make_generator/2, pretty_float/1]).
+-export([formatb/2, format/2, fun_name/1, make_generator/2, pretty_float/1]).
 
 formatb(Template, Values) when is_list(Values) -&gt;
-  list_to_binary(lists:flatten(io_lib:format(Template, Values))).
+  list_to_binary(merl_util:format(Template, Values)).
+
+format(Template, Values) when is_list(Values) -&gt;
+  lists:flatten(io_lib:format(Template, Values)).
 
 fun_name(TargetFun) when is_function(TargetFun) -&gt;
   case erlang:fun_info(TargetFun, module) of</diff>
      <filename>merl/src/merl_util.erl</filename>
    </modified>
    <modified>
      <diff>@@ -66,6 +66,7 @@
 
 -module(smerl).
 -author(&quot;Yariv Sadan (yarivsblog@gmail.com, http://yarivsblog.com&quot;).
+-compile([export_all]).
 -export([new/1,
 	 for_module/1,
 	 for_module/2,
@@ -112,7 +113,7 @@
 	]).
 
 -define(L(Obj), io:format(&quot;LOG ~s ~w ~p\n&quot;, [?FILE, ?LINE, Obj])).
--define(S(Obj), io:format(&quot;LOG ~s ~w ~s\n&quot;, [?FILE, ?LINE, Obj])).	 
+-define(S(Obj), io:format(&quot;LOG ~s ~w ~s\n&quot;, [?FILE, ?LINE, Obj])).
 
 -include_lib(&quot;kernel/include/file.hrl&quot;).
 
@@ -215,7 +216,7 @@ mod_for_forms(Mod) -&gt;
 %% @doc Return the module name for the meta_mod.
 %%
 %% @spec(MetaMod::meta_mod()) -&gt; atom()
-get_module(MetaMod) -&gt; 
+get_module(MetaMod) -&gt;
     MetaMod#meta_mod.module.
 
 %% @doc Set the meta_mod's module name.
@@ -245,7 +246,7 @@ get_exports(MetaMod) -&gt;
 	true -&gt;
 	    lists:foldl(
 	      fun({function, _L, Name, Arity, _Clauses}, Exports) -&gt;
-		      [{Name, Arity} | Exports];	      
+		      [{Name, Arity} | Exports];
 		 (_Form, Exports) -&gt;
 		      Exports
 	      end, [], MetaMod#meta_mod.forms)
@@ -315,7 +316,7 @@ get_forms(Module, Path) -&gt;
     end.
 
 get_dirs_in_dir(Dir) -&gt;
-    case file:list_dir(Dir) of 
+    case file:list_dir(Dir) of
 	{error, _} -&gt;
 	    undefined;
 	{ok, Listing} -&gt;
@@ -331,7 +332,7 @@ get_dirs_in_dir(Dir) -&gt;
 
 %% @doc Try to infer module source files from the beam code path.
 get_forms_from_binary(Module, OrigErr) -&gt;
-    Ret = 
+    Ret =
 	case code:where_is_file(atom_to_list(Module) ++ &quot;.beam&quot;) of
 	    non_existing -&gt;
 		OrigErr;
@@ -492,7 +493,7 @@ has_func(MetaMod, FuncName, Arity) -&gt;
 
 %% @doc Get the form for the function with the specified arity in the
 %%   meta_mod.
-%% 
+%%
 %% @spec get_func(MetaMod::meta_mod() | atom(),
 %%   FuncName::atom(), Arity::integer()) -&gt;
 %%     {ok, func_form()} | {error, Err}
@@ -511,7 +512,7 @@ get_func2([], FuncName, Arity) -&gt;
 get_func2([{function, _Line, FuncName, Arity, _Clauses} = Form | _Rest],
 	  FuncName, Arity) -&gt;
     {ok, Form};
-get_func2([_Form|Rest], FuncName, Arity) -&gt;		      
+get_func2([_Form|Rest], FuncName, Arity) -&gt;
     get_func2(Rest, FuncName, Arity).
 
 
@@ -548,7 +549,7 @@ replace_func(_MetaMod, _) -&gt;
 %% 	Err -&gt;
 %% 	    Err
 %%     end.
-	    
+
 %% @doc Compile the module represented by the meta_mod and load the
 %% resulting BEAM into the emulator. This function calls
 %% compile(MetaMod, [report_errors, report_warnings]).
@@ -583,7 +584,7 @@ compile(MetaMod, Options) -&gt;
 
     case compile:forms(Forms2, Options) of
 	{ok, Module, Bin} -&gt;
-	    Res = 
+	    Res =
 		case lists:keysearch(outdir, 1, Options) of
 		    {value, {outdir, OutDir}} -&gt;
 			file:write_file(
@@ -647,15 +648,15 @@ curry_clause({clause, L1, ExistingParams, Guards, _Exprs} = Clause,
 %% 		  [{match, 1, Var, erl_parse:abstract(NewVal)} | Acc]
 %% 	  end, [], lists:zip(FirstParams, NewParams)),
 %%    {clause, L1, LastParams, Guards, Matches ++ Exprs}.
-    
-    Vals = 
+
+    Vals =
 	lists:foldl(
 	  fun({{var,_,Name}, NewVal}, Acc) -&gt;
 		  [{Name, erl_parse:abstract(NewVal)} | Acc];
 	     (_, Acc) -&gt;
 		  Acc
 	  end, [], lists:zip(FirstParams, NewParams)),
-    
+
     NewExprs = replace_vars(Clause, Vals),
 
     {clause, L1, LastParams, Guards, NewExprs}.
@@ -675,7 +676,7 @@ replace_vars(Clause, Vals) -&gt;
 	  end, Clause),
     {clause, _, _, _, NewExprs} = erl_syntax:revert(Tree),
     NewExprs.
-    
+
 
 %% @doc Curry the function from the module with the given param(s)
 %%
@@ -719,7 +720,7 @@ curry(Module, Name, Arity, Params, NewName) -&gt;
 	Err -&gt;
 	    Err
     end.
-		    
+
 
 %% @doc Add the curried form of the function in the meta_mod
 %%  with its curried form.
@@ -747,7 +748,7 @@ curry_add(MetaMod, Name, Arity, Params) -&gt;
 %%     {error, Err}
 curry_add(MetaMod, Name, Arity, Params, NewName) -&gt;
     curry_add(MetaMod, MetaMod, Name, Arity, Params, NewName).
-    
+
 %% @doc Curry the function in the module, rename the curried form, and
 %%   add it to the meta_mod.
 %%
@@ -828,13 +829,13 @@ embed_params({function, L, Name, Arity, Clauses}, Vals) -&gt;
 			end, {[], []}, Params),
 		  NewExprs = replace_vars(Clause, EmbeddedVals),
 		  {clause, L1, OtherParams, Guards, NewExprs}
-		  
-				    
+
+
 %% 		  {Params1, Matches1, _RemainingVals} =
 %% 		      lists:foldl(
 %% 			fun({var, _L2, ParamName} = Param,
 %% 			    {Params2, Matches2, Vals1}) -&gt;
-%% 				case lists:keysearch(ParamName, 1, Vals1) of 
+%% 				case lists:keysearch(ParamName, 1, Vals1) of
 %% 				    {value, {_Name, Val} = Elem} -&gt;
 %% 					Match = {match, L1, Param,
 %% 						 erl_parse:abstract(Val)},
@@ -881,8 +882,8 @@ embed_params(MetaMod, Name, Arity, Values, NewName) -&gt;
 	Err -&gt;
 	    Err
     end.
-	
-    
+
+
 
 
 %% @doc Apply the embed_params function with the list of {Name, Value}
@@ -917,7 +918,7 @@ embed_all(MetaMod, Vals) -&gt;
 	      forms = lists:reverse(NewForms),
 	      export_all = get_export_all(MetaMod)}.
 
-%% @doc extend/2 
+%% @doc extend/2
 %% Add all the parent module's functions that are missing from the child
 %% module to the child module. The new functions in the child module are
 %% shallow: they have the name and arity as their corresponding functions in
@@ -932,7 +933,7 @@ extend(Parent, Child) -&gt;
 %% @doc Similar to extend/2, with the addition of the 'ArityDiff' parameter,
 %% which indicates the difference
 %% in arities Smerl should use when figuring out which functions to
-%% generate based on the modules' exports. This is sometimes 
+%% generate based on the modules' exports. This is sometimes
 %% useful when calling extend() followed by embed_all().
 %%
 %% @spec extend(Parent::atom() | meta_mod(), Child::atom() | meta_mod(),
@@ -942,7 +943,7 @@ extend(Parent, Child, ArityDiff) -&gt;
     extend(Parent, Child, ArityDiff, []).
 
 extend(Parent, Child, ArityDiff, Options) -&gt;
-    {{ParentName, ParentExports, ParentMod}, ChildMod} = 
+    {{ParentName, ParentExports, ParentMod}, ChildMod} =
 	get_extend_data(Parent, Child),
     ChildExports = get_exports(ChildMod),
     ChildExports1 = [{ExportName, ExportArity + ArityDiff} ||
@@ -1017,7 +1018,7 @@ get_params(ParentMod, FuncName, Arity) -&gt;
 
 
 %% @doc Return the pretty-printed source code for the module.
-%% 
+%%
 %% @spec to_src(MetaMod::meta_mod()) -&gt; string()
 to_src(MetaMod) -&gt;
     ExportsForm =
@@ -1025,7 +1026,7 @@ to_src(MetaMod) -&gt;
     AllForms = [{attribute,1,module,get_module(MetaMod)}, ExportsForm |
       get_forms(MetaMod)],
     erl_prettypr:format(erl_syntax:form_list(AllForms)).
-		  
+
 %% @doc Write the pretty printed source code for the module
 %%   to the file with the given file name.
 %%</diff>
      <filename>smerl/smerl.erl</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>merl/src/test_component.erl</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>9c1ff493145766407321df960846d8661aac19f8</id>
    </parent>
  </parents>
  <author>
    <name>kevsmith</name>
    <email>kevin@hypotheticalabs.com</email>
  </author>
  <url>http://github.com/kevsmith/hypotheticalabs/commit/0884af1aeb466776fcddb02b3d222dea8405fe16</url>
  <id>0884af1aeb466776fcddb02b3d222dea8405fe16</id>
  <committed-date>2008-11-20T06:36:32-08:00</committed-date>
  <authored-date>2008-11-20T06:36:32-08:00</authored-date>
  <message>* Conquering git merging</message>
  <tree>6424d6729cecabcf88388d1bf1ea35046ddffeeb</tree>
  <committer>
    <name>kevsmith</name>
    <email>kevin@hypotheticalabs.com</email>
  </committer>
</commit>
