diff --git a/doc/thrift.pdf b/doc/thrift.pdf
index 2bbea90..8aba919 100644
--- a/doc/thrift.pdf
+++ b/doc/thrift.pdf
Binary files differ
diff --git a/doc/thrift.tex b/doc/thrift.tex
index cb7582f..d93bfa3 100644
--- a/doc/thrift.tex
+++ b/doc/thrift.tex
@@ -43,7 +43,7 @@
 communication across programming languages by abstracting the portions of each
 language that tend to require the most customization into a common library
 that is implemented in each language. Specifically, Thrift allows developers to
-define data types and service interfaces in a single language-neutral file
+define datatypes and service interfaces in a single language-neutral file
 and generate all the necessary code to build RPC clients and servers.
 
 This paper details the motivations and design choices we made in Thrift, as
@@ -69,13 +69,13 @@
 optimize for the right combination of performance, ease and speed of
 development, availability of existing libraries, etc. By and large,
 Facebook's engineering culture has tended towards choosing the best
-tools and implementations avaiable over standardizing on any one
+tools and implementations available over standardizing on any one
 programming language and begrudgingly accepting its inherent limitations.
 
 Given this design choice, we were presented with the challenge of building
 a transparent, high-performance bridge across many programming languages.
 We found that most available solutions were either too limited, did not offer
-sufficient data type freedom, or suffered from subpar performance.
+sufficient datatype freedom, or suffered from subpar performance.
 \footnote{See Appendix A for a discussion of alternative systems.}
 
 The solution that we have implemented combines a language-neutral software
@@ -83,8 +83,8 @@
 generation engine that transforms a simple interface and data definition
 language into client and server remote procedure call libraries.
 Choosing static code generation over a dynamic system allows us to create
-validated code with implicit guarantees that can be run without the need for
-any advanced intropsecive run-time type checking. It is also designed to
+validated code that can be run without the need for
+any advanced introspective run-time type checking. It is also designed to
 be as simple as possible for the developer, who can typically define all
 the necessary data structures and interfaces for a complex service in a single
 short file.
@@ -97,7 +97,7 @@
 environment, some key components were identified:
 
 \textit{Types.} A common type system must exist across programming languages
-without requiring that the application developer use custom Thrift data types
+without requiring that the application developer use custom Thrift datatypes
 or write their own serialization code. That is,
 a C++ programmer should be able to transparently exchange a strongly typed
 STL map for a dynamic Python dictionary. Neither
@@ -111,14 +111,14 @@
 raw data in memory, or files on disk. Section 3 details the Thrift Transport
 layer.
 
-\textit{Protocol.} Data types must have some way of using the Transport
+\textit{Protocol.} Datatypes must have some way of using the Transport
 layer to encode and decode themselves. Again, the application
 developer need not be concerned by this layer. Whether the service uses
 an XML or binary protocol is immaterial to the application code.
 All that matters is that the data can be read and written in a consistent,
 deterministic matter. Section 4 details the Thrift Protocol layer.
 
-\textit{Versioning.} For robust services, the involved data types must
+\textit{Versioning.} For robust services, the involved datatypes must
 provide a mechanism for versioning themselves. Specifically,
 it should be possible to add or remove fields in an object or alter the
 argument list of a function without any interruption in service (or,
@@ -138,7 +138,8 @@
 completely natively defined types, no matter what programming language they
 use. By design, the Thrift type system does not introduce any special dynamic
 types or wrapper objects. It also does not require that the developer write
-any code for object serialization or transport. The Thrift IDL file is
+any code for object serialization or transport. The Thrift IDL (Interface
+Definition Language) file is
 logically a way for developers to annotate their data structures with the
 minimal amount of extra information necessary to tell a code generator
 how to safely transport the objects across languages.
@@ -172,30 +173,6 @@
 same purpose and can be safely cast to their unsigned counterparts (most
 commonly in C++) when absolutely necessary.
 
-\subsection{Containers}
-
-Thrift containers are strongly typed containers that map to the most commonly
-used containers in common programming languages. They are annotated using
-C++ template (or Java Generics) style. There are three types available:
-\begin{itemize}
-\item \texttt{list<type>} An ordered list of elements. Translates directly into
-an STL vector, Java ArrayList, or native array in scripting languages. May
-contain duplicates.
-\item \texttt{set<type>} An unordered set of unique elements. Translates into
-an STL set, Java HashSet, or native dictionary in PHP/Python/Ruby. 
-\item \texttt{map<type1,type2>} A map of strictly unique keys to values
-Translates into an STL map, Java HashMap, PHP associative array,
-or Python/Ruby dictionary.
-\end{itemize}
-
-While defaults are provided, the type mappings are not explicitly fixed. Custom
-code generator directives have been added to substitute custom types in
-destination languages (i.e.
-\texttt{hash\_map} or Google's sparse hash map can be used in C++). The
-only requirement is that the custom types support all the necessary iteration
-primitives. Container elements may be of any valid Thrift type, including other
-containers or structs.
-
 \subsection{Structs}
 
 A Thrift struct defines a common object to be used across languages. A struct
@@ -207,6 +184,31 @@
 Field identifiers will be automatically assigned if omitted, though they are
 strongly encouraged for versioning reasons discussed later.
 
+\subsection{Containers}
+
+Thrift containers are strongly typed containers that map to the most commonly
+used containers in common programming languages. They are annotated using
+the C++ template (or Java Generics) style. There are three types available:
+\begin{itemize}
+\item \texttt{list<type>} An ordered list of elements. Translates directly into
+an STL \texttt{vector}, Java \texttt{ArrayList}, or native array in scripting languages. May
+contain duplicates.
+\item \texttt{set<type>} An unordered set of unique elements. Translates into
+an STL \texttt{set}, Java \texttt{HashSet}, \texttt{set} in Python, or native
+dictionary in PHP/Ruby. 
+\item \texttt{map<type1,type2>} A map of strictly unique keys to values
+Translates into an STL \texttt{map}, Java texttt{HashMap}, PHP associative
+array, or Python/Ruby dictionary.
+\end{itemize}
+
+While defaults are provided, the type mappings are not explicitly fixed. Custom
+code generator directives have been added to substitute custom types in
+destination languages (i.e.
+\texttt{hash\_map} or Google's sparse hash map can be used in C++). The
+only requirement is that the custom types support all the necessary iteration
+primitives. Container elements may be of any valid Thrift type, including other
+containers or structs.
+
 \begin{verbatim}
 struct Example {
   1:i32 number=10,
@@ -226,15 +228,16 @@
 \texttt{struct} keyword.
 
 The generated objects inherit from an exception base class as appropriate
-in each target programming language, the goal being to offer seamless
-integration with native exception handling for the developer in any given
+in each target programming language, in order to seamlessly
+integrate with native exception handling in any given
 language. Again, the design emphasis is on making the code familiar to the
 application developer.
 
 \subsection{Services}
 
 Services are defined using Thrift types. Definition of a service is
-semantically equivalent to defining a pure virtual interface in object oriented
+semantically equivalent to defining an interface (or a pure virtual abstract
+class) in object oriented
 programming. The Thrift compiler generates fully functional client and
 server stubs that implement the interface. Services are defined as follows:
 
@@ -257,19 +260,19 @@
 
 Note that \texttt{void} is a valid type for a function return, in addition to
 all other defined Thrift types. Additionally, an \texttt{async} modifier
-keyword may be added to a void function, which will generate code that does
+keyword may be added to a \texttt{void} function, which will generate code that does
 not wait for a response from the server. Note that a pure \texttt{void}
 function will return a response to the client which guarantees that the
 operation has completed on the server side. With \texttt{async} method calls
-the client can only be guaranteed that the request succeeded at the
+the client will only be guaranteed that the request succeeded at the
 transport layer. (In many transport scenarios this is inherently unreliable
 due to the Byzantine Generals' Problem. Therefore, application developers
-should take care only to use the async optimization in cases where dopped
+should take care only to use the async optimization in cases where dropped
 method calls are acceptable or the transport is known to be reliable.)
 
-Also of note is the fact that argument and exception lists to functions are
-implemented as Thrift structs. They are identical in both notation and
-behavior.
+Also of note is the fact that argument lists and exception lists for functions
+are implemented as Thrift structs. All three constructs are identical in both
+notation and behavior.
 
 \section{Transport}
 
@@ -277,7 +280,7 @@
 
 \subsection{Interface}
 
-A key design choice in the implementation of Thrift was to abstract the
+A key design choice in the implementation of Thrift was to decouple the
 transport layer from the code generation layer. Though Thrift is typically
 used on top of the TCP/IP stack with streaming sockets as the base layer of
 communication, there was no compelling reason to build that constraint into 
@@ -287,22 +290,22 @@
 system calls).
 
 Fundamentally, generated Thrift code only needs to know how to read and
-write data. Where the data is going is irrelevant, it may be a socket, a
-segment of shared memory, or a file on the local disk. The Thrift transport
-interface supports the following methods.
+write data. The origin and destination of the data are irrelevant; it may be a
+socket, a segment of shared memory, or a file on the local disk. The Thrift
+transport interface supports the following methods:
 
 \begin{itemize}
-\item \texttt{open()} Opens the tranpsort
-\item \texttt{close()} Closes the tranport
-\item \texttt{isOpen()} Whether the transport is open
-\item \texttt{read()} Reads from the transport
-\item \texttt{write()} Writes to the transport
-\item \texttt{flush()} Force any pending writes
+\item \texttt{open} Opens the tranpsort
+\item \texttt{close} Closes the tranport
+\item \texttt{isOpen} Indicates whether the transport is open
+\item \texttt{read} Reads from the transport
+\item \texttt{write} Writes to the transport
+\item \texttt{flush} Forces any pending writes
 \end{itemize}
 
 There are a few additional methods not documented here which are used to aid
-in batching reads and optionally signaling completion of reading or writing
-chunks of data by the generated code.
+in batching reads and optionally signaling the completion of a read or
+write operation from the generated code.
 
 In addition to the above
 \texttt{TTransport} interface, there is a\\
@@ -311,11 +314,10 @@
 follows:
 
 \begin{itemize}
-\item \texttt{open()} Opens the tranpsort
-\item \texttt{listen()} Begins listening for connections
-\item \texttt{accept()} Returns a new client transport
-\item \texttt{close()} Closes the transport
-
+\item \texttt{open} Opens the transport
+\item \texttt{listen} Begins listening for connections
+\item \texttt{accept} Returns a new client transport
+\item \texttt{close} Closes the transport
 \end{itemize}
 
 \subsection{Implementation}
@@ -332,28 +334,28 @@
 \subsubsection{TFileTransport}
 
 The \texttt{TFileTransport} is an abstraction of an on-disk file to a data
-stream. It can be used to write out a set of incoming Thrift request to a file
-on disk. The on-disk data can then be replayed from the log, either for post-processing
-or for recreation and simulation of past events. \texttt(TFileTransport).
+stream. It can be used to write out a set of incoming Thrift requests to a file
+on disk. The on-disk data can then be replayed from the log, either for
+post-processing or for reproduction and/or simulation of past events.
 
 \subsubsection{Utilities}
 
 The Transport interface is designed to support easy extension using common
-OOP techniques such as composition. Some simple utilites include the
-\texttt{TBufferedTransport}, which buffers writes and reads on an underlying
-transport, the \texttt{TFramedTransport}, which transmits data with frame
-size headers for chunking optimzation or nonblocking operation, and the
-\texttt{TMemoryBuffer}, which allows reading and writing directly from heap or
-stack memory owned by the process.
+OOP techniques, such as composition. Some simple utilites include the
+\texttt{TBufferedTransport}, which buffers the writes and reads on an
+underlying transport, the \texttt{TFramedTransport}, which transmits data with frame
+size headers for chunking optimization or nonblocking operation, and the
+\texttt{TMemoryBuffer}, which allows reading and writing directly from the heap
+or stack memory owned by the process.
 
 \section{Protocol}
 
 A second major abstraction in Thrift is the separation of data structure from
 transport representation. Thrift enforces a certain messaging structure when
 transporting data, but it is agnostic to the protocol encoding in use. That is,
-it does not matter whether data is encoded in XML, human-readable ASCII, or a
-dense binary format, so long as the data supports a fixed set of operations
-that allow generated code to deterministically read and write.
+it does not matter whether data is encoded as XML, human-readable ASCII, or a
+dense binary format as long as the data supports a fixed set of operations
+that allow it to be deterministically read and written by generated code.
 
 \subsection{Interface}
 
@@ -404,27 +406,27 @@
 string =          readString()
 \end{verbatim}
 
-Note that every write function has exactly one read function counterpart, with
-the exception of the \texttt{writeFieldStop()} method. This is a special method
+Note that every \texttt{write} function has exactly one \texttt{read} counterpart, with
+the exception of \texttt{writeFieldStop()}. This is a special method
 that signals the end of a struct. The procedure for reading a struct is to
-\texttt{readFieldBegin()} until the stop field is encountered, and to then
+\texttt{readFieldBegin()} until the stop field is encountered, and then to
 \texttt{readStructEnd()}.  The
-generated code relies upon this structure to ensure that everything written by
+generated code relies upon this call sequence to ensure that everything written by
 a protocol encoder can be read by a matching protocol decoder. Further note
 that this set of functions is by design more robust than necessary.
 For example, \texttt{writeStructEnd()} is not strictly necessary, as the end of
 a struct may be implied by the stop field. This method is a convenience for
-verbose protocols where it is cleaner to separate these calls (i.e. a closing
+verbose protocols in which it is cleaner to separate these calls (e.g. a closing
 \texttt{</struct>} tag in XML).
 
 \subsection{Structure}
 
 Thrift structures are designed to support encoding into a streaming
-protocol. That is, the implementation should never need to frame or compute the
+protocol. The implementation should never need to frame or compute the
 entire data length of a structure prior to encoding it. This is critical to
 performance in many scenarios. Consider a long list of relatively large
-strings. If the protocol interface required reading or writing a list as an
-atomic operation, then the implementation would require a linear pass over the
+strings. If the protocol interface required reading or writing a list to be an
+atomic operation, then the implementation would need to perform a linear pass over the
 entire list before encoding any data. However, if the list can be written
 as iteration is performed, the corresponding read may begin in parallel,
 theoretically offering an end-to-end speedup of $(kN - C)$, where $N$ is the size
@@ -434,11 +436,11 @@
 
 Similarly, structs do not encode their data lengths a priori. Instead, they are
 encoded as a sequence of fields, with each field having a type specifier and a
-unique field identifier. Note that the inclusion of type specifiers enables
+unique field identifier. Note that the inclusion of type specifiers allows
 the protocol to be safely parsed and decoded without any generated code
 or access to the original IDL file. Structs are terminated by a field header
 with a special \texttt{STOP} type. Because all the basic types can be read
-deterministically, all structs (including those with nested structs) can be
+deterministically, all structs (even those containing other structs) can be
 read deterministically. The Thrift protocol is self-delimiting without any
 framing and regardless of the encoding format.
 
@@ -459,14 +461,14 @@
 We decided against some extreme storage optimizations (i.e. packing
 small integers into ASCII or using a 7-bit continuation format) for the sake
 of simplicity and clarity in the code. These alterations can easily be made
-if and when we encounter a performance critical use case that demands them.
+if and when we encounter a performance-critical use case that demands them.
 
 \section{Versioning}
 
 Thrift is robust in the face of versioning and data definition changes. This
-is critical to enable a staged rollout of changes to deployed services. The
-system must be able to support reading of old data from logfiles, as well as
-requests from out of date clients to new servers, or vice versa.
+is critical to enable staged rollouts of changes to deployed services. The
+system must be able to support reading of old data from log files, as well as
+requests from out-of-date clients to new servers, and vice versa.
 
 \subsection{Field Identifiers}
 
@@ -486,7 +488,8 @@
   4:string name="thrifty"
 }\end{verbatim}
 
-To avoid conflicts, fields with omitted identifiers are automatically assigned
+To avoid conflicts between manually and automatically assigned identifiers,
+fields with identifiers omitted are assigned identifiers
 decrementing from -1, and the language only supports the manual assignment of
 positive identifiers.
 
@@ -494,7 +497,7 @@
 to properly identify the field and determine whether it aligns with a field in
 its definition file. If a field identifier is not recognized, the generated
 code can use the type specifier to skip the unknown field without any error.
-Again, this is possible due to the fact that all data types are self
+Again, this is possible due to the fact that all datatypes are self
 delimiting.
 
 Field identifiers can (and should) also be specified in function argument
@@ -512,7 +515,7 @@
 
 The syntax for specifying field identifiers was chosen to echo their structure.
 Structs can be thought of as a dictionary where the identifiers are keys, and
-the values are strongly typed, named fields.
+the values are strongly-typed named fields.
 
 Field identifiers internally use the \texttt{i16} Thrift type. Note, however,
 that the \texttt{TProtocol} abstraction may encode identifiers in any format.
@@ -522,8 +525,8 @@
 When an unexpected field is encountered, it can be safely ignored and
 discarded. When an expected field is not found, there must be some way to
 signal to the developer that it was not present. This is implemented via an
-inner \texttt{isset} structure inside the defined objects. (In PHP, this is
-implicit with a \texttt{null} value, or \texttt{None} in Python
+inner \texttt{isset} structure inside the defined objects. (Isset functionality
+is implicit with a \texttt{null} value in PHP, \texttt{None} in Python
 and \texttt{nil} in Ruby.) Essentially,
 the inner \texttt{isset} object of each Thrift struct contains a boolean value
 for each field which denotes whether or not that field is present in the
@@ -566,7 +569,7 @@
 \begin{enumerate}
 \item \textit{Added field, old client, new server.} In this case, the old
 client does not send the new field. The new server recognizes that the field
-is not set, and implements default behavior for out of date requests.
+is not set, and implements default behavior for out-of-date requests.
 \item \textit{Removed field, old client, new server.} In this case, the old
 client sends the removed field. The new server simply ignores it.
 \item \textit{Added field, new client, old server.} The new client sends a
@@ -591,7 +594,7 @@
 example, if we wished to add some new checksumming or error detection to the
 \texttt{TFileTransport}, we could simply add a version header into the
 data it writes to the file in such a way that it would still accept old
-logfiles without the given header.
+log files without the given header.
 
 \section{RPC Implementation}
 
@@ -645,11 +648,11 @@
 uses two \texttt{TProtocol} instances to perform the I/O operations. The
 generated processor implements the \texttt{TProcessor} interface. The generated
 code has all the logic to handle RPC invocations via the \texttt{process()}
-call, and takes as a parameter an instance of the service interface,
+call, and takes as a parameter an instance of the service interface, as
 implemented by the application developer.
 
-The user provides an implementation of the application interface in their own,
-non-generated source file.
+The user provides an implementation of the application interface in separate,
+non-generated source code.
 
 \subsection{TServer}
 
@@ -697,14 +700,14 @@
 than typical web technologies, as we were designing our XML-based REST web
 services API we noticed that Thrift could be easily used to define our
 service interface. Though we do not currently employ SOAP envelopes (in the
-author's opinion there is already far too much repetetive enterprise Java
+authors' opinions there is already far too much repetitive enterprise Java
 software to do that sort of thing), we were able to quickly extend Thrift to
 generate XML Schema Definition files for our service, as well as a framework
 for versioning different implementations of our web service. Though public
 web services are admittedly tangential to Thrift's core use case and design,
 Thrift facilitated rapid iteration and affords us the ability to quickly
 migrate our entire XML-based web service onto a higher performance system
-should the future need arise.
+should the need arise.
 
 \subsection{Generated Structs}
 We made a conscious decision to make our generated structs as transparent as
@@ -715,13 +718,13 @@
 the system is robust to the developer ignoring the \texttt{isset} construct
 entirely and will provide suitable default behavior in all cases.
 
-The reason for this choice was for ease of application development. Our stated
+This choice was motivated by the desire to ease application development. Our stated
 goal is not to make developers learn a rich new library in their language of
 choice, but rather to generate code that allow them to work with the constructs
 that are most familiar in each language.
 
 We also made the \texttt{read()} and \texttt{write()} methods of the generated
-objects public members so that the objects can be used outside of the context
+objects public so that the objects can be used outside of the context
 of RPC clients and servers. Thrift is a useful tool simply for generating
 objects that are easily serializable across programming languages.
 
@@ -768,15 +771,15 @@
 
 Using these techniques, the cost of string processing is minimized, and we
 reap the benefit of being able to easily debug corrupt or misunderstood data by
-looking for string contents.
+inspecting it for known string method names.
 
 \subsection{Servers and Multithreading}
-Thrift services require basic multithreading services to handle simultaneous
+Thrift services require basic multithreading to handle simultaneous
 requests from multiple clients. For the Python and Java implementations of
-thrift server logic, the multi-thread support provided by those runtimes was
-more than adequate. For the C++ implementation no standard multithread runtime
-library support exists. Specifically a robust, lightweight, and portable 
-thread manager and timer class implementation do not exist. We investigated
+Thrift server logic, the standard threading libraries distributed with the
+languages provide adequate support. For the C++ implementation, no standard multithread runtime
+library exists. Specifically, robust, lightweight, and portable 
+thread manager and timer class implementations do not exist. We investigated
 existing implementations, namely \texttt{boost::thread}, 
 \texttt{boost::threadpool}, \texttt{ACE\_Thread\_Manager} and
 \texttt{ACE\_Timer}.  
@@ -788,22 +791,23 @@
 
 \texttt{boost::threadpool}\cite{boost.threadpool} also looked promising but
 was not far enough along for our purposes. We wanted to limit the dependency on
-thirdparty libraries as much as possible. Because\\
+third-party libraries as much as possible. Because\\
 \texttt{boost::threadpool} is
 not a pure template library and requires runtime libraries and because it is
-not yet part of the official boost distribution we felt it was not ready for
+not yet part of the official Boost distribution we felt it was not ready for
 use in Thrift. As \texttt{boost::threadpool} evolves and especially if it is
-added to the boost distribution we may reconsider our decision not to use it.
+added to the Boost distribution we may reconsider our decision to not use it.
 
 ACE has both a thread manager and timer class in addition to multi-thread
-primitives. The biggest problem with ACE is that it is ACE. Unlike boost, ACE
+primitives. The biggest problem with ACE is that it is ACE. Unlike Boost, ACE
 API quality is poor. Everything in ACE has large numbers of dependencies on
 everything else in ACE - thus forcing developers to throw out standard 
-classes, like STL collection is favor of ACE's homebrewed implementations. In
-addition, unlike boost, ACE implementations demonstrate little understanding
+classes, such as STL collections, in favor of ACE's homebrewed implementations. In
+addition, unlike Boost, ACE implementations demonstrate little understanding
 of the power and pitfalls of C++ programming and take no advantage of modern
 templating techniques to ensure compile time safety and reasonable compiler
-error messages. For all these reasons, ACE was rejected.
+error messages. For all these reasons, ACE was rejected. Instead, we chose
+to implement our own library, described in the following sections.
 
 \subsection{Thread Primitives}
 
@@ -817,17 +821,17 @@
 
 As mentioned above, we were hesitant to introduce any additional dependencies
 on Thrift. We decided to use \texttt{boost::shared\_ptr} because it is so 
-useful for multithreaded application, because it requires no link-time or
-runtime libraries (i.e. it is a pure template library) and because it is due
-to become part of the C++0X standard.
+useful for multithreaded application, it requires no link-time or
+runtime libraries (i.e. it is a pure template library) and it is due
+to become part of the C++0x standard.
 
 We implement standard \texttt{Mutex} and \texttt{Condition} classes, and a
  \texttt{Monitor} class. The latter is simply a combination of a mutex and 
-condition variable and is analogous to the monitor implementation provided for
-all objects in Java. This is also sometimes referred to as a barrier. We 
+condition variable and is analogous to the \texttt{Monitor} implementation provided for
+the Java \texttt{Object} class. This is also sometimes referred to as a barrier. We 
 provide a \texttt{Synchronized} guard class to allow Java-like synchronized blocks.
 This is just a bit of syntactic sugar, but, like its Java counterpart, clearly 
-delimits critical sections of code. Unlike it's Java counterpart, we still
+delimits critical sections of code. Unlike its Java counterpart, we still
 have the ability to programmatically lock, unlock, block, and signal monitors.
 
 \begin{verbatim}
@@ -845,7 +849,7 @@
 class. A \texttt{Thread} is the actual schedulable object. The
 \texttt{Runnable} is the logic to execute within the thread. 
 The \texttt{Thread} implementation deals with all the platform-specific thread 
-creation and destruction issues, while the {tt Runnable} implementation deals
+creation and destruction issues, while the \texttt{Runnable} implementation deals
 with the application-specific per-thread logic. The benefit of this approach
 is that developers can easily subclass the Runnable class without pulling in 
 platform-specific super-clases.
@@ -859,9 +863,8 @@
 creating and shutting down threads.
 
 Thread creation requires calling into a C library. (In our case the POSIX
-thread library, libhthread, but the same would be true for WIN32 threads).
-Typically, the OS makes few if any guarantees about when a C thread's
-entry-point function, \texttt{ThreadMain} will be called. Therefore, it is
+thread library, \texttt{libthread}, but the same would be true for WIN32 threads).
+Typically, the OS makes few, if any, guarantees about when \texttt{ThreadMain}, a C thread's entry-point function, will be called. Therefore, it is
 possible that our thread create call,
 \texttt{ThreadFactory::newThread()} could return to the caller
 well before that time. To ensure that the returned \texttt{Thread} object is not
@@ -871,33 +874,32 @@
 
 With the weak reference in hand the \texttt{ThreadMain} function can attempt to get
 a strong reference before entering the \texttt{Runnable::run} method of the
-\texttt{Runnable} object bound to the \texttt{Thread}. If no strong refereneces to the
-thread obtained between exiting \texttt{Thread::start} and entering the C helper
-function, \texttt{ThreadMain}, the weak reference returns null and the function 
+\texttt{Runnable} object bound to the \texttt{Thread}. If no strong references to the
+thread are obtained between exiting \texttt{Thread::start} and entering \texttt{ThreadMain}, the weak reference returns \texttt{null} and the function 
 exits immediately.
 
 The need for the \texttt{Thread} to make a weak reference to itself has a
 significant impact on the API. Since references are managed through the
 \texttt{boost::shared\_ptr} templates, the \texttt{Thread} object must have a reference
 to itself wrapped by the same \texttt{boost::shared\_ptr} envelope that is returned
-to the caller. This necessitated use of the factory pattern.
-\texttt{ThreadFactory} creates the raw \texttt{Thread} object and
-{tt boost::shared\_ptr} wrapper, and calls a private helper method of the class
-implementing the \texttt{Thread} interface (in this case, \texttt{PosixThread::weakRef}
+to the caller. This necessitated the use of the factory pattern.
+\texttt{ThreadFactory} creates the raw \texttt{Thread} object and a
+\texttt{boost::shared\_ptr} wrapper, and calls a private helper method of the class
+implementing the \texttt{Thread} interface (in this case, \texttt{PosixThread::weakRef})
  to allow it to make add weak reference to itself through the
  \texttt{boost::shared\_ptr} envelope.
 
 \texttt{Thread} and \texttt{Runnable} objects reference each other. A \texttt{Runnable}
-object may need to know which thread it is executing in and a Thread, obviously,
+object may need to know about the thread in which it is executing, and a Thread, obviously,
 needs to know what \texttt{Runnable} object it is hosting. This interdependency is
 further complicated because the lifecycle of each object is independent of the
 other. An application may create a set of \texttt{Runnable} object to be reused in different threads, or it may create and forget a \texttt{Runnable} object
 once a thread has been created and started for it. 
 
 The \texttt{Thread} class takes a \texttt{boost::shared\_ptr} reference to the hosted
-\texttt{Runnable} object in its contructor, while the \texttt{Runnable} class has an
+\texttt{Runnable} object in its constructor, while the \texttt{Runnable} class has an
 explicit \texttt{thread} method to allow explicit binding of the hosted thread.
-\texttt{ThreadFactory::newThread} binds the two objects to each other.
+\texttt{ThreadFactory::newThread} binds the objects to each other.
 
 \subsection{ThreadManager}
 
@@ -911,14 +913,14 @@
 on running-average of work arrival rates that are measured via polled
 samples. Others may simply wish to react immediately to work-queue
 depth high and low water marks. Rather than trying to create a complex
-API that is abstract enough to capture these different approaches, we 
+API abstract enough to capture these different approaches, we 
 simply leave it up to the particular application and provide the 
 primitives to enact the desired policy and sample current status.
 
 \subsection{TimerManager}
 
-\texttt{TimerManager} applows applications to schedule
- \texttt{Runnable} object execution at some point in the future. Its specific task 
+\texttt{TimerManager} allows applications to schedule
+ \texttt{Runnable} objects for execution at some point in the future. Its specific task 
 is to allows applications to sample \texttt{ThreadManager} load at regular
 intervals and make changes to the thread pool size based on application policy.
 Of course, it can be used to generate any number of timer or alarm events.
@@ -931,7 +933,7 @@
 \subsection{Nonblocking Operation}
 Though the Thrift transport interfaces map more directly to a blocking I/O
 model, we have implemented a high performance \texttt{TNonBlockingServer}
-in C++ based upon \texttt{libevent} and the \texttt{TFramedTransport}. We
+in C++ based on \texttt{libevent} and the \texttt{TFramedTransport}. We
 implemented this by moving all I/O into one tight event loop using a
 state machine. Essentially, the event loop reads framed requests into
 \texttt{TMemoryBuffer} objects. Once entire requests are ready, they are
@@ -939,9 +941,9 @@
 the data in memory.
 
 \subsection{Compiler}
-The Thrift compiler is implemented in C++ using standard lex/yacc
-tokenization and parsing. Though it could have been implemented with fewer
-lines of code in another language (i.e. Python/PLY or ocamlyacc), using C++
+The Thrift compiler is implemented in C++ using standard \texttt{lex}/\texttt{yacc}
+lexing and parsing. Though it could have been implemented with fewer
+lines of code in another language (i.e. Python Lex-Yacc (PLY) or \texttt{ocamlyacc}), using C++
 forces explicit definition of the language constructs. Strongly typing the
 parse tree elements (debatably) makes the code more approachable for new
 developers.
@@ -950,7 +952,7 @@
 include files and type definitions. Type definitions are not checked during
 this phase, since they may depend upon include files. All included files
 are sequentially scanned in a first pass. Once the include tree has been
-resolved, a second pass is taken over all files which inserts type definitions
+resolved, a second pass over all files is taken that inserts type definitions
 into the parse tree and raises an error on any undefined types. The program is
 then generated against the parse tree.
 
@@ -961,49 +963,49 @@
 
 \subsection{TFileTransport}
 The \texttt{TFileTransport} logs Thrift requests/structs by 
-framing incoming data with its length and writing it to disk. 
+framing incoming data with its length and writing it out to disk. 
 Using a framed on-disk format allows for better error checking and 
-helps with processing a finite number of discrete events. The\\
+helps with the processing of a finite number of discrete events. The\\
 \texttt{TFileWriterTransport} uses a system of swapping in-memory buffers 
 to ensure good performance while logging large amounts of data. 
-A Thrift logfile is split up into chunks of a speficified size and logged messages
+A Thrift log file is split up into chunks of a specified size; logged messages
 are not allowed to cross chunk boundaries. A message that would cross a chunk 
 boundary will cause padding to be added until the end of the chunk and the 
-first byte of the message is aligned to the beginning of the new chunk.
+first byte of the message are aligned to the beginning of the next chunk.
 Partitioning the file into chunks makes it possible to read and interpret data 
 from a particular point in the file. 
 
 \section{Facebook Thrift Services}
 Thrift has been employed in a large number of applications at Facebook, including
-search, logging, mobile, ads and platform. Two specific usages are discussed below.
+search, logging, mobile, ads and the developer platform. Two specific usages are discussed below.
 
 \subsection{Search}
-Thrift is used as the underlying protocol and transport for the Facebook seach service.
-The multi-language code generation is well suited for search because it allows application
+Thrift is used as the underlying protocol and transport layer for the Facebook Search service.
+The multi-language code generation is well suited for search because it allows for application
 development in an efficient server side language (C++) and allows the Facebook PHP-based web application
 to make calls to the search service using Thrift PHP libraries. There is also a large
 variety of search stats, deployment and testing functionality that is built on top 
-of the generated python code. In addition to this, the Thrift logfile format is
-used as a redolog for providing real-time search index updates. Thrift has allowed the 
+of generated Python code. Additionally, the Thrift log file format is
+used as a redo log for providing real-time search index updates. Thrift has allowed the 
 search team to leverage each language for its strengths and to develop code at a rapid pace. 
 
 \subsection{Logging}
 The Thrift \texttt{TFileTransport} functionality is used for structured logging. Each
 service function definition along with its parameters can be considered to be
 a structured log entry identified by the function name. This log can then be used for 
-a variety of purposes, including inline and offline processing, stats aggregation and as a redolog.
+a variety of purposes, including inline and offline processing, stats aggregation and as a redo log.
 
 \section{Conclusions}
 Thrift has enabled Facebook to build scalable backend
 services efficiently by enabling engineers to divide and conquer. Application
-developers can focus upon application code without worrying about the
+developers can focus on application code without worrying about the
 sockets layer. We avoid duplicated work by writing buffering and I/O logic
 in one place, rather than interspersing it in each application.
 
 Thrift has been employed in a wide variety of applications at Facebook,
-including search, logging, mobile, ads, and platform. We have
+including search, logging, mobile, ads, and the developer platform. We have
 found that the marginal performance cost incurred by an extra layer of
-software abstraction is eclipsed by the gains in developer efficiency and
+software abstraction is far eclipsed by the gains in developer efficiency and
 systems reliability.
 
 \appendix
