Refactor: Move opaque pointers into new "opaque" modules
Documentation!