https://www.thephilocoder.com/implementing-the-openclose-principle-in-c/
Implementing the Open-Close Principle in C#