Impriments abstract factory pattern.