Refactoring the IGenerator Interface
Add validation in Generator by type