Excercise 4: Factory Method