add generator mode