factory method changes