Index: doc/generic_types/acmart.cls
===================================================================
--- doc/generic_types/acmart.cls	(revision 02d241f9cac1fbed86a848aa18c3c564bf2dab95)
+++ doc/generic_types/acmart.cls	(revision 33e22da80a429fb642fe067c8cf5f189f62d63eb)
@@ -401,13 +401,13 @@
        \immediate\write\@auxout{\string\bibstyle{#1}}%
      \fi}}
-\RequirePackage{graphicx, xcolor}
-\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
-\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
-\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
-\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
-\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
-\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
-\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
-\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
+%\RequirePackage{graphicx, xcolor}
+%\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
+%\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
+%\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
+%\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
+%\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
+%\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
+%\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
+%\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
 \RequirePackage{geometry}
 \ifcase\ACM@format@nr
Index: doc/generic_types/generic_types.tex
===================================================================
--- doc/generic_types/generic_types.tex	(revision 02d241f9cac1fbed86a848aa18c3c564bf2dab95)
+++ doc/generic_types/generic_types.tex	(revision 33e22da80a429fb642fe067c8cf5f189f62d63eb)
@@ -6,4 +6,5 @@
 \usepackage{upquote}									% switch curled `'" to straight
 \usepackage{listings}									% format program code
+\usepackage[usenames]{color}
 
 \makeatletter
@@ -244,5 +245,5 @@
 	return (T *)bsearch( &key, arr, size, sizeof(T), comp ); }
 forall( otype T | { int ?<?( T, T ); } ) unsigned int bsearch( T key, const T * arr, size_t size ) {
-	T *result = bsearch( key, arr, size );	$\C{// call first version}$
+	T * result = bsearch( key, arr, size );	$\C{// call first version}$
 	return result ? result - arr : size; }	$\C{// pointer subtraction includes sizeof(T)}$
 double * val = bsearch( 5.0, vals, 10 );	$\C{// selection based on return type}$
@@ -356,7 +357,7 @@
 % struct list {
 %     int value;
-%     list *next;								$\C{// may omit "struct" on type names as in \CC}$
+%     list * next;								$\C{// may omit "struct" on type names as in \CC}$
 % };
-% typedef list *list_iterator;
+% typedef list * list_iterator;
 %
 % lvalue int *?( list_iterator it ) { return it->value; }
@@ -388,5 +389,5 @@
 };
 forall( otype T ) T value( pair( const char *, T ) p ) { return p.second; }
-forall( dtype F, otype T ) T value_p( pair( F *, T * ) p ) { return *p.second; }
+forall( dtype F, otype T ) T value_p( pair( F *, T * ) p ) { return * p.second; }
 pair( const char *, int ) p = { "magic", 42 };
 int magic = value( p );
@@ -549,5 +550,5 @@
 The type-resolver only has the tuple return-types to resolve the call to @bar@ as the @foo@ parameters are identical, which involves unifying the possible @foo@ functions with @bar@'s parameter list.
 No combination of @foo@s are an exact match with @bar@'s parameters, so the resolver applies C conversions.
-The minimal cost is @bar( foo@$_1$@( 3 ), foo@$_2$@( 3 ) )@, giving (@int@, {\color{green}@int@}, @double@) to (@int@, {\color{green}@double@}, @double@) with one {\color{green}safe} (widening) conversion from @int@ to @double@ versus ({\color{red}@double@}, {\color{green}@int@}, {\color{green}@int@}) to ({\color{red}@int@}, {\color{green}@double@}, {\color{green}@double@}) with one {\color{red}unsafe} (narrowing) conversion from @double@ to @int@ and two safe conversions.
+The minimal cost is @bar( foo@$_1$@( 3 ), foo@$_2$@( 3 ) )@, giving (@int@, {\color{ForestGreen}@int@}, @double@) to (@int@, {\color{ForestGreen}@double@}, @double@) with one {\color{ForestGreen}safe} (widening) conversion from @int@ to @double@ versus ({\color{red}@double@}, {\color{ForestGreen}@int@}, {\color{ForestGreen}@int@}) to ({\color{red}@int@}, {\color{ForestGreen}@double@}, {\color{ForestGreen}@double@}) with one {\color{red}unsafe} (narrowing) conversion from @double@ to @int@ and two safe conversions.
 
 
@@ -963,5 +964,5 @@
 \begin{figure}
 \begin{lstlisting}[xleftmargin=3\parindentlnth,aboveskip=0pt,belowskip=0pt]
-int main( int argc, char *argv[] ) {
+int main( int argc, char * argv[] ) {
 	FILE * out = fopen( "cfa-out.txt", "w" );
 	int max = 0, vali = 42;
@@ -1102,5 +1103,5 @@
 
 
-\section{Conclusion \& Future Work}
+\section{Conclusion and Future Work}
 
 The goal of \CFA is to provide an evolutionary pathway for large C development-environments to be more productive and safer, while respecting the talent and skill of C programmers.
