regenerate by factory