revised the factory method, and abstract factory creational patterns