https://medium.com/@parathantl/design-patterns-zero-to-hero-factory-pattern-simple-factory-and-factory-method-37a192718795