change abstract_factory