Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 1e30df7c247fd856856ad97d81bc81faecf5bcd5)
+++ src/AST/Convert.cpp	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
@@ -310,9 +310,9 @@
 			node->name,
 			get<Attribute>().acceptL( node->attributes ),
-			false, // Temporary
+			node->isTyped,
 			LinkageSpec::Spec( node->linkage.val ),
 			get<Type>().accept1(node->base)
 		);
-		return aggregatePostamble( decl, node ); // Node info, including members, processed in aggregatePostamble
+		return aggregatePostamble( decl, node );
 	}
 
@@ -737,5 +737,4 @@
 				node->name
 		);
-		temp->var = get<DeclarationWithType>().accept1(node->var);
 		auto expr = visitBaseExpr( node,
 			temp
@@ -2282,6 +2281,4 @@
 	}
 
-	/// xxx - type_decl should be DeclWithType in the final design
-	/// type_decl is set to EnumDecl as a temporary fix
 	virtual void visit( const QualifiedNameExpr * old ) override final {
 		this->node = visitBaseExpr( old,
@@ -2289,5 +2286,4 @@
 				old->location,
 				GET_ACCEPT_1(type_decl, Decl),
-				GET_ACCEPT_1(var, DeclWithType),
 				old->name
 			)
Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision 1e30df7c247fd856856ad97d81bc81faecf5bcd5)
+++ src/AST/Decl.hpp	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
@@ -315,6 +315,7 @@
 class EnumDecl final : public AggregateDecl {
 public:
-	bool isTyped;
-	ptr<Type> base;
+	bool isTyped; // isTyped indicated if the enum has a declaration like:
+	// enum (type_optional) Name {...} 
+	ptr<Type> base; // if isTyped == true && base.get() == nullptr, it is a "void" type enum
 
 	EnumDecl( const CodeLocation& loc, const std::string& name, bool isTyped = false, 
Index: src/AST/Expr.hpp
===================================================================
--- src/AST/Expr.hpp	(revision 1e30df7c247fd856856ad97d81bc81faecf5bcd5)
+++ src/AST/Expr.hpp	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
@@ -257,9 +257,8 @@
 public:
 	ptr<Decl> type_decl;
-	ptr<DeclWithType> var;
 	std::string name;
 
-	QualifiedNameExpr( const CodeLocation & loc, const Decl * d, const DeclWithType * r, const std::string & n ) 
-	: Expr( loc ), type_decl( d ), var(r), name( n ) {}
+	QualifiedNameExpr( const CodeLocation & loc, const Decl * d, const std::string & n ) 
+	: Expr( loc ), type_decl( d ), name( n ) {}
 
 	const Expr * accept( Visitor & v ) const override { return v.visit( this ); }
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 1e30df7c247fd856856ad97d81bc81faecf5bcd5)
+++ src/AST/Pass.impl.hpp	(revision 5408b5919f1f591121d6cdabf6c6b5e605e61e6b)
@@ -1205,5 +1205,4 @@
 	if ( __visit_children() ) {
 		guard_symtab guard { *this };
-		maybe_accept( node, &QualifiedNameExpr::var );
 		maybe_accept( node, &QualifiedNameExpr::type_decl );
 	}
