It currently uses a void* to allow safe instantiation on forward declarations. This is of questionable use and also breaks seeing object data in the debugger. Consider re-adding a typed pointer and changing includes to bring in full definitions of objects when we need a pointer to that type. This will be more costly compile-wise, but debugging will be much easier.