Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/Parser/DeclarationNode.cc	(revision 8217e8fb39e467042f9fbdd33aea43d4644c44db)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Fri Jul 14 16:55:00 2017
-// Update Count     : 1020
+// Last Modified On : Thr Aug 10 17:02:00 2017
+// Update Count     : 1021
 //
 
@@ -275,18 +275,4 @@
 	return newnode;
 } // DeclarationNode::newEnumConstant
-
-DeclarationNode * DeclarationNode::newTreeStruct( Aggregate kind, const string * name, const string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
-	assert( name );
-	DeclarationNode * newnode = new DeclarationNode;
-	newnode->type = new TypeData( TypeData::Aggregate );
-	newnode->type->aggregate.kind = kind;
-	newnode->type->aggregate.name = name;
-	newnode->type->aggregate.actuals = actuals;
-	newnode->type->aggregate.fields = fields;
-	newnode->type->aggregate.body = body;
-	newnode->type->aggregate.tagged = true;
-	newnode->type->aggregate.parent = parent;
-	return newnode;
-} // DeclarationNode::newTreeStruct
 
 DeclarationNode * DeclarationNode::newName( string * name ) {
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/Parser/ParseNode.h	(revision 8217e8fb39e467042f9fbdd33aea43d4644c44db)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:28:16 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 27 12:08:08 2017
-// Update Count     : 788
+// Last Modified By : Andrew Beach
+// Last Modified On : Thu Aug 10 16:54:00 2017
+// Update Count     : 789
 //
 
@@ -248,7 +248,4 @@
 	static DeclarationNode * newAsmStmt( StatementNode * stmt ); // gcc external asm statement
 
-	// Perhaps this would best fold into newAggragate.
-	static DeclarationNode * newTreeStruct( Aggregate kind, const std::string * name, const std::string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body );
-
 	DeclarationNode();
 	~DeclarationNode();
@@ -335,7 +332,4 @@
 
 	static UniqueName anonymous;
-
-	// Temp to test TreeStruct
-	const std::string * parent_name;
 }; // DeclarationNode
 
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/Parser/TypeData.cc	(revision 8217e8fb39e467042f9fbdd33aea43d4644c44db)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Aug  9 13:50:00 2017
-// Update Count     : 567
+// Last Modified On : Mon Aug 14 10:41:00 2017
+// Update Count     : 568
 //
 
@@ -64,6 +64,4 @@
 		aggregate.fields = nullptr;
 		aggregate.body = false;
-		aggregate.tagged = false;
-		aggregate.parent = nullptr;
 		break;
 	  case AggregateInst:
@@ -125,5 +123,4 @@
 		delete aggregate.actuals;
 		delete aggregate.fields;
-		delete aggregate.parent;
 		// delete aggregate;
 		break;
@@ -640,9 +637,4 @@
 	switch ( td->aggregate.kind ) {
 	  case DeclarationNode::Struct:
-		if ( td->aggregate.tagged ) {
-			at = new StructDecl( *td->aggregate.name, td->aggregate.parent, attributes, linkage );
-			buildForall( td->aggregate.params, at->get_parameters() );
-			break;
-		}
 	  case DeclarationNode::Coroutine:
 	  case DeclarationNode::Monitor:
@@ -652,9 +644,9 @@
 		break;
 	  case DeclarationNode::Union:
-		at = new UnionDecl( *td->aggregate.name, attributes );
+		at = new UnionDecl( *td->aggregate.name, attributes, linkage );
 		buildForall( td->aggregate.params, at->get_parameters() );
 		break;
 	  case DeclarationNode::Trait:
-		at = new TraitDecl( *td->aggregate.name, attributes );
+		at = new TraitDecl( *td->aggregate.name, attributes, linkage );
 		buildList( td->aggregate.params, at->get_parameters() );
 		break;
@@ -673,5 +665,5 @@
 	  case TypeData::Enum: {
 		  if ( type->enumeration.body ) {
-			  EnumDecl * typedecl = buildEnum( type, attributes );
+			  EnumDecl * typedecl = buildEnum( type, attributes, linkage );
 			  return new EnumInstType( buildQualifiers( type ), typedecl );
 		  } else {
@@ -778,7 +770,7 @@
 } // buildSymbolic
 
-EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes ) {
+EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) {
 	assert( td->kind == TypeData::Enum );
-	EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes );
+	EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes, linkage );
 	buildList( td->enumeration.constants, ret->get_members() );
 	list< Declaration * >::iterator members = ret->get_members().begin();
@@ -831,5 +823,5 @@
 		return buildAggregate( td, attributes, linkage );
 	} else if ( td->kind == TypeData::Enum ) {
-		return buildEnum( td, attributes );
+		return buildEnum( td, attributes, linkage );
 	} else if ( td->kind == TypeData::Symbolic ) {
 		return buildSymbolic( td, name, scs, linkage );
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/Parser/TypeData.h	(revision 8217e8fb39e467042f9fbdd33aea43d4644c44db)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 15:18:36 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:32:47 2017
-// Update Count     : 188
+// Last Modified By : Andrew Beach
+// Last Modified On : Mon Aug 14 10:38:00 2017
+// Update Count     : 189
 //
 
@@ -108,5 +108,5 @@
 ReferenceToType * buildAggInst( const TypeData * );
 TypeDecl * buildVariable( const TypeData * );
-EnumDecl * buildEnum( const TypeData *, std::list< Attribute * > );
+EnumDecl * buildEnum( const TypeData *, std::list< Attribute * >, LinkageSpec::Spec );
 TypeInstType * buildSymbolicInst( const TypeData * );
 TupleType * buildTuple( const TypeData * );
