modify composite pattern