created a more flexible and generic patternFactory