Add abstract factory.