remove abstract factory