AbstractFactory now singleton