Restructured the whole thing! And is borken.

Yeah, I did it again... but this time, I can revert to a working driver!
Anyways...
1) Inline functions stay in the header.
2) Moved non-inline funcions into its own module.
3) New module will now create a work queue for to submit work to.

That's it for now. Hopefully I can figure out the logistics.