data composite pattern