factory-pattern-order https://medium.com/@edisnezir/how-to-stop-using-if-else-and-make-your-code-more-readable-9d1cd97c68bf