New: 'Abstract Factory' design pattern implemented