Adding Creational / Factory Method impl and tes