Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision ce76eb96cd1233111f013a9e0a38bab27e6b9c40)
+++ src/GenPoly/Box.cc	(revision f18a7116aa1cfebf9345699d96b99221a153dc0f)
@@ -2054,5 +2054,5 @@
 
 			DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) );
-			ScrubTyVars::scrubDynamic( decl, scopeTyVars );
+			ScrubTyVars::scrub( decl, scopeTyVars );
 
 			scopeTyVars.endScope();
Index: src/GenPoly/InstantiateGeneric.cc
===================================================================
--- src/GenPoly/InstantiateGeneric.cc	(revision ce76eb96cd1233111f013a9e0a38bab27e6b9c40)
+++ src/GenPoly/InstantiateGeneric.cc	(revision f18a7116aa1cfebf9345699d96b99221a153dc0f)
@@ -173,7 +173,4 @@
 		void insert( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs, UnionDecl *decl ) { instantiations.insert( inst->get_baseUnion(), typeSubs, decl ); }
 
-		/// If this is an instance of a type already determined to be dtype-static, strips the instances's type parameters and returns true
-		bool stripInstParams( AggregateDecl *base, ReferenceToType *inst );
-	
 		/// Strips a dtype-static aggregate decl of its type parameters, marks it as stripped
 		void stripDtypeParams( AggregateDecl *base, std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs );
@@ -240,11 +237,8 @@
 	}
 
-	bool GenericInstantiator::stripInstParams( AggregateDecl *base, ReferenceToType *inst ) {
-		if ( dtypeStatics.find( base ) == dtypeStatics.end() ) return false;
-
+	/// Strips the instances's type parameters
+	void stripInstParams( ReferenceToType *inst ) {
 		deleteAll( inst->get_parameters() );
 		inst->get_parameters().clear();
-
-		return true;
 	}
 	
@@ -268,5 +262,8 @@
 
 		// check for an already-instantiatiated dtype-static type
-		if ( stripInstParams( inst->get_baseStruct(), inst ) ) return inst;
+		if ( dtypeStatics.find( inst->get_baseStruct() ) != dtypeStatics.end() ) {
+			stripInstParams( inst );
+			return inst;
+		}
 		
 		// check if type can be concretely instantiated; put substitutions into typeSubs
@@ -277,4 +274,5 @@
 		case genericType::dtypeStatic:
 			stripDtypeParams( inst->get_baseStruct(), *inst->get_baseParameters(), typeSubs );
+			stripInstParams( inst );
 			break;
 		
@@ -316,5 +314,8 @@
 
 		// check for an already-instantiatiated dtype-static type
-		if ( stripInstParams( inst->get_baseUnion(), inst ) ) return inst;
+		if ( dtypeStatics.find( inst->get_baseUnion() ) != dtypeStatics.end() ) {
+			stripInstParams( inst );
+			return inst;
+		}
 
 		// check if type can be concretely instantiated; put substitutions into typeSubs
@@ -325,4 +326,5 @@
 		case genericType::dtypeStatic:
 			stripDtypeParams( inst->get_baseUnion(), *inst->get_baseParameters(), typeSubs );
+			stripInstParams( inst );
 			break;
 			
