Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 53e3b4abe27a80dbbb460154523bd595743597f6)
+++ src/ResolvExpr/Unify.cc	(revision 64eae5636740bd0793ff27432eb02ade2386bec3)
@@ -491,7 +491,6 @@
 		std::list< Type * > types;
 		for ( ; begin != end; ++begin ) {
-			// might need to break apart these types too?
-			// yes, looks like we should flatten begin and push back each types individually
-			types.push_back( (*begin)->get_type()->clone() );
+			// it's guaranteed that a ttype variable will be bound to a flat tuple, so ensure that this results in a flat tuple
+			flatten( (*begin)->get_type(), back_inserter( types ) );
 		}
 		return new TupleType( Type::Qualifiers(), types );
