diff --git a/lib/erl/Makefile.am b/lib/erl/Makefile.am
index c87f998..cdac926 100644
--- a/lib/erl/Makefile.am
+++ b/lib/erl/Makefile.am
@@ -18,8 +18,8 @@
 #
 
 THRIFT = ../../compiler/cpp/thrift
-THRIFT_FILES = $(wildcard ../../test/*.thrift) \
-			   $(wildcard test/*.thrift)
+THRIFT_FILES = $(wildcard test/*.thrift) \
+		  ../../test/ThriftTest.thrift
 
 .generated: $(THRIFT_FILES)
 	for f in $(THRIFT_FILES) ; do \
@@ -47,32 +47,20 @@
 	rm -rf $(DESTDIR)$(ERLANG_INSTALL_LIB_DIR_thrift)
 
 clean:
-	./rebar clean
 	rm -f .generated
-	rm -f test/secondService_* \
-		  test/aService_* \
-		  test/serviceForExceptionWithAMap_* \
-		  test/annotationTest_* \
-		  test/service_* \
-		  test/constantsDemo_* \
-		  test/smallService_* \
-		  test/smallTest_* \
-		  test/debugProtoTest_* \
-		  test/srv_* \
-		  test/denseLinkingTest_* \
-		  test/stressTest_* \
-		  test/docTest_* \
-		  test/emptyService_* \
-		  test/inherited_* \
-		  test/javaBeansTest_* \
-		  test/thrift1151_* \
-		  test/javaBeansTest_* \
-		  test/manyTypedefs_* \
-		  test/thriftTest_* \
-		  test/optionalRequiredTest_* \
-		  test/yowza_* \
-		  test/reverseOrderService_* \
-		  test/manyOptionals_*
+	rm -f test/thrift1151_types.erl \
+		  test/thrift1151_types.hrl \
+		  test/thrift1151_constants.hrl \
+		  test/thrift1475_types.erl \
+		  test/thrift1475_types.hrl \
+		  test/thrift1475_constants.hrl \
+		  test/thriftTest_types.erl \
+		  test/thriftTest_types.hrl \
+		  test/thriftTest_constants.hrl \
+		  test/thriftTest_thrift.erl \
+		  test/thriftTest_thrift.hrl \
+		  test/secondService_thrift.erl \
+		  test/secondService_thrift.hrl
 	./rebar clean
 
 maintainer-clean-local:
diff --git a/lib/erl/src/thrift.app.src b/lib/erl/src/thrift.app.src
index 90ebc62..28b8cb5 100644
--- a/lib/erl/src/thrift.app.src
+++ b/lib/erl/src/thrift.app.src
@@ -17,8 +17,7 @@
 %% under the License.
 %%
 %%% -*- mode:erlang -*-
-{application, thrift,
- [
+{application, thrift, [
   % A quick description of the application.
   {description, "Thrift bindings"},
 
@@ -27,7 +26,28 @@
 
   % All modules used by the application.
   {modules, [
-   ]},
+    thrift_base64_transport,
+    thrift_binary_protocol,
+    thrift_buffered_transport,
+    thrift_client_util,
+    thrift_client,
+    thrift_disk_log_transport,
+    thrift_file_transport,
+    thrift_framed_transport,
+    thrift_http_transport,
+    thrift_json_parser,
+    thrift_json_protocol,
+    thrift_memory_buffer,
+    thrift_processor,
+    thrift_protocol,
+    thrift_reconnecting_client,
+    thrift_server,
+    thrift_service,
+    thrift_socket_server,
+    thrift_socket_transport,
+    thrift_transport_state_test,
+    thrift_transport
+  ]},
 
   % All of the registered names the application uses. This can be ignored.
   {registered, []},
@@ -35,11 +55,7 @@
   % Applications that are to be started prior to this one. This can be ignored
   % leave it alone unless you understand it well and let the .rel files in
   % your release handle this.
-  {applications,
-   [
-    kernel,
-    stdlib
-   ]},
+  {applications, [kernel, stdlib]},
 
   % OTP application loader will load, but not start, included apps. Again
   % this can be ignored as well.  To load but not start an application it
@@ -49,10 +65,9 @@
   % configuration parameters similar to those in the config file specified
   % on the command line. can be fetched with gas:get_env
   {env, [
-         % If an error/crash occurs during processing of a function,
-         % should the TApplicationException serialized back to the client
-         % include the erlang backtrace?
-         {exceptions_include_traces, true}
+    % If an error/crash occurs during processing of a function,
+    % should the TApplicationException serialized back to the client
+    % include the erlang backtrace?
+    {exceptions_include_traces, true}
   ]}
- ]
-}.
+]}.
diff --git a/lib/erl/test/nameConflictTest_test.erl b/lib/erl/test/nameConflictTest_test.erl
deleted file mode 100644
index 48a08be..0000000
--- a/lib/erl/test/nameConflictTest_test.erl
+++ /dev/null
@@ -1,293 +0,0 @@
-%%
-%% Licensed to the Apache Software Foundation (ASF) under one
-%% or more contributor license agreements. See the NOTICE file
-%% distributed with this work for additional information
-%% regarding copyright ownership. The ASF licenses this file
-%% to you under the Apache License, Version 2.0 (the
-%% "License"); you may not use this file except in compliance
-%% with the License. You may obtain a copy of the License at
-%%
-%%   http://www.apache.org/licenses/LICENSE-2.0
-%%
-%% Unless required by applicable law or agreed to in writing,
-%% software distributed under the License is distributed on an
-%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-%% KIND, either express or implied. See the License for the
-%% specific language governing permissions and limitations
-%% under the License.
-%%
-
--module(nameConflictTest_test).
--compile(export_all).
-
--include_lib("eunit/include/eunit.hrl").
-
--include("nameConflictTest_constants.hrl").
-
-record_generation_test_() ->
-  [
-    {"using record", ?_assertMatch(
-      {using, _, _},
-      #using{single=null,integer=null}
-    )},
-    {"delegate record", ?_assertMatch(
-      {delegate, _, _},
-      #delegate{partial=null,delegate=null}
-    )},
-    {"get record", ?_assertMatch(
-      {get, _},
-      #get{sbyte=null}
-    )},
-    {"partial record", ?_assertMatch(
-      {partial, _},
-      #partial{using=null}
-    )},
-    {"ClassAndProp record", ?_assertMatch(
-      {classAndProp, _, _, _, _},
-      #classAndProp{
-        'ClassAndProp'=null,
-        'ClassAndProp_'=null,
-        'ClassAndProp__'=null,
-        'ClassAndProper'=null
-      }
-    )},
-    {"second_chance record", ?_assertMatch(
-      {second_chance, _, _, _, _},
-      #second_chance{
-        'SECOND_CHANCE'=null,
-        'SECOND_CHANCE_'=null,
-        'SECOND_CHANCE__'=null,
-        'SECOND_CHANCES'=null
-      }
-    )},
-    {"NOW_EAT_THIS record", ?_assertMatch(
-      {nOW_EAT_THIS, _, _, _, _},
-      #nOW_EAT_THIS{
-        now_eat_this=null,
-        now_eat_this_=null,
-        now_eat_this__=null,
-        now_eat_this_and_this=null
-      }
-    )},
-    {"TheEdgeCase record", ?_assertMatch(
-      {theEdgeCase, _, _, _, _, _, _},
-      #theEdgeCase{
-        theEdgeCase=null,
-        theEdgeCase_=null,
-        theEdgeCase__=null,
-        'TheEdgeCase'=null,
-        'TheEdgeCase_'=null,
-        'TheEdgeCase__'=null
-      }
-    )},
-    {"Tricky_ record", ?_assertMatch(
-      {tricky_, _, _},
-      #tricky_{tricky=null,'Tricky'=null}
-    )},
-    {"Nested record", ?_assertMatch(
-      {nested, _, _, _, _, _, _},
-      #nested{
-        'ClassAndProp'=null,
-        second_chance=null,
-        'NOW_EAT_THIS'=null,
-        'TheEdgeCase'=null,
-        'Tricky_'=null,
-        'Nested'=null
-      }
-    )},
-    {"Problem_ record", ?_assertMatch(
-      {problem_, _, _},
-      #problem_{problem=null,'Problem'=null}
-    )}
-  ].
-
-struct_info_test_() ->
-  [
-    {"using definition", ?_assertEqual(
-      {struct, [{1, double},{2, double}]},
-      nameConflictTest_types:struct_info(using)
-    )},
-    {"delegate definition", ?_assertEqual(
-      {struct, [
-        {1, string},
-        {2, {struct, {nameConflictTest_types, delegate}}}
-      ]},
-      nameConflictTest_types:struct_info(delegate)
-    )},
-    {"get definition", ?_assertEqual(
-      {struct, [{1, bool}]},
-      nameConflictTest_types:struct_info(get)
-    )},
-    {"partial definition", ?_assertEqual(
-      {struct, [{1, {struct, {nameConflictTest_types, using}}}]},
-      nameConflictTest_types:struct_info(partial)
-    )},
-    {"ClassAndProp definition", ?_assertEqual(
-      {struct, [{1, bool},{2, bool},{3, bool},{4, bool}]},
-      nameConflictTest_types:struct_info(classAndProp)
-    )},
-    {"second_chance definition", ?_assertEqual(
-      {struct, [{1, bool},{2, bool},{3, bool},{4, bool}]},
-      nameConflictTest_types:struct_info(second_chance)
-    )},
-    {"NOW_EAT_THIS definition", ?_assertEqual(
-      {struct, [{1, bool},{2, bool},{3, bool},{4, bool}]},
-      nameConflictTest_types:struct_info(nOW_EAT_THIS)
-    )},
-    {"TheEdgeCase definition", ?_assertEqual(
-      {struct, [{1, bool},{2, bool},{3, bool},{4, bool},{5, bool},{6, bool}]},
-      nameConflictTest_types:struct_info(theEdgeCase)
-    )},
-    {"Tricky_ definition", ?_assertEqual(
-      {struct, [{1, bool},{2, bool}]},
-      nameConflictTest_types:struct_info(tricky_)
-    )},
-    {"Nested definition", ?_assertEqual(
-      {struct, [
-        {1, {struct, {nameConflictTest_types, classAndProp}}},
-        {2, {struct, {nameConflictTest_types, second_chance}}},
-        {3, {struct, {nameConflictTest_types, nOW_EAT_THIS}}},
-        {4, {struct, {nameConflictTest_types, theEdgeCase}}},
-        {5, {struct, {nameConflictTest_types, tricky_}}},
-        {6, {struct, {nameConflictTest_types, nested}}}
-      ]},
-      nameConflictTest_types:struct_info(nested)
-    )},
-    {"Problem_ definition", ?_assertEqual(
-      {struct, [{1, bool},{2, bool}]},
-      nameConflictTest_types:struct_info(problem_)
-    )},
-    {"using extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, double, single, undefined},
-        {2, undefined, double, integer, undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(using)
-    )},
-    {"delegate extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, string, partial, undefined},
-        {2, undefined, {struct, {nameConflictTest_types, delegate}}, delegate, undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(delegate)
-    )},
-    {"get extended definition", ?_assertEqual(
-      {struct, [{1, undefined, bool, sbyte, undefined}]},
-      nameConflictTest_types:struct_info_ext(get)
-    )},
-    {"partial extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, {struct, {nameConflictTest_types, using}}, using, #using{}}
-      ]},
-      nameConflictTest_types:struct_info_ext(partial)
-    )},
-    {"ClassAndProp extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, bool, 'ClassAndProp', undefined},
-        {2, undefined, bool, 'ClassAndProp_', undefined},
-        {3, undefined, bool, 'ClassAndProp__', undefined},
-        {4, undefined, bool, 'ClassAndProper', undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(classAndProp)
-    )},
-    {"second_chance extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, bool, 'SECOND_CHANCE', undefined},
-        {2, undefined, bool, 'SECOND_CHANCE_', undefined},
-        {3, undefined, bool, 'SECOND_CHANCE__', undefined},
-        {4, undefined, bool, 'SECOND_CHANCES', undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(second_chance)
-    )},
-    {"NOW_EAT_THIS extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, bool, now_eat_this, undefined},
-        {2, undefined, bool, now_eat_this_, undefined},
-        {3, undefined, bool, now_eat_this__, undefined},
-        {4, undefined, bool, now_eat_this_and_this, undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(nOW_EAT_THIS)
-    )},
-    {"TheEdgeCase extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, bool, theEdgeCase, undefined},
-        {2, undefined, bool, theEdgeCase_, undefined},
-        {3, undefined, bool, theEdgeCase__, undefined},
-        {4, undefined, bool, 'TheEdgeCase', undefined},
-        {5, undefined, bool, 'TheEdgeCase_', undefined},
-        {6, undefined, bool, 'TheEdgeCase__', undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(theEdgeCase)
-    )},
-    {"Tricky_ extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, bool, tricky, undefined},
-        {2, undefined, bool, 'Tricky', undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(tricky_)
-    )},
-    {"Nested extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, {struct, {
-          nameConflictTest_types,
-          classAndProp
-        }}, 'ClassAndProp', #classAndProp{}},
-        {2, undefined, {struct, {
-          nameConflictTest_types,
-          second_chance
-        }}, second_chance, #second_chance{}},
-        {3, undefined, {struct, {
-          nameConflictTest_types,
-          nOW_EAT_THIS
-        }}, 'NOW_EAT_THIS', #nOW_EAT_THIS{}},
-        {4, undefined, {struct, {
-          nameConflictTest_types,
-          theEdgeCase
-        }}, 'TheEdgeCase', #theEdgeCase{}},
-        {5, undefined, {struct, {
-          nameConflictTest_types,
-          tricky_
-        }}, 'Tricky_', #tricky_{}},
-        {6, undefined, {struct, {
-          nameConflictTest_types,
-          nested
-        }}, 'Nested', undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(nested)
-    )},
-    {"Problem_ extended definition", ?_assertEqual(
-      {struct, [
-        {1, undefined, bool, problem, undefined},
-        {2, undefined, bool, 'Problem', undefined}
-      ]},
-      nameConflictTest_types:struct_info_ext(problem_)
-    )}
-  ].
-
-service_info_test_() ->
-  [
-    {"event params", ?_assertEqual(
-      {struct, [{1, {struct, {nameConflictTest_types, partial}}}]},
-      extern_thrift:function_info(event, params_type)
-    )},
-    {"event reply", ?_assertEqual(
-      {struct, {nameConflictTest_types, delegate}},
-      extern_thrift:function_info(event, reply_type)
-    )},
-    {"event exceptions", ?_assertEqual(
-      {struct, []},
-      extern_thrift:function_info(event, exceptions)
-    )},
-    {"Foo params", ?_assertEqual(
-      {struct, [{1, {struct, {nameConflictTest_types, nested}}}]},
-      extern_thrift:function_info('Foo', params_type)
-    )},
-    {"Foo reply", ?_assertEqual(
-      {struct, []},
-      extern_thrift:function_info('Foo', reply_type)
-    )},
-    {"Foo exceptions", ?_assertEqual(
-      {struct, [{1, {struct, {nameConflictTest_types, problem_}}}]},
-      extern_thrift:function_info('Foo', exceptions)
-    )}
-  ].
\ No newline at end of file
