refacto Compiler Pass