Added abstract factory.