i don't know if I can get used to rust using `!` for bitwise negation