Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision b9f827433276c429e2d2dc4909601d95a06f6d0f)
+++ src/CodeGen/CodeGenerator.cc	(revision d958834bbaca85420da00e8a912914e2702ecacb)
@@ -289,5 +289,5 @@
 					if ( obj->get_init() ) {
 						obj->get_init()->accept( *visitor );
-						last_val = ((ConstantExpr *)(((SingleInit *)(obj->init))->value))->constant.get_ival();
+						// last_val = ((ConstantExpr *)(((SingleInit *)(obj->init))->value))->constant.get_ival();
 					} else {
 						output << ++last_val;
Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision b9f827433276c429e2d2dc4909601d95a06f6d0f)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision d958834bbaca85420da00e8a912914e2702ecacb)
@@ -897,15 +897,15 @@
 						}
 
-						if (argType.as<ast::PointerType>()) funcFinder.otypeKeys.insert(Mangle::Encoding::pointer);
-						else if (const ast::EnumInstType * enumInst = argType.as<ast::EnumInstType>()) {
-							const ast::EnumDecl * enumDecl = enumInst->base;
-							if ( const ast::Type* enumType = enumDecl->base ) {
-								// instance of enum (T) is a instance of type (T) 
-								funcFinder.otypeKeys.insert(Mangle::mangle(enumType, Mangle::NoGenericParams | Mangle::Type));
-							} else {
-								// instance of an untyped enum is techically int
-								funcFinder.otypeKeys.insert(Mangle::mangle(enumDecl, Mangle::NoGenericParams | Mangle::Type));
-							}
-						} 
+						if (argType.as<ast::PointerType>()) funcFinder.otypeKeys.insert(Mangle::Encoding::pointer);						
+						// else if (const ast::EnumInstType * enumInst = argType.as<ast::EnumInstType>()) {
+						// 	const ast::EnumDecl * enumDecl = enumInst->base; // Here
+						// 	if ( const ast::Type* enumType = enumDecl->base ) {
+						// 		// instance of enum (T) is a instance of type (T) 
+						// 		funcFinder.otypeKeys.insert(Mangle::mangle(enumType, Mangle::NoGenericParams | Mangle::Type));
+						// 	} else {
+						// 		// instance of an untyped enum is techically int
+						// 		funcFinder.otypeKeys.insert(Mangle::mangle(enumDecl, Mangle::NoGenericParams | Mangle::Type));
+						// 	}
+						// }
 						else funcFinder.otypeKeys.insert(Mangle::mangle(argType, Mangle::NoGenericParams | Mangle::Type));
 					}
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision b9f827433276c429e2d2dc4909601d95a06f6d0f)
+++ src/ResolvExpr/ConversionCost.cc	(revision d958834bbaca85420da00e8a912914e2702ecacb)
@@ -695,4 +695,5 @@
 	if ( const ast::Type * baseType = baseEnum->base ) {
 		cost = costCalc( baseType, dst, srcIsLvalue, symtab, env );
+		// cost = Cost::safe;
 	} else {
 		(void)enumInstType;
Index: src/Validate/Autogen.cpp
===================================================================
--- src/Validate/Autogen.cpp	(revision b9f827433276c429e2d2dc4909601d95a06f6d0f)
+++ src/Validate/Autogen.cpp	(revision d958834bbaca85420da00e8a912914e2702ecacb)
@@ -235,4 +235,11 @@
 	// Must visit children (enum constants) to add them to the symbol table.
 	if ( !enumDecl->body ) return;
+
+	// if ( auto enumBaseType = enumDecl->base ) {
+	// 	if ( auto enumBaseTypeAsStructInst = dynamic_cast<const ast::StructInstType *>(enumBaseType.get()) ) {
+	// 		const ast::StructDecl * structDecl = enumBaseTypeAsStructInst->base.get();
+	// 		this->previsit( structDecl );
+	// 	}
+	// }
 
 	ast::EnumInstType enumInst( enumDecl->name );
