add strategy pattern for Generators