add Gen interface