Index: src/SynTree/ApplicationExpr.cc
===================================================================
--- src/SynTree/ApplicationExpr.cc	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/SynTree/ApplicationExpr.cc	(revision 8d7bef249652cc2b9854c7090c758bcd9ad9f613)
@@ -17,5 +17,4 @@
 #include <list>                  // for list
 #include <map>                   // for _Rb_tree_const_iterator, map, map<>:...
-#include <memory>                // for unique_ptr
 #include <ostream>               // for operator<<, ostream, basic_ostream
 #include <string>                // for operator<<, string, char_traits
Index: src/SynTree/BaseSyntaxNode.h
===================================================================
--- src/SynTree/BaseSyntaxNode.h	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/SynTree/BaseSyntaxNode.h	(revision 8d7bef249652cc2b9854c7090c758bcd9ad9f613)
@@ -24,4 +24,5 @@
 
 class BaseSyntaxNode : GC_Object {
+  friend class GcTracer;
 public:
 	CodeLocation location;
Index: src/SynTree/GcTracer.cc
===================================================================
--- src/SynTree/GcTracer.cc	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ 	(revision )
@@ -1,29 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// GcTracer.cc --
-//
-// Author           : Aaron B. Moss
-// Created On       : Thu Mar 15 14:47:00 2018
-// Last Modified By : Aaron B. Moss
-// Last Modified On : Thu Mar 15 14:47:00 2018
-// Update Count     : 1
-//
-
-#include "GcTracer.h"
-
-#include "Expression.h"
-#include "TypeSubstitution.h"
-
-void GcTracer::postvisit( Expression * expr ) {
-
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/SynTree/GcTracer.h
===================================================================
--- src/SynTree/GcTracer.h	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/SynTree/GcTracer.h	(revision 8d7bef249652cc2b9854c7090c758bcd9ad9f613)
@@ -52,5 +52,5 @@
 static inline const GC& operator<< ( const GC& gc, const std::list<Declaration*>& translationUnit ) {
 	PassVisitor<GcTracer> tracer{ gc };
-	acceptAll( translationUnit, tracer );
+	acceptAll( const_cast<std::list<Declaration*>&>( translationUnit ), tracer );
 	return gc;
 }
Index: src/SynTree/TypeSubstitution.h
===================================================================
--- src/SynTree/TypeSubstitution.h	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/SynTree/TypeSubstitution.h	(revision 8d7bef249652cc2b9854c7090c758bcd9ad9f613)
@@ -59,4 +59,5 @@
 	void normalize();
 
+	void accept( Visitor& v ) { v.visit( this ); }
 	TypeSubstitution * acceptMutator( Mutator & m ) { return m.mutate( this ); }
 
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/SynTree/Visitor.h	(revision 8d7bef249652cc2b9854c7090c758bcd9ad9f613)
@@ -121,4 +121,6 @@
 
 	virtual void visit( Attribute * attribute ) = 0;
+
+	virtual void visit( TypeSubstitution * sub ) = 0;
 };
 
Index: src/SynTree/module.mk
===================================================================
--- src/SynTree/module.mk	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/SynTree/module.mk	(revision 8d7bef249652cc2b9854c7090c758bcd9ad9f613)
@@ -48,5 +48,4 @@
        SynTree/TypeSubstitution.cc \
        SynTree/Attribute.cc \
-       SynTree/GcTracer.cc \
        SynTree/VarExprReplacer.cc
 
