Added abstract_factory pattern discussion