composite pattern added