refactoring: IGenerator
doc update
example update