provides the way to generate