hw5-3-1 seperated factory method add