Composite Pattern Part 2: refactor