AbstractFatory modified