Index: doc/generic_types/.gitignore
===================================================================
--- doc/generic_types/.gitignore	(revision c87cd93912bc71baa2e5f84533ed9ab8bb2a5d23)
+++ doc/generic_types/.gitignore	(revision 4ae83a4bc9920196378e600c9ad291389d0f46e5)
@@ -17,2 +17,3 @@
 *.synctex.gz
 comment.cut
+timing.tex
Index: doc/generic_types/generic_types.tex
===================================================================
--- doc/generic_types/generic_types.tex	(revision c87cd93912bc71baa2e5f84533ed9ab8bb2a5d23)
+++ doc/generic_types/generic_types.tex	(revision 4ae83a4bc9920196378e600c9ad291389d0f46e5)
@@ -214,5 +214,5 @@
 A design advantage is that, unlike \CC template-functions, \CFA polymorphic-functions are compatible with C \emph{separate compilation}, preventing compilation and code bloat.
 
-Since bare polymorphic-types provide a restricted set of available operations, \CFA provides a \emph{type assertion}~\cite{alphard} mechanism to provide further type information, where type assertions may be variable or function declarations that depend on a polymorphic type-variable.
+Since bare polymorphic-types provide a restricted set of available operations, \CFA provides a \emph{type assertion}~\cite[pp.~37-44]{Alphard} mechanism to provide further type information, where type assertions may be variable or function declarations that depend on a polymorphic type-variable.
 For example, the function @twice@ can be defined using the \CFA syntax for operator overloading:
 \newpage
@@ -280,5 +280,5 @@
 \lstDeleteShortInline@%
 \par\smallskip
-\begin{tabular}{@{}l@{\hspace{\parindent}}|@{\hspace{\parindent}}l@{}}
+\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{lstlisting}
 short int MAX = ...;
@@ -587,5 +587,5 @@
 \lstDeleteShortInline@%
 \par\smallskip
-\begin{tabular}{@{}l@{\hspace{\parindent}}|@{\hspace{\parindent}}l@{}}
+\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{lstlisting}
 int f( int, int );
@@ -616,5 +616,5 @@
 \lstDeleteShortInline@%
 \par\smallskip
-\begin{tabular}{@{}l@{\hspace{\parindent}}|@{\hspace{\parindent}}l@{}}
+\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{lstlisting}
 int x = 10;
@@ -658,5 +658,5 @@
 \lstDeleteShortInline@%
 \par\smallskip
-\begin{tabular}{@{}l@{\hspace{\parindent}}|@{\hspace{\parindent}}l@{}}
+\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}}
 \begin{lstlisting}
 [int, int, long, double] x;
@@ -1019,5 +1019,5 @@
 \end{table}
 
-The C and \CCV variants are generally the slowest with the largest memory footprint, because to their less-efficient memory layout and the pointer-indirection necessary to implement generic types;
+The C and \CCV variants are generally the slowest with the largest memory footprint, because of their less-efficient memory layout and the pointer-indirection necessary to implement generic types;
 this inefficiency is exacerbated by the second level of generic types in the pair-based benchmarks.
 By contrast, the \CFA and \CC variants run in roughly equivalent time for both the integer and pair of @_Bool@ and @char@ because the storage layout is equivalent.
