apro_gen: refactoring