Change Generator class to be abstract