#1 - Refactoring to use a compiler pass