Started adding AbstractFactory