change from supplying factory object to factory method implementation