Added Composite pattern