Updated Factory Method