Week7 part2

Mostly refactoring with decorator and service object