completed the abstract_factory.py