Cleanup, static_asserts, changed to struct with bit allignments instead of ugly bit shift math