Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision def751fb5e94c970d065746c20eda0539c4b38ef)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision b0d9ff7d1c0e2e2925b14ceb97f88762bde87c64)
@@ -862,4 +862,9 @@
 				}
 			}
+		}
+
+		void postvisit( const ast::QualifiedNameExpr * qualifiedNameExpr ) {
+			auto mangleName = Mangle::mangle(qualifiedNameExpr->var);
+			addCandidate( qualifiedNameExpr, tenv );
 		}
 
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision def751fb5e94c970d065746c20eda0539c4b38ef)
+++ src/ResolvExpr/ConversionCost.cc	(revision b0d9ff7d1c0e2e2925b14ceb97f88762bde87c64)
@@ -338,5 +338,5 @@
 		} else if ( const EnumInstType * enumInst = dynamic_cast< const EnumInstType * >( dest ) ) {
 			const EnumDecl * base_enum = enumInst->baseEnum;
-			if ( const Type * base = base_enum->base ) { // if the base enum has a base (if it is typed)
+			if ( const Type * base = base_enum->base ) {
 				if ( const BasicType * enumBaseAstBasic = dynamic_cast< const BasicType *> (base) ) {
 					conversionCostFromBasicToBasic(basicType, enumBaseAstBasic);
@@ -632,5 +632,7 @@
 	} else if ( const ast::EnumInstType * enumInst = dynamic_cast< const ast::EnumInstType * >( dst ) ) {
 		const ast::EnumDecl * enumDecl = enumInst->base.get();
-		if ( const ast::Type * enumType = enumDecl->base.get() ) {
+		if ( enumDecl->isTyped && !enumDecl->base.get() ) {
+			cost = Cost::infinity; 
+		} else if ( const ast::Type * enumType = enumDecl->base.get() ) {
 			if ( const ast::BasicType * enumTypeAsBasic = dynamic_cast<const ast::BasicType *>(enumType) ) {
 				conversionCostFromBasicToBasic( basicType, enumTypeAsBasic );
@@ -694,6 +696,5 @@
 	const ast::EnumDecl * baseEnum = enumInstType->base;
 	if ( const ast::Type * baseType = baseEnum->base ) {
-		cost = costCalc( baseType, dst, srcIsLvalue, symtab, env );
-		// cost = Cost::safe;
+		costCalc( baseType, dst, srcIsLvalue, symtab, env );
 	} else {
 		(void)enumInstType;
