add Constructor Pattern to construct object
fix Factories to use Constructor