Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 8d25360e4dfa05035c94eaafd0980fce401b0be7)
+++ src/ResolvExpr/Unify.cc	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
@@ -282,8 +282,8 @@
 
 	void markAssertions( AssertionSet &assertion1, AssertionSet &assertion2, Type *type ) {
-		for ( std::list< TypeDecl* >::const_iterator tyvar = type->get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {
-			for ( std::list< DeclarationWithType* >::const_iterator assert = (*tyvar)->get_assertions().begin(); assert != (*tyvar)->get_assertions().end(); ++assert ) {
-				markAssertionSet( assertion1, *assert );
-				markAssertionSet( assertion2, *assert );
+		for ( auto tyvar : type->get_forall() ) {
+			for ( auto assert : tyvar->get_assertions() ) {
+				markAssertionSet( assertion1, assert );
+				markAssertionSet( assertion2, assert );
 			} // for
 		} // for
Index: src/SymTab/Demangle.cc
===================================================================
--- src/SymTab/Demangle.cc	(revision 8d25360e4dfa05035c94eaafd0980fce401b0be7)
+++ src/SymTab/Demangle.cc	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
@@ -543,5 +543,5 @@
 				if (done()) return nullptr;
 
-				std::list<TypeDecl *> forall;
+				Type::ForallList forall;
 				if (isPrefix(Encoding::forall)) {
 					PRINT( std::cerr << "polymorphic with..." << std::endl; )
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 8d25360e4dfa05035c94eaafd0980fce401b0be7)
+++ src/SymTab/Indexer.cc	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
@@ -674,5 +674,5 @@
 	}
 
-	void Indexer::addTypes( const std::list< TypeDecl * > & tds ) {
+	void Indexer::addTypes( const Type::ForallList & tds ) {
 		for ( auto td : tds ) {
 			addType( td );
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision 8d25360e4dfa05035c94eaafd0980fce401b0be7)
+++ src/SymTab/Indexer.h	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
@@ -21,6 +21,7 @@
 #include <functional>         // for function
 
+#include "SynTree/Type.h"  // for AST nodes
+#include "SynTree/SynTree.h"  // for AST nodes
 #include "SynTree/Visitor.h"  // for Visitor
-#include "SynTree/SynTree.h"  // for AST nodes
 
 namespace ResolvExpr {
@@ -119,5 +120,5 @@
 
 		/// convenience function for adding a list of forall parameters to the indexer
-		void addTypes( const std::list< TypeDecl * > & tds );
+		void addTypes( const Type::ForallList & tds );
 
 		/// convenience function for adding all of the declarations in a function type to the indexer
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 8d25360e4dfa05035c94eaafd0980fce401b0be7)
+++ src/SymTab/Validate.cc	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
@@ -808,8 +808,9 @@
 
 	/// Fix up assertions - flattens assertion lists, removing all trait instances
-	void forallFixer( std::list< TypeDecl * > & forall, BaseSyntaxNode * node ) {
+	template<typename container_t>
+	void forallFixer( container_t & forall, BaseSyntaxNode * node ) {
 		for ( TypeDecl * type : forall ) {
-			std::list< DeclarationWithType * > asserts;
-			asserts.splice( asserts.end(), type->assertions );
+			decltype(type->assertions) asserts;
+			std::swap(asserts, type->assertions );
 			// expand trait instances into their members
 			for ( DeclarationWithType * assertion : asserts ) {
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision 8d25360e4dfa05035c94eaafd0980fce401b0be7)
+++ src/SynTree/Type.h	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Sep 25 14:14:01 2017
-// Update Count     : 154
+// Last Modified On : Fri Feb  8 09:17:09 2019
+// Update Count     : 164
 //
 
@@ -18,8 +18,8 @@
 #include <strings.h>         // for ffs
 #include <cassert>           // for assert, assertf
-#include <list>              // for list, _List_iterator
+#include <list>
 #include <ostream>           // for ostream, operator<<, basic_ostream
 #include <string>            // for string
-#include <vector>
+#include <vector>            // for vector
 
 #include "BaseSyntaxNode.h"  // for BaseSyntaxNode
@@ -134,5 +134,5 @@
 	}; // Qualifiers
 
-	typedef std::list<TypeDecl *> ForallList;
+	typedef std::vector<TypeDecl *> ForallList;
 
 	Qualifiers tq;
