diff --git a/lib/erl/src/thrift.app.src b/lib/erl/src/thrift.app.src
index 590e6a9..e1d6be1 100644
--- a/lib/erl/src/thrift.app.src
+++ b/lib/erl/src/thrift.app.src
@@ -32,10 +32,15 @@
 
   % configuration parameters similar to those in the config file specified
   % on the command line. can be fetched with gas:get_env
-  {env, []},
+  {env, [
+    {term_width, 110},
+    {force_one_line, false},
+    {omit_fmt, ["thrift ~p:new(~s) = ~s"]},
+    {gen_server_messages, true},
+    {lookup, false}                 % DNS
+  ]},
 
   % The Module and Args used to start this application.
   {mod, {thrift_app, []}}
  ]
 }.
-
diff --git a/lib/erl/src/thrift.erl b/lib/erl/src/thrift.erl
index 5dc8987..ef2c1fa 100644
--- a/lib/erl/src/thrift.erl
+++ b/lib/erl/src/thrift.erl
@@ -6,7 +6,7 @@
 
 -module(thrift).
 
--export([start/0, stop/0, config/1, config/2]).
+-export([start/0, stop/0, config/1, config/2, reconfig/1]).
 
 -include("thrift.hrl").
 
@@ -24,46 +24,42 @@
 %%% configuration
 %%%
 
-%% go to the global file by default
-config(Path) ->
-    config(Path, {file, ?CONFIG_FILE}).
+config(Item) ->
+    config(?MODULE, Item).
 
-config(Path, Source) ->
-    case config1(Path, Source) of
-	{error, file_error, R} ->
-	    ?ERROR("error opening config ~p: ~p", [Source, R]),
-	    false;
-	{error, bad_item, Tuple} ->
-	    ?ERROR("malformed config item ~p found at ~p in ~p", [Tuple, Path, Source]),
-	    false;
-	{error, not_found} ->
-	    ?ERROR("config item ~p not found in ~p", [Path, Source]),
-	    false;
-	{value, V} ->
-	    {value, V}
+config(App, Item) ->
+    case application:get_env(App, Item) of
+        {ok, Value} ->
+            Value;
+        undefined ->
+            ?ERROR("configuration for ~p is unavailable", [Item]),
+            unconfigured_item,
+            exit({missing_config, App, Item})
     end.
 
-%% go to a file
-config1(Path, {file, File}) ->
-    case file:consult(File) of
+reconfig(Config) ->
+    BFName = filename:basename(Config, ".config"),
+    FName  = filename:join(filename:dirname(Config),
+                           BFName ++ ".config"),
+
+    case file:consult(FName) of
 	{error, R={_,_,_}} ->
 	    {error, file_error, file:format_error(R)};
 	{error, Posix} ->
 	    {error, file_error, Posix};
-	{ok, List} when is_list(List) ->
-	    config1(Path, List)
-    end;
+	{ok, [List]} when is_list(List) ->
+            reconfig1(List)
+    end.
 
-%% go through a list from a file or a sublist
-config1([P|Ps], List) when is_list(List) ->
-    case lists:keysearch(P, 1, List) of
-	{value, Tuple} when size(Tuple) == 2 ->
-	    List1 = element(2, Tuple), %% either another list or, if Ps is [], the item itself
-	    config1(Ps, List1);
-	{value, Tuple} ->
-	    {error, bad_item, Tuple};
-	false ->
-	    {error, not_found}
-    end;
-config1([], Item)     -> {value, Item};
-config1(Item, Source) -> config1([Item], Source).
+reconfig1([]) ->
+    ok;
+reconfig1([{App, List}|Tl]) ->
+    reconfig2(List, App, 0),
+    reconfig1(Tl).
+
+reconfig2([], App, Count) ->
+    ?INFO("application ~p reconfigured: ~p keys updated", [App, Count]),
+    ok;
+reconfig2([{Par, Val}|Tl], App, Count) ->
+    application:set_env(App, Par, Val),
+    reconfig2(Tl, App, Count+1).
diff --git a/lib/erl/src/thrift_logger.erl b/lib/erl/src/thrift_logger.erl
index 8528da3..e266ef4 100644
--- a/lib/erl/src/thrift_logger.erl
+++ b/lib/erl/src/thrift_logger.erl
@@ -8,10 +8,6 @@
 
 -behaviour(gen_event).
 
--record(state, {config}).
-
--define(CONFIG(Item), config(Item, State)).
-
 %% TODO(cpiro): either
 %% make exceptions know whether they need to be displayed
 %% or not exit with tExecptions for non-errors
@@ -25,12 +21,12 @@
 -export([init/1, handle_event/2, handle_call/2, 
          handle_info/2, terminate/2, code_change/3]).
 
--export([install/0, install/1, reconfig/0, reconfig/1]).
+-export([install/0]).
+
+-record(state, {}).
 
 %% ensure the regular logger is out and ours is in
 install() ->
-    install([]).
-install(Config) ->
     %% remove loggers
     io:format("starting logger~n"),
     lists:foreach(fun(Logger) ->
@@ -44,17 +40,8 @@
 
     gen_event:add_handler(error_logger, ?MODULE, []),
 
-    reconfig(Config),
-
     ok.
 
-%% load our config file and amend the given stuff
-reconfig() ->
-    reconfig([]).
-
-reconfig(Config) ->
-    gen_event:call(error_logger, ?MODULE, {reconfig, Config}).
-
 %%====================================================================
 %% gen_event callbacks
 %%====================================================================
@@ -67,17 +54,7 @@
 %% @end 
 %%--------------------------------------------------------------------
 init([]) ->
-    BootConfig = [
-      {term_width, 80},
-      {force_one_line, false},
-      {omit, []},
-      {omit_fmt, []},
-      {show_pid, false},
-      {gen_server_messages, true},
-      {lookup, false}
-    ], %% configuration before we try loading from file
-
-    State = #state{config=BootConfig},
+    State = #state{},
     {ok, State}.
 
 %%--------------------------------------------------------------------
@@ -101,7 +78,7 @@
 	end,
 
     Banner =
-        case ?CONFIG(show_pid) of
+        case config(show_pid) of
             true ->
                 sformat("~s ~s ~s", [Symbol, Pid, Type1]);
             false ->
@@ -114,7 +91,7 @@
     OutputSafe = sformat("~s", [MessageSafe]),
 
     Length =
-	case (length(OutputSafe) + BannerLen) < ?CONFIG(term_width) of
+	case (length(OutputSafe) + BannerLen) < config(term_width) of
 	    true  -> short;
 	    false -> long
 	end,
@@ -125,7 +102,7 @@
 	    false -> multiline
 	end,
 
-    case { ?CONFIG(force_one_line), Length, OneLine } of
+    case { config(force_one_line), Length, OneLine } of
 	%% one line and short ... print as is
 	{_, short, oneliner} ->
 	    format("~s~s~n", [Banner, OutputSafe]);
@@ -133,7 +110,7 @@
 	%% too long ... squash to one
 	{true, long, _} ->
 	    O = Banner ++ OutputSafe,
-	    Format = sformat("~~~ps >~n", [?CONFIG(term_width)-2]), % e.g. "~80s >~n"
+	    Format = sformat("~~~ps >~n", [config(term_width)-2]), % e.g. "~80s >~n"
 	    format(Format, [O]);
 
 	%% short but multiline... collapse to one
@@ -186,7 +163,7 @@
 	    Message = sformat("DATA DIDN'T MATCH: ~p~n", [Data]) ++ sformat(Format, Data),
 	    handle_event2(Symbol, Ref, "", Message, State);
 	{_, _} ->
-	    case lists:member(Format, ?CONFIG(omit_fmt)) of
+	    case lists:member(Format, config(omit_fmt)) of
 		false ->
 		    Message = sformat(Format, Data),
 		    handle_event2(Symbol, Ref, "", Message, State);
@@ -253,11 +230,6 @@
 %% handler to handle the request.
 %% @end 
 %%--------------------------------------------------------------------
-handle_call({reconfig, Amendments}, State) ->
-    {OkOrError, State1} = reconfig1(State, Amendments),
-    format(".. reconfig was ~p~n", [OkOrError]),
-    {ok, OkOrError, State1};
-    
 handle_call(_Request, State) ->
     Reply = ok,
     {ok, Reply, State}.
@@ -313,26 +285,8 @@
 sformat(Format, Data) ->
     thrift_utils:sformat(Format, Data).
 
-reconfig1(State, Amendments) ->
-    case thrift:config(thrift_logger) of
-	{value, Config} ->
-	    Config1     = lists:keysort(1, Config),
-	    Amendments1 = lists:keysort(1, Amendments),
-	    Config2     = lists:keymerge(1, Amendments1, Config1),
-
-	    State1 = State#state{config=Config2},
-	    {ok, State1};
-	_ -> 
-	    {error, State}
-    end.
-
-config(Item, State) ->
-    case thrift:config(Item, State#state.config) of
-	{value, V} ->
-	    V;
-	Else ->
-	    ?ERROR("config for ~p is unavailable: ~p", [Item, Else])
-    end.
+config(Item) ->
+    thrift:config(Item).
 
 do_print_crash_report(Report) ->
     case Report of
