abstract factory service via array config