Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/Parser/ExpressionNode.cc	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -87,5 +87,5 @@
 		} else {
 			assertf( false, "internal error, bad integral length %s", str.c_str() );
-		} // if		
+		} // if
 		posn += 1;
 	} // if
@@ -396,5 +396,5 @@
 
 NameExpr * build_varref( const string * name ) {
-	NameExpr * expr = new NameExpr( *name, nullptr );
+	NameExpr * expr = new NameExpr( *name );
 	delete name;
 	return expr;
@@ -487,5 +487,5 @@
 	list< Expression * > args;
 	buildMoveList( expr_node, args );
-	return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
+	return new UntypedExpr( maybeMoveBuild< Expression >(function), args );
 } // build_func
 
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -973,5 +973,5 @@
 		PRINT( std::cerr << "nameExpr is " << nameExpr->get_name() << std::endl; )
 		for ( std::list< DeclarationWithType* >::iterator i = declList.begin(); i != declList.end(); ++i ) {
-			VariableExpr newExpr( *i, nameExpr->get_argName() );
+			VariableExpr newExpr( *i );
 			alternatives.push_back( Alternative( newExpr.clone(), env, Cost::zero ) );
 			PRINT(
Index: src/SynTree/AddressExpr.cc
===================================================================
--- src/SynTree/AddressExpr.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/SynTree/AddressExpr.cc	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -40,5 +40,5 @@
 }
 
-AddressExpr::AddressExpr( Expression *arg, Expression *_aname ) : Expression( _aname ), arg( arg ) {
+AddressExpr::AddressExpr( Expression *arg ) : Expression(), arg( arg ) {
 	if ( arg->has_result() ) {
 		if ( arg->get_result()->get_lvalue() ) {
Index: src/SynTree/CommaExpr.cc
===================================================================
--- src/SynTree/CommaExpr.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/SynTree/CommaExpr.cc	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -21,6 +21,6 @@
 #include "Type.h"            // for Type
 
-CommaExpr::CommaExpr( Expression *arg1, Expression *arg2, Expression *_aname )
-		: Expression( _aname ), arg1( arg1 ), arg2( arg2 ) {
+CommaExpr::CommaExpr( Expression *arg1, Expression *arg2 )
+		: Expression(), arg1( arg1 ), arg2( arg2 ) {
 	// xxx - result of a comma expression is never an lvalue, so should set lvalue
 	// to false on all result types. Actually doing this causes some strange things
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/SynTree/Expression.cc	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -33,12 +33,11 @@
 #include "GenPoly/Lvalue.h"
 
-Expression::Expression( Expression *_aname ) : result( 0 ), env( 0 ), argName( _aname ) {}
-
-Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ), extension( other.extension ) {
+Expression::Expression() : result( 0 ), env( 0 ) {}
+
+Expression::Expression( const Expression &other ) : BaseSyntaxNode( other ), result( maybeClone( other.result ) ), env( maybeClone( other.env ) ), extension( other.extension ) {
 }
 
 Expression::~Expression() {
 	delete env;
-	delete argName;	// xxx -- there's a problem in cloning ConstantExpr I still don't know how to fix
 	delete result;
 }
@@ -55,5 +54,5 @@
 }
 
-ConstantExpr::ConstantExpr( Constant _c, Expression *_aname ) : Expression( _aname ), constant( _c ) {
+ConstantExpr::ConstantExpr( Constant _c ) : Expression(), constant( _c ) {
 	set_result( constant.get_type()->clone() );
 }
@@ -70,5 +69,5 @@
 }
 
-VariableExpr::VariableExpr( DeclarationWithType *_var, Expression *_aname ) : Expression( _aname ), var( _var ) {
+VariableExpr::VariableExpr( DeclarationWithType *_var ) : Expression(), var( _var ) {
 	assert( var );
 	assert( var->get_type() );
@@ -97,11 +96,11 @@
 }
 
-SizeofExpr::SizeofExpr( Expression *expr_, Expression *_aname ) :
-		Expression( _aname ), expr(expr_), type(0), isType(false) {
+SizeofExpr::SizeofExpr( Expression *expr_ ) :
+		Expression(), expr(expr_), type(0), isType(false) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
 
-SizeofExpr::SizeofExpr( Type *type_, Expression *_aname ) :
-		Expression( _aname ), expr(0), type(type_), isType(true) {
+SizeofExpr::SizeofExpr( Type *type_ ) :
+		Expression(), expr(0), type(type_), isType(true) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
@@ -123,11 +122,11 @@
 }
 
-AlignofExpr::AlignofExpr( Expression *expr_, Expression *_aname ) :
-		Expression( _aname ), expr(expr_), type(0), isType(false) {
+AlignofExpr::AlignofExpr( Expression *expr_ ) :
+		Expression(), expr(expr_), type(0), isType(false) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
 
-AlignofExpr::AlignofExpr( Type *type_, Expression *_aname ) :
-		Expression( _aname ), expr(0), type(type_), isType(true) {
+AlignofExpr::AlignofExpr( Type *type_ ) :
+		Expression(), expr(0), type(type_), isType(true) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
 }
@@ -149,6 +148,6 @@
 }
 
-UntypedOffsetofExpr::UntypedOffsetofExpr( Type *type, const std::string &member, Expression *_aname ) :
-		Expression( _aname ), type(type), member(member) {
+UntypedOffsetofExpr::UntypedOffsetofExpr( Type *type, const std::string &member ) :
+		Expression(), type(type), member(member) {
 	assert( type );
 	set_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
@@ -168,6 +167,6 @@
 }
 
-OffsetofExpr::OffsetofExpr( Type *type, DeclarationWithType *member, Expression *_aname ) :
-		Expression( _aname ), type(type), member(member) {
+OffsetofExpr::OffsetofExpr( Type *type, DeclarationWithType *member ) :
+		Expression(), type(type), member(member) {
 	assert( member );
 	assert( type );
@@ -188,5 +187,5 @@
 }
 
-OffsetPackExpr::OffsetPackExpr( StructInstType *type, Expression *aname_ ) : Expression( aname_ ), type( type ) {
+OffsetPackExpr::OffsetPackExpr( StructInstType *type ) : Expression(), type( type ) {
 	assert( type );
 	set_result( new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0, false, false ) );
@@ -203,10 +202,10 @@
 }
 
-AttrExpr::AttrExpr( Expression *attr, Expression *expr_, Expression *_aname ) :
-		Expression( _aname ), attr( attr ), expr(expr_), type(0), isType(false) {
-}
-
-AttrExpr::AttrExpr( Expression *attr, Type *type_, Expression *_aname ) :
-		Expression( _aname ), attr( attr ), expr(0), type(type_), isType(true) {
+AttrExpr::AttrExpr( Expression *attr, Expression *expr_ ) :
+		Expression(), attr( attr ), expr(expr_), type(0), isType(false) {
+}
+
+AttrExpr::AttrExpr( Expression *attr, Type *type_ ) :
+		Expression(), attr( attr ), expr(0), type(type_), isType(true) {
 }
 
@@ -232,9 +231,9 @@
 }
 
-CastExpr::CastExpr( Expression *arg_, Type *toType, Expression *_aname ) : Expression( _aname ), arg(arg_) {
+CastExpr::CastExpr( Expression *arg_, Type *toType ) : Expression(), arg(arg_) {
 	set_result(toType);
 }
 
-CastExpr::CastExpr( Expression *arg_, Expression *_aname ) : Expression( _aname ), arg(arg_) {
+CastExpr::CastExpr( Expression *arg_ ) : Expression(), arg(arg_) {
 	set_result( new VoidType( Type::Qualifiers() ) );
 }
@@ -284,6 +283,6 @@
 }
 
-UntypedMemberExpr::UntypedMemberExpr( Expression * member, Expression *aggregate, Expression *_aname ) :
-		Expression( _aname ), member(member), aggregate(aggregate) {
+UntypedMemberExpr::UntypedMemberExpr( Expression * member, Expression *aggregate ) :
+		Expression(), member(member), aggregate(aggregate) {
 	assert( aggregate );
 }
@@ -321,6 +320,6 @@
 
 
-MemberExpr::MemberExpr( DeclarationWithType *member, Expression *aggregate, Expression *_aname ) :
-		Expression( _aname ), member(member), aggregate(aggregate) {
+MemberExpr::MemberExpr( DeclarationWithType *member, Expression *aggregate ) :
+		Expression(), member(member), aggregate(aggregate) {
 	assert( member );
 	assert( aggregate );
@@ -351,6 +350,6 @@
 }
 
-UntypedExpr::UntypedExpr( Expression *_function, const std::list<Expression *> &_args, Expression *_aname ) :
-		Expression( _aname ), function(_function), args(_args) {}
+UntypedExpr::UntypedExpr( Expression *function, const std::list<Expression *> &args ) :
+		Expression(), function(function), args(args) {}
 
 UntypedExpr::UntypedExpr( const UntypedExpr &other ) :
@@ -402,5 +401,5 @@
 }
 
-NameExpr::NameExpr( std::string name, Expression *_aname ) : Expression( _aname ), name(name) {
+NameExpr::NameExpr( std::string name ) : Expression(), name(name) {
 	assertf(name != "0", "Zero is not a valid name");
 	assertf(name != "1", "One is not a valid name");
@@ -417,6 +416,6 @@
 }
 
-LogicalExpr::LogicalExpr( Expression *arg1_, Expression *arg2_, bool andp, Expression *_aname ) :
-		Expression( _aname ), arg1(arg1_), arg2(arg2_), isAnd(andp) {
+LogicalExpr::LogicalExpr( Expression *arg1_, Expression *arg2_, bool andp ) :
+		Expression(), arg1(arg1_), arg2(arg2_), isAnd(andp) {
 	set_result( new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
 }
@@ -439,6 +438,6 @@
 }
 
-ConditionalExpr::ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3, Expression *_aname ) :
-		Expression( _aname ), arg1(arg1), arg2(arg2), arg3(arg3) {}
+ConditionalExpr::ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3 ) :
+		Expression(), arg1(arg1), arg2(arg2), arg3(arg3) {}
 
 ConditionalExpr::ConditionalExpr( const ConditionalExpr &other ) :
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/SynTree/Expression.h	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -36,8 +36,7 @@
 	Type * result;
 	TypeSubstitution * env;
-	Expression * argName; // if expression is used as an argument, it can be "designated" by this name
 	bool extension = false;
 
-	Expression( Expression * _aname = nullptr );
+	Expression();
 	Expression( const Expression & other );
 	virtual ~Expression();
@@ -50,6 +49,4 @@
 	TypeSubstitution * get_env() const { return env; }
 	void set_env( TypeSubstitution * newValue ) { env = newValue; }
-	Expression * get_argName() const { return argName; }
-	void set_argName( Expression * name ) { argName = name; }
 	bool get_extension() const { return extension; }
 	Expression * set_extension( bool exten ) { extension = exten; return this; }
@@ -112,5 +109,5 @@
 	std::list<Expression*> args;
 
-	UntypedExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >(), Expression *_aname = nullptr );
+	UntypedExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() );
 	UntypedExpr( const UntypedExpr & other );
 	virtual ~UntypedExpr();
@@ -137,5 +134,5 @@
 	std::string name;
 
-	NameExpr( std::string name, Expression *_aname = nullptr );
+	NameExpr( std::string name );
 	NameExpr( const NameExpr & other );
 	virtual ~NameExpr();
@@ -158,5 +155,5 @@
 	Expression * arg;
 
-	AddressExpr( Expression * arg, Expression *_aname = nullptr );
+	AddressExpr( Expression * arg );
 	AddressExpr( const AddressExpr & other );
 	virtual ~AddressExpr();
@@ -192,6 +189,6 @@
 	Expression * arg;
 
-	CastExpr( Expression * arg, Expression *_aname = nullptr );
-	CastExpr( Expression * arg, Type * toType, Expression *_aname = nullptr );
+	CastExpr( Expression * arg );
+	CastExpr( Expression * arg, Type * toType );
 	CastExpr( const CastExpr & other );
 	virtual ~CastExpr();
@@ -230,5 +227,5 @@
 	Expression * aggregate;
 
-	UntypedMemberExpr( Expression * member, Expression * aggregate, Expression *_aname = nullptr );
+	UntypedMemberExpr( Expression * member, Expression * aggregate );
 	UntypedMemberExpr( const UntypedMemberExpr & other );
 	virtual ~UntypedMemberExpr();
@@ -252,5 +249,5 @@
 	Expression * aggregate;
 
-	MemberExpr( DeclarationWithType * member, Expression * aggregate, Expression *_aname = nullptr );
+	MemberExpr( DeclarationWithType * member, Expression * aggregate );
 	MemberExpr( const MemberExpr & other );
 	virtual ~MemberExpr();
@@ -273,5 +270,5 @@
 	DeclarationWithType * var;
 
-	VariableExpr( DeclarationWithType * var, Expression *_aname = nullptr );
+	VariableExpr( DeclarationWithType * var );
 	VariableExpr( const VariableExpr & other );
 	virtual ~VariableExpr();
@@ -293,5 +290,5 @@
 	Constant constant;
 
-	ConstantExpr( Constant constant, Expression *_aname = nullptr );
+	ConstantExpr( Constant constant );
 	ConstantExpr( const ConstantExpr & other );
 	virtual ~ConstantExpr();
@@ -313,7 +310,7 @@
 	bool isType;
 
-	SizeofExpr( Expression * expr, Expression *_aname = nullptr );
+	SizeofExpr( Expression * expr );
 	SizeofExpr( const SizeofExpr & other );
-	SizeofExpr( Type * type, Expression *_aname = nullptr );
+	SizeofExpr( Type * type );
 	virtual ~SizeofExpr();
 
@@ -338,7 +335,7 @@
 	bool isType;
 
-	AlignofExpr( Expression * expr, Expression *_aname = nullptr );
+	AlignofExpr( Expression * expr );
 	AlignofExpr( const AlignofExpr & other );
-	AlignofExpr( Type * type, Expression *_aname = nullptr );
+	AlignofExpr( Type * type );
 	virtual ~AlignofExpr();
 
@@ -362,5 +359,5 @@
 	std::string member;
 
-	UntypedOffsetofExpr( Type * type, const std::string & member, Expression *_aname = nullptr );
+	UntypedOffsetofExpr( Type * type, const std::string & member );
 	UntypedOffsetofExpr( const UntypedOffsetofExpr & other );
 	virtual ~UntypedOffsetofExpr();
@@ -383,5 +380,5 @@
 	DeclarationWithType * member;
 
-	OffsetofExpr( Type * type, DeclarationWithType * member, Expression *_aname = nullptr );
+	OffsetofExpr( Type * type, DeclarationWithType * member );
 	OffsetofExpr( const OffsetofExpr & other );
 	virtual ~OffsetofExpr();
@@ -403,5 +400,5 @@
 	StructInstType * type;
 
-	OffsetPackExpr( StructInstType * type_, Expression * aname_ = 0 );
+	OffsetPackExpr( StructInstType * type );
 	OffsetPackExpr( const OffsetPackExpr & other );
 	virtual ~OffsetPackExpr();
@@ -424,7 +421,7 @@
 	bool isType;
 
-	AttrExpr(Expression * attr, Expression * expr, Expression *_aname = nullptr );
+	AttrExpr(Expression * attr, Expression * expr );
 	AttrExpr( const AttrExpr & other );
-	AttrExpr( Expression * attr, Type * type, Expression *_aname = nullptr );
+	AttrExpr( Expression * attr, Type * type );
 	virtual ~AttrExpr();
 
@@ -450,5 +447,5 @@
 	Expression * arg2;
 
-	LogicalExpr( Expression * arg1, Expression * arg2, bool andp = true, Expression *_aname = nullptr );
+	LogicalExpr( Expression * arg1, Expression * arg2, bool andp = true );
 	LogicalExpr( const LogicalExpr & other );
 	virtual ~LogicalExpr();
@@ -476,5 +473,5 @@
 	Expression * arg3;
 
-	ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3, Expression *_aname = nullptr );
+	ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3 );
 	ConditionalExpr( const ConditionalExpr & other );
 	virtual ~ConditionalExpr();
@@ -499,5 +496,5 @@
 	Expression * arg2;
 
-	CommaExpr( Expression * arg1, Expression * arg2, Expression *_aname = nullptr );
+	CommaExpr( Expression * arg1, Expression * arg2 );
 	CommaExpr( const CommaExpr & other );
 	virtual ~CommaExpr();
@@ -646,5 +643,5 @@
 	std::list<Expression*> exprs;
 
-	UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr );
+	UntypedTupleExpr( const std::list< Expression * > & exprs );
 	UntypedTupleExpr( const UntypedTupleExpr & other );
 	virtual ~UntypedTupleExpr();
@@ -663,5 +660,5 @@
 	std::list<Expression*> exprs;
 
-	TupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr );
+	TupleExpr( const std::list< Expression * > & exprs );
 	TupleExpr( const TupleExpr & other );
 	virtual ~TupleExpr();
@@ -701,5 +698,5 @@
 	StmtExpr * stmtExpr = nullptr;
 
-	TupleAssignExpr( const std::list< Expression * > & assigns, const std::list< ObjectDecl * > & tempDecls, Expression * _aname = nullptr );
+	TupleAssignExpr( const std::list< Expression * > & assigns, const std::list< ObjectDecl * > & tempDecls );
 	TupleAssignExpr( const TupleAssignExpr & other );
 	virtual ~TupleAssignExpr();
Index: src/SynTree/TupleExpr.cc
===================================================================
--- src/SynTree/TupleExpr.cc	(revision 50377a4f7ed2666db8f0a606e0e8573661478734)
+++ src/SynTree/TupleExpr.cc	(revision bf4b4cfa078d7192399e205b24be58f205c888b6)
@@ -28,5 +28,5 @@
 #include "Type.h"               // for TupleType, Type
 
-UntypedTupleExpr::UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname ) : Expression( _aname ), exprs( exprs ) {
+UntypedTupleExpr::UntypedTupleExpr( const std::list< Expression * > & exprs ) : Expression(), exprs( exprs ) {
 }
 
@@ -45,5 +45,5 @@
 }
 
-TupleExpr::TupleExpr( const std::list< Expression * > & exprs, Expression *_aname ) : Expression( _aname ), exprs( exprs ) {
+TupleExpr::TupleExpr( const std::list< Expression * > & exprs ) : Expression(), exprs( exprs ) {
 	set_result( Tuples::makeTupleType( exprs ) );
 }
@@ -86,5 +86,5 @@
 }
 
-TupleAssignExpr::TupleAssignExpr( const std::list< Expression * > & assigns, const std::list< ObjectDecl * > & tempDecls, Expression * _aname ) : Expression( _aname ) {
+TupleAssignExpr::TupleAssignExpr( const std::list< Expression * > & assigns, const std::list< ObjectDecl * > & tempDecls ) : Expression() {
 	// convert internally into a StmtExpr which contains the declarations and produces the tuple of the assignments
 	set_result( Tuples::makeTupleType( assigns ) );
