Allow user to not store heap data structures in heap itself -- rename mdesc struct and export to user: pass in allocated struct to umalloc_attach -- Find out which members of mdesc are allocated on heap, and provide an alternate method (pass in struct with func ptr for allocating new memory for data structures: default to using heap itself). Allow heap to grow down as well as up. -- Either as runtime attach() option, or compile two versions of functions.