Reorganizing, AbstractFactory added