refactoring of IRGEN
refactoring of IRGEN