Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision 79c907b3dd4f1e64c8f06407b0c85f76635c1767)
+++ src/AST/Pass.hpp	(revision 0019d77fb87d796dbacd893bb050c8b33d580bca)
@@ -8,5 +8,5 @@
 //
 // Author           : Thierry Delisle
-// Created On       : Thu May 09 15::37::05 2019
+// Created On       : Thu May 09 15:37:05 2019
 // Last Modified By :
 // Last Modified On :
@@ -84,4 +84,11 @@
 
 	virtual ~Pass() = default;
+
+	/// Construct and run a pass on a translation unit.
+	template< typename... Args >
+	static void run( std::list< ptr<Decl> > & decls, Args &&... args ) {
+		Pass<pass_t> visitor( std::forward<Args>( args )... );
+		accept_all( decls, visitor );
+	}
 
 	/// Storage for the actual pass
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 79c907b3dd4f1e64c8f06407b0c85f76635c1767)
+++ src/ResolvExpr/Resolver.cc	(revision 0019d77fb87d796dbacd893bb050c8b33d580bca)
@@ -1270,6 +1270,5 @@
 
 	void resolve( std::list< ast::ptr< ast::Decl > >& translationUnit ) {
-		ast::Pass< Resolver_new > resolver;
-		accept_all( translationUnit, resolver );
+		ast::Pass< Resolver_new >::run( translationUnit );
 	}
 
