- Get rid of all switch blocks and replace it with modules, enum
- Use Composite design pattern as much as possible
- For each new functions have a module so that only relevant methods can be extended into classes
Refer Dependency injection and better ways to have constructors when the arguments are more than 5 - most of them are optional - what design you should be choosing ? (Hint use Builder for creating objects)