extracted ModuleGenerator