added sourceif macro