composite pattern working draft