Index: doc/bibliography/cfa.bib
===================================================================
--- doc/bibliography/cfa.bib	(revision 80cdb2f57747705b86dcdf3b714896ec1092137e)
+++ doc/bibliography/cfa.bib	(revision 2f0a35990a3246990679740f55a62fbfce807686)
@@ -4563,12 +4563,10 @@
 }
 
-@manual{obj-c-book,
-    keywords = {objective-c},
-    contributor = {a3moss@uwaterloo.ca},
-    author = {{Apple Computer Inc.}},
-    title = {The {Objective-C} Programming Language},
-    publisher = {Apple Computer Inc.},
-    address = {Cupertino, CA},
-    year = 2003
+@book{obj-c-book,
+    keywords	= {objective-c},
+    contributor	= {a3moss@uwaterloo.ca},
+    author	= {{Apple Computer Inc.}},
+    title	= {The {Objective-C} Programming Language},
+    year	= 2002
 }
 
Index: c/generic_types/evaluation/.gitignore
===================================================================
--- doc/generic_types/evaluation/.gitignore	(revision 80cdb2f57747705b86dcdf3b714896ec1092137e)
+++ 	(revision )
@@ -1,8 +1,0 @@
-c-bench
-cpp-bench
-cfa-bench
-c2-bench
-cpp2-bench
-cfa2-bench
-*.o
-*.d
Index: doc/generic_types/evaluation/Makefile
===================================================================
--- doc/generic_types/evaluation/Makefile	(revision 80cdb2f57747705b86dcdf3b714896ec1092137e)
+++ doc/generic_types/evaluation/Makefile	(revision 2f0a35990a3246990679740f55a62fbfce807686)
@@ -1,101 +1,22 @@
-CFA = my-cfa
-DEPFLAGS = -MMD -MP
+CFA=cfa
 
-.PHONY: all clean distclean bench
+# %.o : %.cf
+#	$(CFA) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
 
-all: c-bench cpp-bench cfa-bench c2-bench cpp2-bench cfa2-bench
+cfa-stack.o: cfa-stack.c cfa-stack.h
+	$(CFA) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
 
-# rewrite object generation to auto-determine deps
-COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS)
-COMPILE.cpp = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS)
-COMPILE.cfa = $(CFA) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS)
+c-bench: c-bench.c bench.h c-stack.o
+	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< c-stack.o
 
-c-%.o : c-%.c
-c-%.o : c-%.c c-%.d
-	$(COMPILE.c) -O0 $(OUTPUT_OPTION) -c $<
+cpp-bench: cpp-bench.cpp bench.h cpp-stack.h
+	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ $<
 
-cpp-%.o : cpp-%.cpp
-cpp-%.o : cpp-%.cpp cpp-%.d
-	$(COMPILE.cpp) -O0 $(OUTPUT_OPTION) -c $<
-
-cfa-%.o : cfa-%.c
-cfa-%.o : cfa-%.c cfa-%.d
-	$(COMPILE.cfa) -O0 $(OUTPUT_OPTION) -c $<
-
-c2-%.o : c-%.c
-c2-%.o : c-%.c c-%.d
-	$(COMPILE.c) -O2 $(OUTPUT_OPTION) -c $<
-
-cpp2-%.o : cpp-%.cpp
-cpp2-%.o : cpp-%.cpp cpp-%.d
-	$(COMPILE.cpp) -O2 $(OUTPUT_OPTION) -c $<
-
-cfa2-%.o : cfa-%.c
-cfa2-%.o : cfa-%.c cfa-%.d
-	$(COMPILE.cfa) -O2 $(OUTPUT_OPTION) -c $<
-
-COBJS = c-stack.o
-CPPOBJS = 
-CFAOBJS = cfa-stack.o
-C2OBJS = $(patsubst c-%,c2-%, $(COBJS))
-CPP2OBJS = $(patsubst cpp-%,cpp2-%, $(CPPOBJS))
-CFA2OBJS = $(patsubst cfa-%,cfa2-%, $(CFAOBJS))
-
-c-bench: c-bench.c c-bench.d $(COBJS)
-	$(COMPILE.c) -O0 -o $@ $< $(COBJS) $(LDFLAGS)
-
-cpp-bench: cpp-bench.cpp cpp-bench.d $(CPPOBJS)
-	$(COMPILE.cpp) -O0 -o $@ $< $(CPPOBJS) $(LDFLAGS)
-
-cfa-bench: cfa-bench.c cfa-bench.d $(CFAOBJS)
-	$(COMPILE.cfa) -O0 -o $@ $< $(CFAOBJS) $(LDFLAGS)
-
-c2-bench: c-bench.c c-bench.d $(C2OBJS)
-	$(COMPILE.c) -O2 -o $@ $< $(C2OBJS) $(LDFLAGS)
-
-cpp2-bench: cpp-bench.cpp cpp-bench.d $(CPP2OBJS)
-	$(COMPILE.cpp) -O2 -o $@ $< $(CPP2OBJS) $(LDFLAGS)
-
-cfa2-bench: cfa-bench.c cfa-bench.d $(CFA2OBJS)
-	$(COMPILE.cfa) -O2 -o $@ $< $(CFA2OBJS) $(LDFLAGS)
+cfa-bench: cfa-bench.c bench.h cfa-stack.o
+	$(CFA) $(CFLAGS) $(CPPFLAGS) -o $@ $< cfa-stack.o
 
 clean:
-	-rm $(COBJS) c-bench
-	-rm $(CPPOBJS) cpp-bench
-	-rm $(CFAOBJS) cfa-bench
-	-rm $(C2OBJS) c2-bench
-	-rm $(CPP2OBJS) cpp2-bench
-	-rm $(CFA2OBJS) cfa2-bench
-
-distclean: clean
-	-rm $(COBJS:.o=.d) c-bench.d
-	-rm $(CPPOBJS:.o=.d) cpp-bench.d
-	-rm $(CFAOBJS:.o=.d) cfa-bench.d
-
-bench: c-bench cpp-bench cfa-bench c2-bench cpp2-bench cfa2-bench
-	@echo '## C ##'
-	@./c-bench
-	@echo '## C++ ##'
-	@./cpp-bench
-	@echo '## Cforall ##'
-	@./cfa-bench
-	@echo '## C -O2 ##'
-	@./c2-bench
-	@echo '## C++ -O2 ##'
-	@./cpp2-bench
-	@echo '## Cforall -O2 ##'
-	@./cfa2-bench
-
-# so make doesn't fail without dependency files
-%.d: ;
-
-# so make won't delete dependency files
-.PRECIOUS: %.d
-
-# include dependency files
--include: $(COBJS:.o=.d)
--include: $(CPPOBJS:.o=.d)
--include: $(CFAOBJS:.o=.d)
--include: c-bench.d
--include: cpp-bench.d
--include: cfa-bench.d
+	-rm *.o
+	-rm c-bench
+	-rm cpp-bench
+	-rm cfa-bench
Index: doc/generic_types/evaluation/cfa-stack.c
===================================================================
--- doc/generic_types/evaluation/cfa-stack.c	(revision 80cdb2f57747705b86dcdf3b714896ec1092137e)
+++ doc/generic_types/evaluation/cfa-stack.c	(revision 2f0a35990a3246990679740f55a62fbfce807686)
@@ -8,5 +8,5 @@
 
 forall(otype T) void ?{}(stack(T)* s) {
-	?{}( &s->head, 0 );
+	?{}( s->head, 0 );
 }
 
@@ -25,5 +25,5 @@
 
 forall(otype T) void push(stack(T)* s, T value) {
-	s->head = ((stack_node(T)*)malloc()){ value, s->head };
+	s->head = new( value, s->head );
 }
 
