abstract factory as service