https://buksbaum.us/2011/05/11/patterns-101-factory-pattern/