add GeneratorFunction