diff --git a/lib/alterl/src/thrift_binary_protocol.erl b/lib/alterl/src/thrift_binary_protocol.erl
new file mode 100644
index 0000000..1593f0b
--- /dev/null
+++ b/lib/alterl/src/thrift_binary_protocol.erl
@@ -0,0 +1,219 @@
+%%% Copyright (c) 2007- Facebook
+%%% Distributed under the Thrift Software License
+%%%
+%%% See accompanying file LICENSE or visit the Thrift site at:
+%%% http://developers.facebook.com/thrift/
+
+-module(thrift_binary_protocol).
+
+-behavior(thrift_protocol).
+
+-include("thrift_constants.hrl").
+-include("thrift_protocol.hrl").
+
+-export([new/1,
+         read/2,
+         write/2
+]).
+
+-record(binary_protocol, {transport}).
+
+
+-define(VERSION_MASK, 16#FFFF0000).
+-define(VERSION_1, 16#80010000).
+
+
+new(Transport) ->
+    thrift_protocol:new(?MODULE, #binary_protocol{transport = Transport}).
+
+
+%%%
+%%% instance methods
+%%%
+
+write(This, #protocol_message_begin{
+        name = Name,
+        type = Type,
+        seqid = Seqid}) ->
+    write(This, {i32, ?VERSION_1 bor Type}),
+    write(This, {string, Name}),
+    write(This, {i32, Seqid}),
+    ok;
+
+write(This, message_end) -> ok;
+
+write(This, #protocol_field_begin{
+       name = _Name,
+       type = Type,
+       id = Id}) ->
+    write(This, {byte, Type}),
+    write(This, {i16, Id}),
+    ok;
+
+write(This, field_stop) ->
+    write(This, {byte, ?tType_STOP}),
+    ok;
+
+write(This, field_end) -> ok;
+
+write(This, #protocol_map_begin{
+       ktype = Ktype,
+       vtype = Vtype,
+       size = Size}) ->
+    write(This, {byte, Ktype}),
+    write(This, {byte, Vtype}),
+    write(This, {i32, Size}),
+    ok;
+
+write(This, map_end) -> ok;
+
+write(This, #protocol_list_begin{
+        etype = Etype,
+        size = Size}) ->
+    write(This, {byte, Etype}),
+    write(This, {i32, Size}),
+    ok;
+
+write(This, list_end) -> ok;
+
+write(This, #protocol_set_begin{
+        etype = Etype,
+        size = Size}) ->
+    write(This, {byte, Etype}),
+    write(This, {i32, Size}),
+    ok;
+
+write(This, set_end) -> ok;
+
+write(This, struct_begin) -> ok;
+write(This, struct_end) -> ok;
+
+
+
+write(This, {bool, true})  -> write(This, {byte, 1});
+write(This, {bool, false}) -> write(This, {byte, 0});
+
+write(This, {byte, Byte}) ->
+    write(This, <<Byte:8/big>>);
+
+write(This, {i16, I16}) ->
+    write(This, <<I16:16/big>>);
+
+write(This, {i32, I32}) ->
+    write(This, <<I32:32/big>>);
+
+write(This, {i63, I64}) ->
+    write(This, <<I64:64/big>>);
+
+write(This, {double, Double}) ->
+    write(This, <<Double:64/big>>);
+
+write(This, {string, Str}) when is_list(Str) ->
+    write(This, {i32, length(Str)}),
+    write(This, list_to_binary(Str));
+
+write(This, Binary) when is_binary(Binary) ->
+    thrift_transport:write(This#binary_protocol.transport, Binary).
+
+%%
+
+read(This, message_begin) ->
+    case read(This, i32) of
+        {ok, Version} when Version band ?VERSION_MASK == ?VERSION_1 ->
+            Type = Version band 16#000000ff,
+            {ok, Name}  = read(This, string),
+            {ok, SeqId} = read(This, i32),
+            #protocol_message_begin{name = Name,
+                                    type = Type,
+                                    seqid = SeqId};
+        Err = {error, closed} -> Err
+    end;
+
+read(This, message_end) -> ok;
+
+read(This, struct_begin) -> ok;
+read(This, struct_end) -> ok;
+
+read(This, field_begin) ->
+    case read(This, byte) of
+        {ok, Type = ?tType_STOP} ->
+            #protocol_field_begin{type = Type,
+                                  id = 0}; % TODO(todd) 0 or undefined?
+        {ok, Type} ->
+            Id = read(This, i16),
+            #protocol_field_begin{type = Type,
+                                  id = Id}
+    end;
+
+read(This, field_end) -> ok;
+
+read(This, map_begin) ->
+    {ok, Ktype} = read(This, byte),
+    {ok, Vtype} = read(This, byte),
+    {ok, Size}  = read(This, i32),
+    #protocol_map_begin{ktype = Ktype,
+                        vtype = Vtype,
+                        size = Size};
+read(This, map_end) -> ok;
+
+read(This, list_begin) ->
+    {ok, Etype} = read(This, byte),
+    {ok, Size}  = read(This, i32),
+    #protocol_list_begin{etype = Etype,
+                         size = Size};
+read(This, list_end) -> ok;
+
+read(This, set_begin) ->
+    {ok, Etype} = read(This, byte),
+    {ok, Size}  = read(This, i32),
+    #protocol_set_begin{etype = Etype,
+                        size = Size};
+read(This, set_end) -> ok;
+
+read(This, field_stop) ->
+    {ok, ?tType_STOP} =  read(This, byte),
+    ok;    
+
+%%
+
+read(This, bool) ->
+    Byte = read(This, byte),
+    {ok, (Byte /= 0)};
+
+
+read(This, byte) ->
+    case read(This, 1) of
+        {ok, <<Val:8/integer-signed-big, _/binary>>} -> {ok, Val};
+        Else -> Else
+    end;
+
+read(This, i16) ->
+    case read(This, 2) of
+        {ok, <<Val:16/integer-signed-big, _/binary>>} -> {ok, Val};
+        Else -> Else
+    end;
+
+read(This, i32) ->
+    case read(This, 4) of
+        {ok, <<Val:32/integer-signed-big, _/binary>>} -> {ok, Val};
+        Else -> Else
+    end;
+
+read(This, i64) ->
+    case read(This, 8) of
+        {ok, <<Val:64/integer-signed-big, _/binary>>} -> {ok, Val};
+        Else -> Else
+    end;
+
+read(This, double) ->
+    case read(This, 8) of
+        {ok, <<Val:64/float-signed-big, _/binary>>} -> {ok, Val};
+        Else -> Else
+    end;
+
+read(This, string) ->
+    {ok, Sz}  = read(This, i32),
+    read(This, Sz);
+
+read(This, Len) when is_integer(Len), Len >= 0 ->
+    thrift_transport:read(This#binary_protocol.transport, Len).
diff --git a/lib/alterl/src/thrift_processor.erl b/lib/alterl/src/thrift_processor.erl
new file mode 100644
index 0000000..ea6ea2d
--- /dev/null
+++ b/lib/alterl/src/thrift_processor.erl
@@ -0,0 +1,64 @@
+%%%-------------------------------------------------------------------
+%%% File    : thrift_processor.erl
+%%% Author  :  <todd@lipcon.org>
+%%% Description : 
+%%%
+%%% Created : 28 Jan 2008 by  <todd@lipcon.org>
+%%%-------------------------------------------------------------------
+-module(thrift_processor).
+
+-export([start/4,init/4]).
+
+-include("thrift_constants.hrl").
+-include("thrift_protocol.hrl").
+
+-record(state, {handler, in_protocol, out_protocol, service}).
+
+start(IProt, OProt, Service, Handler) ->
+    spawn(thrift_processor, init, [IProt, OProt, Service, Handler]).
+
+init(IProt, OProt, Service, Handler) ->
+    io:format("Processor started~n"),
+    loop(#state{in_protocol = IProt,
+                out_protocol = OProt,
+                service = Service,
+                handler = Handler}).
+
+loop(State = #state{in_protocol = IProto,
+                    out_protocol = OProto}) ->
+    MessageBegin = thrift_protocol:read(IProto, message_begin),
+    io:format("Got message begin: ~p~n", [MessageBegin]),
+
+    [ok, ok, ok, ok] = [thrift_protocol:read(IProto, X)
+                    || X <- [struct_begin, field_stop, struct_end, message_end]],
+    io:format("Read everything okay!"),
+
+    Packets =
+        [
+         #protocol_message_begin{name = "getServiceStatus",
+                                 type = ?tMessageType_REPLY,
+                                 seqid = 0},
+         struct_begin,
+         #protocol_field_begin{name = "success",
+                               type = ?tType_MAP,
+                               id = 0},
+         #protocol_map_begin{ktype = ?tType_STRING,
+                             vtype = ?tType_STRING,
+                             size  = 2},
+         {string, "Hello"},
+         {string, "World"},
+         {string, "foo"},
+         {string, "bar"},
+         field_stop,
+         map_end,
+         field_end,
+         field_stop,
+         struct_end,
+         message_end
+         ],
+               
+    Results = [thrift_protocol:write(OProto, Packet) || Packet <- Packets],
+    receive
+        _ ->
+            loop(State)
+    end.
diff --git a/lib/alterl/src/thrift_protocol.erl b/lib/alterl/src/thrift_protocol.erl
new file mode 100644
index 0000000..66e19b3
--- /dev/null
+++ b/lib/alterl/src/thrift_protocol.erl
@@ -0,0 +1,120 @@
+-module(thrift_protocol).
+
+-export([new/2,
+         write/2,
+         read/2,
+         skip/2,
+
+         typeid_to_atom/1,
+
+         behaviour_info/1]).
+
+-include("thrift_constants.hrl").
+-include("thrift_protocol.hrl").
+
+-record(protocol, {module, data}).
+
+behaviour_info(callbacks) ->
+    [
+     {read, 2},
+     {write, 2}
+    ];
+behaviour_info(_Else) -> undefined.
+
+
+new(Module, Data) when is_atom(Module) ->
+    {ok, #protocol{module = Module,
+                   data = Data}}.
+
+
+write(#protocol{module = Module,
+                data = ModuleData}, Data) ->
+    Module:write(ModuleData, Data).
+
+typeid_to_atom(?tType_STOP) -> field_stop;
+typeid_to_atom(?tType_VOID) -> void;
+typeid_to_atom(?tType_BOOL) -> bool;
+typeid_to_atom(?tType_BYTE) -> byte;
+typeid_to_atom(?tType_DOUBLE) -> double;
+typeid_to_atom(?tType_I16) -> i16;
+typeid_to_atom(?tType_I32) -> i32;
+typeid_to_atom(?tType_I64) -> i64;
+typeid_to_atom(?tType_STRING) -> string;
+typeid_to_atom(?tType_STRUCT) -> struct;
+typeid_to_atom(?tType_MAP) -> map;
+typeid_to_atom(?tType_SET) -> set;
+typeid_to_atom(?tType_LIST) -> list.
+    
+read(#protocol{module = Module,
+               data = ModuleData}, ProtocolType) ->
+    Module:read(ModuleData, ProtocolType).
+
+
+
+skip(Proto, struct) ->
+    ok = read(Proto, struct_begin),
+    ok = skip_struct_loop(Proto),
+    ok = read(Proto, struct_end);
+
+skip(Proto, map) ->
+    Map = read(Proto, map_begin),
+    ok = skip_map_loop(Proto, Map),
+    ok = read(Proto, map_end);
+
+skip(Proto, set) ->
+    Set = read(Proto, set_begin),
+    ok = skip_set_loop(Proto, Set),
+    ok = read(Proto, set_end);
+
+skip(Proto, list) ->
+    List = read(Proto, list_begin),
+    ok = skip_list_loop(Proto, List),
+    ok = read(Proto, list_end);    
+
+skip(Proto, Type) when is_atom(Type) ->
+    _Ignore = read(Proto, Type),
+    ok.
+
+
+skip_struct_loop(Proto) ->
+    #protocol_field_begin{type = Type} = read(Proto, field_begin),
+    case Type of
+        ?tType_STOP ->
+            ok;
+        _Else ->
+            skip(Proto, Type),
+            ok = read(Proto, field_end),
+            skip_struct_loop(Proto)
+    end.
+
+skip_map_loop(Proto, Map = #protocol_map_begin{ktype = Ktype,
+                                               vtype = Vtype,
+                                               size = Size}) ->
+    case Size of
+        N when N > 0 ->
+            skip(Proto, Ktype),
+            skip(Proto, Vtype),
+            skip_map_loop(Proto,
+                          Map#protocol_map_begin{size = Size - 1});
+        0 -> ok
+    end.
+
+skip_set_loop(Proto, Map = #protocol_set_begin{etype = Etype,
+                                               size = Size}) ->
+    case Size of
+        N when N > 0 ->
+            skip(Proto, Etype),
+            skip_set_loop(Proto,
+                          Map#protocol_set_begin{size = Size - 1});
+        0 -> ok
+    end.
+
+skip_list_loop(Proto, Map = #protocol_list_begin{etype = Etype,
+                                                 size = Size}) ->
+    case Size of
+        N when N > 0 ->
+            skip(Proto, Etype),
+            skip_list_loop(Proto,
+                           Map#protocol_list_begin{size = Size - 1});
+        0 -> ok
+    end.
diff --git a/lib/alterl/src/thrift_server.erl b/lib/alterl/src/thrift_server.erl
new file mode 100644
index 0000000..fd559f1
--- /dev/null
+++ b/lib/alterl/src/thrift_server.erl
@@ -0,0 +1,125 @@
+%%%-------------------------------------------------------------------
+%%% File    : thrift_server.erl
+%%% Author  :  <todd@lipcon.org>
+%%% Description : 
+%%%
+%%% Created : 28 Jan 2008 by  <todd@lipcon.org>
+%%%-------------------------------------------------------------------
+-module(thrift_server).
+
+-behaviour(gen_server).
+
+%% API
+-export([start_link/3]).
+
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
+         terminate/2, code_change/3]).
+
+-define(SERVER, ?MODULE).
+
+-record(state, {listen_socket, acceptor, service}).
+-record(handler, {module}).
+
+%%====================================================================
+%% API
+%%====================================================================
+%%--------------------------------------------------------------------
+%% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
+%% Description: Starts the server
+%%--------------------------------------------------------------------
+start_link(Port, Service, HandlerModule) when is_integer(Port), is_atom(HandlerModule) ->
+    gen_server:start_link({local, ?SERVER}, ?MODULE, {Port, Service, HandlerModule}, []).
+
+%%====================================================================
+%% gen_server callbacks
+%%====================================================================
+
+%%--------------------------------------------------------------------
+%% Function: init(Args) -> {ok, State} |
+%%                         {ok, State, Timeout} |
+%%                         ignore               |
+%%                         {stop, Reason}
+%% Description: Initiates the server
+%%--------------------------------------------------------------------
+init({Port, Service, HandlerModule}) ->
+    Handler = #handler{module = HandlerModule},
+    {ok, Socket} = gen_tcp:listen(Port,
+                                  [binary,
+                                   {packet, 0},
+                                   {active, false},
+                                   {nodelay, true},
+                                   {reuseaddr, true}]),
+    Acceptor = spawn_link(fun () -> acceptor(Socket, Service, Handler) end),
+    {ok, #state{listen_socket = Socket,
+                acceptor = Acceptor,
+                service = Service}}.
+
+%%--------------------------------------------------------------------
+%% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
+%%                                      {reply, Reply, State, Timeout} |
+%%                                      {noreply, State} |
+%%                                      {noreply, State, Timeout} |
+%%                                      {stop, Reason, Reply, State} |
+%%                                      {stop, Reason, State}
+%% Description: Handling call messages
+%%--------------------------------------------------------------------
+handle_call(_Request, _From, State) ->
+    Reply = ok,
+    {reply, Reply, State}.
+
+%%--------------------------------------------------------------------
+%% Function: handle_cast(Msg, State) -> {noreply, State} |
+%%                                      {noreply, State, Timeout} |
+%%                                      {stop, Reason, State}
+%% Description: Handling cast messages
+%%--------------------------------------------------------------------
+handle_cast(_Msg, State) ->
+    {noreply, State}.
+
+%%--------------------------------------------------------------------
+%% Function: handle_info(Info, State) -> {noreply, State} |
+%%                                       {noreply, State, Timeout} |
+%%                                       {stop, Reason, State}
+%% Description: Handling all non call/cast messages
+%%--------------------------------------------------------------------
+handle_info(_Info, State) ->
+    {noreply, State}.
+
+%%--------------------------------------------------------------------
+%% Function: terminate(Reason, State) -> void()
+%% Description: This function is called by a gen_server when it is about to
+%% terminate. It should be the opposite of Module:init/1 and do any necessary
+%% cleaning up. When it returns, the gen_server terminates with Reason.
+%% The return value is ignored.
+%%--------------------------------------------------------------------
+terminate(_Reason, _State) ->
+    ok.
+
+%%--------------------------------------------------------------------
+%% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}
+%% Description: Convert process state when code is changed
+%%--------------------------------------------------------------------
+code_change(_OldVsn, State, _Extra) ->
+    State#state.acceptor ! refresh,
+    {ok, State}.
+
+%%--------------------------------------------------------------------
+%%% Internal functions
+%%--------------------------------------------------------------------
+
+acceptor(ListenSocket, Service, Handler)
+  when is_port(ListenSocket), is_record(Handler, handler) ->
+    {ok, Socket} = gen_tcp:accept(ListenSocket),
+    error_logger:info_msg("Accepted client"),
+
+    {ok, Transport} = thrift_socket_transport:new(Socket),
+    {ok, Protocol} = thrift_binary_protocol:new(Transport),
+
+    thrift_processor:start(Protocol, Protocol, Service, Handler),
+    receive
+        refresh ->
+            error_logger:info_msg("Acceptor refreshing~n"),
+            ?MODULE:acceptor(ListenSocket, Service, Handler)
+    after 0      -> acceptor(ListenSocket, Service, Handler)
+    end.
diff --git a/lib/alterl/src/thrift_service.erl b/lib/alterl/src/thrift_service.erl
new file mode 100644
index 0000000..89479c8
--- /dev/null
+++ b/lib/alterl/src/thrift_service.erl
@@ -0,0 +1,6 @@
+-module(thrift_service).
+
+-export([behaviour_info/1]).
+
+behaviour_info(callbacks) ->
+    [{service_info, 1}].
diff --git a/lib/alterl/src/thrift_socket_transport.erl b/lib/alterl/src/thrift_socket_transport.erl
new file mode 100644
index 0000000..2921c20
--- /dev/null
+++ b/lib/alterl/src/thrift_socket_transport.erl
@@ -0,0 +1,18 @@
+-module(thrift_socket_transport).
+
+-behaviour(thrift_transport).
+
+-export([new/1,
+         
+         write/2, read/2]).
+
+-record(data, {socket}).
+
+new(Socket) ->
+    thrift_transport:new(?MODULE, #data{socket = Socket}).
+
+write(#data{socket = Socket}, Data) when is_binary(Data) ->
+    gen_tcp:send(Socket, Data).
+
+read(#data{socket = Socket}, Len) when is_integer(Len), Len >= 0 ->
+    gen_tcp:recv(Socket, Len).
diff --git a/lib/alterl/src/thrift_transport.erl b/lib/alterl/src/thrift_transport.erl
new file mode 100644
index 0000000..bf9dc53
--- /dev/null
+++ b/lib/alterl/src/thrift_transport.erl
@@ -0,0 +1,29 @@
+-module(thrift_transport).
+
+-export([behaviour_info/1,
+
+         new/2,
+         write/2,
+         read/2
+        ]).
+
+behaviour_info(callbacks) ->
+    [{write/2,
+      read/2}];
+behaviour_info(_Else) -> undefined.
+
+
+-record(transport, { module, data }).
+
+
+new(Module, Data) when is_atom(Module) ->
+    {ok, #transport{module = Module,
+                    data = Data}}.
+
+write(Transport, Data) when is_binary(Data) ->
+    Module = Transport#transport.module,
+    Module:write(Transport#transport.data, Data).
+
+read(Transport, Len) when is_integer(Len) ->
+    Module = Transport#transport.module,
+    Module:read(Transport#transport.data, Len).
