First try/blueprint for AbstractFactoryPattern