add generate mode