Turned Map into Abstract Class to Better Reflect Factory Design pattern