Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 231f01ceb2baa1405827e9f07bc21784cc2a31a3)
+++ src/ResolvExpr/Resolver.cc	(revision 58d246ab3422d6f962dd4e4a42597c09b63991c0)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 12:17:01 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 12 17:45:42 2016
-// Update Count     : 204
+// Last Modified On : Thu Mar 23 17:23:14 2017
+// Update Count     : 211
 //
 
@@ -371,22 +371,33 @@
 	void Resolver::visit( SingleInit *singleInit ) {
 		if ( singleInit->get_value() ) {
-#if 0
-			if (NameExpr * ne = dynamic_cast<NameExpr*>(singleInit->get_value())) {
-				string n = ne->get_name();
-				if (n == "0") {
-					initContext = new BasicType(Type::Qualifiers(),
-												BasicType::SignedInt);
-				} else {
-					DeclarationWithType * decl = lookupId( n );
-					initContext = decl->get_type();
-				}
-			} else if (ConstantExpr * e =
-					   dynamic_cast<ConstantExpr*>(singleInit->get_value())) {
-				Constant *c = e->get_constant();
-				initContext = c->get_type();
-			} else {
-				assert(0);
-			}
-#endif
+			// // find all the d's
+			// std::list<Expression *> &designators = singleInit->get_designators();
+			// std::list<Type *> types1{ initContext }, types2;
+			// for ( Expression * expr: designators ) {
+			// 	cerr << expr << endl;
+			// 	if ( NameExpr * nexpr = dynamic_cast<NameExpr *>( expr ) ) {
+			// 		for ( Type * type: types1 ) {
+			// 			cerr << type << endl;
+			// 			ReferenceToType * fred = dynamic_cast<ReferenceToType *>(type);
+			// 			std::list<Declaration *> members;
+			// 			if ( fred ) {
+			// 				fred->lookup( nexpr->get_name(), members ); // concatenate identical field name
+			// 				for ( Declaration * mem: members ) {
+			// 					if ( DeclarationWithType * dwt = dynamic_cast<DeclarationWithType *>(mem) ) {
+			// 						types2.push_back( dwt->get_type() );
+			// 					} // if
+			// 				} // for
+			// 			} // if
+			// 		} // for
+			// 		types1 = types2;
+			// 		types2.clear();
+			// 	} // if
+			// } // for
+			// // for ( Type * type: types1 ) {
+			// // 	cerr << type << endl;
+			// // } // for
+			
+			// // O(N^2) checks of d-types with f-types
+			// // find the minimum cost
 			CastExpr *castExpr = new CastExpr( singleInit->get_value(), initContext->clone() );
 			Expression *newExpr = findSingleExpression( castExpr, *this );
@@ -410,5 +421,4 @@
 			}
 		} // if
-//	singleInit->get_value()->accept( *this );
 	}
 
Index: src/SynTree/Initializer.h
===================================================================
--- src/SynTree/Initializer.h	(revision 231f01ceb2baa1405827e9f07bc21784cc2a31a3)
+++ src/SynTree/Initializer.h	(revision 58d246ab3422d6f962dd4e4a42597c09b63991c0)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Apr 12 13:49:13 2016
-// Update Count     : 19
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Mar 23 16:12:42 2017
+// Update Count     : 20
 //
 
@@ -70,6 +70,6 @@
 	void set_value( Expression *newValue ) { value = newValue; }
 
+	std::list<Expression *> &get_designators() { return designators; }
 	void set_designators( std::list<Expression *> &newValue ) { designators = newValue; }
-	std::list<Expression *> &get_designators() { return designators; }
 
 	virtual SingleInit *clone() const { return new SingleInit( *this); }
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision 231f01ceb2baa1405827e9f07bc21784cc2a31a3)
+++ src/SynTree/Type.h	(revision 58d246ab3422d6f962dd4e4a42597c09b63991c0)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 17 09:04:03 2017
-// Update Count     : 147
+// Last Modified On : Thu Mar 23 16:16:36 2017
+// Update Count     : 149
 //
 
@@ -331,4 +331,6 @@
 	virtual Type *acceptMutator( Mutator & m ) = 0;
 	virtual void print( std::ostream & os, int indent = 0 ) const;
+
+	virtual void lookup( const std::string & name, std::list< Declaration* > & foundDecls ) const {}
   protected:
 	virtual std::string typeString() const = 0;
