variable generation