diff --git a/configure.ac b/configure.ac
index f70ace2..48f93b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -464,7 +464,7 @@
   lib/c_glib/test/Makefile
   lib/csharp/Makefile
   lib/erl/Makefile
-  lib/erl/src/Makefile
+  lib/erl/src/thrift.app.src
   lib/hs/Makefile
   lib/java/Makefile
   lib/js/test/Makefile
diff --git a/lib/erl/Makefile.am b/lib/erl/Makefile.am
index 0722f12..fd780a2 100644
--- a/lib/erl/Makefile.am
+++ b/lib/erl/Makefile.am
@@ -17,7 +17,23 @@
 # under the License.
 #
 
-SUBDIRS = src
+THRIFT = ../../compiler/cpp/thrift
+#THRIFT_FILES = ../../test/ThriftTest.thrift \
+#			   ../../test/Stress.thrift
+THRIFT_FILES = $(wildcard ../../test/*.thrift) \
+			   $(wildcard test/*.thrift)
+
+.generated: $(THRIFT_FILES)
+	for f in $(THRIFT_FILES) ; do \
+	  $(THRIFT) --gen erl -out test $$f ; \
+	done ; \
+	touch .generated
+
+all: .generated
+	./rebar compile
+
+check: .generated
+	./rebar eunit
 
 install: all
 	mkdir -p $(DESTDIR)$(ERLANG_INSTALL_LIB_DIR_thrift) ; \
@@ -31,10 +47,36 @@
 uninstall:
 	rm -rf $(DESTDIR)$(ERLANG_INSTALL_LIB_DIR_thrift)
 
+clean:
+	rm .generated
+	./rebar clean
 
 maintainer-clean-local:
+	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_*
 	rm -rf ebin
 
-EXTRA_DIST = include src
+EXTRA_DIST = include src rebar rebar.config
 
 MAINTAINERCLEANFILES = Makefile.in
diff --git a/lib/erl/rebar b/lib/erl/rebar
new file mode 100755
index 0000000..53419ea
--- /dev/null
+++ b/lib/erl/rebar
Binary files differ
diff --git a/lib/erl/rebar.config b/lib/erl/rebar.config
new file mode 100644
index 0000000..7eb26b2
--- /dev/null
+++ b/lib/erl/rebar.config
@@ -0,0 +1,3 @@
+{erl_opts, [debug_info]}.
+% {pre_hooks, [{compile, "./scripts/rebar-pre-compile"},
+%             {clean, "./scripts/rebar-clean"}]}.
diff --git a/lib/erl/src/Makefile.am b/lib/erl/src/Makefile.am
deleted file mode 100644
index 9d6fcdb..0000000
--- a/lib/erl/src/Makefile.am
+++ /dev/null
@@ -1,83 +0,0 @@
-# ----------------------------------------------------
-# Application version
-# ----------------------------------------------------
-
-APP_NAME=$(PACKAGE_NAME)
-VSN=$(PACKAGE_VERSION)
-
-# ----------------------------------------------------
-# FLAGS
-# ----------------------------------------------------
-
-ERL_FLAGS =
-ERL_INCLUDE = -I../include
-ERL_BEHAV_PATH = -pz ../ebin
-ERL_COMPILE_FLAGS = $(ERL_INCLUDE) $(ERL_BEHAV_PATH)
-
-EBIN ?= ../ebin
-ESRC ?= .
-EMULATOR = beam
-
-ERLC_WFLAGS = -W
-ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS)
-ERL = erl -boot start_clean
-
-$(EBIN)/%.beam: $(ESRC)/%.erl
-	@echo "   ERLC  $<"
-	@$(ERLC) $(ERL_FLAGS) $(ERL_COMPILE_FLAGS) -o$(EBIN) $<
-
-.erl.beam:
-	$(ERLC) $(ERL_FLAGS) $(ERL_COMPILE_FLAGS) -o$(dir $@) $<
-
-# ----------------------------------------------------
-# Target Specs
-# ----------------------------------------------------
-
-MODULES = $(shell find . -name \*.erl | sed 's:^\./::' | sed 's/\.erl//')
-MODULES_STRING_LIST = $(shell find . -name \*.erl | sed 's:^\./::' | sed 's/\.erl/,/')
-BEHAV_MODULES = $(shell find . -name \*.erl | xargs grep -l behaviour_info | sed 's:^\./::' | sed 's/\.erl//')
-
-ERL_FILES= $(MODULES:%=%.erl)
-DOC_FILES=$(ERL_FILES)
-
-APP_FILE= $(APP_NAME).app
-APP_SRC= $(APP_FILE).src
-APP_TARGET= $(EBIN)/$(APP_FILE)
-
-BEAMS= $(MODULES:%=$(EBIN)/%.$(EMULATOR))
-BEHAV_BEAMS= $(BEHAV_MODULES:%=$(EBIN)/%.$(EMULATOR))
-TARGET_FILES= $(BEHAV_BEAMS) $(BEAMS) $(APP_TARGET) $(APPUP_TARGET)
-
-# ----------------------------------------------------
-# Targets
-# ----------------------------------------------------
-
-all debug opt: $(EBIN) $(TARGET_FILES)
-
-# Note: In the open-source build clean must not destroy the preloaded
-# beam files.
-clean:
-	rm -f $(TARGET_FILES)
-	rm -f *~
-	rm -f core
-	rm -rf $(EBIN)
-	rm -rf *html
-
-$(EBIN):
-	mkdir $(EBIN)
-
-dialyzer: $(TARGET_FILES)
-	dialyzer --src -r . $(ERL_INCLUDE)
-
-# ----------------------------------------------------
-# Special Build Targets
-# ----------------------------------------------------
-
-$(APP_TARGET): $(APP_SRC) $(BEAMS)
-	sed -e 's;%VSN%;$(VSN);' \
-		-e 's;%APP_NAME%;$(APP_NAME);' \
-		-e 's;%MODULES%;%MODULES%$(MODULES_STRING_LIST);' \
-		$< > $<".tmp"
-	sed -e 's/%MODULES%\(.*\),/\1/' \
-		$<".tmp" > $@
-	rm $<".tmp"
diff --git a/lib/erl/src/thrift.app.src b/lib/erl/src/thrift.app.src.in
similarity index 96%
rename from lib/erl/src/thrift.app.src
rename to lib/erl/src/thrift.app.src.in
index ebe38d3..176c4c1 100644
--- a/lib/erl/src/thrift.app.src
+++ b/lib/erl/src/thrift.app.src.in
@@ -17,17 +17,16 @@
 %% under the License.
 %%
 %%% -*- mode:erlang -*-
-{application, %APP_NAME%,
+{application, @PACKAGE_NAME@,
  [
   % A quick description of the application.
   {description, "Thrift bindings"},
 
   % The version of the applicaton
-  {vsn, "%VSN%"},
+  {vsn, "@PACKAGE_VERSION@"},
 
   % All modules used by the application.
   {modules, [
-       %MODULES%
    ]},
 
   % All of the registered names the application uses. This can be ignored.
diff --git a/test/erl/src/Thrift1151.thrift b/lib/erl/test/Thrift1151.thrift
similarity index 100%
rename from test/erl/src/Thrift1151.thrift
rename to lib/erl/test/Thrift1151.thrift
diff --git a/test/erl/src/stress_server.erl b/lib/erl/test/stress_server.erl
similarity index 100%
rename from test/erl/src/stress_server.erl
rename to lib/erl/test/stress_server.erl
diff --git a/test/erl/src/test_client.erl b/lib/erl/test/test_client.erl
similarity index 100%
rename from test/erl/src/test_client.erl
rename to lib/erl/test/test_client.erl
diff --git a/lib/erl/test/test_disklog.erl b/lib/erl/test/test_disklog.erl
new file mode 100644
index 0000000..17a27b0
--- /dev/null
+++ b/lib/erl/test/test_disklog.erl
@@ -0,0 +1,85 @@
+%%
+%% 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(test_disklog).
+
+-ifdef(TEST).
+-include_lib("eunit/include/eunit.hrl").
+
+disklog_test() ->
+  {ok, TransportFactory} =
+    thrift_disk_log_transport:new_transport_factory(
+      test_disklog,
+      [{file, "/tmp/test_log"},
+       {size, {1024*1024, 10}}]),
+  {ok, ProtocolFactory} =
+    thrift_binary_protocol:new_protocol_factory( TransportFactory, []),
+  {ok, Proto} = ProtocolFactory(),
+  {ok, Client0} = thrift_client:new(Proto, thriftTest_thrift),
+
+  io:format("Client started~n"),
+
+  % We have to make oneway calls into this client only since otherwise it
+  % will try to read from the disklog and go boom.
+  {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
+  io:format("Call written~n"),
+
+  % Use the send_call method to write a non-oneway call into the log
+  {Client2, ok} =
+    thrift_client:send_call(Client1, testString, [<<"hello world">>]),
+  io:format("Non-oneway call sent~n"),
+
+  {_Client3, ok} = thrift_client:close(Client2),
+  io:format("Client closed~n"),
+
+  ok.
+
+disklog_base64_test() ->
+  {ok, TransportFactory} =
+    thrift_disk_log_transport:new_transport_factory(
+      test_disklog,
+      [{file, "/tmp/test_b64_log"},
+       {size, {1024*1024, 10}}]),
+  {ok, B64Factory} =
+    thrift_base64_transport:new_transport_factory(TransportFactory),
+  {ok, BufFactory} =
+    thrift_buffered_transport:new_transport_factory(B64Factory),
+  {ok, ProtocolFactory} =
+    thrift_binary_protocol:new_protocol_factory(BufFactory, []),
+  {ok, Proto} = ProtocolFactory(),
+  {ok, Client0} = thrift_client:new(Proto, thriftTest_thrift),
+
+  io:format("Client started~n"),
+
+  % We have to make oneway calls into this client only since otherwise
+  % it will try to read from the disklog and go boom.
+  {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
+  io:format("Call written~n"),
+
+  % Use the send_call method to write a non-oneway call into the log
+  {Client2, ok} =
+    thrift_client:send_call(Client1, testString, [<<"hello world">>]),
+  io:format("Non-oneway call sent~n"),
+
+  {_Client3, ok} = thrift_client:close(Client2),
+  io:format("Client closed~n"),
+
+  ok.
+
+-endif.
diff --git a/test/erl/src/test_membuffer.erl b/lib/erl/test/test_membuffer.erl
similarity index 94%
rename from test/erl/src/test_membuffer.erl
rename to lib/erl/test/test_membuffer.erl
index fcf993a..7a01143 100644
--- a/test/erl/src/test_membuffer.erl
+++ b/lib/erl/test/test_membuffer.erl
@@ -18,7 +18,9 @@
 %%
 
 -module(test_membuffer).
--export([t/0]).
+
+-ifdef(TEST).
+-include_lib("eunit/include/eunit.hrl").
 
 -include("thriftTest_types.hrl").
 
@@ -30,7 +32,7 @@
     i64_thing = 12345678900
   }.
 
-t1() ->
+encode_decode_1_test() ->
   {ok, Transport} = thrift_memory_buffer:new(),
   {ok, Protocol0} = thrift_binary_protocol:new(Transport),
   TestData = test_data(),
@@ -42,8 +44,7 @@
     'xtruct'),
   Result = TestData.
 
-
-t2() ->
+encode_decode_2_test() ->
   {ok, Transport} = thrift_memory_buffer:new(),
   {ok, Protocol0} = thrift_binary_protocol:new(Transport),
   TestData = test_data(),
@@ -60,7 +61,7 @@
     i64_thing = TestData#xtruct.i64_thing}.
 
 
-t3() ->
+encode_decode_3_test() ->
   {ok, Transport} = thrift_memory_buffer:new(),
   {ok, Protocol0} = thrift_binary_protocol:new(Transport),
   TestData = #bools{im_true = true, im_false = false},
@@ -75,7 +76,7 @@
   true = TestData#bools.im_false =:= Result#bools.im_false.
 
 
-t4() ->
+encode_decode_4_test() ->
   {ok, Transport} = thrift_memory_buffer:new(),
   {ok, Protocol0} = thrift_binary_protocol:new(Transport),
   TestData = #insanity{xtructs=[]},
@@ -88,7 +89,7 @@
 
   TestData = Result.
 
-t5() ->
+encode_decode_5_test() ->
   % test writing to a buffer, getting the bytes out, putting them
   % in a new buffer and reading them
 
@@ -111,10 +112,4 @@
 
   Result = TestData.
 
-t() ->
-  t1(),
-  t2(),
-  t3(),
-  t4(),
-  t5().
-
+-endif.
diff --git a/test/erl/src/test_server.erl b/lib/erl/test/test_server.erl
similarity index 100%
rename from test/erl/src/test_server.erl
rename to lib/erl/test/test_server.erl
diff --git a/lib/erl/test/test_thrift_1151.erl b/lib/erl/test/test_thrift_1151.erl
new file mode 100644
index 0000000..9cee486
--- /dev/null
+++ b/lib/erl/test/test_thrift_1151.erl
@@ -0,0 +1,24 @@
+-module(test_thrift_1151).
+
+-include("thrift1151_types.hrl").
+
+-ifdef(TEST).
+-include_lib("eunit/include/eunit.hrl").
+
+unmatched_struct_test() ->
+  S1 = #structC{x=#structB{x=1}},
+  {ok, Transport} = thrift_memory_buffer:new(),
+  {ok, Protocol} = thrift_binary_protocol:new(Transport),
+  ?assertException (error, struct_unmatched,
+    thrift_protocol:write(Protocol,
+      {{struct, element(2, thrift1151_types:struct_info('structC'))}, S1})).
+
+badarg_test() ->
+  S2 = #structC{x=#structA{x="1"}},
+  {ok, Transport} = thrift_memory_buffer:new(),
+  {ok, Protocol} = thrift_binary_protocol:new(Transport),
+  ?assertException (error, badarg,
+    thrift_protocol:write(Protocol,
+      {{struct, element(2, thrift1151_types:struct_info('structC'))}, S2})).
+
+-endif.
diff --git a/test/Makefile.am b/test/Makefile.am
index 39ea85a..ae11404 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -41,7 +41,6 @@
 	rb \
 	perl \
 	php \
-	erl \
 	hs \
 	ocaml \
 	AnnotationTest.thrift \
diff --git a/test/erl/Makefile b/test/erl/Makefile
deleted file mode 100644
index bfb1d00..0000000
--- a/test/erl/Makefile
+++ /dev/null
@@ -1,68 +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.
-#
-
-GENDIR=gen
-GEN_INCLUDEDIR=$(GENDIR)/include
-GEN_SRCDIR=$(GENDIR)/src
-GEN_TARGETDIR=$(GENDIR)/ebin
-
-INCLUDEDIR=include
-TARGETDIR=ebin
-SRCDIR=src
-
-ALL_INCLUDEDIR=$(GEN_INCLUDEDIR) $(INCLUDEDIR) ../../lib/erl/include
-INCLUDEFLAGS=$(patsubst %,-I%, ${ALL_INCLUDEDIR})
-
-MODULES = stress_server test_server test_client test_disklog test_membuffer test_thrift_1151
-
-INCLUDES = 
-TARGETS = $(patsubst %,${TARGETDIR}/%.beam,${MODULES})
-HEADERS = $(patsubst %,${INCLUDEDIR}/%.hrl,${INCLUDES})
-
-all: ${GEN_TARGETDIR}/ ${TARGETS}
-
-TEST_RPCFILE = ../ThriftTest.thrift
-STRESS_RPCFILE = ../StressTest.thrift
-THRIFT_1151_FILE = src/Thrift1151.thrift
-THRIFT = ../../compiler/cpp/thrift
-
-${GENDIR}/: ${RPCFILE}
-	rm -rf ${GENDIR}
-	${THRIFT} --gen erl ${TEST_RPCFILE}
-	${THRIFT} --gen erl ${STRESS_RPCFILE}
-	${THRIFT} --gen erl ${THRIFT_1151_FILE}
-	mkdir -p ${GEN_INCLUDEDIR}
-	mkdir -p ${GEN_SRCDIR}
-	mkdir -p ${GEN_TARGETDIR}
-	mv gen-erl/*.hrl ${GEN_INCLUDEDIR}
-	mv gen-erl/*.erl ${GEN_SRCDIR}
-	rm -rf gen-erl
-
-${GEN_TARGETDIR}/: ${GENDIR}/
-	rm -rf ${GEN_TARGETDIR}
-	mkdir -p ${GEN_TARGETDIR}
-	erlc ${ERLC_FLAGS} ${INCLUDEFLAGS} -o ${GEN_TARGETDIR} ${GEN_SRCDIR}/*.erl
-
-$(TARGETS): ${TARGETDIR}/%.beam: ${SRCDIR}/%.erl ${GEN_INCLUDEDIR}/ ${HEADERS}
-	mkdir -p ${TARGETDIR}
-	erlc ${ERLC_FLAGS} ${INCLUDEFLAGS} -o ${TARGETDIR} $<
-
-clean:
-	rm -f ${TARGETDIR}/*.beam
-	rm -rf ${GENDIR}
diff --git a/test/erl/src/test_disklog.erl b/test/erl/src/test_disklog.erl
deleted file mode 100644
index fc0dcf8..0000000
--- a/test/erl/src/test_disklog.erl
+++ /dev/null
@@ -1,83 +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(test_disklog).
-
--compile(export_all).
-
-t() ->
-    {ok, TransportFactory} =
-        thrift_disk_log_transport:new_transport_factory(
-          test_disklog,
-          [{file, "/tmp/test_log"},
-           {size, {1024*1024, 10}}]),
-    {ok, ProtocolFactory} = thrift_binary_protocol:new_protocol_factory(
-                              TransportFactory, []),
-    {ok, Proto} = ProtocolFactory(),
-    {ok, Client0} = thrift_client:new(Proto, thriftTest_thrift),
-
-    io:format("Client started~n"),
-
-    % We have to make oneway calls into this client only since otherwise it will try
-    % to read from the disklog and go boom.
-    {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
-    io:format("Call written~n"),
-
-    % Use the send_call method to write a non-oneway call into the log
-    {Client2, ok} = thrift_client:send_call(Client1, testString, [<<"hello world">>]),
-    io:format("Non-oneway call sent~n"),
-
-    {_Client3, ok} = thrift_client:close(Client2),
-    io:format("Client closed~n"),
-
-    ok.
-
-
-
-t_base64() ->
-    {ok, TransportFactory} =
-        thrift_disk_log_transport:new_transport_factory(
-          test_disklog,
-          [{file, "/tmp/test_b64_log"},
-           {size, {1024*1024, 10}}]),
-    {ok, B64Factory} =
-        thrift_base64_transport:new_transport_factory(TransportFactory),
-    {ok, BufFactory} =
-        thrift_buffered_transport:new_transport_factory(B64Factory),
-    {ok, ProtocolFactory} = thrift_binary_protocol:new_protocol_factory(
-                              BufFactory, []),
-    {ok, Proto} = ProtocolFactory(),
-    {ok, Client0} = thrift_client:new(Proto, thriftTest_thrift),
-
-    io:format("Client started~n"),
-
-    % We have to make oneway calls into this client only since otherwise it will try
-    % to read from the disklog and go boom.
-    {Client1, {ok, ok}} = thrift_client:call(Client0, testOneway, [16#deadbeef]),
-    io:format("Call written~n"),
-
-    % Use the send_call method to write a non-oneway call into the log
-    {Client2, ok} = thrift_client:send_call(Client1, testString, [<<"hello world">>]),
-    io:format("Non-oneway call sent~n"),
-
-    {_Client3, ok} = thrift_client:close(Client2),
-    io:format("Client closed~n"),
-
-    ok.
-
diff --git a/test/erl/src/test_thrift_1151.erl b/test/erl/src/test_thrift_1151.erl
deleted file mode 100644
index c50ddee..0000000
--- a/test/erl/src/test_thrift_1151.erl
+++ /dev/null
@@ -1,19 +0,0 @@
--module(test_thrift_1151).
-
--include("thrift1151_types.hrl").
-
--export([t/0, t1/0]).
-
-t() ->
-  S1 = #structC{x=#structB{x=1}},
-  {ok, Transport} = thrift_memory_buffer:new(),
-  {ok, Protocol} = thrift_binary_protocol:new(Transport),
-  thrift_protocol:write(Protocol,
-    {{struct, element(2, thrift1151_types:struct_info('structC'))}, S1}).
-
-t1() ->
-  S2 = #structC{x=#structA{x="1"}},
-  {ok, Transport} = thrift_memory_buffer:new(),
-  {ok, Protocol} = thrift_binary_protocol:new(Transport),
-  thrift_protocol:write(Protocol,
-    {{struct, element(2, thrift1151_types:struct_info('structC'))}, S2}).
