https://medium.com/@anderson.buenogod/how-to-use-the-factory-method-pattern-in-c-net-8-for-scalable-and-modular-applications-1f51d8e11059