- no unnecessary includes
- uint_fast8_t instead of unsigned for better perfomance