- fixed a bunch of race conditions causing UB
- removed unnecessary generics from public structs
- while here, renamed those structs so they're shorter
- internal state machine was refactored to just one atomic integer, making the atomic ordering slightly easier