imported abstract factory task