Index: src/SynTree/Constant.cc
===================================================================
--- src/SynTree/Constant.cc	(revision fa162645139e7dda92de4b973c2a17238a8a252b)
+++ src/SynTree/Constant.cc	(revision 3c398b6c889afd06fdf9de3208cd23fbf26275e5)
@@ -71,5 +71,5 @@
 }
 
-void Constant::print( std::ostream &os ) const {
+void Constant::print( std::ostream &os, int indent ) const {
 	os << "(" << rep << " " << val.ival;
 	if ( type ) {
Index: src/SynTree/Constant.h
===================================================================
--- src/SynTree/Constant.h	(revision fa162645139e7dda92de4b973c2a17238a8a252b)
+++ src/SynTree/Constant.h	(revision 3c398b6c889afd06fdf9de3208cd23fbf26275e5)
@@ -19,4 +19,5 @@
 #include <string>     // for string
 
+#include "BaseSyntaxNode.h"
 #include "Mutator.h"  // for Mutator
 #include "Visitor.h"  // for Visitor
@@ -24,5 +25,5 @@
 class Type;
 
-class Constant {
+class Constant : public BaseSyntaxNode {
   public:
 	Constant( Type * type, std::string rep, unsigned long long val );
@@ -30,4 +31,6 @@
 	Constant( const Constant & other );
 	virtual ~Constant();
+
+	virtual Constant * clone() const { return new Constant( *this ); }
 
 	Type * get_type() { return type; }
@@ -54,5 +57,5 @@
 	virtual void accept( Visitor & v ) { v.visit( this ); }
 	virtual Constant * acceptMutator( Mutator & m ) { return m.mutate( this ); }
-	virtual void print( std::ostream & os ) const;
+	virtual void print( std::ostream & os, int indent = 0 ) const;
   private:
 	Type * type;
