changed GenerationException to be a subclass