added DiscreteDataGenerator