Index: doc/generic_types/generic_types.bib
===================================================================
--- doc/generic_types/generic_types.bib	(revision 52f353981cd942c4119364c95d79f27e3c23295e)
+++ 	(revision )
@@ -1,94 +1,0 @@
-@mastersthesis{Bilson03,
-    keywords	= {Cforall, parametric polymorphism, overloading},
-    contributer	= {pabuhr@plg},
-    author	= {Richard C. Bilson},
-    title	= {Implementing Overloading and Polymorphism in Cforall},
-    school	= {School of Computer Science, University of Waterloo},
-    year	= 2003,
-    address	= {Waterloo, Ontario, Canada, N2L 3G1},
-    note	= {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
-}
-
-@article{Buhr94a,
-    keywords	= {assignment, parameter passing, multiple assignment},
-    contributer	= {pabuhr@plg},
-    author	= {P. A. Buhr and David Till and C. R. Zarnke},
-    title	= {Assignment as the Sole Means of Updating Objects},
-    journal	= spe,
-    month	= sep,
-    year	= 1994,
-    volume	= 24,
-    number	= 9,
-    pages	= {835-870},
-}
-
-@techreport{C11,
-    type = {International Standard},
-    keywords	= {ISO/IEC C 11},
-    contributer	= {pabuhr@plg},
-    key		= {{ISO/IEC} 9889-2011},
-    title	= {American National Standard Information technology -- Programming Languages -- {C}},
-    institution = {International Standard Organization},
-    address	= {http://www.iso.org},
-    year	= 2012,
-}
-
-@techreport{C++Concepts,
-    type = {International Standard},
-    keywords	= {ISO/IEC TS 19217:2015},
-    contributer	= {a3moss@uwaterloo.ca},
-    key		= {{ISO/IEC} {TS} 19217},
-    title	= {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
-    institution	= {International Standard Organization},
-    address	= {http://www.iso.org},
-    year	= 2015
-}
-
-@phdthesis{Ditchfield92,
-    keywords	= {C, parametric polymorphism, overloading},
-    contributer	= {pabuhr@plg},
-    author	= {Glen Jeffrey Ditchfield},
-    title	= {Contextual Polymorphism},
-    school	= {Department of Computer Science, University of Waterloo},
-    year	= 1992,
-    address	= {Waterloo, Ontario, Canada, N2L 3G1},
-    note	= {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
-}
-
-@article{Gro06,
- author = {Grossman, Dan},
- title = {Quantified Types in an Imperative Language},
- journal = {ACM Trans. Program. Lang. Syst.},
- issue_date = {May 2006},
- volume = {28},
- number = {3},
- month = may,
- year = {2006},
- issn = {0164-0925},
- pages = {429--475},
- numpages = {47},
- url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
- doi = {10.1145/1133651.1133653},
- acmid = {1133653},
- publisher = {ACM},
- address = {New York, NY, USA},
-}
-
-@mastersthesis{Schluntz17,
-    author  = {Schluntz, Robert},
-    title   = {Resource Management and Tuples in C$\mathbf{\forall}$},
-    school	= {School of Computer Science, University of Waterloo},
-    year	= 2017,
-    address	= {Waterloo, Ontario, Canada, N2L 3G1},
-    note    = {[[unpublished]]}
-}
-
-@mastersthesis{Till89,
-    keywords	= {C, multiple return values, tuples},
-    contributer	= {pabuhr@plg},
-    author	= {David W. Till},
-    title	= {Tuples In Imperative Programming Languages},
-    school	= {Department of Computer Science, University of Waterloo},
-    year	= 1989,
-    address	= {Waterloo, Ontario, Canada, N2L 3G1},
-}
Index: doc/generic_types/generic_types.tex
===================================================================
--- doc/generic_types/generic_types.tex	(revision 52f353981cd942c4119364c95d79f27e3c23295e)
+++ doc/generic_types/generic_types.tex	(revision f1a4ccb35db9f7f4bd526c76c57213955bf2b43a)
@@ -49,11 +49,11 @@
 
 % Useful macros
-\newcommand{\CFA}{C\raisebox{\depth}{\rotatebox{180}{\textsf{A}}}\hspace{-1pt}\xspace} % Cforall symbolic name
-%\newcommand{\CFA}{C$\mathbf\forall$\xspace} % Cforall symbolic name
-\newcommand{\CC}{\rm C\kern-.1em\hbox{+\kern-.25em+}\xspace} % C++ symbolic name
-\newcommand{\CCeleven}{\rm C\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
-\newcommand{\CCfourteen}{\rm C\kern-.1em\hbox{+\kern-.25em+}14\xspace} % C++14 symbolic name
-\newcommand{\CCseventeen}{\rm C\kern-.1em\hbox{+\kern-.25em+}17\xspace} % C++17 symbolic name
-\newcommand{\CCtwenty}{\rm C\kern-.1em\hbox{+\kern-.25em+}20\xspace} % C++20 symbolic name
+\newcommand{\CFAIcon}{\textsf{C}\raisebox{\depth}{\rotatebox{180}{\textsf{A}}}\xspace} % Cforall symbolic name
+\newcommand{\CFA}{\protect\CFAIcon} % safe for section/caption
+\newcommand{\CC}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}\xspace} % C++ symbolic name
+\newcommand{\CCeleven}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}11\xspace} % C++11 symbolic name
+\newcommand{\CCfourteen}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}14\xspace} % C++14 symbolic name
+\newcommand{\CCseventeen}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}17\xspace} % C++17 symbolic name
+\newcommand{\CCtwenty}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}20\xspace} % C++20 symbolic name
 \newcommand{\CCV}{\rm C\kern-.1em\hbox{+\kern-.25em+}obj\xspace} % C++ virtual symbolic name
 \newcommand{\Csharp}{C\raisebox{-0.7ex}{\Large$^\sharp$}\xspace} % C# symbolic name
@@ -443,7 +443,7 @@
 This function could acquire the layout for @set(T)@ by calling its layout function with the layout of @T@ implicitly passed into the function.
 
-Whether a type is concrete, dtype-static, or dynamic is decided solely on the type parameters and @forall@ clause on a declaration.
-This design allows opaque forward declarations of generic types, \eg @forall(otype T) struct Box@ -- like in C, all uses of @Box(T)@ can be separately compiled, and callers from other translation units know the proper calling conventions to use.
-If the definition of a structure type is included in deciding whether a generic type is dynamic or concrete, some further types may be recognized as dtype-static (\eg @forall(otype T) struct unique_ptr { T * p }@ does not depend on @T@ for its layout, but the existence of an @otype@ parameter means that it \emph{could}.), but preserving separate compilation (and the associated C compatibility) in the existing design is judged to be an appropriate trade-off.
+Whether a type is concrete, dtype-static, or dynamic is decided solely on the @forall@'s type parameters.
+This design allows opaque forward declarations of generic types, \eg @forall(otype T)@ @struct Box@ -- like in C, all uses of @Box(T)@ can be separately compiled, and callers from other translation units know the proper calling conventions to use.
+If the definition of a structure type is included in deciding whether a generic type is dynamic or concrete, some further types may be recognized as dtype-static (\eg @forall(otype T)@ @struct unique_ptr { T * p }@ does not depend on @T@ for its layout, but the existence of an @otype@ parameter means that it \emph{could}.), but preserving separate compilation (and the associated C compatibility) in the existing design is judged to be an appropriate trade-off.
 
 
@@ -855,5 +855,7 @@
 }
 \end{lstlisting}
+\begin{sloppypar}
 Tuple expressions are then simply converted directly into compound literals, \eg @[5, 'x', 1.24]@ becomes @(_tuple3(int, char, double)){ 5, 'x', 1.24 }@.
+\end{sloppypar}
 
 \begin{comment}
