Sorry, most of my original post got cut off.
Here's the rest (minus the list of symbols) in case its causing a problem:

>From my understanding, the current proposed solution is to take all statics and globals,
encapsulate them in one object, and pass that object to all api calls.
Peter further suggested legacy api is maintained by having them call the new api with a default instance object.

I did a little bit of hunting, using objdump on the current dll, to get a rough list of all the globals and statics currently involved.

Im thinking the *_class and *_sym static pointers are in fact constant, and need only one shared instance.  That would leave about 320 variables remaining.
Many of these variables are constant arrays, strings, etc.
And many seem to be used only as a shortcut for passing data between two functions, possibly bringing down the number further.

Im toying with the idea of taking on this task if anyone's interested.
I may require some tips and help from the forum, in terms of creating a branch, explanation of some statics etc.

So how feasible is this? Am I on the right track?
Thanks very much,
Rob Bairos.