Adding Creational / Factory_Method impl and tests