modify to use Envelope Pattern Data Structure