SPI for source generators
refactoring